+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>proto_test</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- </buildSpec>
- <natures>
- </natures>
-</projectDescription>
+++ /dev/null
-<?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.41926027">
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.41926027" 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.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.41926027" 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.41926027." name="/" resourcePath="">
- <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.636614216" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
- <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.136129313" name="Internal Toolchain Type" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.1556719375" name="Internal Toolchain Version" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" useByScannerDiscovery="false" value="7-2018-q2-update" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.2021412574" name="Mcu" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="false" value="STM32F767ZITx" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.552447641" name="CpuId" 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.2113090068" name="CpuCoreId" 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.724669829" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="false" 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.418135490" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="false" 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.1580335695" 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.1284920246" 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.3 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Core/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || || || USE_HAL_DRIVER | STM32F767xx || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || " valueType="string"/>
- <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.805848191" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
- <builder buildPath="${workspace_loc:/parlami_ti_prego}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.25394566" 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.1442778145" 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.1962354615" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1578947328" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
- </tool>
- <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1358692312" 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.489754699" 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.1981086349" 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.114931054" 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="STM32F767xx"/>
- <listOptionValue builtIn="false" value="DEBUG"/>
- </option>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.305659026" 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="../Drivers/CMSIS/Include"/>
- <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
- <listOptionValue builtIn="false" value="../Core/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
- </option>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.otherflags.978301265" name="Other flags" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.otherflags" useByScannerDiscovery="false" valueType="stringList"/>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1784720711" 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.2081053561" 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.1780936353" 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.1049362801" 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.680813932" 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="../Drivers/CMSIS/Include"/>
- <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
- <listOptionValue builtIn="false" value="../Core/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
- </option>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.1826209638" 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="USE_HAL_DRIVER"/>
- <listOptionValue builtIn="false" value="STM32F767xx"/>
- <listOptionValue builtIn="false" value="DEBUG"/>
- </option>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.otherflags.640489953" name="Other flags" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.otherflags" useByScannerDiscovery="false" valueType="stringList"/>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1405466203" 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.398856389" 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.1943744046" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.337372366" 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.211899661" 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.script.1257713401" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" useByScannerDiscovery="false" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.1145635064" name="System calls" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls.value.minimalimplementation" valueType="enumerated"/>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.1498963243" 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.370288227" 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.1495040653" 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.789027768" 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.1994219425" 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.1602936047" 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.292745478" 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.901690661" 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.1847949407" 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="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.1869261979">
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1869261979" 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.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.1869261979" 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.1869261979." name="/" resourcePath="">
- <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1117406778" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
- <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.14432785" name="Internal Toolchain Type" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.2143638420" name="Internal Toolchain Version" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1982386099" name="Mcu" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.400018005" name="CpuId" 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.877028785" name="CpuCoreId" 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.286384957" name="Floating-point unit" 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.1366087824" name="Floating-point ABI" 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.1535420530" name="Board" 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.369470309" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.3 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Core/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || || || USE_HAL_DRIVER | STM32F767xx || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || " valueType="string"/>
- <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.376990277" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
- <builder buildPath="${workspace_loc:/parlami_ti_prego}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1864213619" 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.1435950788" 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.1744289827" 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.634068938" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
- </tool>
- <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.151719307" 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.2124294176" 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.1356238401" 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.o3" valueType="enumerated"/>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.1453894948" 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="STM32F767xx"/>
- </option>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1750642911" 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="../Drivers/CMSIS/Include"/>
- <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
- <listOptionValue builtIn="false" value="../Core/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
- </option>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1836436095" 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.721873917" 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.1556989150" 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.1194389446" 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.o3" valueType="enumerated"/>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.828472825" 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="../Drivers/CMSIS/Include"/>
- <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
- <listOptionValue builtIn="false" value="../Core/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
- <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
- </option>
- <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.2026913701" 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="USE_HAL_DRIVER"/>
- <listOptionValue builtIn="false" value="STM32F767xx"/>
- </option>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1198771841" 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.602302855" 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.1517777692" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.37531178" 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.2132130848" 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.script.1468831494" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
- <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.512390957" 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"/>
- <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.1374693087" 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.1186469502" 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.29262514" 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.1422537721" 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.1564427077" 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.1503929060" 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.8677369" 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.84623117" 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.174395344" 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="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="cdtBuildSystem" version="4.0.0">
- <project id="parlami_ti_prego.null.2142919870" name="parlami_ti_prego"/>
- </storageModule>
- <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
- <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
- <storageModule moduleId="scannerConfiguration">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
- <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1869261979;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1869261979.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.721873917;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1198771841">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
- </scannerConfigBuildInfo>
- <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.41926027;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.41926027.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1358692312;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1784720711">
- <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
- </scannerConfigBuildInfo>
- <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.41926027;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.41926027.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.2081053561;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1405466203">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
- </scannerConfigBuildInfo>
- <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1869261979;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1869261979.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.151719307;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1836436095">
- <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
- </scannerConfigBuildInfo>
- </storageModule>
- <storageModule moduleId="refreshScope" versionNumber="2">
- <configuration configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="/parlami_ti_prego"/>
- </configuration>
- <configuration configurationName="Release">
- <resource resourceType="PROJECT" workspacePath="/parlami_ti_prego"/>
- </configuration>
- </storageModule>
-</cproject>
+++ /dev/null
-[PreviousGenFiles]\r
-AdvancedFolderStructure=true\r
-HeaderFileListSize=3\r
-HeaderFiles#0=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Inc/stm32f7xx_it.h\r
-HeaderFiles#1=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Inc/stm32f7xx_hal_conf.h\r
-HeaderFiles#2=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Inc/main.h\r
-HeaderFolderListSize=1\r
-HeaderPath#0=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Inc\r
-SourceFileListSize=3\r
-SourceFiles#0=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Src/stm32f7xx_it.c\r
-SourceFiles#1=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Src/stm32f7xx_hal_msp.c\r
-SourceFiles#2=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Src/main.c\r
-SourceFolderListSize=1\r
-SourcePath#0=/home/fdila/Projects/otto/utils/ticks_calibration/otto_ticks_calibration/Core/Src\r
-HeaderFiles=;\r
-SourceFiles=;\r
-\r
-[PreviousLibFiles]\r
-LibFiles=Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm4.h;\r
-\r
-[PreviousUsedCubeIDEFiles]\r
-SourceFiles=Core/Src/main.c;Core/Src/stm32f7xx_it.c;Core/Src/stm32f7xx_hal_msp.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c;Core/Src/system_stm32f7xx.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c;Core/Src/system_stm32f7xx.c;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;;\r
-HeaderPath=Drivers/STM32F7xx_HAL_Driver/Inc;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32F7xx/Include;Drivers/CMSIS/Include;Core/Inc;\r
-CDefines=USE_HAL_DRIVER;STM32F767xx;USE_HAL_DRIVER;USE_HAL_DRIVER;\r
-\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>otto_proto_test</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.MCUCubeIdeServicesRevAProjectNature</nature>
- <nature>com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature</nature>
- <nature>com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature</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>
+++ /dev/null
-eclipse.preferences.version=1
-svd_custom_file_path=
-svd_file_path=platform\:/plugin/com.st.stm32cube.ide.mcu.productdb.debug/resources/cmsis/STMicroelectronics_CMSIS_SVD/STM32F7x7.svd
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<project>
- <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.41926027" name="Debug">
- <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
- <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
- <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
- <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
- <provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
- <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1436046405535356377" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
- <language-scope id="org.eclipse.cdt.core.gcc"/>
- <language-scope id="org.eclipse.cdt.core.g++"/>
- </provider>
- </extension>
- </configuration>
- <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1869261979" name="Release">
- <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
- <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
- <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
- <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
- <provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
- <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1436046405535356377" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
- <language-scope id="org.eclipse.cdt.core.gcc"/>
- <language-scope id="org.eclipse.cdt.core.g++"/>
- </provider>
- </extension>
- </configuration>
-</project>
+++ /dev/null
-com.st.stm32cube.ide.mcu.ide.oss.source.checker.libnano.problem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Float formatting support\\")"}
-eclipse.preferences.version=1
-org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
-org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
-org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
-org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
-org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
-org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
-org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
-org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
-org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
-org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"C-Style cast instead of C++ cast\\")"}
-org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false}
-org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
-org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
-org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
-org.eclipse.cdt.codan.internal.checkers.CopyrightProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.CopyrightProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Lack of copyright information\\")",regex\=>".*Copyright.*"}
-org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"}
-org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
-org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
-org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Goto statement used\\")"}
-org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
-org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
-org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
-org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
-org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
-org.eclipse.cdt.codan.internal.checkers.MissCaseProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.MissCaseProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing cases in switch\\")"}
-org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing default in switch\\")",defaultWithAllEnums\=>false}
-org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing reference return value in assignment operator\\")"}
-org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing self check in assignment operator\\")"}
-org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
-org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
-org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
-org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
-org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
-org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
-org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
-org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
-org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
-org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
-org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
-org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
-org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
-org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
-org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem=-Warning
-org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Using directive in header\\")"}
-org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
-org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem=-Error
-org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Virtual method call in constructor/destructor\\")"}
+++ /dev/null
-eclipse.preferences.version=1
-formatter_settings_version=1
+++ /dev/null
-content-types/enabled=true
-content-types/org.eclipse.cdt.core.cxxHeader/file-names=.h
-eclipse.preferences.version=1
+++ /dev/null
-// __attribute__((packed)) -> no padding bytes
-typedef struct __attribute__((packed)) {
- float angular_velocity;
- float linear_velocity;
- float delta_time;
-} odometry_msg;
-
-typedef struct __attribute__((packed)) {
- float linear_velocity;
- float angular_velocity;
-} velocity_msg;
-
-typedef struct __attribute__((packed)) {
- float pid_select;
- float pid_setpoint_fixed;
- float pid_setpoint_lin;
- float pid_setpoint_ang;
- float pid_kp;
- float pid_ki;
- float pid_kd;
-} pid_setup_msg;
-
-typedef struct __attribute__((packed)) {
- float velocity;
-// float millis;
-} plot_msg;
-
-typedef struct __attribute__((packed)){
- int left_ticks;
- int right_ticks;
-} ticks_msg;
-
+++ /dev/null
-#ifndef CONSTANTS_H
-#define CONSTANTS_H
-
-#define BASELINE 0.3 //distance between wheels in meters
-#define MAX_DUTY_CYCLE 790
-
-#define LEFT_TICKS_PER_METER 195788 //no
-#define RIGHT_TICKS_PER_METER 196829 //no
-
-#define TICKS_PER_REVOLUTION 148000 //x4 resolution
-#define RIGHT_WHEEL_CIRCUMFERENCE 0.8 //in meters
-#define LEFT_WHEEL_CIRCUMFERENCE 0.78 //in meters
-
-#endif
+++ /dev/null
-#ifndef ENCODER_H
-#define ENCODER_H
-
-#include "main.h"
-#include "constants.h"
-
-class Encoder {
- public:
- TIM_HandleTypeDef *timer_;
- uint32_t previous_millis_;
- uint32_t current_millis_;
- int32_t ticks_; //if negative the wheel is going backwards
- float wheel_circumference_;
- int ticks_per_meter_;
-
- Encoder() {
- timer_ = NULL;
- wheel_circumference_ = 0;
- ticks_per_meter_ = 0;
- }
-
-// Encoder(TIM_HandleTypeDef *timer, float wheel_circ);
- Encoder(TIM_HandleTypeDef *timer, int ticks_per_meters);
-
-
- void Setup();
-
- int GetCount() {
- int count = ((int) __HAL_TIM_GET_COUNTER(this->timer_)
- - ((this->timer_->Init.Period) / 2));
- return count;
- }
-
- void ResetCount() {
- //set counter to half its maximum value
- __HAL_TIM_SET_COUNTER(timer_, (timer_->Init.Period / 2));
- }
-
- void UpdateValues();
-
- float GetMeters();
-
- float GetLinearVelocity();
-
-};
-#endif
+++ /dev/null
-/* USER CODE BEGIN Header */\r
-/**\r
- ******************************************************************************\r
- * @file : main.h\r
- * @brief : Header for main.c file.\r
- * This file contains the common defines of the application.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2019 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-/* USER CODE END Header */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __MAIN_H\r
-#define __MAIN_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/* Private includes ----------------------------------------------------------*/\r
-/* USER CODE BEGIN Includes */\r
-\r
-/* USER CODE END Includes */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/* USER CODE BEGIN ET */\r
-\r
-/* USER CODE END ET */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/* USER CODE BEGIN EC */\r
-\r
-/* USER CODE END EC */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/* USER CODE BEGIN EM */\r
-\r
-/* USER CODE END EM */\r
-\r
-void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);\r
-\r
-/* Exported functions prototypes ---------------------------------------------*/\r
-void Error_Handler(void);\r
-\r
-/* USER CODE BEGIN EFP */\r
-\r
-/* USER CODE END EFP */\r
-\r
-/* Private defines -----------------------------------------------------------*/\r
-#define user_button_Pin GPIO_PIN_13\r
-#define user_button_GPIO_Port GPIOC\r
-#define user_button_EXTI_IRQn EXTI15_10_IRQn\r
-#define current2_Pin GPIO_PIN_0\r
-#define current2_GPIO_Port GPIOC\r
-#define encoder_dx1_Pin GPIO_PIN_0\r
-#define encoder_dx1_GPIO_Port GPIOA\r
-#define encoder_dx2_Pin GPIO_PIN_1\r
-#define encoder_dx2_GPIO_Port GPIOA\r
-#define current1_Pin GPIO_PIN_3\r
-#define current1_GPIO_Port GPIOA\r
-#define encoder_sx1_Pin GPIO_PIN_5\r
-#define encoder_sx1_GPIO_Port GPIOA\r
-#define fault2_Pin GPIO_PIN_6\r
-#define fault2_GPIO_Port GPIOA\r
-#define dir2_Pin GPIO_PIN_12\r
-#define dir2_GPIO_Port GPIOF\r
-#define dir1_Pin GPIO_PIN_13\r
-#define dir1_GPIO_Port GPIOF\r
-#define sleep2_Pin GPIO_PIN_14\r
-#define sleep2_GPIO_Port GPIOF\r
-#define sleep1_Pin GPIO_PIN_15\r
-#define sleep1_GPIO_Port GPIOF\r
-#define fault1_Pin GPIO_PIN_9\r
-#define fault1_GPIO_Port GPIOE\r
-#define pwm2_Pin GPIO_PIN_14\r
-#define pwm2_GPIO_Port GPIOD\r
-#define pwm1_Pin GPIO_PIN_15\r
-#define pwm1_GPIO_Port GPIOD\r
-#define encoder_sx2_Pin GPIO_PIN_3\r
-#define encoder_sx2_GPIO_Port GPIOB\r
-/* USER CODE BEGIN Private defines */\r
-\r
-/* USER CODE END Private defines */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __MAIN_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-#ifndef MOTOR_CONTROLLER_H
-#define MOTOR_CONTROLLER_H
-
-#include "main.h"
-#include "constants.h"
-
-class MotorController {
- public:
- GPIO_TypeDef *sleep_gpio_port_;
- uint16_t sleep_pin_;
- GPIO_TypeDef *dir_gpio_port_;
- uint16_t dir_pin_;
- TIM_HandleTypeDef *pwm_timer_;
- uint32_t pwm_channel_;
-
- MotorController(GPIO_TypeDef *sleep_gpio_port, uint16_t sleep_pin,
- GPIO_TypeDef *dir_gpio_port, uint16_t dir_pin,
- TIM_HandleTypeDef *pwm_timer, uint32_t pwm_channel) {
- this->sleep_gpio_port_ = sleep_gpio_port;
- this->sleep_pin_ = sleep_pin;
- this->dir_gpio_port_ = dir_gpio_port;
- this->dir_pin_ = dir_pin;
- this->pwm_timer_ = pwm_timer;
- this->pwm_channel_ = pwm_channel;
- }
-
- void setup() {
- HAL_TIM_PWM_Start(pwm_timer_, pwm_channel_);
- }
-
- void set_speed(int duty_cycle) {
- if (duty_cycle >= 0) {
- //set direction to forward
- HAL_GPIO_WritePin(dir_gpio_port_, dir_pin_, GPIO_PIN_SET);
-
- //check if duty_cycle exceeds maximum
- if (duty_cycle > MAX_DUTY_CYCLE)
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, MAX_DUTY_CYCLE);
- else
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, duty_cycle);
-
- } else if (duty_cycle < 0){
- //set direction to backwards
- HAL_GPIO_WritePin(dir_gpio_port_, dir_pin_, GPIO_PIN_RESET);
-
- //check if duty_cycle is lower than minimum
- if (duty_cycle < -MAX_DUTY_CYCLE)
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, MAX_DUTY_CYCLE);
- else
- //invert sign to make duty_cycle positive
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, -duty_cycle);
- }
-
- HAL_GPIO_WritePin(sleep_gpio_port_, sleep_pin_, GPIO_PIN_SET);
-
- }
-
- void brake() {
- HAL_GPIO_WritePin(sleep_gpio_port_, sleep_pin_, GPIO_PIN_SET);
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, 0);
- }
-
- void coast() {
- HAL_GPIO_WritePin(sleep_gpio_port_, sleep_pin_, GPIO_PIN_RESET);
- }
-};
-#endif
+++ /dev/null
-#ifndef ODOMETRY_H
-#define ODOMETRY_H
-
-#include "constants.h"
-
-class Odometry {
- private:
-
- float left_velocity_;
- float right_velocity_;
- float linear_velocity_;
- float angular_velocity_;
-
-
- public:
- Odometry() {
- left_velocity_ = 0;
- right_velocity_ = 0;
- linear_velocity_ = 0;
- angular_velocity_ = 0;
- }
-
- void UpdateValuesFromVel(float linear_vel, float angular_vel) {
- left_velocity_ = linear_vel - (BASELINE * angular_vel)/2;
- right_velocity_ = linear_vel + (BASELINE * angular_vel)/2;
- }
-
- void UpdateValuesFromWheels(float left_velocity, float right_velocity){
- linear_velocity_ = (left_velocity + right_velocity)/2;
- angular_velocity_ = (right_velocity - left_velocity)/BASELINE;
- }
-
-
- float GetLeftVelocity(){
- return left_velocity_;
- }
- float GetRightVelocity(){
- return right_velocity_;
- }
- float GetLinearVelocity(){
- return linear_velocity_;
- }
- float GetAngularVelocity(){
- return angular_velocity_;
- }
-
-};
-
-#endif
+++ /dev/null
-/* Common parts of the nanopb library. Most of these are quite low-level
- * stuff. For the high-level interface, see pb_encode.h and pb_decode.h.
- */
-
-#ifndef PB_H_INCLUDED
-#define PB_H_INCLUDED
-
-/*****************************************************************
- * Nanopb compilation time options. You can change these here by *
- * uncommenting the lines, or on the compiler command line. *
- *****************************************************************/
-
-/* Enable support for dynamically allocated fields */
-/* #define PB_ENABLE_MALLOC 1 */
-
-/* Define this if your CPU / compiler combination does not support
- * unaligned memory access to packed structures. */
-/* #define PB_NO_PACKED_STRUCTS 1 */
-
-/* Increase the number of required fields that are tracked.
- * A compiler warning will tell if you need this. */
-/* #define PB_MAX_REQUIRED_FIELDS 256 */
-
-/* Add support for tag numbers > 65536 and fields larger than 65536 bytes. */
-/* #define PB_FIELD_32BIT 1 */
-
-/* Disable support for error messages in order to save some code space. */
-/* #define PB_NO_ERRMSG 1 */
-
-/* Disable support for custom streams (support only memory buffers). */
-/* #define PB_BUFFER_ONLY 1 */
-
-/* Disable support for 64-bit datatypes, for compilers without int64_t
- or to save some code space. */
-/* #define PB_WITHOUT_64BIT 1 */
-
-/* Set the fieldinfo width for all messages using automatic width
- * selection. Valid values are 2, 4 and 8. Usually even if you need
- * to change the width manually for some reason, it is preferrable
- * to do so through the descriptorsize option in .options file. */
-/* #define PB_FIELDINFO_WIDTH 4 */
-
-/* Don't encode scalar arrays as packed. This is only to be used when
- * the decoder on the receiving side cannot process packed scalar arrays.
- * Such example is older protobuf.js. */
-/* #define PB_ENCODE_ARRAYS_UNPACKED 1 */
-
-/* Enable conversion of doubles to floats for platforms that do not
- * support 64-bit doubles. Most commonly AVR. */
-/* #define PB_CONVERT_DOUBLE_FLOAT 1 */
-
-/* Check whether incoming strings are valid UTF-8 sequences. Slows down
- * the string processing slightly and slightly increases code size. */
-/* #define PB_VALIDATE_UTF8 1 */
-
-/******************************************************************
- * You usually don't need to change anything below this line. *
- * Feel free to look around and use the defined macros, though. *
- ******************************************************************/
-
-
-/* Version of the nanopb library. Just in case you want to check it in
- * your own program. */
-#define NANOPB_VERSION 0.4.1-dev
-
-/* Include all the system headers needed by nanopb. You will need the
- * definitions of the following:
- * - strlen, memcpy, memset functions
- * - [u]int_least8_t, uint_fast8_t, [u]int_least16_t, [u]int32_t, [u]int64_t
- * - size_t
- * - bool
- *
- * If you don't have the standard header files, you can instead provide
- * a custom header that defines or includes all this. In that case,
- * define PB_SYSTEM_HEADER to the path of this file.
- */
-#ifdef PB_SYSTEM_HEADER
-#include PB_SYSTEM_HEADER
-#else
-#include <stdint.h>
-#include <stddef.h>
-#include <stdbool.h>
-#include <string.h>
-#include <limits.h>
-
-#ifdef PB_ENABLE_MALLOC
-#include <stdlib.h>
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Macro for defining packed structures (compiler dependent).
- * This just reduces memory requirements, but is not required.
- */
-#if defined(PB_NO_PACKED_STRUCTS)
- /* Disable struct packing */
-# define PB_PACKED_STRUCT_START
-# define PB_PACKED_STRUCT_END
-# define pb_packed
-#elif defined(__GNUC__) || defined(__clang__)
- /* For GCC and clang */
-# define PB_PACKED_STRUCT_START
-# define PB_PACKED_STRUCT_END
-# define pb_packed __attribute__((packed))
-#elif defined(__ICCARM__) || defined(__CC_ARM)
- /* For IAR ARM and Keil MDK-ARM compilers */
-# define PB_PACKED_STRUCT_START _Pragma("pack(push, 1)")
-# define PB_PACKED_STRUCT_END _Pragma("pack(pop)")
-# define pb_packed
-#elif defined(_MSC_VER) && (_MSC_VER >= 1500)
- /* For Microsoft Visual C++ */
-# define PB_PACKED_STRUCT_START __pragma(pack(push, 1))
-# define PB_PACKED_STRUCT_END __pragma(pack(pop))
-# define pb_packed
-#else
- /* Unknown compiler */
-# define PB_PACKED_STRUCT_START
-# define PB_PACKED_STRUCT_END
-# define pb_packed
-#endif
-
-/* Handly macro for suppressing unreferenced-parameter compiler warnings. */
-#ifndef PB_UNUSED
-#define PB_UNUSED(x) (void)(x)
-#endif
-
-/* Harvard-architecture processors may need special attributes for storing
- * field information in program memory. */
-#ifndef PB_PROGMEM
-#ifdef __AVR__
-#include <avr/pgmspace.h>
-#define PB_PROGMEM PROGMEM
-#define PB_PROGMEM_READU32(x) pgm_read_dword(&x)
-#else
-#define PB_PROGMEM
-#define PB_PROGMEM_READU32(x) (x)
-#endif
-#endif
-
-/* Compile-time assertion, used for checking compatible compilation options.
- * If this does not work properly on your compiler, use
- * #define PB_NO_STATIC_ASSERT to disable it.
- *
- * But before doing that, check carefully the error message / place where it
- * comes from to see if the error has a real cause. Unfortunately the error
- * message is not always very clear to read, but you can see the reason better
- * in the place where the PB_STATIC_ASSERT macro was called.
- */
-#ifndef PB_NO_STATIC_ASSERT
-# ifndef PB_STATIC_ASSERT
-# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
- /* C11 standard _Static_assert mechanism */
-# define PB_STATIC_ASSERT(COND,MSG) _Static_assert(COND,#MSG);
-# else
- /* Classic negative-size-array static assert mechanism */
-# define PB_STATIC_ASSERT(COND,MSG) typedef char PB_STATIC_ASSERT_MSG(MSG, __LINE__, __COUNTER__)[(COND)?1:-1];
-# define PB_STATIC_ASSERT_MSG(MSG, LINE, COUNTER) PB_STATIC_ASSERT_MSG_(MSG, LINE, COUNTER)
-# define PB_STATIC_ASSERT_MSG_(MSG, LINE, COUNTER) pb_static_assertion_##MSG##_##LINE##_##COUNTER
-# endif
-# endif
-#else
- /* Static asserts disabled by PB_NO_STATIC_ASSERT */
-# define PB_STATIC_ASSERT(COND,MSG)
-#endif
-
-/* Number of required fields to keep track of. */
-#ifndef PB_MAX_REQUIRED_FIELDS
-#define PB_MAX_REQUIRED_FIELDS 64
-#endif
-
-#if PB_MAX_REQUIRED_FIELDS < 64
-#error You should not lower PB_MAX_REQUIRED_FIELDS from the default value (64).
-#endif
-
-#ifdef PB_WITHOUT_64BIT
-#ifdef PB_CONVERT_DOUBLE_FLOAT
-/* Cannot use doubles without 64-bit types */
-#undef PB_CONVERT_DOUBLE_FLOAT
-#endif
-#endif
-
-/* List of possible field types. These are used in the autogenerated code.
- * Least-significant 4 bits tell the scalar type
- * Most-significant 4 bits specify repeated/required/packed etc.
- */
-
-typedef uint_least8_t pb_type_t;
-
-/**** Field data types ****/
-
-/* Numeric types */
-#define PB_LTYPE_BOOL 0x00U /* bool */
-#define PB_LTYPE_VARINT 0x01U /* int32, int64, enum, bool */
-#define PB_LTYPE_UVARINT 0x02U /* uint32, uint64 */
-#define PB_LTYPE_SVARINT 0x03U /* sint32, sint64 */
-#define PB_LTYPE_FIXED32 0x04U /* fixed32, sfixed32, float */
-#define PB_LTYPE_FIXED64 0x05U /* fixed64, sfixed64, double */
-
-/* Marker for last packable field type. */
-#define PB_LTYPE_LAST_PACKABLE 0x05U
-
-/* Byte array with pre-allocated buffer.
- * data_size is the length of the allocated PB_BYTES_ARRAY structure. */
-#define PB_LTYPE_BYTES 0x06U
-
-/* String with pre-allocated buffer.
- * data_size is the maximum length. */
-#define PB_LTYPE_STRING 0x07U
-
-/* Submessage
- * submsg_fields is pointer to field descriptions */
-#define PB_LTYPE_SUBMESSAGE 0x08U
-
-/* Submessage with pre-decoding callback
- * The pre-decoding callback is stored as pb_callback_t right before pSize.
- * submsg_fields is pointer to field descriptions */
-#define PB_LTYPE_SUBMSG_W_CB 0x09U
-
-/* Extension pseudo-field
- * The field contains a pointer to pb_extension_t */
-#define PB_LTYPE_EXTENSION 0x0AU
-
-/* Byte array with inline, pre-allocated byffer.
- * data_size is the length of the inline, allocated buffer.
- * This differs from PB_LTYPE_BYTES by defining the element as
- * pb_byte_t[data_size] rather than pb_bytes_array_t. */
-#define PB_LTYPE_FIXED_LENGTH_BYTES 0x0BU
-
-/* Number of declared LTYPES */
-#define PB_LTYPES_COUNT 0x0CU
-#define PB_LTYPE_MASK 0x0FU
-
-/**** Field repetition rules ****/
-
-#define PB_HTYPE_REQUIRED 0x00U
-#define PB_HTYPE_OPTIONAL 0x10U
-#define PB_HTYPE_SINGULAR 0x10U
-#define PB_HTYPE_REPEATED 0x20U
-#define PB_HTYPE_FIXARRAY 0x20U
-#define PB_HTYPE_ONEOF 0x30U
-#define PB_HTYPE_MASK 0x30U
-
-/**** Field allocation types ****/
-
-#define PB_ATYPE_STATIC 0x00U
-#define PB_ATYPE_POINTER 0x80U
-#define PB_ATYPE_CALLBACK 0x40U
-#define PB_ATYPE_MASK 0xC0U
-
-#define PB_ATYPE(x) ((x) & PB_ATYPE_MASK)
-#define PB_HTYPE(x) ((x) & PB_HTYPE_MASK)
-#define PB_LTYPE(x) ((x) & PB_LTYPE_MASK)
-#define PB_LTYPE_IS_SUBMSG(x) (PB_LTYPE(x) == PB_LTYPE_SUBMESSAGE || \
- PB_LTYPE(x) == PB_LTYPE_SUBMSG_W_CB)
-
-/* Data type used for storing sizes of struct fields
- * and array counts.
- */
-#if defined(PB_FIELD_32BIT)
- typedef uint32_t pb_size_t;
- typedef int32_t pb_ssize_t;
-#else
- typedef uint_least16_t pb_size_t;
- typedef int_least16_t pb_ssize_t;
-#endif
-#define PB_SIZE_MAX ((pb_size_t)-1)
-
-/* Data type for storing encoded data and other byte streams.
- * This typedef exists to support platforms where uint8_t does not exist.
- * You can regard it as equivalent on uint8_t on other platforms.
- */
-typedef uint_least8_t pb_byte_t;
-
-/* Forward declaration of struct types */
-typedef struct pb_istream_s pb_istream_t;
-typedef struct pb_ostream_s pb_ostream_t;
-typedef struct pb_field_iter_s pb_field_iter_t;
-
-/* This structure is used in auto-generated constants
- * to specify struct fields.
- */
-PB_PACKED_STRUCT_START
-typedef struct pb_msgdesc_s pb_msgdesc_t;
-struct pb_msgdesc_s {
- pb_size_t field_count;
- const uint32_t *field_info;
- const pb_msgdesc_t * const * submsg_info;
- const pb_byte_t *default_value;
-
- bool (*field_callback)(pb_istream_t *istream, pb_ostream_t *ostream, const pb_field_iter_t *field);
-} pb_packed;
-PB_PACKED_STRUCT_END
-
-/* Iterator for message descriptor */
-struct pb_field_iter_s {
- const pb_msgdesc_t *descriptor; /* Pointer to message descriptor constant */
- void *message; /* Pointer to start of the structure */
-
- pb_size_t index; /* Index of the field */
- pb_size_t field_info_index; /* Index to descriptor->field_info array */
- pb_size_t required_field_index; /* Index that counts only the required fields */
- pb_size_t submessage_index; /* Index that counts only submessages */
-
- pb_size_t tag; /* Tag of current field */
- pb_size_t data_size; /* sizeof() of a single item */
- pb_size_t array_size; /* Number of array entries */
- pb_type_t type; /* Type of current field */
-
- void *pField; /* Pointer to current field in struct */
- void *pData; /* Pointer to current data contents. Different than pField for arrays and pointers. */
- void *pSize; /* Pointer to count/has field */
-
- const pb_msgdesc_t *submsg_desc; /* For submessage fields, pointer to field descriptor for the submessage. */
-};
-
-/* For compatibility with legacy code */
-typedef pb_field_iter_t pb_field_t;
-
-/* Make sure that the standard integer types are of the expected sizes.
- * Otherwise fixed32/fixed64 fields can break.
- *
- * If you get errors here, it probably means that your stdint.h is not
- * correct for your platform.
- */
-#ifndef PB_WITHOUT_64BIT
-PB_STATIC_ASSERT(sizeof(int64_t) == 2 * sizeof(int32_t), INT64_T_WRONG_SIZE)
-PB_STATIC_ASSERT(sizeof(uint64_t) == 2 * sizeof(uint32_t), UINT64_T_WRONG_SIZE)
-#endif
-
-/* This structure is used for 'bytes' arrays.
- * It has the number of bytes in the beginning, and after that an array.
- * Note that actual structs used will have a different length of bytes array.
- */
-#define PB_BYTES_ARRAY_T(n) struct { pb_size_t size; pb_byte_t bytes[n]; }
-#define PB_BYTES_ARRAY_T_ALLOCSIZE(n) ((size_t)n + offsetof(pb_bytes_array_t, bytes))
-
-struct pb_bytes_array_s {
- pb_size_t size;
- pb_byte_t bytes[1];
-};
-typedef struct pb_bytes_array_s pb_bytes_array_t;
-
-/* This structure is used for giving the callback function.
- * It is stored in the message structure and filled in by the method that
- * calls pb_decode.
- *
- * The decoding callback will be given a limited-length stream
- * If the wire type was string, the length is the length of the string.
- * If the wire type was a varint/fixed32/fixed64, the length is the length
- * of the actual value.
- * The function may be called multiple times (especially for repeated types,
- * but also otherwise if the message happens to contain the field multiple
- * times.)
- *
- * The encoding callback will receive the actual output stream.
- * It should write all the data in one call, including the field tag and
- * wire type. It can write multiple fields.
- *
- * The callback can be null if you want to skip a field.
- */
-typedef struct pb_callback_s pb_callback_t;
-struct pb_callback_s {
- /* Callback functions receive a pointer to the arg field.
- * You can access the value of the field as *arg, and modify it if needed.
- */
- union {
- bool (*decode)(pb_istream_t *stream, const pb_field_t *field, void **arg);
- bool (*encode)(pb_ostream_t *stream, const pb_field_t *field, void * const *arg);
- } funcs;
-
- /* Free arg for use by callback */
- void *arg;
-};
-
-extern bool pb_default_field_callback(pb_istream_t *istream, pb_ostream_t *ostream, const pb_field_t *field);
-
-/* Wire types. Library user needs these only in encoder callbacks. */
-typedef enum {
- PB_WT_VARINT = 0,
- PB_WT_64BIT = 1,
- PB_WT_STRING = 2,
- PB_WT_32BIT = 5
-} pb_wire_type_t;
-
-/* Structure for defining the handling of unknown/extension fields.
- * Usually the pb_extension_type_t structure is automatically generated,
- * while the pb_extension_t structure is created by the user. However,
- * if you want to catch all unknown fields, you can also create a custom
- * pb_extension_type_t with your own callback.
- */
-typedef struct pb_extension_type_s pb_extension_type_t;
-typedef struct pb_extension_s pb_extension_t;
-struct pb_extension_type_s {
- /* Called for each unknown field in the message.
- * If you handle the field, read off all of its data and return true.
- * If you do not handle the field, do not read anything and return true.
- * If you run into an error, return false.
- * Set to NULL for default handler.
- */
- bool (*decode)(pb_istream_t *stream, pb_extension_t *extension,
- uint32_t tag, pb_wire_type_t wire_type);
-
- /* Called once after all regular fields have been encoded.
- * If you have something to write, do so and return true.
- * If you do not have anything to write, just return true.
- * If you run into an error, return false.
- * Set to NULL for default handler.
- */
- bool (*encode)(pb_ostream_t *stream, const pb_extension_t *extension);
-
- /* Free field for use by the callback. */
- const void *arg;
-};
-
-struct pb_extension_s {
- /* Type describing the extension field. Usually you'll initialize
- * this to a pointer to the automatically generated structure. */
- const pb_extension_type_t *type;
-
- /* Destination for the decoded data. This must match the datatype
- * of the extension field. */
- void *dest;
-
- /* Pointer to the next extension handler, or NULL.
- * If this extension does not match a field, the next handler is
- * automatically called. */
- pb_extension_t *next;
-
- /* The decoder sets this to true if the extension was found.
- * Ignored for encoding. */
- bool found;
-};
-
-#define pb_extension_init_zero {NULL,NULL,NULL,false}
-
-/* Memory allocation functions to use. You can define pb_realloc and
- * pb_free to custom functions if you want. */
-#ifdef PB_ENABLE_MALLOC
-# ifndef pb_realloc
-# define pb_realloc(ptr, size) realloc(ptr, size)
-# endif
-# ifndef pb_free
-# define pb_free(ptr) free(ptr)
-# endif
-#endif
-
-/* This is used to inform about need to regenerate .pb.h/.pb.c files. */
-#define PB_PROTO_HEADER_VERSION 40
-
-/* These macros are used to declare pb_field_t's in the constant array. */
-/* Size of a structure member, in bytes. */
-#define pb_membersize(st, m) (sizeof ((st*)0)->m)
-/* Number of entries in an array. */
-#define pb_arraysize(st, m) (pb_membersize(st, m) / pb_membersize(st, m[0]))
-/* Delta from start of one member to the start of another member. */
-#define pb_delta(st, m1, m2) ((int)offsetof(st, m1) - (int)offsetof(st, m2))
-
-/* Force expansion of macro value */
-#define PB_EXPAND(x) x
-
-/* Binding of a message field set into a specific structure */
-#define PB_BIND(msgname, structname, width) \
- const uint32_t structname ## _field_info[] PB_PROGMEM = \
- { \
- msgname ## _FIELDLIST(PB_GEN_FIELD_INFO_ ## width, structname) \
- 0 \
- }; \
- const pb_msgdesc_t* const structname ## _submsg_info[] = \
- { \
- msgname ## _FIELDLIST(PB_GEN_SUBMSG_INFO, structname) \
- NULL \
- }; \
- const pb_msgdesc_t structname ## _msg = \
- { \
- 0 msgname ## _FIELDLIST(PB_GEN_FIELD_COUNT, structname), \
- structname ## _field_info, \
- structname ## _submsg_info, \
- msgname ## _DEFAULT, \
- msgname ## _CALLBACK, \
- }; \
- msgname ## _FIELDLIST(PB_GEN_FIELD_INFO_ASSERT_ ## width, structname)
-
-#define PB_GEN_FIELD_COUNT(structname, atype, htype, ltype, fieldname, tag) +1
-
-#define PB_GEN_FIELD_INFO_1(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO(1, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_2(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO(2, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_4(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO(4, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_8(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO(8, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_AUTO(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO_AUTO2(PB_FIELDINFO_WIDTH_AUTO(atype, htype, ltype), structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_AUTO2(width, structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO(width, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO(width, structname, atype, htype, ltype, fieldname, tag) \
- PB_FIELDINFO_ ## width(tag, PB_ATYPE_ ## atype | PB_HTYPE_ ## htype | PB_LTYPE_MAP_ ## ltype, \
- PB_DATA_OFFSET_ ## atype(htype, structname, fieldname), \
- PB_DATA_SIZE_ ## atype(htype, structname, fieldname), \
- PB_SIZE_OFFSET_ ## atype(htype, structname, fieldname), \
- PB_ARRAY_SIZE_ ## atype(htype, structname, fieldname))
-
-#define PB_GEN_FIELD_INFO_ASSERT_1(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO_ASSERT(1, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_ASSERT_2(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO_ASSERT(2, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_ASSERT_4(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO_ASSERT(4, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_ASSERT_8(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO_ASSERT(8, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_ASSERT_AUTO(structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO_ASSERT_AUTO2(PB_FIELDINFO_WIDTH_AUTO(atype, htype, ltype), structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_ASSERT_AUTO2(width, structname, atype, htype, ltype, fieldname, tag) \
- PB_GEN_FIELD_INFO_ASSERT(width, structname, atype, htype, ltype, fieldname, tag)
-
-#define PB_GEN_FIELD_INFO_ASSERT(width, structname, atype, htype, ltype, fieldname, tag) \
- PB_FIELDINFO_ASSERT_ ## width(tag, PB_ATYPE_ ## atype | PB_HTYPE_ ## htype | PB_LTYPE_MAP_ ## ltype, \
- PB_DATA_OFFSET_ ## atype(htype, structname, fieldname), \
- PB_DATA_SIZE_ ## atype(htype, structname, fieldname), \
- PB_SIZE_OFFSET_ ## atype(htype, structname, fieldname), \
- PB_ARRAY_SIZE_ ## atype(htype, structname, fieldname))
-
-#define PB_DATA_OFFSET_STATIC(htype, structname, fieldname) PB_DATA_OFFSET_ ## htype(structname, fieldname)
-#define PB_DATA_OFFSET_POINTER(htype, structname, fieldname) PB_DATA_OFFSET_ ## htype(structname, fieldname)
-#define PB_DATA_OFFSET_CALLBACK(htype, structname, fieldname) PB_DATA_OFFSET_ ## htype(structname, fieldname)
-#define PB_DATA_OFFSET_REQUIRED(structname, fieldname) offsetof(structname, fieldname)
-#define PB_DATA_OFFSET_SINGULAR(structname, fieldname) offsetof(structname, fieldname)
-#define PB_DATA_OFFSET_ONEOF(structname, fieldname) offsetof(structname, PB_ONEOF_NAME(FULL, fieldname))
-#define PB_DATA_OFFSET_OPTIONAL(structname, fieldname) offsetof(structname, fieldname)
-#define PB_DATA_OFFSET_REPEATED(structname, fieldname) offsetof(structname, fieldname)
-#define PB_DATA_OFFSET_FIXARRAY(structname, fieldname) offsetof(structname, fieldname)
-
-#define PB_SIZE_OFFSET_STATIC(htype, structname, fieldname) PB_SIZE_OFFSET_ ## htype(structname, fieldname)
-#define PB_SIZE_OFFSET_POINTER(htype, structname, fieldname) PB_SIZE_OFFSET_PTR_ ## htype(structname, fieldname)
-#define PB_SIZE_OFFSET_CALLBACK(htype, structname, fieldname) PB_SIZE_OFFSET_CB_ ## htype(structname, fieldname)
-#define PB_SIZE_OFFSET_REQUIRED(structname, fieldname) 0
-#define PB_SIZE_OFFSET_SINGULAR(structname, fieldname) 0
-#define PB_SIZE_OFFSET_ONEOF(structname, fieldname) PB_SIZE_OFFSET_ONEOF2(structname, PB_ONEOF_NAME(FULL, fieldname), PB_ONEOF_NAME(UNION, fieldname))
-#define PB_SIZE_OFFSET_ONEOF2(structname, fullname, unionname) PB_SIZE_OFFSET_ONEOF3(structname, fullname, unionname)
-#define PB_SIZE_OFFSET_ONEOF3(structname, fullname, unionname) pb_delta(structname, fullname, which_ ## unionname)
-#define PB_SIZE_OFFSET_OPTIONAL(structname, fieldname) pb_delta(structname, fieldname, has_ ## fieldname)
-#define PB_SIZE_OFFSET_REPEATED(structname, fieldname) pb_delta(structname, fieldname, fieldname ## _count)
-#define PB_SIZE_OFFSET_FIXARRAY(structname, fieldname) 0
-#define PB_SIZE_OFFSET_PTR_REQUIRED(structname, fieldname) 0
-#define PB_SIZE_OFFSET_PTR_SINGULAR(structname, fieldname) 0
-#define PB_SIZE_OFFSET_PTR_ONEOF(structname, fieldname) PB_SIZE_OFFSET_ONEOF(structname, fieldname)
-#define PB_SIZE_OFFSET_PTR_OPTIONAL(structname, fieldname) 0
-#define PB_SIZE_OFFSET_PTR_REPEATED(structname, fieldname) PB_SIZE_OFFSET_REPEATED(structname, fieldname)
-#define PB_SIZE_OFFSET_PTR_FIXARRAY(structname, fieldname) 0
-#define PB_SIZE_OFFSET_CB_REQUIRED(structname, fieldname) 0
-#define PB_SIZE_OFFSET_CB_SINGULAR(structname, fieldname) 0
-#define PB_SIZE_OFFSET_CB_ONEOF(structname, fieldname) PB_SIZE_OFFSET_ONEOF(structname, fieldname)
-#define PB_SIZE_OFFSET_CB_OPTIONAL(structname, fieldname) 0
-#define PB_SIZE_OFFSET_CB_REPEATED(structname, fieldname) 0
-#define PB_SIZE_OFFSET_CB_FIXARRAY(structname, fieldname) 0
-
-#define PB_ARRAY_SIZE_STATIC(htype, structname, fieldname) PB_ARRAY_SIZE_ ## htype(structname, fieldname)
-#define PB_ARRAY_SIZE_POINTER(htype, structname, fieldname) PB_ARRAY_SIZE_PTR_ ## htype(structname, fieldname)
-#define PB_ARRAY_SIZE_CALLBACK(htype, structname, fieldname) 1
-#define PB_ARRAY_SIZE_REQUIRED(structname, fieldname) 1
-#define PB_ARRAY_SIZE_SINGULAR(structname, fieldname) 1
-#define PB_ARRAY_SIZE_OPTIONAL(structname, fieldname) 1
-#define PB_ARRAY_SIZE_ONEOF(structname, fieldname) 1
-#define PB_ARRAY_SIZE_REPEATED(structname, fieldname) pb_arraysize(structname, fieldname)
-#define PB_ARRAY_SIZE_FIXARRAY(structname, fieldname) pb_arraysize(structname, fieldname)
-#define PB_ARRAY_SIZE_PTR_REQUIRED(structname, fieldname) 1
-#define PB_ARRAY_SIZE_PTR_SINGULAR(structname, fieldname) 1
-#define PB_ARRAY_SIZE_PTR_OPTIONAL(structname, fieldname) 1
-#define PB_ARRAY_SIZE_PTR_ONEOF(structname, fieldname) 1
-#define PB_ARRAY_SIZE_PTR_REPEATED(structname, fieldname) 1
-#define PB_ARRAY_SIZE_PTR_FIXARRAY(structname, fieldname) pb_arraysize(structname, fieldname[0])
-
-#define PB_DATA_SIZE_STATIC(htype, structname, fieldname) PB_DATA_SIZE_ ## htype(structname, fieldname)
-#define PB_DATA_SIZE_POINTER(htype, structname, fieldname) PB_DATA_SIZE_PTR_ ## htype(structname, fieldname)
-#define PB_DATA_SIZE_CALLBACK(htype, structname, fieldname) PB_DATA_SIZE_CB_ ## htype(structname, fieldname)
-#define PB_DATA_SIZE_REQUIRED(structname, fieldname) pb_membersize(structname, fieldname)
-#define PB_DATA_SIZE_SINGULAR(structname, fieldname) pb_membersize(structname, fieldname)
-#define PB_DATA_SIZE_OPTIONAL(structname, fieldname) pb_membersize(structname, fieldname)
-#define PB_DATA_SIZE_ONEOF(structname, fieldname) pb_membersize(structname, PB_ONEOF_NAME(FULL, fieldname))
-#define PB_DATA_SIZE_REPEATED(structname, fieldname) pb_membersize(structname, fieldname[0])
-#define PB_DATA_SIZE_FIXARRAY(structname, fieldname) pb_membersize(structname, fieldname[0])
-#define PB_DATA_SIZE_PTR_REQUIRED(structname, fieldname) pb_membersize(structname, fieldname[0])
-#define PB_DATA_SIZE_PTR_SINGULAR(structname, fieldname) pb_membersize(structname, fieldname[0])
-#define PB_DATA_SIZE_PTR_OPTIONAL(structname, fieldname) pb_membersize(structname, fieldname[0])
-#define PB_DATA_SIZE_PTR_ONEOF(structname, fieldname) pb_membersize(structname, PB_ONEOF_NAME(FULL, fieldname)[0])
-#define PB_DATA_SIZE_PTR_REPEATED(structname, fieldname) pb_membersize(structname, fieldname[0])
-#define PB_DATA_SIZE_PTR_FIXARRAY(structname, fieldname) pb_membersize(structname, fieldname[0][0])
-#define PB_DATA_SIZE_CB_REQUIRED(structname, fieldname) pb_membersize(structname, fieldname)
-#define PB_DATA_SIZE_CB_SINGULAR(structname, fieldname) pb_membersize(structname, fieldname)
-#define PB_DATA_SIZE_CB_OPTIONAL(structname, fieldname) pb_membersize(structname, fieldname)
-#define PB_DATA_SIZE_CB_ONEOF(structname, fieldname) pb_membersize(structname, PB_ONEOF_NAME(FULL, fieldname))
-#define PB_DATA_SIZE_CB_REPEATED(structname, fieldname) pb_membersize(structname, fieldname)
-#define PB_DATA_SIZE_CB_FIXARRAY(structname, fieldname) pb_membersize(structname, fieldname)
-
-#define PB_ONEOF_NAME(type, tuple) PB_EXPAND(PB_ONEOF_NAME_ ## type tuple)
-#define PB_ONEOF_NAME_UNION(unionname,membername,fullname) unionname
-#define PB_ONEOF_NAME_MEMBER(unionname,membername,fullname) membername
-#define PB_ONEOF_NAME_FULL(unionname,membername,fullname) fullname
-
-#define PB_GEN_SUBMSG_INFO(structname, atype, htype, ltype, fieldname, tag) \
- PB_SUBMSG_INFO_ ## htype(ltype, structname, fieldname)
-
-#define PB_SUBMSG_INFO_REQUIRED(ltype, structname, fieldname) PB_SUBMSG_INFO_ ## ltype(structname ## _ ## fieldname ## _MSGTYPE)
-#define PB_SUBMSG_INFO_SINGULAR(ltype, structname, fieldname) PB_SUBMSG_INFO_ ## ltype(structname ## _ ## fieldname ## _MSGTYPE)
-#define PB_SUBMSG_INFO_OPTIONAL(ltype, structname, fieldname) PB_SUBMSG_INFO_ ## ltype(structname ## _ ## fieldname ## _MSGTYPE)
-#define PB_SUBMSG_INFO_ONEOF(ltype, structname, fieldname) PB_SUBMSG_INFO_ONEOF2(ltype, structname, PB_ONEOF_NAME(UNION, fieldname), PB_ONEOF_NAME(MEMBER, fieldname))
-#define PB_SUBMSG_INFO_ONEOF2(ltype, structname, unionname, membername) PB_SUBMSG_INFO_ONEOF3(ltype, structname, unionname, membername)
-#define PB_SUBMSG_INFO_ONEOF3(ltype, structname, unionname, membername) PB_SUBMSG_INFO_ ## ltype(structname ## _ ## unionname ## _ ## membername ## _MSGTYPE)
-#define PB_SUBMSG_INFO_REPEATED(ltype, structname, fieldname) PB_SUBMSG_INFO_ ## ltype(structname ## _ ## fieldname ## _MSGTYPE)
-#define PB_SUBMSG_INFO_FIXARRAY(ltype, structname, fieldname) PB_SUBMSG_INFO_ ## ltype(structname ## _ ## fieldname ## _MSGTYPE)
-#define PB_SUBMSG_INFO_BOOL(t)
-#define PB_SUBMSG_INFO_BYTES(t)
-#define PB_SUBMSG_INFO_DOUBLE(t)
-#define PB_SUBMSG_INFO_ENUM(t)
-#define PB_SUBMSG_INFO_UENUM(t)
-#define PB_SUBMSG_INFO_FIXED32(t)
-#define PB_SUBMSG_INFO_FIXED64(t)
-#define PB_SUBMSG_INFO_FLOAT(t)
-#define PB_SUBMSG_INFO_INT32(t)
-#define PB_SUBMSG_INFO_INT64(t)
-#define PB_SUBMSG_INFO_MESSAGE(t) PB_SUBMSG_DESCRIPTOR(t)
-#define PB_SUBMSG_INFO_MSG_W_CB(t) PB_SUBMSG_DESCRIPTOR(t)
-#define PB_SUBMSG_INFO_SFIXED32(t)
-#define PB_SUBMSG_INFO_SFIXED64(t)
-#define PB_SUBMSG_INFO_SINT32(t)
-#define PB_SUBMSG_INFO_SINT64(t)
-#define PB_SUBMSG_INFO_STRING(t)
-#define PB_SUBMSG_INFO_UINT32(t)
-#define PB_SUBMSG_INFO_UINT64(t)
-#define PB_SUBMSG_INFO_EXTENSION(t)
-#define PB_SUBMSG_INFO_FIXED_LENGTH_BYTES(t)
-#define PB_SUBMSG_DESCRIPTOR(t) &(t ## _msg),
-
-/* The field descriptors use a variable width format, with width of either
- * 1, 2, 4 or 8 of 32-bit words. The two lowest bytes of the first byte always
- * encode the descriptor size, 6 lowest bits of field tag number, and 8 bits
- * of the field type.
- *
- * Descriptor size is encoded as 0 = 1 word, 1 = 2 words, 2 = 4 words, 3 = 8 words.
- *
- * Formats, listed starting with the least significant bit of the first word.
- * 1 word: [2-bit len] [6-bit tag] [8-bit type] [8-bit data_offset] [4-bit size_offset] [4-bit data_size]
- *
- * 2 words: [2-bit len] [6-bit tag] [8-bit type] [12-bit array_size] [4-bit size_offset]
- * [16-bit data_offset] [12-bit data_size] [4-bit tag>>6]
- *
- * 4 words: [2-bit len] [6-bit tag] [8-bit type] [16-bit array_size]
- * [8-bit size_offset] [24-bit tag>>6]
- * [32-bit data_offset]
- * [32-bit data_size]
- *
- * 8 words: [2-bit len] [6-bit tag] [8-bit type] [16-bit reserved]
- * [8-bit size_offset] [24-bit tag>>6]
- * [32-bit data_offset]
- * [32-bit data_size]
- * [32-bit array_size]
- * [32-bit reserved]
- * [32-bit reserved]
- * [32-bit reserved]
- */
-
-#define PB_FIELDINFO_1(tag, type, data_offset, data_size, size_offset, array_size) \
- (0 | (((tag) << 2) & 0xFF) | ((type) << 8) | (((uint32_t)(data_offset) & 0xFF) << 16) | \
- (((uint32_t)(size_offset) & 0x0F) << 24) | (((uint32_t)(data_size) & 0x0F) << 28)),
-
-#define PB_FIELDINFO_2(tag, type, data_offset, data_size, size_offset, array_size) \
- (1 | (((tag) << 2) & 0xFF) | ((type) << 8) | (((uint32_t)(array_size) & 0xFFF) << 16) | (((uint32_t)(size_offset) & 0x0F) << 28)), \
- (((uint32_t)(data_offset) & 0xFFFF) | (((uint32_t)(data_size) & 0xFFF) << 16) | (((uint32_t)(tag) & 0x3c0) << 22)),
-
-#define PB_FIELDINFO_4(tag, type, data_offset, data_size, size_offset, array_size) \
- (2 | (((tag) << 2) & 0xFF) | ((type) << 8) | (((uint32_t)(array_size) & 0xFFFF) << 16)), \
- ((uint32_t)(int8_t)(size_offset) | (((uint32_t)(tag) << 2) & 0xFFFFFF00)), \
- (data_offset), (data_size),
-
-#define PB_FIELDINFO_8(tag, type, data_offset, data_size, size_offset, array_size) \
- (3 | (((tag) << 2) & 0xFF) | ((type) << 8)), \
- ((uint32_t)(int8_t)(size_offset) | (((uint32_t)(tag) << 2) & 0xFFFFFF00)), \
- (data_offset), (data_size), (array_size), 0, 0, 0,
-
-/* These assertions verify that the field information fits in the allocated space.
- * The generator tries to automatically determine the correct width that can fit all
- * data associated with a message. These asserts will fail only if there has been a
- * problem in the automatic logic - this may be worth reporting as a bug. As a workaround,
- * you can increase the descriptor width by defining PB_FIELDINFO_WIDTH or by setting
- * descriptorsize option in .options file.
- */
-#define PB_FITS(value,bits) ((uint32_t)(value) < ((uint32_t)1<<bits))
-#define PB_FIELDINFO_ASSERT_1(tag, type, data_offset, data_size, size_offset, array_size) \
- PB_STATIC_ASSERT(PB_FITS(tag,6) && PB_FITS(data_offset,8) && PB_FITS(size_offset,4) && PB_FITS(data_size,4) && PB_FITS(array_size,1), FIELDINFO_DOES_NOT_FIT_width1_field ## tag)
-
-#define PB_FIELDINFO_ASSERT_2(tag, type, data_offset, data_size, size_offset, array_size) \
- PB_STATIC_ASSERT(PB_FITS(tag,10) && PB_FITS(data_offset,16) && PB_FITS(size_offset,4) && PB_FITS(data_size,12) && PB_FITS(array_size,12), FIELDINFO_DOES_NOT_FIT_width2_field ## tag)
-
-#ifndef PB_FIELD_32BIT
-/* Maximum field sizes are still 16-bit if pb_size_t is 16-bit */
-#define PB_FIELDINFO_ASSERT_4(tag, type, data_offset, data_size, size_offset, array_size) \
- PB_STATIC_ASSERT(PB_FITS(tag,16) && PB_FITS(data_offset,16) && PB_FITS((int8_t)size_offset,8) && PB_FITS(data_size,16) && PB_FITS(array_size,16), FIELDINFO_DOES_NOT_FIT_width4_field ## tag)
-
-#define PB_FIELDINFO_ASSERT_8(tag, type, data_offset, data_size, size_offset, array_size) \
- PB_STATIC_ASSERT(PB_FITS(tag,16) && PB_FITS(data_offset,16) && PB_FITS((int8_t)size_offset,8) && PB_FITS(data_size,16) && PB_FITS(array_size,16), FIELDINFO_DOES_NOT_FIT_width8_field ## tag)
-#else
-/* Up to 32-bit fields supported.
- * Note that the checks are against 31 bits to avoid compiler warnings about shift wider than type in the test.
- * I expect that there is no reasonable use for >2GB messages with nanopb anyway.
- */
-#define PB_FIELDINFO_ASSERT_4(tag, type, data_offset, data_size, size_offset, array_size) \
- PB_STATIC_ASSERT(PB_FITS(tag,30) && PB_FITS(data_offset,31) && PB_FITS((int8_t)size_offset,8) && PB_FITS(data_size,31) && PB_FITS(array_size,16), FIELDINFO_DOES_NOT_FIT_width4_field ## tag)
-
-#define PB_FIELDINFO_ASSERT_8(tag, type, data_offset, data_size, size_offset, array_size) \
- PB_STATIC_ASSERT(PB_FITS(tag,30) && PB_FITS(data_offset,31) && PB_FITS((int8_t)size_offset,8) && PB_FITS(data_size,31) && PB_FITS(array_size,31), FIELDINFO_DOES_NOT_FIT_width8_field ## tag)
-#endif
-
-
-/* Automatic picking of FIELDINFO width:
- * Uses width 1 when possible, otherwise resorts to width 2.
- */
-
-#ifndef PB_FIELDINFO_WIDTH
-#define PB_FIELDINFO_WIDTH_AUTO(atype, htype, ltype) PB_FIELDINFO_WIDTH_ ## atype(htype, ltype)
-#define PB_FIELDINFO_WIDTH_STATIC(htype, ltype) PB_FIELDINFO_WIDTH_ ## htype(ltype)
-#define PB_FIELDINFO_WIDTH_POINTER(htype, ltype) PB_FIELDINFO_WIDTH_ ## htype(ltype)
-#define PB_FIELDINFO_WIDTH_CALLBACK(htype, ltype) 2
-#define PB_FIELDINFO_WIDTH_REQUIRED(ltype) PB_FIELDINFO_WIDTH_ ## ltype
-#define PB_FIELDINFO_WIDTH_SINGULAR(ltype) PB_FIELDINFO_WIDTH_ ## ltype
-#define PB_FIELDINFO_WIDTH_OPTIONAL(ltype) PB_FIELDINFO_WIDTH_ ## ltype
-#define PB_FIELDINFO_WIDTH_ONEOF(ltype) PB_FIELDINFO_WIDTH_ ## ltype
-#define PB_FIELDINFO_WIDTH_REPEATED(ltype) 2
-#define PB_FIELDINFO_WIDTH_FIXARRAY(ltype) 2
-#define PB_FIELDINFO_WIDTH_BOOL 1
-#define PB_FIELDINFO_WIDTH_BYTES 2
-#define PB_FIELDINFO_WIDTH_DOUBLE 1
-#define PB_FIELDINFO_WIDTH_ENUM 1
-#define PB_FIELDINFO_WIDTH_UENUM 1
-#define PB_FIELDINFO_WIDTH_FIXED32 1
-#define PB_FIELDINFO_WIDTH_FIXED64 1
-#define PB_FIELDINFO_WIDTH_FLOAT 1
-#define PB_FIELDINFO_WIDTH_INT32 1
-#define PB_FIELDINFO_WIDTH_INT64 1
-#define PB_FIELDINFO_WIDTH_MESSAGE 2
-#define PB_FIELDINFO_WIDTH_MSG_W_CB 2
-#define PB_FIELDINFO_WIDTH_SFIXED32 1
-#define PB_FIELDINFO_WIDTH_SFIXED64 1
-#define PB_FIELDINFO_WIDTH_SINT32 1
-#define PB_FIELDINFO_WIDTH_SINT64 1
-#define PB_FIELDINFO_WIDTH_STRING 2
-#define PB_FIELDINFO_WIDTH_UINT32 1
-#define PB_FIELDINFO_WIDTH_UINT64 1
-#define PB_FIELDINFO_WIDTH_EXTENSION 1
-#define PB_FIELDINFO_WIDTH_FIXED_LENGTH_BYTES 2
-#else
-#define PB_FIELDINFO_WIDTH_AUTO(atype, htype, ltype) PB_FIELDINFO_WIDTH
-#endif
-
-/* The mapping from protobuf types to LTYPEs is done using these macros. */
-#define PB_LTYPE_MAP_BOOL PB_LTYPE_BOOL
-#define PB_LTYPE_MAP_BYTES PB_LTYPE_BYTES
-#define PB_LTYPE_MAP_DOUBLE PB_LTYPE_FIXED64
-#define PB_LTYPE_MAP_ENUM PB_LTYPE_VARINT
-#define PB_LTYPE_MAP_UENUM PB_LTYPE_UVARINT
-#define PB_LTYPE_MAP_FIXED32 PB_LTYPE_FIXED32
-#define PB_LTYPE_MAP_FIXED64 PB_LTYPE_FIXED64
-#define PB_LTYPE_MAP_FLOAT PB_LTYPE_FIXED32
-#define PB_LTYPE_MAP_INT32 PB_LTYPE_VARINT
-#define PB_LTYPE_MAP_INT64 PB_LTYPE_VARINT
-#define PB_LTYPE_MAP_MESSAGE PB_LTYPE_SUBMESSAGE
-#define PB_LTYPE_MAP_MSG_W_CB PB_LTYPE_SUBMSG_W_CB
-#define PB_LTYPE_MAP_SFIXED32 PB_LTYPE_FIXED32
-#define PB_LTYPE_MAP_SFIXED64 PB_LTYPE_FIXED64
-#define PB_LTYPE_MAP_SINT32 PB_LTYPE_SVARINT
-#define PB_LTYPE_MAP_SINT64 PB_LTYPE_SVARINT
-#define PB_LTYPE_MAP_STRING PB_LTYPE_STRING
-#define PB_LTYPE_MAP_UINT32 PB_LTYPE_UVARINT
-#define PB_LTYPE_MAP_UINT64 PB_LTYPE_UVARINT
-#define PB_LTYPE_MAP_EXTENSION PB_LTYPE_EXTENSION
-#define PB_LTYPE_MAP_FIXED_LENGTH_BYTES PB_LTYPE_FIXED_LENGTH_BYTES
-
-/* These macros are used for giving out error messages.
- * They are mostly a debugging aid; the main error information
- * is the true/false return value from functions.
- * Some code space can be saved by disabling the error
- * messages if not used.
- *
- * PB_SET_ERROR() sets the error message if none has been set yet.
- * msg must be a constant string literal.
- * PB_GET_ERROR() always returns a pointer to a string.
- * PB_RETURN_ERROR() sets the error and returns false from current
- * function.
- */
-#ifdef PB_NO_ERRMSG
-#define PB_SET_ERROR(stream, msg) PB_UNUSED(stream)
-#define PB_GET_ERROR(stream) "(errmsg disabled)"
-#else
-#define PB_SET_ERROR(stream, msg) (stream->errmsg = (stream)->errmsg ? (stream)->errmsg : (msg))
-#define PB_GET_ERROR(stream) ((stream)->errmsg ? (stream)->errmsg : "(none)")
-#endif
-
-#define PB_RETURN_ERROR(stream, msg) return PB_SET_ERROR(stream, msg), false
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#ifdef __cplusplus
-#if __cplusplus >= 201103L
-#define PB_CONSTEXPR constexpr
-#else // __cplusplus >= 201103L
-#define PB_CONSTEXPR
-#endif // __cplusplus >= 201103L
-
-#if __cplusplus >= 201703L
-#define PB_INLINE_CONSTEXPR inline constexpr
-#else // __cplusplus >= 201703L
-#define PB_INLINE_CONSTEXPR PB_CONSTEXPR
-#endif // __cplusplus >= 201703L
-
-namespace nanopb {
-// Each type will be partially specialized by the generator.
-template <typename GenMessageT> struct MessageDescriptor;
-} // namespace nanopb
-#endif /* __cplusplus */
-
-#endif
-
+++ /dev/null
-/* pb_common.h: Common support functions for pb_encode.c and pb_decode.c.
- * These functions are rarely needed by applications directly.
- */
-
-#ifndef PB_COMMON_H_INCLUDED
-#define PB_COMMON_H_INCLUDED
-
-#include "pb.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Initialize the field iterator structure to beginning.
- * Returns false if the message type is empty. */
-bool pb_field_iter_begin(pb_field_iter_t *iter, const pb_msgdesc_t *desc, void *message);
-
-/* Get a field iterator for extension field. */
-bool pb_field_iter_begin_extension(pb_field_iter_t *iter, pb_extension_t *extension);
-
-/* Same as pb_field_iter_begin(), but for const message pointer.
- * Note that the pointers in pb_field_iter_t will be non-const but shouldn't
- * be written to when using these functions. */
-bool pb_field_iter_begin_const(pb_field_iter_t *iter, const pb_msgdesc_t *desc, const void *message);
-bool pb_field_iter_begin_extension_const(pb_field_iter_t *iter, const pb_extension_t *extension);
-
-/* Advance the iterator to the next field.
- * Returns false when the iterator wraps back to the first field. */
-bool pb_field_iter_next(pb_field_iter_t *iter);
-
-/* Advance the iterator until it points at a field with the given tag.
- * Returns false if no such field exists. */
-bool pb_field_iter_find(pb_field_iter_t *iter, uint32_t tag);
-
-#ifdef PB_VALIDATE_UTF8
-/* Validate UTF-8 text string */
-bool pb_validate_utf8(const char *s);
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
-
+++ /dev/null
-/* pb_decode.h: Functions to decode protocol buffers. Depends on pb_decode.c.
- * The main function is pb_decode. You also need an input stream, and the
- * field descriptions created by nanopb_generator.py.
- */
-
-#ifndef PB_DECODE_H_INCLUDED
-#define PB_DECODE_H_INCLUDED
-
-#include "pb.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Structure for defining custom input streams. You will need to provide
- * a callback function to read the bytes from your storage, which can be
- * for example a file or a network socket.
- *
- * The callback must conform to these rules:
- *
- * 1) Return false on IO errors. This will cause decoding to abort.
- * 2) You can use state to store your own data (e.g. buffer pointer),
- * and rely on pb_read to verify that no-body reads past bytes_left.
- * 3) Your callback may be used with substreams, in which case bytes_left
- * is different than from the main stream. Don't use bytes_left to compute
- * any pointers.
- */
-struct pb_istream_s
-{
-#ifdef PB_BUFFER_ONLY
- /* Callback pointer is not used in buffer-only configuration.
- * Having an int pointer here allows binary compatibility but
- * gives an error if someone tries to assign callback function.
- */
- int *callback;
-#else
- bool (*callback)(pb_istream_t *stream, pb_byte_t *buf, size_t count);
-#endif
-
- void *state; /* Free field for use by callback implementation */
- size_t bytes_left;
-
-#ifndef PB_NO_ERRMSG
- const char *errmsg;
-#endif
-};
-
-#ifndef PB_NO_ERRMSG
-#define PB_ISTREAM_EMPTY {0,0,0,0}
-#else
-#define PB_ISTREAM_EMPTY {0,0,0}
-#endif
-
-/***************************
- * Main decoding functions *
- ***************************/
-
-/* Decode a single protocol buffers message from input stream into a C structure.
- * Returns true on success, false on any failure.
- * The actual struct pointed to by dest must match the description in fields.
- * Callback fields of the destination structure must be initialized by caller.
- * All other fields will be initialized by this function.
- *
- * Example usage:
- * MyMessage msg = {};
- * uint8_t buffer[64];
- * pb_istream_t stream;
- *
- * // ... read some data into buffer ...
- *
- * stream = pb_istream_from_buffer(buffer, count);
- * pb_decode(&stream, MyMessage_fields, &msg);
- */
-bool pb_decode(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct);
-
-/* Extended version of pb_decode, with several options to control
- * the decoding process:
- *
- * PB_DECODE_NOINIT: Do not initialize the fields to default values.
- * This is slightly faster if you do not need the default
- * values and instead initialize the structure to 0 using
- * e.g. memset(). This can also be used for merging two
- * messages, i.e. combine already existing data with new
- * values.
- *
- * PB_DECODE_DELIMITED: Input message starts with the message size as varint.
- * Corresponds to parseDelimitedFrom() in Google's
- * protobuf API.
- *
- * PB_DECODE_NULLTERMINATED: Stop reading when field tag is read as 0. This allows
- * reading null terminated messages.
- * NOTE: Until nanopb-0.4.0, pb_decode() also allows
- * null-termination. This behaviour is not supported in
- * most other protobuf implementations, so PB_DECODE_DELIMITED
- * is a better option for compatibility.
- *
- * Multiple flags can be combined with bitwise or (| operator)
- */
-#define PB_DECODE_NOINIT 0x01U
-#define PB_DECODE_DELIMITED 0x02U
-#define PB_DECODE_NULLTERMINATED 0x04U
-bool pb_decode_ex(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct, unsigned int flags);
-
-/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
-#define pb_decode_noinit(s,f,d) pb_decode_ex(s,f,d, PB_DECODE_NOINIT)
-#define pb_decode_delimited(s,f,d) pb_decode_ex(s,f,d, PB_DECODE_DELIMITED)
-#define pb_decode_delimited_noinit(s,f,d) pb_decode_ex(s,f,d, PB_DECODE_DELIMITED | PB_DECODE_NOINIT)
-#define pb_decode_nullterminated(s,f,d) pb_decode_ex(s,f,d, PB_DECODE_NULLTERMINATED)
-
-#ifdef PB_ENABLE_MALLOC
-/* Release any allocated pointer fields. If you use dynamic allocation, you should
- * call this for any successfully decoded message when you are done with it. If
- * pb_decode() returns with an error, the message is already released.
- */
-void pb_release(const pb_msgdesc_t *fields, void *dest_struct);
-#endif
-
-
-/**************************************
- * Functions for manipulating streams *
- **************************************/
-
-/* Create an input stream for reading from a memory buffer.
- *
- * Alternatively, you can use a custom stream that reads directly from e.g.
- * a file or a network socket.
- */
-pb_istream_t pb_istream_from_buffer(const pb_byte_t *buf, size_t bufsize);
-
-/* Function to read from a pb_istream_t. You can use this if you need to
- * read some custom header data, or to read data in field callbacks.
- */
-bool pb_read(pb_istream_t *stream, pb_byte_t *buf, size_t count);
-
-
-/************************************************
- * Helper functions for writing field callbacks *
- ************************************************/
-
-/* Decode the tag for the next field in the stream. Gives the wire type and
- * field tag. At end of the message, returns false and sets eof to true. */
-bool pb_decode_tag(pb_istream_t *stream, pb_wire_type_t *wire_type, uint32_t *tag, bool *eof);
-
-/* Skip the field payload data, given the wire type. */
-bool pb_skip_field(pb_istream_t *stream, pb_wire_type_t wire_type);
-
-/* Decode an integer in the varint format. This works for enum, int32,
- * int64, uint32 and uint64 field types. */
-#ifndef PB_WITHOUT_64BIT
-bool pb_decode_varint(pb_istream_t *stream, uint64_t *dest);
-#else
-#define pb_decode_varint pb_decode_varint32
-#endif
-
-/* Decode an integer in the varint format. This works for enum, int32,
- * and uint32 field types. */
-bool pb_decode_varint32(pb_istream_t *stream, uint32_t *dest);
-
-/* Decode a bool value in varint format. */
-bool pb_decode_bool(pb_istream_t *stream, bool *dest);
-
-/* Decode an integer in the zig-zagged svarint format. This works for sint32
- * and sint64. */
-#ifndef PB_WITHOUT_64BIT
-bool pb_decode_svarint(pb_istream_t *stream, int64_t *dest);
-#else
-bool pb_decode_svarint(pb_istream_t *stream, int32_t *dest);
-#endif
-
-/* Decode a fixed32, sfixed32 or float value. You need to pass a pointer to
- * a 4-byte wide C variable. */
-bool pb_decode_fixed32(pb_istream_t *stream, void *dest);
-
-#ifndef PB_WITHOUT_64BIT
-/* Decode a fixed64, sfixed64 or double value. You need to pass a pointer to
- * a 8-byte wide C variable. */
-bool pb_decode_fixed64(pb_istream_t *stream, void *dest);
-#endif
-
-#ifdef PB_CONVERT_DOUBLE_FLOAT
-/* Decode a double value into float variable. */
-bool pb_decode_double_as_float(pb_istream_t *stream, float *dest);
-#endif
-
-/* Make a limited-length substream for reading a PB_WT_STRING field. */
-bool pb_make_string_substream(pb_istream_t *stream, pb_istream_t *substream);
-bool pb_close_string_substream(pb_istream_t *stream, pb_istream_t *substream);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
+++ /dev/null
-/* pb_encode.h: Functions to encode protocol buffers. Depends on pb_encode.c.
- * The main function is pb_encode. You also need an output stream, and the
- * field descriptions created by nanopb_generator.py.
- */
-
-#ifndef PB_ENCODE_H_INCLUDED
-#define PB_ENCODE_H_INCLUDED
-
-#include "pb.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Structure for defining custom output streams. You will need to provide
- * a callback function to write the bytes to your storage, which can be
- * for example a file or a network socket.
- *
- * The callback must conform to these rules:
- *
- * 1) Return false on IO errors. This will cause encoding to abort.
- * 2) You can use state to store your own data (e.g. buffer pointer).
- * 3) pb_write will update bytes_written after your callback runs.
- * 4) Substreams will modify max_size and bytes_written. Don't use them
- * to calculate any pointers.
- */
-struct pb_ostream_s
-{
-#ifdef PB_BUFFER_ONLY
- /* Callback pointer is not used in buffer-only configuration.
- * Having an int pointer here allows binary compatibility but
- * gives an error if someone tries to assign callback function.
- * Also, NULL pointer marks a 'sizing stream' that does not
- * write anything.
- */
- int *callback;
-#else
- bool (*callback)(pb_ostream_t *stream, const pb_byte_t *buf, size_t count);
-#endif
- void *state; /* Free field for use by callback implementation. */
- size_t max_size; /* Limit number of output bytes written (or use SIZE_MAX). */
- size_t bytes_written; /* Number of bytes written so far. */
-
-#ifndef PB_NO_ERRMSG
- const char *errmsg;
-#endif
-};
-
-/***************************
- * Main encoding functions *
- ***************************/
-
-/* Encode a single protocol buffers message from C structure into a stream.
- * Returns true on success, false on any failure.
- * The actual struct pointed to by src_struct must match the description in fields.
- * All required fields in the struct are assumed to have been filled in.
- *
- * Example usage:
- * MyMessage msg = {};
- * uint8_t buffer[64];
- * pb_ostream_t stream;
- *
- * msg.field1 = 42;
- * stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
- * pb_encode(&stream, MyMessage_fields, &msg);
- */
-bool pb_encode(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct);
-
-/* Extended version of pb_encode, with several options to control the
- * encoding process:
- *
- * PB_ENCODE_DELIMITED: Prepend the length of message as a varint.
- * Corresponds to writeDelimitedTo() in Google's
- * protobuf API.
- *
- * PB_ENCODE_NULLTERMINATED: Append a null byte to the message for termination.
- * NOTE: This behaviour is not supported in most other
- * protobuf implementations, so PB_ENCODE_DELIMITED
- * is a better option for compatibility.
- */
-#define PB_ENCODE_DELIMITED 0x02U
-#define PB_ENCODE_NULLTERMINATED 0x04U
-bool pb_encode_ex(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct, unsigned int flags);
-
-/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
-#define pb_encode_delimited(s,f,d) pb_encode_ex(s,f,d, PB_ENCODE_DELIMITED)
-#define pb_encode_nullterminated(s,f,d) pb_encode_ex(s,f,d, PB_ENCODE_NULLTERMINATED)
-
-/* Encode the message to get the size of the encoded data, but do not store
- * the data. */
-bool pb_get_encoded_size(size_t *size, const pb_msgdesc_t *fields, const void *src_struct);
-
-/**************************************
- * Functions for manipulating streams *
- **************************************/
-
-/* Create an output stream for writing into a memory buffer.
- * The number of bytes written can be found in stream.bytes_written after
- * encoding the message.
- *
- * Alternatively, you can use a custom stream that writes directly to e.g.
- * a file or a network socket.
- */
-pb_ostream_t pb_ostream_from_buffer(pb_byte_t *buf, size_t bufsize);
-
-/* Pseudo-stream for measuring the size of a message without actually storing
- * the encoded data.
- *
- * Example usage:
- * MyMessage msg = {};
- * pb_ostream_t stream = PB_OSTREAM_SIZING;
- * pb_encode(&stream, MyMessage_fields, &msg);
- * printf("Message size is %d\n", stream.bytes_written);
- */
-#ifndef PB_NO_ERRMSG
-#define PB_OSTREAM_SIZING {0,0,0,0,0}
-#else
-#define PB_OSTREAM_SIZING {0,0,0,0}
-#endif
-
-/* Function to write into a pb_ostream_t stream. You can use this if you need
- * to append or prepend some custom headers to the message.
- */
-bool pb_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count);
-
-
-/************************************************
- * Helper functions for writing field callbacks *
- ************************************************/
-
-/* Encode field header based on type and field number defined in the field
- * structure. Call this from the callback before writing out field contents. */
-bool pb_encode_tag_for_field(pb_ostream_t *stream, const pb_field_iter_t *field);
-
-/* Encode field header by manually specifing wire type. You need to use this
- * if you want to write out packed arrays from a callback field. */
-bool pb_encode_tag(pb_ostream_t *stream, pb_wire_type_t wiretype, uint32_t field_number);
-
-/* Encode an integer in the varint format.
- * This works for bool, enum, int32, int64, uint32 and uint64 field types. */
-#ifndef PB_WITHOUT_64BIT
-bool pb_encode_varint(pb_ostream_t *stream, uint64_t value);
-#else
-bool pb_encode_varint(pb_ostream_t *stream, uint32_t value);
-#endif
-
-/* Encode an integer in the zig-zagged svarint format.
- * This works for sint32 and sint64. */
-#ifndef PB_WITHOUT_64BIT
-bool pb_encode_svarint(pb_ostream_t *stream, int64_t value);
-#else
-bool pb_encode_svarint(pb_ostream_t *stream, int32_t value);
-#endif
-
-/* Encode a string or bytes type field. For strings, pass strlen(s) as size. */
-bool pb_encode_string(pb_ostream_t *stream, const pb_byte_t *buffer, size_t size);
-
-/* Encode a fixed32, sfixed32 or float value.
- * You need to pass a pointer to a 4-byte wide C variable. */
-bool pb_encode_fixed32(pb_ostream_t *stream, const void *value);
-
-#ifndef PB_WITHOUT_64BIT
-/* Encode a fixed64, sfixed64 or double value.
- * You need to pass a pointer to a 8-byte wide C variable. */
-bool pb_encode_fixed64(pb_ostream_t *stream, const void *value);
-#endif
-
-#ifdef PB_CONVERT_DOUBLE_FLOAT
-/* Encode a float value so that it appears like a double in the encoded
- * message. */
-bool pb_encode_float_as_double(pb_ostream_t *stream, float value);
-#endif
-
-/* Encode a submessage field.
- * You need to pass the pb_field_t array and pointer to struct, just like
- * with pb_encode(). This internally encodes the submessage twice, first to
- * calculate message size and then to actually write it out.
- */
-bool pb_encode_submessage(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
+++ /dev/null
-#ifndef PID_H
-#define PID_H
-
-#include "constants.h"
-
-class Pid {
- public:
- //PID constants
- float kp_;
- float ki_;
- float kd_;
-
- float error_;
- float setpoint_;
-
- //needed for integrative term
- float error_sum_;
-
- //needed for derivative term
- float previous_error_;
-
- int min_;
- int max_;
-
- Pid(float kp, float ki, float kd) {
- this->kp_ = kp;
- this->ki_ = ki;
- this->kd_ = kd;
-
- this->error_ = 0;
- this->setpoint_ = 0;
-
- this->previous_error_ = 0;
- this->error_sum_ = 0;
-
- this->min_ = -MAX_DUTY_CYCLE;
- this->max_ = MAX_DUTY_CYCLE;
-
- }
-
- void config(float kp, float ki, float kd) {
- this->kp_ = kp;
- this->ki_ = ki;
- this->kd_ = kd;
-
- this->error_ = 0;
- this->setpoint_ = 0;
-
- this->previous_error_ = 0;
- this->error_sum_ = 0;
-
- }
-
- void set(float setpoint) {
- this->setpoint_ = setpoint;
- }
-
- int update(float measure) {
-
- this->error_ = this->setpoint_ - measure;
-
- //proportional term
- float output = this->error_ * this->kp_;
-
- //integral term without windup
- error_sum_ += this->error_;
- output += error_sum_ * this->ki_;
-
- //derivative term
- output += (this->error_ - this->previous_error_) * kd_;
- this->previous_error_ = this->error_;
-
- int integer_output = static_cast<int> (output);
-
-// if(integer_output > this->max_)
-// integer_output = this->max_;
-// else if (integer_output < this->min_)
-// integer_output = this->min_;
-
- return integer_output;
-
- }
-};
-#endif
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_conf_template.h\r
- * @author MCD Application Team\r
- * @brief HAL configuration template file. \r
- * This file should be copied to the application folder and renamed\r
- * to stm32f7xx_hal_conf.h.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_CONF_H\r
-#define __STM32F7xx_HAL_CONF_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/* ########################## Module Selection ############################## */\r
-/**\r
- * @brief This is the list of modules to be used in the HAL driver \r
- */\r
-#define HAL_MODULE_ENABLED \r
-\r
- /* #define HAL_ADC_MODULE_ENABLED */\r
-/* #define HAL_CRYP_MODULE_ENABLED */\r
-/* #define HAL_CAN_MODULE_ENABLED */\r
-/* #define HAL_CEC_MODULE_ENABLED */\r
-/* #define HAL_CRC_MODULE_ENABLED */\r
-/* #define HAL_CRYP_MODULE_ENABLED */\r
-/* #define HAL_DAC_MODULE_ENABLED */\r
-/* #define HAL_DCMI_MODULE_ENABLED */\r
-/* #define HAL_DMA2D_MODULE_ENABLED */\r
-/* #define HAL_ETH_MODULE_ENABLED */\r
-/* #define HAL_NAND_MODULE_ENABLED */\r
-/* #define HAL_NOR_MODULE_ENABLED */\r
-/* #define HAL_SRAM_MODULE_ENABLED */\r
-/* #define HAL_SDRAM_MODULE_ENABLED */\r
-/* #define HAL_HASH_MODULE_ENABLED */\r
-/* #define HAL_I2S_MODULE_ENABLED */\r
-/* #define HAL_IWDG_MODULE_ENABLED */\r
-/* #define HAL_LPTIM_MODULE_ENABLED */\r
-/* #define HAL_LTDC_MODULE_ENABLED */\r
-/* #define HAL_QSPI_MODULE_ENABLED */\r
-/* #define HAL_RNG_MODULE_ENABLED */\r
-/* #define HAL_RTC_MODULE_ENABLED */\r
-/* #define HAL_SAI_MODULE_ENABLED */\r
-/* #define HAL_SD_MODULE_ENABLED */\r
-/* #define HAL_MMC_MODULE_ENABLED */\r
-/* #define HAL_SPDIFRX_MODULE_ENABLED */\r
-/* #define HAL_SPI_MODULE_ENABLED */\r
-#define HAL_TIM_MODULE_ENABLED\r
-#define HAL_UART_MODULE_ENABLED\r
-/* #define HAL_USART_MODULE_ENABLED */\r
-/* #define HAL_IRDA_MODULE_ENABLED */\r
-/* #define HAL_SMARTCARD_MODULE_ENABLED */\r
-/* #define HAL_WWDG_MODULE_ENABLED */\r
-/* #define HAL_PCD_MODULE_ENABLED */\r
-/* #define HAL_HCD_MODULE_ENABLED */\r
-/* #define HAL_DFSDM_MODULE_ENABLED */\r
-/* #define HAL_DSI_MODULE_ENABLED */\r
-/* #define HAL_JPEG_MODULE_ENABLED */\r
-/* #define HAL_MDIOS_MODULE_ENABLED */\r
-/* #define HAL_SMBUS_MODULE_ENABLED */\r
-/* #define HAL_EXTI_MODULE_ENABLED */\r
-#define HAL_GPIO_MODULE_ENABLED\r
-#define HAL_EXTI_MODULE_ENABLED \r
-#define HAL_DMA_MODULE_ENABLED\r
-#define HAL_RCC_MODULE_ENABLED\r
-#define HAL_FLASH_MODULE_ENABLED\r
-#define HAL_PWR_MODULE_ENABLED\r
-#define HAL_I2C_MODULE_ENABLED\r
-#define HAL_CORTEX_MODULE_ENABLED\r
-\r
-/* ########################## HSE/HSI Values adaptation ##################### */\r
-/**\r
- * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.\r
- * This value is used by the RCC HAL module to compute the system frequency\r
- * (when HSE is used as system clock source, directly or through the PLL). \r
- */\r
-#if !defined (HSE_VALUE) \r
- #define HSE_VALUE ((uint32_t)25000000U) /*!< Value of the External oscillator in Hz */\r
-#endif /* HSE_VALUE */\r
-\r
-#if !defined (HSE_STARTUP_TIMEOUT)\r
- #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */\r
-#endif /* HSE_STARTUP_TIMEOUT */\r
-\r
-/**\r
- * @brief Internal High Speed oscillator (HSI) value.\r
- * This value is used by the RCC HAL module to compute the system frequency\r
- * (when HSI is used as system clock source, directly or through the PLL). \r
- */\r
-#if !defined (HSI_VALUE)\r
- #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/\r
-#endif /* HSI_VALUE */\r
-\r
-/**\r
- * @brief Internal Low Speed oscillator (LSI) value.\r
- */\r
-#if !defined (LSI_VALUE) \r
- #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/\r
-#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz\r
- The real value may vary depending on the variations\r
- in voltage and temperature. */\r
-/**\r
- * @brief External Low Speed oscillator (LSE) value.\r
- */\r
-#if !defined (LSE_VALUE)\r
- #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */\r
-#endif /* LSE_VALUE */\r
-\r
-#if !defined (LSE_STARTUP_TIMEOUT)\r
- #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */\r
-#endif /* LSE_STARTUP_TIMEOUT */\r
-\r
-/**\r
- * @brief External clock source for I2S peripheral\r
- * This value is used by the I2S HAL module to compute the I2S clock source \r
- * frequency, this source is inserted directly through I2S_CKIN pad. \r
- */\r
-#if !defined (EXTERNAL_CLOCK_VALUE)\r
- #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the Internal oscillator in Hz*/\r
-#endif /* EXTERNAL_CLOCK_VALUE */\r
-\r
-/* Tip: To avoid modifying this file each time you need to use different HSE,\r
- === you can define the HSE value in your toolchain compiler preprocessor. */\r
-\r
-/* ########################### System Configuration ######################### */\r
-/**\r
- * @brief This is the HAL system configuration section\r
- */ \r
-#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */\r
-#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */\r
-#define USE_RTOS 0U\r
-#define PREFETCH_ENABLE 0U\r
-#define ART_ACCLERATOR_ENABLE 0U /* To enable instruction cache and prefetch */\r
-\r
-/* ########################## Assert Selection ############################## */\r
-/**\r
- * @brief Uncomment the line below to expanse the "assert_param" macro in the \r
- * HAL drivers code\r
- */\r
-/* #define USE_FULL_ASSERT 1U */\r
-\r
-/* ################## Ethernet peripheral configuration ##################### */\r
-\r
-/* Section 1 : Ethernet peripheral configuration */\r
-\r
-/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */\r
-#define MAC_ADDR0 2U\r
-#define MAC_ADDR1 0U\r
-#define MAC_ADDR2 0U\r
-#define MAC_ADDR3 0U\r
-#define MAC_ADDR4 0U\r
-#define MAC_ADDR5 0U\r
-\r
-/* Definition of the Ethernet driver buffers size and count */ \r
-#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */\r
-#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */\r
-#define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */\r
-#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */\r
-\r
-/* Section 2: PHY configuration section */\r
-\r
-/* DP83848_PHY_ADDRESS Address*/ \r
-#define DP83848_PHY_ADDRESS 0x01U\r
-/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ \r
-#define PHY_RESET_DELAY ((uint32_t)0x000000FFU)\r
-/* PHY Configuration delay */\r
-#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU)\r
-\r
-#define PHY_READ_TO ((uint32_t)0x0000FFFFU)\r
-#define PHY_WRITE_TO ((uint32_t)0x0000FFFFU)\r
-\r
-/* Section 3: Common PHY Registers */\r
-\r
-#define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */\r
-#define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */\r
- \r
-#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */\r
-#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */\r
-#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */\r
-#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */\r
-#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */\r
-#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */\r
-#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */\r
-#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */\r
-#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */\r
-#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */\r
-\r
-#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */\r
-#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */\r
-#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */\r
- \r
-/* Section 4: Extended PHY Registers */\r
-#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */\r
-\r
-#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */\r
-#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */\r
-\r
-/* ################## SPI peripheral configuration ########################## */\r
-\r
-/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver\r
-* Activated: CRC code is present inside driver\r
-* Deactivated: CRC code cleaned from driver\r
-*/\r
-\r
-#define USE_SPI_CRC 0U\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-/**\r
- * @brief Include module's header file \r
- */\r
-\r
-#ifdef HAL_RCC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_rcc.h"\r
-#endif /* HAL_RCC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_EXTI_MODULE_ENABLED\r
- #include "stm32f7xx_hal_exti.h"\r
-#endif /* HAL_EXTI_MODULE_ENABLED */\r
-\r
-#ifdef HAL_GPIO_MODULE_ENABLED\r
- #include "stm32f7xx_hal_gpio.h"\r
-#endif /* HAL_GPIO_MODULE_ENABLED */\r
-\r
-#ifdef HAL_DMA_MODULE_ENABLED\r
- #include "stm32f7xx_hal_dma.h"\r
-#endif /* HAL_DMA_MODULE_ENABLED */\r
- \r
-#ifdef HAL_CORTEX_MODULE_ENABLED\r
- #include "stm32f7xx_hal_cortex.h"\r
-#endif /* HAL_CORTEX_MODULE_ENABLED */\r
-\r
-#ifdef HAL_ADC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_adc.h"\r
-#endif /* HAL_ADC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_CAN_MODULE_ENABLED\r
- #include "stm32f7xx_hal_can.h"\r
-#endif /* HAL_CAN_MODULE_ENABLED */\r
-\r
-#ifdef HAL_CEC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_cec.h"\r
-#endif /* HAL_CEC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_CRC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_crc.h"\r
-#endif /* HAL_CRC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_CRYP_MODULE_ENABLED\r
- #include "stm32f7xx_hal_cryp.h" \r
-#endif /* HAL_CRYP_MODULE_ENABLED */\r
-\r
-#ifdef HAL_DMA2D_MODULE_ENABLED\r
- #include "stm32f7xx_hal_dma2d.h"\r
-#endif /* HAL_DMA2D_MODULE_ENABLED */\r
-\r
-#ifdef HAL_DAC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_dac.h"\r
-#endif /* HAL_DAC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_DCMI_MODULE_ENABLED\r
- #include "stm32f7xx_hal_dcmi.h"\r
-#endif /* HAL_DCMI_MODULE_ENABLED */\r
-\r
-#ifdef HAL_ETH_MODULE_ENABLED\r
- #include "stm32f7xx_hal_eth.h"\r
-#endif /* HAL_ETH_MODULE_ENABLED */\r
-\r
-#ifdef HAL_FLASH_MODULE_ENABLED\r
- #include "stm32f7xx_hal_flash.h"\r
-#endif /* HAL_FLASH_MODULE_ENABLED */\r
- \r
-#ifdef HAL_SRAM_MODULE_ENABLED\r
- #include "stm32f7xx_hal_sram.h"\r
-#endif /* HAL_SRAM_MODULE_ENABLED */\r
-\r
-#ifdef HAL_NOR_MODULE_ENABLED\r
- #include "stm32f7xx_hal_nor.h"\r
-#endif /* HAL_NOR_MODULE_ENABLED */\r
-\r
-#ifdef HAL_NAND_MODULE_ENABLED\r
- #include "stm32f7xx_hal_nand.h"\r
-#endif /* HAL_NAND_MODULE_ENABLED */\r
-\r
-#ifdef HAL_SDRAM_MODULE_ENABLED\r
- #include "stm32f7xx_hal_sdram.h"\r
-#endif /* HAL_SDRAM_MODULE_ENABLED */ \r
-\r
-#ifdef HAL_HASH_MODULE_ENABLED\r
- #include "stm32f7xx_hal_hash.h"\r
-#endif /* HAL_HASH_MODULE_ENABLED */\r
-\r
-#ifdef HAL_I2C_MODULE_ENABLED\r
- #include "stm32f7xx_hal_i2c.h"\r
-#endif /* HAL_I2C_MODULE_ENABLED */\r
-\r
-#ifdef HAL_I2S_MODULE_ENABLED\r
- #include "stm32f7xx_hal_i2s.h"\r
-#endif /* HAL_I2S_MODULE_ENABLED */\r
-\r
-#ifdef HAL_IWDG_MODULE_ENABLED\r
- #include "stm32f7xx_hal_iwdg.h"\r
-#endif /* HAL_IWDG_MODULE_ENABLED */\r
-\r
-#ifdef HAL_LPTIM_MODULE_ENABLED\r
- #include "stm32f7xx_hal_lptim.h"\r
-#endif /* HAL_LPTIM_MODULE_ENABLED */\r
-\r
-#ifdef HAL_LTDC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_ltdc.h"\r
-#endif /* HAL_LTDC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_PWR_MODULE_ENABLED\r
- #include "stm32f7xx_hal_pwr.h"\r
-#endif /* HAL_PWR_MODULE_ENABLED */\r
-\r
-#ifdef HAL_QSPI_MODULE_ENABLED\r
- #include "stm32f7xx_hal_qspi.h"\r
-#endif /* HAL_QSPI_MODULE_ENABLED */\r
-\r
-#ifdef HAL_RNG_MODULE_ENABLED\r
- #include "stm32f7xx_hal_rng.h"\r
-#endif /* HAL_RNG_MODULE_ENABLED */\r
-\r
-#ifdef HAL_RTC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_rtc.h"\r
-#endif /* HAL_RTC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_SAI_MODULE_ENABLED\r
- #include "stm32f7xx_hal_sai.h"\r
-#endif /* HAL_SAI_MODULE_ENABLED */\r
-\r
-#ifdef HAL_SD_MODULE_ENABLED\r
- #include "stm32f7xx_hal_sd.h"\r
-#endif /* HAL_SD_MODULE_ENABLED */\r
-\r
-#ifdef HAL_MMC_MODULE_ENABLED\r
- #include "stm32f7xx_hal_mmc.h"\r
-#endif /* HAL_MMC_MODULE_ENABLED */\r
-\r
-#ifdef HAL_SPDIFRX_MODULE_ENABLED\r
- #include "stm32f7xx_hal_spdifrx.h"\r
-#endif /* HAL_SPDIFRX_MODULE_ENABLED */\r
-\r
-#ifdef HAL_SPI_MODULE_ENABLED\r
- #include "stm32f7xx_hal_spi.h"\r
-#endif /* HAL_SPI_MODULE_ENABLED */\r
-\r
-#ifdef HAL_TIM_MODULE_ENABLED\r
- #include "stm32f7xx_hal_tim.h"\r
-#endif /* HAL_TIM_MODULE_ENABLED */\r
-\r
-#ifdef HAL_UART_MODULE_ENABLED\r
- #include "stm32f7xx_hal_uart.h"\r
-#endif /* HAL_UART_MODULE_ENABLED */\r
-\r
-#ifdef HAL_USART_MODULE_ENABLED\r
- #include "stm32f7xx_hal_usart.h"\r
-#endif /* HAL_USART_MODULE_ENABLED */\r
-\r
-#ifdef HAL_IRDA_MODULE_ENABLED\r
- #include "stm32f7xx_hal_irda.h"\r
-#endif /* HAL_IRDA_MODULE_ENABLED */\r
-\r
-#ifdef HAL_SMARTCARD_MODULE_ENABLED\r
- #include "stm32f7xx_hal_smartcard.h"\r
-#endif /* HAL_SMARTCARD_MODULE_ENABLED */\r
-\r
-#ifdef HAL_WWDG_MODULE_ENABLED\r
- #include "stm32f7xx_hal_wwdg.h"\r
-#endif /* HAL_WWDG_MODULE_ENABLED */\r
-\r
-#ifdef HAL_PCD_MODULE_ENABLED\r
- #include "stm32f7xx_hal_pcd.h"\r
-#endif /* HAL_PCD_MODULE_ENABLED */\r
-\r
-#ifdef HAL_HCD_MODULE_ENABLED\r
- #include "stm32f7xx_hal_hcd.h"\r
-#endif /* HAL_HCD_MODULE_ENABLED */\r
-\r
-#ifdef HAL_DFSDM_MODULE_ENABLED\r
- #include "stm32f7xx_hal_dfsdm.h"\r
-#endif /* HAL_DFSDM_MODULE_ENABLED */\r
-\r
-#ifdef HAL_DSI_MODULE_ENABLED\r
- #include "stm32f7xx_hal_dsi.h"\r
-#endif /* HAL_DSI_MODULE_ENABLED */\r
-\r
-#ifdef HAL_JPEG_MODULE_ENABLED\r
- #include "stm32f7xx_hal_jpeg.h"\r
-#endif /* HAL_JPEG_MODULE_ENABLED */\r
-\r
-#ifdef HAL_MDIOS_MODULE_ENABLED\r
- #include "stm32f7xx_hal_mdios.h"\r
-#endif /* HAL_MDIOS_MODULE_ENABLED */ \r
-\r
-#ifdef HAL_SMBUS_MODULE_ENABLED\r
- #include "stm32f7xx_hal_smbus.h"\r
-#endif /* HAL_SMBUS_MODULE_ENABLED */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-#ifdef USE_FULL_ASSERT\r
-/**\r
- * @brief The assert_param macro is used for function's parameters check.\r
- * @param expr: If expr is false, it calls assert_failed function\r
- * which reports the name of the source file and the source\r
- * line number of the call that failed. \r
- * If expr is true, it returns no value.\r
- * @retval None\r
- */\r
- #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))\r
-/* Exported functions ------------------------------------------------------- */\r
- void assert_failed(uint8_t* file, uint32_t line);\r
-#else\r
- #define assert_param(expr) ((void)0U)\r
-#endif /* USE_FULL_ASSERT */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_CONF_H */\r
- \r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/* USER CODE BEGIN Header */\r
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_it.h\r
- * @brief This file contains the headers of the interrupt handlers.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2019 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-/* USER CODE END Header */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_IT_H\r
-#define __STM32F7xx_IT_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif \r
-\r
-/* Private includes ----------------------------------------------------------*/\r
-/* USER CODE BEGIN Includes */\r
-\r
-/* USER CODE END Includes */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/* USER CODE BEGIN ET */\r
-\r
-/* USER CODE END ET */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/* USER CODE BEGIN EC */\r
-\r
-/* USER CODE END EC */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/* USER CODE BEGIN EM */\r
-\r
-/* USER CODE END EM */\r
-\r
-/* Exported functions prototypes ---------------------------------------------*/\r
-void NMI_Handler(void);\r
-void HardFault_Handler(void);\r
-void MemManage_Handler(void);\r
-void BusFault_Handler(void);\r
-void UsageFault_Handler(void);\r
-void SVC_Handler(void);\r
-void DebugMon_Handler(void);\r
-void PendSV_Handler(void);\r
-void SysTick_Handler(void);\r
-void TIM3_IRQHandler(void);\r
-void EXTI15_10_IRQHandler(void);\r
-void TIM6_DAC_IRQHandler(void);\r
-void USART6_IRQHandler(void);\r
-/* USER CODE BEGIN EFP */\r
-\r
-/* USER CODE END EFP */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_IT_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/* Automatically generated nanopb header */
-/* Generated by 0.4.1-dev */
-
-#ifndef PB_VELOCITIES_PB_H_INCLUDED
-#define PB_VELOCITIES_PB_H_INCLUDED
-#include <pb.h>
-
-#if PB_PROTO_HEADER_VERSION != 40
-#error Regenerate this file with the current version of nanopb generator.
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Struct definitions */
-typedef struct _Velocities {
- float linear_vel;
- float angular_vel;
-} Velocities;
-
-
-/* Initializer values for message structs */
-#define Velocities_init_default {0, 0}
-#define Velocities_init_zero {0, 0}
-
-/* Field tags (for use in manual encoding/decoding) */
-#define Velocities_linear_vel_tag 1
-#define Velocities_angular_vel_tag 2
-
-/* Struct field encoding specification for nanopb */
-#define Velocities_FIELDLIST(X, a) \
-X(a, STATIC, SINGULAR, FLOAT, linear_vel, 1) \
-X(a, STATIC, SINGULAR, FLOAT, angular_vel, 2)
-#define Velocities_CALLBACK NULL
-#define Velocities_DEFAULT NULL
-
-extern const pb_msgdesc_t Velocities_msg;
-
-/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
-#define Velocities_fields &Velocities_msg
-
-/* Maximum encoded size of messages (where known) */
-#define Velocities_size 10
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
+++ /dev/null
-#include "encoder.h"
-
-//Encoder::Encoder(TIM_HandleTypeDef *timer, float wheel_circ) {
-// timer_ = timer;
-// wheel_circumference_ = wheel_circ;
-//
-//}
-
-Encoder::Encoder(TIM_HandleTypeDef *timer, int ticks_per_meter) {
- timer_ = timer;
- ticks_per_meter_ = ticks_per_meter;
-
-}
-
-void Encoder::Setup() {
- HAL_TIM_Encoder_Start(timer_, TIM_CHANNEL_ALL);
- this->ResetCount();
- this->previous_millis_ = 0;
- this->current_millis_ = HAL_GetTick();
-}
-
-void Encoder::UpdateValues() {
- this->previous_millis_ = this->current_millis_;
- this->current_millis_ = HAL_GetTick();
- this->ticks_ = this->GetCount();
- this->ResetCount();
-}
-
-//float Encoder::GetMeters() {
-// float meters = ((float) this->ticks_ * this->wheel_circumference_)
-// / TICKS_PER_REVOLUTION;
-// return meters;
-//}
-
-float Encoder::GetMeters() {
- float meters = (((float) this->ticks_) / this->ticks_per_meter_);
- return meters;
-}
-
-
-float Encoder::GetLinearVelocity() {
- this->UpdateValues();
- float meters = this->GetMeters();
- float deltaTime = this->current_millis_ - this->previous_millis_;
- if (deltaTime == 0)
- return 0;
- float linear_velocity = (meters / (deltaTime / 1000));
- return linear_velocity;
-}
-
+++ /dev/null
-/* USER CODE BEGIN Header */\r
-/**\r
- ******************************************************************************\r
- * @file : main.c\r
- * @brief : Main program body\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2019 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-/* USER CODE END Header */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "main.h"\r
-\r
-/* Private includes ----------------------------------------------------------*/\r
-/* USER CODE BEGIN Includes */\r
-\r
-#include "encoder.h"\r
-#include "odometry.h"\r
-#include "motor_controller.h"\r
-#include "pid.h"\r
-#include "communication_utils.h"\r
-#include "constants.h"\r
-\r
-#include <pb_encode.h>\r
-#include <pb_decode.h>\r
-#include "velocities.pb.h"\r
-/* USER CODE END Includes */\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* USER CODE BEGIN PTD */\r
-\r
-/* USER CODE END PTD */\r
-\r
-/* Private define ------------------------------------------------------------*/\r
-/* USER CODE BEGIN PD */\r
-/* USER CODE END PD */\r
-\r
-/* Private macro -------------------------------------------------------------*/\r
-/* USER CODE BEGIN PM */\r
-\r
-/* USER CODE END PM */\r
-\r
-/* Private variables ---------------------------------------------------------*/\r
-\r
-TIM_HandleTypeDef htim2;\r
-TIM_HandleTypeDef htim3;\r
-TIM_HandleTypeDef htim4;\r
-TIM_HandleTypeDef htim5;\r
-TIM_HandleTypeDef htim6;\r
-\r
-UART_HandleTypeDef huart6;\r
-\r
-/* USER CODE BEGIN PV */\r
-\r
-//Odometry\r
-Encoder right_encoder = Encoder(&htim5, RIGHT_TICKS_PER_METER);\r
-Encoder left_encoder = Encoder(&htim2, LEFT_TICKS_PER_METER);\r
-Odometry odom = Odometry();\r
-float left_velocity = 0;\r
-float right_velocity = 0;\r
-\r
-//PID\r
-Pid left_pid(0, 0, 0);\r
-Pid right_pid(0, 0, 0);\r
-Pid cross_pid(0, 0, 0);\r
-float left_setpoint;\r
-float right_setpoint;\r
-float cross_setpoint;\r
-int left_dutycycle;\r
-int right_dutycycle;\r
-\r
-//MotorController\r
-MotorController right_motor(sleep1_GPIO_Port,\r
-sleep1_Pin,\r
- dir1_GPIO_Port,\r
- dir1_Pin,\r
- &htim4,\r
- TIM_CHANNEL_4);\r
-MotorController left_motor(sleep2_GPIO_Port,\r
-sleep2_Pin,\r
- dir2_GPIO_Port,\r
- dir2_Pin,\r
- &htim4,\r
- TIM_CHANNEL_3);\r
-\r
-//Communication\r
-uint8_t *tx_buffer;\r
-uint8_t *rx_buffer;\r
-velocity_msg input_msg;\r
-ticks_msg output_msg;\r
-\r
-//user button variables\r
-int previous_millis = 0;\r
-int current_millis = 0;\r
-bool debounce = true;\r
-\r
-//test stuff\r
-float mode = 0; //0 for setup, 1 go, 2 send data\r
-int left_ticks = 0;\r
-int right_ticks = 0;\r
-\r
-//protobuffers\r
-Velocities vel_output;\r
-uint8_t buffer_tx[10];\r
-pb_ostream_t stream_tx;\r
-\r
-Velocities vel_input;\r
-uint8_t buffer_rx[10];\r
-pb_istream_t stream_rx;\r
-\r
-/* USER CODE END PV */\r
-\r
-/* Private function prototypes -----------------------------------------------*/\r
-void SystemClock_Config(void);\r
-static void MX_GPIO_Init(void);\r
-static void MX_TIM2_Init(void);\r
-static void MX_TIM3_Init(void);\r
-static void MX_TIM4_Init(void);\r
-static void MX_TIM5_Init(void);\r
-static void MX_USART6_UART_Init(void);\r
-static void MX_TIM6_Init(void);\r
-static void MX_NVIC_Init(void);\r
-/* USER CODE BEGIN PFP */\r
-\r
-/* USER CODE END PFP */\r
-\r
-/* Private user code ---------------------------------------------------------*/\r
-/* USER CODE BEGIN 0 */\r
-\r
-/* USER CODE END 0 */\r
-\r
-/**\r
- * @brief The application entry point.\r
- * @retval int\r
- */\r
-int main(void) {\r
- /* USER CODE BEGIN 1 */\r
- /* USER CODE END 1 */\r
-\r
- /* MCU Configuration--------------------------------------------------------*/\r
-\r
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */\r
- HAL_Init();\r
-\r
- /* USER CODE BEGIN Init */\r
-\r
- /* USER CODE END Init */\r
-\r
- /* Configure the system clock */\r
- SystemClock_Config();\r
-\r
- /* USER CODE BEGIN SysInit */\r
-\r
- /* USER CODE END SysInit */\r
-\r
- /* Initialize all configured peripherals */\r
- MX_GPIO_Init();\r
- MX_TIM2_Init();\r
- MX_TIM3_Init();\r
- MX_TIM4_Init();\r
- MX_TIM5_Init();\r
- MX_USART6_UART_Init();\r
- MX_TIM6_Init();\r
-\r
- /* Initialize interrupts */\r
- MX_NVIC_Init();\r
- /* USER CODE BEGIN 2 */\r
-\r
- left_encoder.Setup();\r
- right_encoder.Setup();\r
-\r
- left_motor.setup();\r
- right_motor.setup();\r
- left_motor.coast();\r
- right_motor.coast();\r
-\r
- left_pid.config(180, 200, 0);\r
- right_pid.config(185, 195, 0);\r
- cross_pid.config(50, 20, 0);\r
-\r
- tx_buffer = (uint8_t*) &output_msg;\r
- rx_buffer = (uint8_t*) &input_msg;\r
-\r
- vel_output.angular_vel = 1;\r
- vel_output.linear_vel = 2;\r
- stream_tx = pb_ostream_from_buffer(buffer_tx, sizeof(buffer_tx));\r
-\r
- //Enables UART RX interrupt\r
- HAL_UART_Receive_IT(&huart6, buffer_rx, 10);\r
- HAL_TIM_Base_Start_IT(&htim6);\r
- /* USER CODE END 2 */\r
-\r
- /* Infinite loop */\r
- /* USER CODE BEGIN WHILE */\r
- while (1) {\r
-\r
- /* USER CODE END WHILE */\r
-\r
- /* USER CODE BEGIN 3 */\r
- }\r
- /* USER CODE END 3 */\r
-}\r
-\r
-/**\r
- * @brief System Clock Configuration\r
- * @retval Nonewheel_circumference_\r
- */\r
-void SystemClock_Config(void) {\r
- RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };\r
- RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };\r
- RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };\r
-\r
- /** Configure the main internal regulator output voltage \r
- */\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
- __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);\r
- /** Initializes the CPU, AHB and APB busses clocks \r
- */\r
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;\r
- RCC_OscInitStruct.HSIState = RCC_HSI_ON;\r
- RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;\r
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;\r
- if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- /** Initializes the CPU, AHB and APB busses clocks \r
- */\r
- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK\r
- | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;\r
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;\r
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;\r
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;\r
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;\r
-\r
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6;\r
- PeriphClkInitStruct.Usart6ClockSelection = RCC_USART6CLKSOURCE_PCLK2;\r
- if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {\r
- Error_Handler();\r
- }\r
-}\r
-\r
-/**\r
- * @brief NVIC Configuration.\r
- * @retval None\r
- */\r
-static void MX_NVIC_Init(void) {\r
- /* TIM3_IRQn interrupt configuration */\r
- HAL_NVIC_SetPriority(TIM3_IRQn, 2, 1);\r
- HAL_NVIC_EnableIRQ(TIM3_IRQn);\r
- /* TIM6_DAC_IRQn interrupt configuration */\r
- HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 2, 2);\r
- HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);\r
- /* USART6_IRQn interrupt configuration */\r
- HAL_NVIC_SetPriority(USART6_IRQn, 1, 0);\r
- HAL_NVIC_EnableIRQ(USART6_IRQn);\r
-}\r
-\r
-/**\r
- * @brief TIM2 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_TIM2_Init(void) {\r
-\r
- /* USER CODE BEGIN TIM2_Init 0 */\r
-\r
- /* USER CODE END TIM2_Init 0 */\r
-\r
- TIM_Encoder_InitTypeDef sConfig = { 0 };\r
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };\r
-\r
- /* USER CODE BEGIN TIM2_Init 1 */\r
-\r
- /* USER CODE END TIM2_Init 1 */\r
- htim2.Instance = TIM2;\r
- htim2.Init.Prescaler = 0;\r
- htim2.Init.CounterMode = TIM_COUNTERMODE_UP;\r
- htim2.Init.Period = 4294967295;\r
- htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;\r
- htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;\r
- sConfig.EncoderMode = TIM_ENCODERMODE_TI12;\r
- sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;\r
- sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;\r
- sConfig.IC1Prescaler = TIM_ICPSC_DIV1;\r
- sConfig.IC1Filter = 0;\r
- sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;\r
- sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;\r
- sConfig.IC2Prescaler = TIM_ICPSC_DIV1;\r
- sConfig.IC2Filter = 0;\r
- if (HAL_TIM_Encoder_Init(&htim2, &sConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;\r
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;\r
- if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- /* USER CODE BEGIN TIM2_Init 2 */\r
-\r
- /* USER CODE END TIM2_Init 2 */\r
-\r
-}\r
-\r
-/**\r
- * @brief TIM3 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_TIM3_Init(void) {\r
-\r
- /* USER CODE BEGIN TIM3_Init 0 */\r
-\r
- /* USER CODE END TIM3_Init 0 */\r
-\r
- TIM_ClockConfigTypeDef sClockSourceConfig = { 0 };\r
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };\r
-\r
- /* USER CODE BEGIN TIM3_Init 1 */\r
-\r
- /* USER CODE END TIM3_Init 1 */\r
- htim3.Instance = TIM3;\r
- htim3.Init.Prescaler = 999;\r
- htim3.Init.CounterMode = TIM_COUNTERMODE_UP;\r
- htim3.Init.Period = 159;\r
- htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;\r
- htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;\r
- if (HAL_TIM_Base_Init(&htim3) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;\r
- if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;\r
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;\r
- if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- /* USER CODE BEGIN TIM3_Init 2 */\r
-\r
- /* USER CODE END TIM3_Init 2 */\r
-\r
-}\r
-\r
-/**\r
- * @brief TIM4 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_TIM4_Init(void) {\r
-\r
- /* USER CODE BEGIN TIM4_Init 0 */\r
-\r
- /* USER CODE END TIM4_Init 0 */\r
-\r
- TIM_ClockConfigTypeDef sClockSourceConfig = { 0 };\r
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };\r
- TIM_OC_InitTypeDef sConfigOC = { 0 };\r
-\r
- /* USER CODE BEGIN TIM4_Init 1 */\r
-\r
- /* USER CODE END TIM4_Init 1 */\r
- htim4.Instance = TIM4;\r
- htim4.Init.Prescaler = 0;\r
- htim4.Init.CounterMode = TIM_COUNTERMODE_UP;\r
- htim4.Init.Period = 799;\r
- htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;\r
- htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;\r
- if (HAL_TIM_Base_Init(&htim4) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;\r
- if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;\r
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;\r
- if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sConfigOC.OCMode = TIM_OCMODE_PWM1;\r
- sConfigOC.Pulse = 0;\r
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;\r
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;\r
- if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- /* USER CODE BEGIN TIM4_Init 2 */\r
-\r
- /* USER CODE END TIM4_Init 2 */\r
- HAL_TIM_MspPostInit(&htim4);\r
-\r
-}\r
-\r
-/**\r
- * @brief TIM5 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_TIM5_Init(void) {\r
-\r
- /* USER CODE BEGIN TIM5_Init 0 */\r
-\r
- /* USER CODE END TIM5_Init 0 */\r
-\r
- TIM_Encoder_InitTypeDef sConfig = { 0 };\r
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };\r
-\r
- /* USER CODE BEGIN TIM5_Init 1 */\r
-\r
- /* USER CODE END TIM5_Init 1 */\r
- htim5.Instance = TIM5;\r
- htim5.Init.Prescaler = 0;\r
- htim5.Init.CounterMode = TIM_COUNTERMODE_UP;\r
- htim5.Init.Period = 4294967295;\r
- htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;\r
- htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;\r
- sConfig.EncoderMode = TIM_ENCODERMODE_TI12;\r
- sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;\r
- sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;\r
- sConfig.IC1Prescaler = TIM_ICPSC_DIV1;\r
- sConfig.IC1Filter = 0;\r
- sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;\r
- sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;\r
- sConfig.IC2Prescaler = TIM_ICPSC_DIV1;\r
- sConfig.IC2Filter = 0;\r
- if (HAL_TIM_Encoder_Init(&htim5, &sConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;\r
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;\r
- if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- /* USER CODE BEGIN TIM5_Init 2 */\r
-\r
- /* USER CODE END TIM5_Init 2 */\r
-\r
-}\r
-\r
-/**\r
- * @brief TIM6 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_TIM6_Init(void) {\r
-\r
- /* USER CODE BEGIN TIM6_Init 0 */\r
-\r
- /* USER CODE END TIM6_Init 0 */\r
-\r
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };\r
-\r
- /* USER CODE BEGIN TIM6_Init 1 */\r
-\r
- /* USER CODE END TIM6_Init 1 */\r
- htim6.Instance = TIM6;\r
- htim6.Init.Prescaler = 9999;\r
- htim6.Init.CounterMode = TIM_COUNTERMODE_UP;\r
- htim6.Init.Period = 799;\r
- htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;\r
- if (HAL_TIM_Base_Init(&htim6) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;\r
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;\r
- if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- /* USER CODE BEGIN TIM6_Init 2 */\r
-\r
- /* USER CODE END TIM6_Init 2 */\r
-\r
-}\r
-\r
-/**\r
- * @brief USART6 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_USART6_UART_Init(void) {\r
-\r
- /* USER CODE BEGIN USART6_Init 0 */\r
-\r
- /* USER CODE END USART6_Init 0 */\r
-\r
- /* USER CODE BEGIN USART6_Init 1 */\r
-\r
- /* USER CODE END USART6_Init 1 */\r
- huart6.Instance = USART6;\r
- huart6.Init.BaudRate = 115200;\r
- huart6.Init.WordLength = UART_WORDLENGTH_8B;\r
- huart6.Init.StopBits = UART_STOPBITS_1;\r
- huart6.Init.Parity = UART_PARITY_NONE;\r
- huart6.Init.Mode = UART_MODE_TX_RX;\r
- huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;\r
- huart6.Init.OverSampling = UART_OVERSAMPLING_16;\r
- huart6.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\r
- huart6.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\r
- if (HAL_UART_Init(&huart6) != HAL_OK) {\r
- Error_Handler();\r
- }\r
- /* USER CODE BEGIN USART6_Init 2 */\r
-\r
- /* USER CODE END USART6_Init 2 */\r
-\r
-}\r
-\r
-/**\r
- * @brief GPIO Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_GPIO_Init(void) {\r
- GPIO_InitTypeDef GPIO_InitStruct = { 0 };\r
-\r
- /* GPIO Ports Clock Enable */\r
- __HAL_RCC_GPIOC_CLK_ENABLE();\r
- __HAL_RCC_GPIOA_CLK_ENABLE();\r
- __HAL_RCC_GPIOF_CLK_ENABLE();\r
- __HAL_RCC_GPIOE_CLK_ENABLE();\r
- __HAL_RCC_GPIOD_CLK_ENABLE();\r
- __HAL_RCC_GPIOB_CLK_ENABLE();\r
-\r
- /*Configure GPIO pin Output Level */\r
- HAL_GPIO_WritePin(GPIOF, dir2_Pin | dir1_Pin, GPIO_PIN_RESET);\r
-\r
- /*Configure GPIO pin Output Level */\r
- HAL_GPIO_WritePin(GPIOF, sleep2_Pin | sleep1_Pin, GPIO_PIN_SET);\r
-\r
- /*Configure GPIO pin : user_button_Pin */\r
- GPIO_InitStruct.Pin = user_button_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- HAL_GPIO_Init(user_button_GPIO_Port, &GPIO_InitStruct);\r
-\r
- /*Configure GPIO pin : current2_Pin */\r
- GPIO_InitStruct.Pin = current2_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- HAL_GPIO_Init(current2_GPIO_Port, &GPIO_InitStruct);\r
-\r
- /*Configure GPIO pin : current1_Pin */\r
- GPIO_InitStruct.Pin = current1_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- HAL_GPIO_Init(current1_GPIO_Port, &GPIO_InitStruct);\r
-\r
- /*Configure GPIO pin : fault2_Pin */\r
- GPIO_InitStruct.Pin = fault2_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- HAL_GPIO_Init(fault2_GPIO_Port, &GPIO_InitStruct);\r
-\r
- /*Configure GPIO pins : dir2_Pin dir1_Pin */\r
- GPIO_InitStruct.Pin = dir2_Pin | dir1_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\r
- HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);\r
-\r
- /*Configure GPIO pins : sleep2_Pin sleep1_Pin */\r
- GPIO_InitStruct.Pin = sleep2_Pin | sleep1_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\r
- GPIO_InitStruct.Pull = GPIO_PULLUP;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\r
- HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);\r
-\r
- /*Configure GPIO pin : fault1_Pin */\r
- GPIO_InitStruct.Pin = fault1_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- HAL_GPIO_Init(fault1_GPIO_Port, &GPIO_InitStruct);\r
-\r
- /* EXTI interrupt init*/\r
- HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);\r
- HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);\r
-\r
-}\r
-\r
-/* USER CODE BEGIN 4 */\r
-void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {\r
-\r
- //TIMER 100Hz PID control\r
- if (htim->Instance == TIM3) {\r
-\r
- left_velocity = left_encoder.GetLinearVelocity();\r
- left_dutycycle = left_pid.update(left_velocity);\r
- left_motor.set_speed(left_dutycycle);\r
-\r
- right_velocity = right_encoder.GetLinearVelocity();\r
- right_dutycycle = right_pid.update(right_velocity);\r
- right_motor.set_speed(right_dutycycle);\r
-\r
- float difference = left_velocity - right_velocity;\r
-\r
- int cross_dutycycle = cross_pid.update(difference);\r
-\r
- left_dutycycle += cross_dutycycle;\r
- right_dutycycle -= cross_dutycycle;\r
-\r
- }\r
-\r
- //TIMER 2Hz Transmit\r
- if (htim->Instance == TIM6) {\r
-\r
- odom.UpdateValuesFromWheels(left_encoder.GetLinearVelocity(),\r
- right_encoder.GetLinearVelocity());\r
-\r
- vel_output.linear_vel = odom.GetLinearVelocity();\r
- vel_output.angular_vel = odom.GetAngularVelocity();\r
-\r
- stream_tx = pb_ostream_from_buffer(buffer_tx, sizeof(buffer_tx));\r
-\r
- pb_encode(&stream_tx, Velocities_fields, &vel_output);\r
-\r
- HAL_UART_Transmit(&huart6, buffer_tx, 10, 100);\r
- }\r
-}\r
-\r
-void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) {\r
-\r
- pb_istream_t stream = pb_istream_from_buffer(buffer_rx, 10);\r
-\r
- bool status = pb_decode(&stream, Velocities_fields, &vel_input);\r
-\r
- // if decoding went ok\r
- if (status) {\r
-\r
- odom.UpdateValuesFromVel(vel_input.linear_vel, vel_input.angular_vel);\r
-\r
- left_setpoint = odom.GetLeftVelocity();\r
- right_setpoint = odom.GetRightVelocity();\r
-\r
- left_pid.set(left_setpoint);\r
- right_pid.set(right_setpoint);\r
-\r
- cross_setpoint = left_setpoint - right_setpoint;\r
- cross_pid.set(cross_setpoint);\r
- }\r
-\r
- HAL_UART_Receive_IT(&huart6, buffer_rx, 10);\r
-\r
-}\r
-\r
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {\r
- //Blue user button\r
- if (GPIO_Pin == GPIO_PIN_13) {\r
- previous_millis = current_millis;\r
- current_millis = HAL_GetTick();\r
- if (current_millis - previous_millis < 500)\r
- debounce = false;\r
- else\r
- debounce = true;\r
- if (mode == 0 && debounce) {\r
- mode = 1;\r
- //Enables TIM3 interrupt (used for PID control)\r
- HAL_TIM_Base_Start_IT(&htim3);\r
- }\r
- }\r
-}\r
-\r
-/* USER CODE END 4 */\r
-\r
-/**\r
- * @brief This function is executed in case of error occurrence.\r
- * @retval None\r
- */\r
-void Error_Handler(void) {\r
- /* USER CODE BEGIN Error_Handler_Debug */\r
- /* User can add his own implementation to report the HAL error return state */\r
-\r
- /* USER CODE END Error_Handler_Debug */\r
-}\r
-\r
-#ifdef USE_FULL_ASSERT\r
-/**\r
- * @brief Reports the name of the source file and the source line number\r
- * where the assert_param error has occurred.\r
- * @param file: pointer to the source file name\r
- * @param line: assert_param error line source number\r
- * @retval None\r
- */\r
-void assert_failed(uint8_t *file, uint32_t line)\r
-{ \r
- /* USER CODE BEGIN 6 */\r
- /* User can add his own implementation to report the file name and line number,\r
- tex: printf("Wrong parameduty_cycleters value: file %s on line %d\r\n", file, line) */\r
- /* USER CODE END 6 */\r
-}\r
-#endif /* USE_FULL_ASSERT */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/* pb_common.c: Common support functions for pb_encode.c and pb_decode.c.
- *
- * 2014 Petteri Aimonen <jpa@kapsi.fi>
- */
-
-#include "pb_common.h"
-
-static bool load_descriptor_values(pb_field_iter_t *iter)
-{
- uint32_t word0;
- uint32_t data_offset;
- uint8_t format;
- int8_t size_offset;
-
- if (iter->index >= iter->descriptor->field_count)
- return false;
-
- word0 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index]);
- format = word0 & 3;
- iter->tag = (pb_size_t)((word0 >> 2) & 0x3F);
- iter->type = (pb_type_t)((word0 >> 8) & 0xFF);
-
- if (format == 0)
- {
- /* 1-word format */
- iter->array_size = 1;
- size_offset = (int8_t)((word0 >> 24) & 0x0F);
- data_offset = (word0 >> 16) & 0xFF;
- iter->data_size = (pb_size_t)((word0 >> 28) & 0x0F);
- }
- else if (format == 1)
- {
- /* 2-word format */
- uint32_t word1 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 1]);
-
- iter->array_size = (pb_size_t)((word0 >> 16) & 0x0FFF);
- iter->tag = (pb_size_t)(iter->tag | ((word1 >> 28) << 6));
- size_offset = (int8_t)((word0 >> 28) & 0x0F);
- data_offset = word1 & 0xFFFF;
- iter->data_size = (pb_size_t)((word1 >> 16) & 0x0FFF);
- }
- else if (format == 2)
- {
- /* 4-word format */
- uint32_t word1 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 1]);
- uint32_t word2 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 2]);
- uint32_t word3 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 3]);
-
- iter->array_size = (pb_size_t)(word0 >> 16);
- iter->tag = (pb_size_t)(iter->tag | ((word1 >> 8) << 6));
- size_offset = (int8_t)(word1 & 0xFF);
- data_offset = word2;
- iter->data_size = (pb_size_t)word3;
- }
- else
- {
- /* 8-word format */
- uint32_t word1 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 1]);
- uint32_t word2 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 2]);
- uint32_t word3 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 3]);
- uint32_t word4 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 4]);
-
- iter->array_size = (pb_size_t)word4;
- iter->tag = (pb_size_t)(iter->tag | ((word1 >> 8) << 6));
- size_offset = (int8_t)(word1 & 0xFF);
- data_offset = word2;
- iter->data_size = (pb_size_t)word3;
- }
-
- iter->pField = (char*)iter->message + data_offset;
-
- if (size_offset)
- {
- iter->pSize = (char*)iter->pField - size_offset;
- }
- else if (PB_HTYPE(iter->type) == PB_HTYPE_REPEATED &&
- (PB_ATYPE(iter->type) == PB_ATYPE_STATIC ||
- PB_ATYPE(iter->type) == PB_ATYPE_POINTER))
- {
- /* Fixed count array */
- iter->pSize = &iter->array_size;
- }
- else
- {
- iter->pSize = NULL;
- }
-
- if (PB_ATYPE(iter->type) == PB_ATYPE_POINTER && iter->pField != NULL)
- {
- iter->pData = *(void**)iter->pField;
- }
- else
- {
- iter->pData = iter->pField;
- }
-
- if (PB_LTYPE_IS_SUBMSG(iter->type))
- {
- iter->submsg_desc = iter->descriptor->submsg_info[iter->submessage_index];
- }
- else
- {
- iter->submsg_desc = NULL;
- }
-
- return true;
-}
-
-static void advance_iterator(pb_field_iter_t *iter)
-{
- iter->index++;
-
- if (iter->index >= iter->descriptor->field_count)
- {
- /* Restart */
- iter->index = 0;
- iter->field_info_index = 0;
- iter->submessage_index = 0;
- iter->required_field_index = 0;
- }
- else
- {
- /* Increment indexes based on previous field type.
- * All field info formats have the following fields:
- * - lowest 2 bits tell the amount of words in the descriptor (2^n words)
- * - bits 2..7 give the lowest bits of tag number.
- * - bits 8..15 give the field type.
- */
- uint32_t prev_descriptor = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index]);
- pb_type_t prev_type = (prev_descriptor >> 8) & 0xFF;
- pb_size_t descriptor_len = (pb_size_t)(1 << (prev_descriptor & 3));
-
- iter->field_info_index = (pb_size_t)(iter->field_info_index + descriptor_len);
-
- if (PB_HTYPE(prev_type) == PB_HTYPE_REQUIRED)
- {
- iter->required_field_index++;
- }
-
- if (PB_LTYPE_IS_SUBMSG(prev_type))
- {
- iter->submessage_index++;
- }
- }
-}
-
-bool pb_field_iter_begin(pb_field_iter_t *iter, const pb_msgdesc_t *desc, void *message)
-{
- memset(iter, 0, sizeof(*iter));
-
- iter->descriptor = desc;
- iter->message = message;
-
- return load_descriptor_values(iter);
-}
-
-bool pb_field_iter_begin_extension(pb_field_iter_t *iter, pb_extension_t *extension)
-{
- const pb_msgdesc_t *msg = (const pb_msgdesc_t*)extension->type->arg;
- bool status;
-
- uint32_t word0 = PB_PROGMEM_READU32(msg->field_info[0]);
- if (PB_ATYPE(word0 >> 8) == PB_ATYPE_POINTER)
- {
- /* For pointer extensions, the pointer is stored directly
- * in the extension structure. This avoids having an extra
- * indirection. */
- status = pb_field_iter_begin(iter, msg, &extension->dest);
- }
- else
- {
- status = pb_field_iter_begin(iter, msg, extension->dest);
- }
-
- iter->pSize = &extension->found;
- return status;
-}
-
-bool pb_field_iter_next(pb_field_iter_t *iter)
-{
- advance_iterator(iter);
- (void)load_descriptor_values(iter);
- return iter->index != 0;
-}
-
-bool pb_field_iter_find(pb_field_iter_t *iter, uint32_t tag)
-{
- if (iter->tag == tag)
- {
- return true; /* Nothing to do, correct field already. */
- }
- else
- {
- pb_size_t start = iter->index;
- uint32_t fieldinfo;
-
- do
- {
- /* Advance iterator but don't load values yet */
- advance_iterator(iter);
-
- /* Do fast check for tag number match */
- fieldinfo = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index]);
-
- if (((fieldinfo >> 2) & 0x3F) == (tag & 0x3F))
- {
- /* Good candidate, check further */
- (void)load_descriptor_values(iter);
-
- if (iter->tag == tag &&
- PB_LTYPE(iter->type) != PB_LTYPE_EXTENSION)
- {
- /* Found it */
- return true;
- }
- }
- } while (iter->index != start);
-
- /* Searched all the way back to start, and found nothing. */
- (void)load_descriptor_values(iter);
- return false;
- }
-}
-
-static void *pb_const_cast(const void *p)
-{
- /* Note: this casts away const, in order to use the common field iterator
- * logic for both encoding and decoding. The cast is done using union
- * to avoid spurious compiler warnings. */
- union {
- void *p1;
- const void *p2;
- } t;
- t.p2 = p;
- return t.p1;
-}
-
-bool pb_field_iter_begin_const(pb_field_iter_t *iter, const pb_msgdesc_t *desc, const void *message)
-{
- return pb_field_iter_begin(iter, desc, pb_const_cast(message));
-}
-
-bool pb_field_iter_begin_extension_const(pb_field_iter_t *iter, const pb_extension_t *extension)
-{
- return pb_field_iter_begin_extension(iter, (pb_extension_t*)pb_const_cast(extension));
-}
-
-bool pb_default_field_callback(pb_istream_t *istream, pb_ostream_t *ostream, const pb_field_t *field)
-{
- if (field->data_size == sizeof(pb_callback_t))
- {
- pb_callback_t *pCallback = (pb_callback_t*)field->pData;
-
- if (pCallback != NULL)
- {
- if (istream != NULL && pCallback->funcs.decode != NULL)
- {
- return pCallback->funcs.decode(istream, field, &pCallback->arg);
- }
-
- if (ostream != NULL && pCallback->funcs.encode != NULL)
- {
- return pCallback->funcs.encode(ostream, field, &pCallback->arg);
- }
- }
- }
-
- return true; /* Success, but didn't do anything */
-
-}
-
-#ifdef PB_VALIDATE_UTF8
-
-/* This function checks whether a string is valid UTF-8 text.
- *
- * Algorithm is adapted from https://www.cl.cam.ac.uk/~mgk25/ucs/utf8_check.c
- * Original copyright: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> 2005-03-30
- * Licensed under "Short code license", which allows use under MIT license or
- * any compatible with it.
- */
-
-bool pb_validate_utf8(const char *str)
-{
- const pb_byte_t *s = (const pb_byte_t*)str;
- while (*s)
- {
- if (*s < 0x80)
- {
- /* 0xxxxxxx */
- s++;
- }
- else if ((s[0] & 0xe0) == 0xc0)
- {
- /* 110XXXXx 10xxxxxx */
- if ((s[1] & 0xc0) != 0x80 ||
- (s[0] & 0xfe) == 0xc0) /* overlong? */
- return false;
- else
- s += 2;
- }
- else if ((s[0] & 0xf0) == 0xe0)
- {
- /* 1110XXXX 10Xxxxxx 10xxxxxx */
- if ((s[1] & 0xc0) != 0x80 ||
- (s[2] & 0xc0) != 0x80 ||
- (s[0] == 0xe0 && (s[1] & 0xe0) == 0x80) || /* overlong? */
- (s[0] == 0xed && (s[1] & 0xe0) == 0xa0) || /* surrogate? */
- (s[0] == 0xef && s[1] == 0xbf &&
- (s[2] & 0xfe) == 0xbe)) /* U+FFFE or U+FFFF? */
- return false;
- else
- s += 3;
- }
- else if ((s[0] & 0xf8) == 0xf0)
- {
- /* 11110XXX 10XXxxxx 10xxxxxx 10xxxxxx */
- if ((s[1] & 0xc0) != 0x80 ||
- (s[2] & 0xc0) != 0x80 ||
- (s[3] & 0xc0) != 0x80 ||
- (s[0] == 0xf0 && (s[1] & 0xf0) == 0x80) || /* overlong? */
- (s[0] == 0xf4 && s[1] > 0x8f) || s[0] > 0xf4) /* > U+10FFFF? */
- return false;
- else
- s += 4;
- }
- else
- {
- return false;
- }
- }
-
- return true;
-}
-
-#endif
-
+++ /dev/null
-/* pb_decode.c -- decode a protobuf using minimal resources
- *
- * 2011 Petteri Aimonen <jpa@kapsi.fi>
- */
-
-/* Use the GCC warn_unused_result attribute to check that all return values
- * are propagated correctly. On other compilers and gcc before 3.4.0 just
- * ignore the annotation.
- */
-#if !defined(__GNUC__) || ( __GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
- #define checkreturn
-#else
- #define checkreturn __attribute__((warn_unused_result))
-#endif
-
-#include "pb.h"
-#include "pb_decode.h"
-#include "pb_common.h"
-
-/**************************************
- * Declarations internal to this file *
- **************************************/
-
-static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t count);
-static bool checkreturn pb_decode_varint32_eof(pb_istream_t *stream, uint32_t *dest, bool *eof);
-static bool checkreturn read_raw_value(pb_istream_t *stream, pb_wire_type_t wire_type, pb_byte_t *buf, size_t *size);
-static bool checkreturn check_wire_type(pb_wire_type_t wire_type, pb_field_iter_t *field);
-static bool checkreturn decode_basic_field(pb_istream_t *stream, pb_field_iter_t *field);
-static bool checkreturn decode_static_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field);
-static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field);
-static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field);
-static bool checkreturn decode_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field);
-static bool checkreturn default_extension_decoder(pb_istream_t *stream, pb_extension_t *extension, uint32_t tag, pb_wire_type_t wire_type);
-static bool checkreturn decode_extension(pb_istream_t *stream, uint32_t tag, pb_wire_type_t wire_type, pb_field_iter_t *iter);
-static bool checkreturn find_extension_field(pb_field_iter_t *iter);
-static bool pb_message_set_to_defaults(pb_field_iter_t *iter);
-static bool checkreturn pb_dec_bool(pb_istream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_dec_fixed(pb_istream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_dec_bytes(pb_istream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_dec_string(pb_istream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_dec_submessage(pb_istream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_dec_fixed_length_bytes(pb_istream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_skip_varint(pb_istream_t *stream);
-static bool checkreturn pb_skip_string(pb_istream_t *stream);
-
-#ifdef PB_ENABLE_MALLOC
-static bool checkreturn allocate_field(pb_istream_t *stream, void *pData, size_t data_size, size_t array_size);
-static void initialize_pointer_field(void *pItem, pb_field_iter_t *field);
-static bool checkreturn pb_release_union_field(pb_istream_t *stream, pb_field_iter_t *field);
-static void pb_release_single_field(pb_field_iter_t *field);
-#endif
-
-#ifdef PB_WITHOUT_64BIT
-#define pb_int64_t int32_t
-#define pb_uint64_t uint32_t
-#else
-#define pb_int64_t int64_t
-#define pb_uint64_t uint64_t
-#endif
-
-typedef struct {
- uint32_t bitfield[(PB_MAX_REQUIRED_FIELDS + 31) / 32];
-} pb_fields_seen_t;
-
-/*******************************
- * pb_istream_t implementation *
- *******************************/
-
-static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t count)
-{
- size_t i;
- const pb_byte_t *source = (const pb_byte_t*)stream->state;
- stream->state = (pb_byte_t*)stream->state + count;
-
- if (buf != NULL)
- {
- for (i = 0; i < count; i++)
- buf[i] = source[i];
- }
-
- return true;
-}
-
-bool checkreturn pb_read(pb_istream_t *stream, pb_byte_t *buf, size_t count)
-{
- if (count == 0)
- return true;
-
-#ifndef PB_BUFFER_ONLY
- if (buf == NULL && stream->callback != buf_read)
- {
- /* Skip input bytes */
- pb_byte_t tmp[16];
- while (count > 16)
- {
- if (!pb_read(stream, tmp, 16))
- return false;
-
- count -= 16;
- }
-
- return pb_read(stream, tmp, count);
- }
-#endif
-
- if (stream->bytes_left < count)
- PB_RETURN_ERROR(stream, "end-of-stream");
-
-#ifndef PB_BUFFER_ONLY
- if (!stream->callback(stream, buf, count))
- PB_RETURN_ERROR(stream, "io error");
-#else
- if (!buf_read(stream, buf, count))
- return false;
-#endif
-
- stream->bytes_left -= count;
- return true;
-}
-
-/* Read a single byte from input stream. buf may not be NULL.
- * This is an optimization for the varint decoding. */
-static bool checkreturn pb_readbyte(pb_istream_t *stream, pb_byte_t *buf)
-{
- if (stream->bytes_left == 0)
- PB_RETURN_ERROR(stream, "end-of-stream");
-
-#ifndef PB_BUFFER_ONLY
- if (!stream->callback(stream, buf, 1))
- PB_RETURN_ERROR(stream, "io error");
-#else
- *buf = *(const pb_byte_t*)stream->state;
- stream->state = (pb_byte_t*)stream->state + 1;
-#endif
-
- stream->bytes_left--;
-
- return true;
-}
-
-pb_istream_t pb_istream_from_buffer(const pb_byte_t *buf, size_t bufsize)
-{
- pb_istream_t stream;
- /* Cast away the const from buf without a compiler error. We are
- * careful to use it only in a const manner in the callbacks.
- */
- union {
- void *state;
- const void *c_state;
- } state;
-#ifdef PB_BUFFER_ONLY
- stream.callback = NULL;
-#else
- stream.callback = &buf_read;
-#endif
- state.c_state = buf;
- stream.state = state.state;
- stream.bytes_left = bufsize;
-#ifndef PB_NO_ERRMSG
- stream.errmsg = NULL;
-#endif
- return stream;
-}
-
-/********************
- * Helper functions *
- ********************/
-
-static bool checkreturn pb_decode_varint32_eof(pb_istream_t *stream, uint32_t *dest, bool *eof)
-{
- pb_byte_t byte;
- uint32_t result;
-
- if (!pb_readbyte(stream, &byte))
- {
- if (stream->bytes_left == 0)
- {
- if (eof)
- {
- *eof = true;
- }
- }
-
- return false;
- }
-
- if ((byte & 0x80) == 0)
- {
- /* Quick case, 1 byte value */
- result = byte;
- }
- else
- {
- /* Multibyte case */
- uint_fast8_t bitpos = 7;
- result = byte & 0x7F;
-
- do
- {
- if (!pb_readbyte(stream, &byte))
- return false;
-
- if (bitpos >= 32)
- {
- /* Note: The varint could have trailing 0x80 bytes, or 0xFF for negative. */
- uint8_t sign_extension = (bitpos < 63) ? 0xFF : 0x01;
-
- if ((byte & 0x7F) != 0x00 && ((result >> 31) == 0 || byte != sign_extension))
- {
- PB_RETURN_ERROR(stream, "varint overflow");
- }
- }
- else
- {
- result |= (uint32_t)(byte & 0x7F) << bitpos;
- }
- bitpos = (uint_fast8_t)(bitpos + 7);
- } while (byte & 0x80);
-
- if (bitpos == 35 && (byte & 0x70) != 0)
- {
- /* The last byte was at bitpos=28, so only bottom 4 bits fit. */
- PB_RETURN_ERROR(stream, "varint overflow");
- }
- }
-
- *dest = result;
- return true;
-}
-
-bool checkreturn pb_decode_varint32(pb_istream_t *stream, uint32_t *dest)
-{
- return pb_decode_varint32_eof(stream, dest, NULL);
-}
-
-#ifndef PB_WITHOUT_64BIT
-bool checkreturn pb_decode_varint(pb_istream_t *stream, uint64_t *dest)
-{
- pb_byte_t byte;
- uint_fast8_t bitpos = 0;
- uint64_t result = 0;
-
- do
- {
- if (bitpos >= 64)
- PB_RETURN_ERROR(stream, "varint overflow");
-
- if (!pb_readbyte(stream, &byte))
- return false;
-
- result |= (uint64_t)(byte & 0x7F) << bitpos;
- bitpos = (uint_fast8_t)(bitpos + 7);
- } while (byte & 0x80);
-
- *dest = result;
- return true;
-}
-#endif
-
-bool checkreturn pb_skip_varint(pb_istream_t *stream)
-{
- pb_byte_t byte;
- do
- {
- if (!pb_read(stream, &byte, 1))
- return false;
- } while (byte & 0x80);
- return true;
-}
-
-bool checkreturn pb_skip_string(pb_istream_t *stream)
-{
- uint32_t length;
- if (!pb_decode_varint32(stream, &length))
- return false;
-
- if ((size_t)length != length)
- {
- PB_RETURN_ERROR(stream, "size too large");
- }
-
- return pb_read(stream, NULL, (size_t)length);
-}
-
-bool checkreturn pb_decode_tag(pb_istream_t *stream, pb_wire_type_t *wire_type, uint32_t *tag, bool *eof)
-{
- uint32_t temp;
- *eof = false;
- *wire_type = (pb_wire_type_t) 0;
- *tag = 0;
-
- if (!pb_decode_varint32_eof(stream, &temp, eof))
- {
- return false;
- }
-
- *tag = temp >> 3;
- *wire_type = (pb_wire_type_t)(temp & 7);
- return true;
-}
-
-bool checkreturn pb_skip_field(pb_istream_t *stream, pb_wire_type_t wire_type)
-{
- switch (wire_type)
- {
- case PB_WT_VARINT: return pb_skip_varint(stream);
- case PB_WT_64BIT: return pb_read(stream, NULL, 8);
- case PB_WT_STRING: return pb_skip_string(stream);
- case PB_WT_32BIT: return pb_read(stream, NULL, 4);
- default: PB_RETURN_ERROR(stream, "invalid wire_type");
- }
-}
-
-/* Read a raw value to buffer, for the purpose of passing it to callback as
- * a substream. Size is maximum size on call, and actual size on return.
- */
-static bool checkreturn read_raw_value(pb_istream_t *stream, pb_wire_type_t wire_type, pb_byte_t *buf, size_t *size)
-{
- size_t max_size = *size;
- switch (wire_type)
- {
- case PB_WT_VARINT:
- *size = 0;
- do
- {
- (*size)++;
- if (*size > max_size)
- PB_RETURN_ERROR(stream, "varint overflow");
-
- if (!pb_read(stream, buf, 1))
- return false;
- } while (*buf++ & 0x80);
- return true;
-
- case PB_WT_64BIT:
- *size = 8;
- return pb_read(stream, buf, 8);
-
- case PB_WT_32BIT:
- *size = 4;
- return pb_read(stream, buf, 4);
-
- case PB_WT_STRING:
- /* Calling read_raw_value with a PB_WT_STRING is an error.
- * Explicitly handle this case and fallthrough to default to avoid
- * compiler warnings.
- */
-
- default: PB_RETURN_ERROR(stream, "invalid wire_type");
- }
-}
-
-/* Decode string length from stream and return a substream with limited length.
- * Remember to close the substream using pb_close_string_substream().
- */
-bool checkreturn pb_make_string_substream(pb_istream_t *stream, pb_istream_t *substream)
-{
- uint32_t size;
- if (!pb_decode_varint32(stream, &size))
- return false;
-
- *substream = *stream;
- if (substream->bytes_left < size)
- PB_RETURN_ERROR(stream, "parent stream too short");
-
- substream->bytes_left = (size_t)size;
- stream->bytes_left -= (size_t)size;
- return true;
-}
-
-bool checkreturn pb_close_string_substream(pb_istream_t *stream, pb_istream_t *substream)
-{
- if (substream->bytes_left) {
- if (!pb_read(substream, NULL, substream->bytes_left))
- return false;
- }
-
- stream->state = substream->state;
-
-#ifndef PB_NO_ERRMSG
- stream->errmsg = substream->errmsg;
-#endif
- return true;
-}
-
-/*************************
- * Decode a single field *
- *************************/
-
-static bool checkreturn check_wire_type(pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- switch (PB_LTYPE(field->type))
- {
- case PB_LTYPE_BOOL:
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- return wire_type == PB_WT_VARINT;
-
- case PB_LTYPE_FIXED32:
- return wire_type == PB_WT_32BIT;
-
- case PB_LTYPE_FIXED64:
- return wire_type == PB_WT_64BIT;
-
- case PB_LTYPE_BYTES:
- case PB_LTYPE_STRING:
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- return wire_type == PB_WT_STRING;
-
- default:
- return false;
- }
-}
-
-static bool checkreturn decode_basic_field(pb_istream_t *stream, pb_field_iter_t *field)
-{
- switch (PB_LTYPE(field->type))
- {
- case PB_LTYPE_BOOL:
- return pb_dec_bool(stream, field);
-
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- return pb_dec_varint(stream, field);
-
- case PB_LTYPE_FIXED32:
- case PB_LTYPE_FIXED64:
- return pb_dec_fixed(stream, field);
-
- case PB_LTYPE_BYTES:
- return pb_dec_bytes(stream, field);
-
- case PB_LTYPE_STRING:
- return pb_dec_string(stream, field);
-
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- return pb_dec_submessage(stream, field);
-
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- return pb_dec_fixed_length_bytes(stream, field);
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- }
-}
-
-static bool checkreturn decode_static_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- switch (PB_HTYPE(field->type))
- {
- case PB_HTYPE_REQUIRED:
- if (!check_wire_type(wire_type, field))
- PB_RETURN_ERROR(stream, "wrong wire type");
-
- return decode_basic_field(stream, field);
-
- case PB_HTYPE_OPTIONAL:
- if (!check_wire_type(wire_type, field))
- PB_RETURN_ERROR(stream, "wrong wire type");
-
- if (field->pSize != NULL)
- *(bool*)field->pSize = true;
- return decode_basic_field(stream, field);
-
- case PB_HTYPE_REPEATED:
- if (wire_type == PB_WT_STRING
- && PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
- {
- /* Packed array */
- bool status = true;
- pb_istream_t substream;
- pb_size_t *size = (pb_size_t*)field->pSize;
- field->pData = (char*)field->pField + field->data_size * (*size);
-
- if (!pb_make_string_substream(stream, &substream))
- return false;
-
- while (substream.bytes_left > 0 && *size < field->array_size)
- {
- if (!decode_basic_field(&substream, field))
- {
- status = false;
- break;
- }
- (*size)++;
- field->pData = (char*)field->pData + field->data_size;
- }
-
- if (substream.bytes_left != 0)
- PB_RETURN_ERROR(stream, "array overflow");
- if (!pb_close_string_substream(stream, &substream))
- return false;
-
- return status;
- }
- else
- {
- /* Repeated field */
- pb_size_t *size = (pb_size_t*)field->pSize;
- field->pData = (char*)field->pField + field->data_size * (*size);
-
- if (!check_wire_type(wire_type, field))
- PB_RETURN_ERROR(stream, "wrong wire type");
-
- if ((*size)++ >= field->array_size)
- PB_RETURN_ERROR(stream, "array overflow");
-
- return decode_basic_field(stream, field);
- }
-
- case PB_HTYPE_ONEOF:
- *(pb_size_t*)field->pSize = field->tag;
- if (PB_LTYPE_IS_SUBMSG(field->type))
- {
- /* We memset to zero so that any callbacks are set to NULL.
- * This is because the callbacks might otherwise have values
- * from some other union field.
- * If callbacks are needed inside oneof field, use .proto
- * option submsg_callback to have a separate callback function
- * that can set the fields before submessage is decoded.
- * pb_dec_submessage() will set any default values. */
- memset(field->pData, 0, (size_t)field->data_size);
- }
-
- if (!check_wire_type(wire_type, field))
- PB_RETURN_ERROR(stream, "wrong wire type");
-
- return decode_basic_field(stream, field);
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- }
-}
-
-#ifdef PB_ENABLE_MALLOC
-/* Allocate storage for the field and store the pointer at iter->pData.
- * array_size is the number of entries to reserve in an array.
- * Zero size is not allowed, use pb_free() for releasing.
- */
-static bool checkreturn allocate_field(pb_istream_t *stream, void *pData, size_t data_size, size_t array_size)
-{
- void *ptr = *(void**)pData;
-
- if (data_size == 0 || array_size == 0)
- PB_RETURN_ERROR(stream, "invalid size");
-
-#ifdef __AVR__
- /* Workaround for AVR libc bug 53284: http://savannah.nongnu.org/bugs/?53284
- * Realloc to size of 1 byte can cause corruption of the malloc structures.
- */
- if (data_size == 1 && array_size == 1)
- {
- data_size = 2;
- }
-#endif
-
- /* Check for multiplication overflows.
- * This code avoids the costly division if the sizes are small enough.
- * Multiplication is safe as long as only half of bits are set
- * in either multiplicand.
- */
- {
- const size_t check_limit = (size_t)1 << (sizeof(size_t) * 4);
- if (data_size >= check_limit || array_size >= check_limit)
- {
- const size_t size_max = (size_t)-1;
- if (size_max / array_size < data_size)
- {
- PB_RETURN_ERROR(stream, "size too large");
- }
- }
- }
-
- /* Allocate new or expand previous allocation */
- /* Note: on failure the old pointer will remain in the structure,
- * the message must be freed by caller also on error return. */
- ptr = pb_realloc(ptr, array_size * data_size);
- if (ptr == NULL)
- PB_RETURN_ERROR(stream, "realloc failed");
-
- *(void**)pData = ptr;
- return true;
-}
-
-/* Clear a newly allocated item in case it contains a pointer, or is a submessage. */
-static void initialize_pointer_field(void *pItem, pb_field_iter_t *field)
-{
- if (PB_LTYPE(field->type) == PB_LTYPE_STRING ||
- PB_LTYPE(field->type) == PB_LTYPE_BYTES)
- {
- *(void**)pItem = NULL;
- }
- else if (PB_LTYPE_IS_SUBMSG(field->type))
- {
- /* We memset to zero so that any callbacks are set to NULL.
- * Then set any default values. */
- pb_field_iter_t submsg_iter;
- memset(pItem, 0, field->data_size);
-
- if (pb_field_iter_begin(&submsg_iter, field->submsg_desc, pItem))
- {
- (void)pb_message_set_to_defaults(&submsg_iter);
- }
- }
-}
-#endif
-
-static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
-#ifndef PB_ENABLE_MALLOC
- PB_UNUSED(wire_type);
- PB_UNUSED(field);
- PB_RETURN_ERROR(stream, "no malloc support");
-#else
- switch (PB_HTYPE(field->type))
- {
- case PB_HTYPE_REQUIRED:
- case PB_HTYPE_OPTIONAL:
- case PB_HTYPE_ONEOF:
- if (!check_wire_type(wire_type, field))
- PB_RETURN_ERROR(stream, "wrong wire type");
-
- if (PB_LTYPE_IS_SUBMSG(field->type) && *(void**)field->pField != NULL)
- {
- /* Duplicate field, have to release the old allocation first. */
- /* FIXME: Does this work correctly for oneofs? */
- pb_release_single_field(field);
- }
-
- if (PB_HTYPE(field->type) == PB_HTYPE_ONEOF)
- {
- *(pb_size_t*)field->pSize = field->tag;
- }
-
- if (PB_LTYPE(field->type) == PB_LTYPE_STRING ||
- PB_LTYPE(field->type) == PB_LTYPE_BYTES)
- {
- /* pb_dec_string and pb_dec_bytes handle allocation themselves */
- field->pData = field->pField;
- return decode_basic_field(stream, field);
- }
- else
- {
- if (!allocate_field(stream, field->pField, field->data_size, 1))
- return false;
-
- field->pData = *(void**)field->pField;
- initialize_pointer_field(field->pData, field);
- return decode_basic_field(stream, field);
- }
-
- case PB_HTYPE_REPEATED:
- if (wire_type == PB_WT_STRING
- && PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
- {
- /* Packed array, multiple items come in at once. */
- bool status = true;
- pb_size_t *size = (pb_size_t*)field->pSize;
- size_t allocated_size = *size;
- pb_istream_t substream;
-
- if (!pb_make_string_substream(stream, &substream))
- return false;
-
- while (substream.bytes_left)
- {
- if ((size_t)*size + 1 > allocated_size)
- {
- /* Allocate more storage. This tries to guess the
- * number of remaining entries. Round the division
- * upwards. */
- allocated_size += (substream.bytes_left - 1) / field->data_size + 1;
-
- if (!allocate_field(&substream, field->pField, field->data_size, allocated_size))
- {
- status = false;
- break;
- }
- }
-
- /* Decode the array entry */
- field->pData = *(char**)field->pField + field->data_size * (*size);
- initialize_pointer_field(field->pData, field);
- if (!decode_basic_field(&substream, field))
- {
- status = false;
- break;
- }
-
- if (*size == PB_SIZE_MAX)
- {
-#ifndef PB_NO_ERRMSG
- stream->errmsg = "too many array entries";
-#endif
- status = false;
- break;
- }
-
- (*size)++;
- }
- if (!pb_close_string_substream(stream, &substream))
- return false;
-
- return status;
- }
- else
- {
- /* Normal repeated field, i.e. only one item at a time. */
- pb_size_t *size = (pb_size_t*)field->pSize;
-
- if (*size == PB_SIZE_MAX)
- PB_RETURN_ERROR(stream, "too many array entries");
-
- if (!check_wire_type(wire_type, field))
- PB_RETURN_ERROR(stream, "wrong wire type");
-
- (*size)++;
- if (!allocate_field(stream, field->pField, field->data_size, *size))
- return false;
-
- field->pData = *(char**)field->pField + field->data_size * (*size - 1);
- initialize_pointer_field(field->pData, field);
- return decode_basic_field(stream, field);
- }
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- }
-#endif
-}
-
-static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- if (!field->descriptor->field_callback)
- return pb_skip_field(stream, wire_type);
-
- if (wire_type == PB_WT_STRING)
- {
- pb_istream_t substream;
- size_t prev_bytes_left;
-
- if (!pb_make_string_substream(stream, &substream))
- return false;
-
- do
- {
- prev_bytes_left = substream.bytes_left;
- if (!field->descriptor->field_callback(&substream, NULL, field))
- PB_RETURN_ERROR(stream, "callback failed");
- } while (substream.bytes_left > 0 && substream.bytes_left < prev_bytes_left);
-
- if (!pb_close_string_substream(stream, &substream))
- return false;
-
- return true;
- }
- else
- {
- /* Copy the single scalar value to stack.
- * This is required so that we can limit the stream length,
- * which in turn allows to use same callback for packed and
- * not-packed fields. */
- pb_istream_t substream;
- pb_byte_t buffer[10];
- size_t size = sizeof(buffer);
-
- if (!read_raw_value(stream, wire_type, buffer, &size))
- return false;
- substream = pb_istream_from_buffer(buffer, size);
-
- return field->descriptor->field_callback(&substream, NULL, field);
- }
-}
-
-static bool checkreturn decode_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
-#ifdef PB_ENABLE_MALLOC
- /* When decoding an oneof field, check if there is old data that must be
- * released first. */
- if (PB_HTYPE(field->type) == PB_HTYPE_ONEOF)
- {
- if (!pb_release_union_field(stream, field))
- return false;
- }
-#endif
-
- switch (PB_ATYPE(field->type))
- {
- case PB_ATYPE_STATIC:
- return decode_static_field(stream, wire_type, field);
-
- case PB_ATYPE_POINTER:
- return decode_pointer_field(stream, wire_type, field);
-
- case PB_ATYPE_CALLBACK:
- return decode_callback_field(stream, wire_type, field);
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- }
-}
-
-/* Default handler for extension fields. Expects to have a pb_msgdesc_t
- * pointer in the extension->type->arg field, pointing to a message with
- * only one field in it. */
-static bool checkreturn default_extension_decoder(pb_istream_t *stream,
- pb_extension_t *extension, uint32_t tag, pb_wire_type_t wire_type)
-{
- pb_field_iter_t iter;
-
- if (!pb_field_iter_begin_extension(&iter, extension))
- PB_RETURN_ERROR(stream, "invalid extension");
-
- if (iter.tag != tag)
- return true;
-
- extension->found = true;
- return decode_field(stream, wire_type, &iter);
-}
-
-/* Try to decode an unknown field as an extension field. Tries each extension
- * decoder in turn, until one of them handles the field or loop ends. */
-static bool checkreturn decode_extension(pb_istream_t *stream,
- uint32_t tag, pb_wire_type_t wire_type, pb_field_iter_t *iter)
-{
- pb_extension_t *extension = *(pb_extension_t* const *)iter->pData;
- size_t pos = stream->bytes_left;
-
- while (extension != NULL && pos == stream->bytes_left)
- {
- bool status;
- if (extension->type->decode)
- status = extension->type->decode(stream, extension, tag, wire_type);
- else
- status = default_extension_decoder(stream, extension, tag, wire_type);
-
- if (!status)
- return false;
-
- extension = extension->next;
- }
-
- return true;
-}
-
-/* Step through the iterator until an extension field is found or until all
- * entries have been checked. There can be only one extension field per
- * message. Returns false if no extension field is found. */
-static bool checkreturn find_extension_field(pb_field_iter_t *iter)
-{
- pb_size_t start = iter->index;
-
- do {
- if (PB_LTYPE(iter->type) == PB_LTYPE_EXTENSION)
- return true;
- (void)pb_field_iter_next(iter);
- } while (iter->index != start);
-
- return false;
-}
-
-/* Initialize message fields to default values, recursively */
-static bool pb_field_set_to_default(pb_field_iter_t *field)
-{
- pb_type_t type;
- type = field->type;
-
- if (PB_LTYPE(type) == PB_LTYPE_EXTENSION)
- {
- pb_extension_t *ext = *(pb_extension_t* const *)field->pData;
- while (ext != NULL)
- {
- pb_field_iter_t ext_iter;
- if (pb_field_iter_begin_extension(&ext_iter, ext))
- {
- ext->found = false;
- if (!pb_message_set_to_defaults(&ext_iter))
- return false;
- }
- ext = ext->next;
- }
- }
- else if (PB_ATYPE(type) == PB_ATYPE_STATIC)
- {
- bool init_data = true;
- if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && field->pSize != NULL)
- {
- /* Set has_field to false. Still initialize the optional field
- * itself also. */
- *(bool*)field->pSize = false;
- }
- else if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
- PB_HTYPE(type) == PB_HTYPE_ONEOF)
- {
- /* REPEATED: Set array count to 0, no need to initialize contents.
- ONEOF: Set which_field to 0. */
- *(pb_size_t*)field->pSize = 0;
- init_data = false;
- }
-
- if (init_data)
- {
- if (PB_LTYPE_IS_SUBMSG(field->type))
- {
- /* Initialize submessage to defaults */
- pb_field_iter_t submsg_iter;
- if (pb_field_iter_begin(&submsg_iter, field->submsg_desc, field->pData))
- {
- if (!pb_message_set_to_defaults(&submsg_iter))
- return false;
- }
- }
- else
- {
- /* Initialize to zeros */
- memset(field->pData, 0, (size_t)field->data_size);
- }
- }
- }
- else if (PB_ATYPE(type) == PB_ATYPE_POINTER)
- {
- /* Initialize the pointer to NULL. */
- *(void**)field->pField = NULL;
-
- /* Initialize array count to 0. */
- if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
- PB_HTYPE(type) == PB_HTYPE_ONEOF)
- {
- *(pb_size_t*)field->pSize = 0;
- }
- }
- else if (PB_ATYPE(type) == PB_ATYPE_CALLBACK)
- {
- /* Don't overwrite callback */
- }
-
- return true;
-}
-
-static bool pb_message_set_to_defaults(pb_field_iter_t *iter)
-{
- pb_istream_t defstream = PB_ISTREAM_EMPTY;
- uint32_t tag = 0;
- pb_wire_type_t wire_type = PB_WT_VARINT;
- bool eof;
-
- if (iter->descriptor->default_value)
- {
- defstream = pb_istream_from_buffer(iter->descriptor->default_value, (size_t)-1);
- if (!pb_decode_tag(&defstream, &wire_type, &tag, &eof))
- return false;
- }
-
- do
- {
- if (!pb_field_set_to_default(iter))
- return false;
-
- if (tag != 0 && iter->tag == tag)
- {
- /* We have a default value for this field in the defstream */
- if (!decode_field(&defstream, wire_type, iter))
- return false;
- if (!pb_decode_tag(&defstream, &wire_type, &tag, &eof))
- return false;
-
- if (iter->pSize)
- *(bool*)iter->pSize = false;
- }
- } while (pb_field_iter_next(iter));
-
- return true;
-}
-
-/*********************
- * Decode all fields *
- *********************/
-
-static bool checkreturn pb_decode_inner(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct, unsigned int flags)
-{
- uint32_t extension_range_start = 0;
-
- /* 'fixed_count_field' and 'fixed_count_size' track position of a repeated fixed
- * count field. This can only handle _one_ repeated fixed count field that
- * is unpacked and unordered among other (non repeated fixed count) fields.
- */
- pb_size_t fixed_count_field = PB_SIZE_MAX;
- pb_size_t fixed_count_size = 0;
- pb_size_t fixed_count_total_size = 0;
-
- pb_fields_seen_t fields_seen = {{0, 0}};
- const uint32_t allbits = ~(uint32_t)0;
- pb_field_iter_t iter;
-
- /* Return value ignored, as empty message types will be correctly handled by
- * pb_field_iter_find() anyway. */
- (void)pb_field_iter_begin(&iter, fields, dest_struct);
-
- while (stream->bytes_left)
- {
- uint32_t tag;
- pb_wire_type_t wire_type;
- bool eof;
-
- if (!pb_decode_tag(stream, &wire_type, &tag, &eof))
- {
- if (eof)
- break;
- else
- return false;
- }
-
- if (tag == 0)
- {
- if (flags & PB_DECODE_NULLTERMINATED)
- {
- break;
- }
- else
- {
- PB_RETURN_ERROR(stream, "zero tag");
- }
- }
-
- if (!pb_field_iter_find(&iter, tag) || PB_LTYPE(iter.type) == PB_LTYPE_EXTENSION)
- {
- /* No match found, check if it matches an extension. */
- if (tag >= extension_range_start)
- {
- if (!find_extension_field(&iter))
- extension_range_start = (uint32_t)-1;
- else
- extension_range_start = iter.tag;
-
- if (tag >= extension_range_start)
- {
- size_t pos = stream->bytes_left;
-
- if (!decode_extension(stream, tag, wire_type, &iter))
- return false;
-
- if (pos != stream->bytes_left)
- {
- /* The field was handled */
- continue;
- }
- }
- }
-
- /* No match found, skip data */
- if (!pb_skip_field(stream, wire_type))
- return false;
- continue;
- }
-
- /* If a repeated fixed count field was found, get size from
- * 'fixed_count_field' as there is no counter contained in the struct.
- */
- if (PB_HTYPE(iter.type) == PB_HTYPE_REPEATED && iter.pSize == &iter.array_size)
- {
- if (fixed_count_field != iter.index) {
- /* If the new fixed count field does not match the previous one,
- * check that the previous one is NULL or that it finished
- * receiving all the expected data.
- */
- if (fixed_count_field != PB_SIZE_MAX &&
- fixed_count_size != fixed_count_total_size)
- {
- PB_RETURN_ERROR(stream, "wrong size for fixed count field");
- }
-
- fixed_count_field = iter.index;
- fixed_count_size = 0;
- fixed_count_total_size = iter.array_size;
- }
-
- iter.pSize = &fixed_count_size;
- }
-
- if (PB_HTYPE(iter.type) == PB_HTYPE_REQUIRED
- && iter.required_field_index < PB_MAX_REQUIRED_FIELDS)
- {
- uint32_t tmp = ((uint32_t)1 << (iter.required_field_index & 31));
- fields_seen.bitfield[iter.required_field_index >> 5] |= tmp;
- }
-
- if (!decode_field(stream, wire_type, &iter))
- return false;
- }
-
- /* Check that all elements of the last decoded fixed count field were present. */
- if (fixed_count_field != PB_SIZE_MAX &&
- fixed_count_size != fixed_count_total_size)
- {
- PB_RETURN_ERROR(stream, "wrong size for fixed count field");
- }
-
- /* Check that all required fields were present. */
- {
- /* First figure out the number of required fields by
- * seeking to the end of the field array. Usually we
- * are already close to end after decoding.
- */
- pb_size_t req_field_count;
- pb_type_t last_type;
- pb_size_t i;
- do {
- req_field_count = iter.required_field_index;
- last_type = iter.type;
- } while (pb_field_iter_next(&iter));
-
- /* Fixup if last field was also required. */
- if (PB_HTYPE(last_type) == PB_HTYPE_REQUIRED && iter.tag != 0)
- req_field_count++;
-
- if (req_field_count > PB_MAX_REQUIRED_FIELDS)
- req_field_count = PB_MAX_REQUIRED_FIELDS;
-
- if (req_field_count > 0)
- {
- /* Check the whole words */
- for (i = 0; i < (req_field_count >> 5); i++)
- {
- if (fields_seen.bitfield[i] != allbits)
- PB_RETURN_ERROR(stream, "missing required field");
- }
-
- /* Check the remaining bits (if any) */
- if ((req_field_count & 31) != 0)
- {
- if (fields_seen.bitfield[req_field_count >> 5] !=
- (allbits >> (uint8_t)(32 - (req_field_count & 31))))
- {
- PB_RETURN_ERROR(stream, "missing required field");
- }
- }
- }
- }
-
- return true;
-}
-
-bool checkreturn pb_decode_ex(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct, unsigned int flags)
-{
- bool status;
-
- if ((flags & PB_DECODE_NOINIT) == 0)
- {
- pb_field_iter_t iter;
-
- if (pb_field_iter_begin(&iter, fields, dest_struct))
- {
- if (!pb_message_set_to_defaults(&iter))
- PB_RETURN_ERROR(stream, "failed to set defaults");
- }
- }
-
- if ((flags & PB_DECODE_DELIMITED) == 0)
- {
- status = pb_decode_inner(stream, fields, dest_struct, flags);
- }
- else
- {
- pb_istream_t substream;
- if (!pb_make_string_substream(stream, &substream))
- return false;
-
- status = pb_decode_inner(&substream, fields, dest_struct, flags);
-
- if (!pb_close_string_substream(stream, &substream))
- return false;
- }
-
-#ifdef PB_ENABLE_MALLOC
- if (!status)
- pb_release(fields, dest_struct);
-#endif
-
- return status;
-}
-
-bool checkreturn pb_decode(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct)
-{
- return pb_decode_ex(stream, fields, dest_struct, 0);
-}
-
-#ifdef PB_ENABLE_MALLOC
-/* Given an oneof field, if there has already been a field inside this oneof,
- * release it before overwriting with a different one. */
-static bool pb_release_union_field(pb_istream_t *stream, pb_field_iter_t *field)
-{
- pb_field_iter_t old_field = *field;
- pb_size_t old_tag = *(pb_size_t*)field->pSize; /* Previous which_ value */
- pb_size_t new_tag = field->tag; /* New which_ value */
-
- if (old_tag == 0)
- return true; /* Ok, no old data in union */
-
- if (old_tag == new_tag)
- return true; /* Ok, old data is of same type => merge */
-
- /* Release old data. The find can fail if the message struct contains
- * invalid data. */
- if (!pb_field_iter_find(&old_field, old_tag))
- PB_RETURN_ERROR(stream, "invalid union tag");
-
- pb_release_single_field(&old_field);
-
- return true;
-}
-
-static void pb_release_single_field(pb_field_iter_t *field)
-{
- pb_type_t type;
- type = field->type;
-
- if (PB_HTYPE(type) == PB_HTYPE_ONEOF)
- {
- if (*(pb_size_t*)field->pSize != field->tag)
- return; /* This is not the current field in the union */
- }
-
- /* Release anything contained inside an extension or submsg.
- * This has to be done even if the submsg itself is statically
- * allocated. */
- if (PB_LTYPE(type) == PB_LTYPE_EXTENSION)
- {
- /* Release fields from all extensions in the linked list */
- pb_extension_t *ext = *(pb_extension_t**)field->pData;
- while (ext != NULL)
- {
- pb_field_iter_t ext_iter;
- if (pb_field_iter_begin_extension(&ext_iter, ext))
- {
- pb_release_single_field(&ext_iter);
- }
- ext = ext->next;
- }
- }
- else if (PB_LTYPE_IS_SUBMSG(type) && PB_ATYPE(type) != PB_ATYPE_CALLBACK)
- {
- /* Release fields in submessage or submsg array */
- pb_size_t count = 1;
-
- if (PB_ATYPE(type) == PB_ATYPE_POINTER)
- {
- field->pData = *(void**)field->pField;
- }
- else
- {
- field->pData = field->pField;
- }
-
- if (PB_HTYPE(type) == PB_HTYPE_REPEATED)
- {
- count = *(pb_size_t*)field->pSize;
-
- if (PB_ATYPE(type) == PB_ATYPE_STATIC && count > field->array_size)
- {
- /* Protect against corrupted _count fields */
- count = field->array_size;
- }
- }
-
- if (field->pData)
- {
- while (count--)
- {
- pb_release(field->submsg_desc, field->pData);
- field->pData = (char*)field->pData + field->data_size;
- }
- }
- }
-
- if (PB_ATYPE(type) == PB_ATYPE_POINTER)
- {
- if (PB_HTYPE(type) == PB_HTYPE_REPEATED &&
- (PB_LTYPE(type) == PB_LTYPE_STRING ||
- PB_LTYPE(type) == PB_LTYPE_BYTES))
- {
- /* Release entries in repeated string or bytes array */
- void **pItem = *(void***)field->pField;
- pb_size_t count = *(pb_size_t*)field->pSize;
- while (count--)
- {
- pb_free(*pItem);
- *pItem++ = NULL;
- }
- }
-
- if (PB_HTYPE(type) == PB_HTYPE_REPEATED)
- {
- /* We are going to release the array, so set the size to 0 */
- *(pb_size_t*)field->pSize = 0;
- }
-
- /* Release main pointer */
- pb_free(*(void**)field->pField);
- *(void**)field->pField = NULL;
- }
-}
-
-void pb_release(const pb_msgdesc_t *fields, void *dest_struct)
-{
- pb_field_iter_t iter;
-
- if (!dest_struct)
- return; /* Ignore NULL pointers, similar to free() */
-
- if (!pb_field_iter_begin(&iter, fields, dest_struct))
- return; /* Empty message type */
-
- do
- {
- pb_release_single_field(&iter);
- } while (pb_field_iter_next(&iter));
-}
-#endif
-
-/* Field decoders */
-
-bool pb_decode_bool(pb_istream_t *stream, bool *dest)
-{
- uint32_t value;
- if (!pb_decode_varint32(stream, &value))
- return false;
-
- *(bool*)dest = (value != 0);
- return true;
-}
-
-bool pb_decode_svarint(pb_istream_t *stream, pb_int64_t *dest)
-{
- pb_uint64_t value;
- if (!pb_decode_varint(stream, &value))
- return false;
-
- if (value & 1)
- *dest = (pb_int64_t)(~(value >> 1));
- else
- *dest = (pb_int64_t)(value >> 1);
-
- return true;
-}
-
-bool pb_decode_fixed32(pb_istream_t *stream, void *dest)
-{
- union {
- uint32_t fixed32;
- pb_byte_t bytes[4];
- } u;
-
- if (!pb_read(stream, u.bytes, 4))
- return false;
-
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN && CHAR_BIT == 8
- /* fast path - if we know that we're on little endian, assign directly */
- *(uint32_t*)dest = u.fixed32;
-#else
- *(uint32_t*)dest = ((uint32_t)u.bytes[0] << 0) |
- ((uint32_t)u.bytes[1] << 8) |
- ((uint32_t)u.bytes[2] << 16) |
- ((uint32_t)u.bytes[3] << 24);
-#endif
- return true;
-}
-
-#ifndef PB_WITHOUT_64BIT
-bool pb_decode_fixed64(pb_istream_t *stream, void *dest)
-{
- union {
- uint64_t fixed64;
- pb_byte_t bytes[8];
- } u;
-
- if (!pb_read(stream, u.bytes, 8))
- return false;
-
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN && CHAR_BIT == 8
- /* fast path - if we know that we're on little endian, assign directly */
- *(uint64_t*)dest = u.fixed64;
-#else
- *(uint64_t*)dest = ((uint64_t)u.bytes[0] << 0) |
- ((uint64_t)u.bytes[1] << 8) |
- ((uint64_t)u.bytes[2] << 16) |
- ((uint64_t)u.bytes[3] << 24) |
- ((uint64_t)u.bytes[4] << 32) |
- ((uint64_t)u.bytes[5] << 40) |
- ((uint64_t)u.bytes[6] << 48) |
- ((uint64_t)u.bytes[7] << 56);
-#endif
- return true;
-}
-#endif
-
-static bool checkreturn pb_dec_bool(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- return pb_decode_bool(stream, (bool*)field->pData);
-}
-
-static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- if (PB_LTYPE(field->type) == PB_LTYPE_UVARINT)
- {
- pb_uint64_t value, clamped;
- if (!pb_decode_varint(stream, &value))
- return false;
-
- /* Cast to the proper field size, while checking for overflows */
- if (field->data_size == sizeof(pb_uint64_t))
- clamped = *(pb_uint64_t*)field->pData = value;
- else if (field->data_size == sizeof(uint32_t))
- clamped = *(uint32_t*)field->pData = (uint32_t)value;
- else if (field->data_size == sizeof(uint_least16_t))
- clamped = *(uint_least16_t*)field->pData = (uint_least16_t)value;
- else if (field->data_size == sizeof(uint_least8_t))
- clamped = *(uint_least8_t*)field->pData = (uint_least8_t)value;
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
-
- if (clamped != value)
- PB_RETURN_ERROR(stream, "integer too large");
-
- return true;
- }
- else
- {
- pb_uint64_t value;
- pb_int64_t svalue;
- pb_int64_t clamped;
-
- if (PB_LTYPE(field->type) == PB_LTYPE_SVARINT)
- {
- if (!pb_decode_svarint(stream, &svalue))
- return false;
- }
- else
- {
- if (!pb_decode_varint(stream, &value))
- return false;
-
- /* See issue 97: Google's C++ protobuf allows negative varint values to
- * be cast as int32_t, instead of the int64_t that should be used when
- * encoding. Previous nanopb versions had a bug in encoding. In order to
- * not break decoding of such messages, we cast <=32 bit fields to
- * int32_t first to get the sign correct.
- */
- if (field->data_size == sizeof(pb_int64_t))
- svalue = (pb_int64_t)value;
- else
- svalue = (int32_t)value;
- }
-
- /* Cast to the proper field size, while checking for overflows */
- if (field->data_size == sizeof(pb_int64_t))
- clamped = *(pb_int64_t*)field->pData = svalue;
- else if (field->data_size == sizeof(int32_t))
- clamped = *(int32_t*)field->pData = (int32_t)svalue;
- else if (field->data_size == sizeof(int_least16_t))
- clamped = *(int_least16_t*)field->pData = (int_least16_t)svalue;
- else if (field->data_size == sizeof(int_least8_t))
- clamped = *(int_least8_t*)field->pData = (int_least8_t)svalue;
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
-
- if (clamped != svalue)
- PB_RETURN_ERROR(stream, "integer too large");
-
- return true;
- }
-}
-
-static bool checkreturn pb_dec_fixed(pb_istream_t *stream, const pb_field_iter_t *field)
-{
-#ifdef PB_CONVERT_DOUBLE_FLOAT
- if (field->data_size == sizeof(float) && PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
- {
- return pb_decode_double_as_float(stream, (float*)field->pData);
- }
-#endif
-
- if (field->data_size == sizeof(uint32_t))
- {
- return pb_decode_fixed32(stream, field->pData);
- }
-#ifndef PB_WITHOUT_64BIT
- else if (field->data_size == sizeof(uint64_t))
- {
- return pb_decode_fixed64(stream, field->pData);
- }
-#endif
- else
- {
- PB_RETURN_ERROR(stream, "invalid data_size");
- }
-}
-
-static bool checkreturn pb_dec_bytes(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- uint32_t size;
- size_t alloc_size;
- pb_bytes_array_t *dest;
-
- if (!pb_decode_varint32(stream, &size))
- return false;
-
- if (size > PB_SIZE_MAX)
- PB_RETURN_ERROR(stream, "bytes overflow");
-
- alloc_size = PB_BYTES_ARRAY_T_ALLOCSIZE(size);
- if (size > alloc_size)
- PB_RETURN_ERROR(stream, "size too large");
-
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
- {
-#ifndef PB_ENABLE_MALLOC
- PB_RETURN_ERROR(stream, "no malloc support");
-#else
- if (stream->bytes_left < size)
- PB_RETURN_ERROR(stream, "end-of-stream");
-
- if (!allocate_field(stream, field->pData, alloc_size, 1))
- return false;
- dest = *(pb_bytes_array_t**)field->pData;
-#endif
- }
- else
- {
- if (alloc_size > field->data_size)
- PB_RETURN_ERROR(stream, "bytes overflow");
- dest = (pb_bytes_array_t*)field->pData;
- }
-
- dest->size = (pb_size_t)size;
- return pb_read(stream, dest->bytes, (size_t)size);
-}
-
-static bool checkreturn pb_dec_string(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- uint32_t size;
- size_t alloc_size;
- pb_byte_t *dest = (pb_byte_t*)field->pData;
-
- if (!pb_decode_varint32(stream, &size))
- return false;
-
- if (size == (uint32_t)-1)
- PB_RETURN_ERROR(stream, "size too large");
-
- /* Space for null terminator */
- alloc_size = (size_t)(size + 1);
-
- if (alloc_size < size)
- PB_RETURN_ERROR(stream, "size too large");
-
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
- {
-#ifndef PB_ENABLE_MALLOC
- PB_RETURN_ERROR(stream, "no malloc support");
-#else
- if (stream->bytes_left < size)
- PB_RETURN_ERROR(stream, "end-of-stream");
-
- if (!allocate_field(stream, field->pData, alloc_size, 1))
- return false;
- dest = *(pb_byte_t**)field->pData;
-#endif
- }
- else
- {
- if (alloc_size > field->data_size)
- PB_RETURN_ERROR(stream, "string overflow");
- }
-
- dest[size] = 0;
-
- if (!pb_read(stream, dest, (size_t)size))
- return false;
-
-#ifdef PB_VALIDATE_UTF8
- if (!pb_validate_utf8((const char*)dest))
- PB_RETURN_ERROR(stream, "invalid utf8");
-#endif
-
- return true;
-}
-
-static bool checkreturn pb_dec_submessage(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- bool status = true;
- pb_istream_t substream;
-
- if (!pb_make_string_substream(stream, &substream))
- return false;
-
- if (field->submsg_desc == NULL)
- PB_RETURN_ERROR(stream, "invalid field descriptor");
-
- /* New array entries need to be initialized, while required and optional
- * submessages have already been initialized in the top-level pb_decode. */
- if (PB_HTYPE(field->type) == PB_HTYPE_REPEATED ||
- PB_HTYPE(field->type) == PB_HTYPE_ONEOF)
- {
- pb_field_iter_t submsg_iter;
- if (pb_field_iter_begin(&submsg_iter, field->submsg_desc, field->pData))
- {
- if (!pb_message_set_to_defaults(&submsg_iter))
- PB_RETURN_ERROR(stream, "failed to set defaults");
- }
- }
-
- /* Submessages can have a separate message-level callback that is called
- * before decoding the message. Typically it is used to set callback fields
- * inside oneofs. */
- if (PB_LTYPE(field->type) == PB_LTYPE_SUBMSG_W_CB && field->pSize != NULL)
- {
- /* Message callback is stored right before pSize. */
- pb_callback_t *callback = (pb_callback_t*)field->pSize - 1;
- if (callback->funcs.decode)
- {
- status = callback->funcs.decode(&substream, field, &callback->arg);
- }
- }
-
- /* Now decode the submessage contents */
- if (status)
- {
- status = pb_decode_noinit(&substream, field->submsg_desc, field->pData);
- }
-
- if (!pb_close_string_substream(stream, &substream))
- return false;
-
- return status;
-}
-
-static bool checkreturn pb_dec_fixed_length_bytes(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- uint32_t size;
-
- if (!pb_decode_varint32(stream, &size))
- return false;
-
- if (size > PB_SIZE_MAX)
- PB_RETURN_ERROR(stream, "bytes overflow");
-
- if (size == 0)
- {
- /* As a special case, treat empty bytes string as all zeros for fixed_length_bytes. */
- memset(field->pData, 0, (size_t)field->data_size);
- return true;
- }
-
- if (size != field->data_size)
- PB_RETURN_ERROR(stream, "incorrect fixed length bytes size");
-
- return pb_read(stream, (pb_byte_t*)field->pData, (size_t)field->data_size);
-}
-
-#ifdef PB_CONVERT_DOUBLE_FLOAT
-bool pb_decode_double_as_float(pb_istream_t *stream, float *dest)
-{
- uint8_t sign;
- int exponent;
- uint32_t mantissa;
- uint64_t value;
- union { float f; uint32_t i; } out;
-
- if (!pb_decode_fixed64(stream, &value))
- return false;
-
- /* Decompose input value */
- sign = (uint8_t)((value >> 63) & 1);
- exponent = (int)((value >> 52) & 0x7FF) - 1023;
- mantissa = (value >> 28) & 0xFFFFFF; /* Highest 24 bits */
-
- /* Figure if value is in range representable by floats. */
- if (exponent == 1024)
- {
- /* Special value */
- exponent = 128;
- }
- else if (exponent > 127)
- {
- /* Too large, convert to infinity */
- exponent = 128;
- mantissa = 0;
- }
- else if (exponent < -150)
- {
- /* Too small, convert to zero */
- exponent = -127;
- mantissa = 0;
- }
- else if (exponent < -126)
- {
- /* Denormalized */
- mantissa |= 0x1000000;
- mantissa >>= (-126 - exponent);
- exponent = -127;
- }
-
- /* Round off mantissa */
- mantissa = (mantissa + 1) >> 1;
-
- /* Check if mantissa went over 2.0 */
- if (mantissa & 0x800000)
- {
- exponent += 1;
- mantissa &= 0x7FFFFF;
- mantissa >>= 1;
- }
-
- /* Combine fields */
- out.i = mantissa;
- out.i |= (uint32_t)(exponent + 127) << 23;
- out.i |= (uint32_t)sign << 31;
-
- *dest = out.f;
- return true;
-}
-#endif
+++ /dev/null
-/* pb_encode.c -- encode a protobuf using minimal resources
- *
- * 2011 Petteri Aimonen <jpa@kapsi.fi>
- */
-
-#include "pb.h"
-#include "pb_encode.h"
-#include "pb_common.h"
-
-/* Use the GCC warn_unused_result attribute to check that all return values
- * are propagated correctly. On other compilers and gcc before 3.4.0 just
- * ignore the annotation.
- */
-#if !defined(__GNUC__) || ( __GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
- #define checkreturn
-#else
- #define checkreturn __attribute__((warn_unused_result))
-#endif
-
-/**************************************
- * Declarations internal to this file *
- **************************************/
-static bool checkreturn buf_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count);
-static bool checkreturn encode_array(pb_ostream_t *stream, pb_field_iter_t *field);
-static bool checkreturn pb_check_proto3_default_value(const pb_field_iter_t *field);
-static bool checkreturn encode_basic_field(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn encode_callback_field(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn encode_field(pb_ostream_t *stream, pb_field_iter_t *field);
-static bool checkreturn encode_extension_field(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn default_extension_encoder(pb_ostream_t *stream, const pb_extension_t *extension);
-static bool checkreturn pb_encode_varint_32(pb_ostream_t *stream, uint32_t low, uint32_t high);
-static bool checkreturn pb_enc_bool(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_enc_fixed(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_enc_bytes(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_enc_string(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_enc_submessage(pb_ostream_t *stream, const pb_field_iter_t *field);
-static bool checkreturn pb_enc_fixed_length_bytes(pb_ostream_t *stream, const pb_field_iter_t *field);
-
-#ifdef PB_WITHOUT_64BIT
-#define pb_int64_t int32_t
-#define pb_uint64_t uint32_t
-#else
-#define pb_int64_t int64_t
-#define pb_uint64_t uint64_t
-#endif
-
-/*******************************
- * pb_ostream_t implementation *
- *******************************/
-
-static bool checkreturn buf_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count)
-{
- size_t i;
- pb_byte_t *dest = (pb_byte_t*)stream->state;
- stream->state = dest + count;
-
- for (i = 0; i < count; i++)
- dest[i] = buf[i];
-
- return true;
-}
-
-pb_ostream_t pb_ostream_from_buffer(pb_byte_t *buf, size_t bufsize)
-{
- pb_ostream_t stream;
-#ifdef PB_BUFFER_ONLY
- stream.callback = (void*)1; /* Just a marker value */
-#else
- stream.callback = &buf_write;
-#endif
- stream.state = buf;
- stream.max_size = bufsize;
- stream.bytes_written = 0;
-#ifndef PB_NO_ERRMSG
- stream.errmsg = NULL;
-#endif
- return stream;
-}
-
-bool checkreturn pb_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count)
-{
- if (count > 0 && stream->callback != NULL)
- {
- if (stream->bytes_written + count > stream->max_size)
- PB_RETURN_ERROR(stream, "stream full");
-
-#ifdef PB_BUFFER_ONLY
- if (!buf_write(stream, buf, count))
- PB_RETURN_ERROR(stream, "io error");
-#else
- if (!stream->callback(stream, buf, count))
- PB_RETURN_ERROR(stream, "io error");
-#endif
- }
-
- stream->bytes_written += count;
- return true;
-}
-
-/*************************
- * Encode a single field *
- *************************/
-
-/* Read a bool value without causing undefined behavior even if the value
- * is invalid. See issue #434 and
- * https://stackoverflow.com/questions/27661768/weird-results-for-conditional
- */
-static bool safe_read_bool(const void *pSize)
-{
- const char *p = (const char *)pSize;
- size_t i;
- for (i = 0; i < sizeof(bool); i++)
- {
- if (p[i] != 0)
- return true;
- }
- return false;
-}
-
-/* Encode a static array. Handles the size calculations and possible packing. */
-static bool checkreturn encode_array(pb_ostream_t *stream, pb_field_iter_t *field)
-{
- pb_size_t i;
- pb_size_t count;
-#ifndef PB_ENCODE_ARRAYS_UNPACKED
- size_t size;
-#endif
-
- count = *(pb_size_t*)field->pSize;
-
- if (count == 0)
- return true;
-
- if (PB_ATYPE(field->type) != PB_ATYPE_POINTER && count > field->array_size)
- PB_RETURN_ERROR(stream, "array max size exceeded");
-
-#ifndef PB_ENCODE_ARRAYS_UNPACKED
- /* We always pack arrays if the datatype allows it. */
- if (PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
- {
- if (!pb_encode_tag(stream, PB_WT_STRING, field->tag))
- return false;
-
- /* Determine the total size of packed array. */
- if (PB_LTYPE(field->type) == PB_LTYPE_FIXED32)
- {
- size = 4 * (size_t)count;
- }
- else if (PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
- {
- size = 8 * (size_t)count;
- }
- else
- {
- pb_ostream_t sizestream = PB_OSTREAM_SIZING;
- void *pData_orig = field->pData;
- for (i = 0; i < count; i++)
- {
- if (!pb_enc_varint(&sizestream, field))
- PB_RETURN_ERROR(stream, PB_GET_ERROR(&sizestream));
- field->pData = (char*)field->pData + field->data_size;
- }
- field->pData = pData_orig;
- size = sizestream.bytes_written;
- }
-
- if (!pb_encode_varint(stream, (pb_uint64_t)size))
- return false;
-
- if (stream->callback == NULL)
- return pb_write(stream, NULL, size); /* Just sizing.. */
-
- /* Write the data */
- for (i = 0; i < count; i++)
- {
- if (PB_LTYPE(field->type) == PB_LTYPE_FIXED32 || PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
- {
- if (!pb_enc_fixed(stream, field))
- return false;
- }
- else
- {
- if (!pb_enc_varint(stream, field))
- return false;
- }
-
- field->pData = (char*)field->pData + field->data_size;
- }
- }
- else /* Unpacked fields */
-#endif
- {
- for (i = 0; i < count; i++)
- {
- /* Normally the data is stored directly in the array entries, but
- * for pointer-type string and bytes fields, the array entries are
- * actually pointers themselves also. So we have to dereference once
- * more to get to the actual data. */
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER &&
- (PB_LTYPE(field->type) == PB_LTYPE_STRING ||
- PB_LTYPE(field->type) == PB_LTYPE_BYTES))
- {
- bool status;
- void *pData_orig = field->pData;
- field->pData = *(void* const*)field->pData;
-
- if (!field->pData)
- {
- /* Null pointer in array is treated as empty string / bytes */
- status = pb_encode_tag_for_field(stream, field) &&
- pb_encode_varint(stream, 0);
- }
- else
- {
- status = encode_basic_field(stream, field);
- }
-
- field->pData = pData_orig;
-
- if (!status)
- return false;
- }
- else
- {
- if (!encode_basic_field(stream, field))
- return false;
- }
- field->pData = (char*)field->pData + field->data_size;
- }
- }
-
- return true;
-}
-
-/* In proto3, all fields are optional and are only encoded if their value is "non-zero".
- * This function implements the check for the zero value. */
-static bool checkreturn pb_check_proto3_default_value(const pb_field_iter_t *field)
-{
- pb_type_t type = field->type;
-
- if (PB_ATYPE(type) == PB_ATYPE_STATIC)
- {
- if (PB_HTYPE(type) == PB_HTYPE_REQUIRED)
- {
- /* Required proto2 fields inside proto3 submessage, pretty rare case */
- return false;
- }
- else if (PB_HTYPE(type) == PB_HTYPE_REPEATED)
- {
- /* Repeated fields inside proto3 submessage: present if count != 0 */
- return *(const pb_size_t*)field->pSize == 0;
- }
- else if (PB_HTYPE(type) == PB_HTYPE_ONEOF)
- {
- /* Oneof fields */
- return *(const pb_size_t*)field->pSize == 0;
- }
- else if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && field->pSize != NULL)
- {
- /* Proto2 optional fields inside proto3 message, or proto3
- * submessage fields. */
- return safe_read_bool(field->pSize) == false;
- }
-
- /* Rest is proto3 singular fields */
- if (PB_LTYPE(type) == PB_LTYPE_BYTES)
- {
- const pb_bytes_array_t *bytes = (const pb_bytes_array_t*)field->pData;
- return bytes->size == 0;
- }
- else if (PB_LTYPE(type) == PB_LTYPE_STRING)
- {
- return *(const char*)field->pData == '\0';
- }
- else if (PB_LTYPE(type) == PB_LTYPE_FIXED_LENGTH_BYTES)
- {
- /* Fixed length bytes is only empty if its length is fixed
- * as 0. Which would be pretty strange, but we can check
- * it anyway. */
- return field->data_size == 0;
- }
- else if (PB_LTYPE_IS_SUBMSG(type))
- {
- /* Check all fields in the submessage to find if any of them
- * are non-zero. The comparison cannot be done byte-per-byte
- * because the C struct may contain padding bytes that must
- * be skipped. Note that usually proto3 submessages have
- * a separate has_field that is checked earlier in this if.
- */
- pb_field_iter_t iter;
- if (pb_field_iter_begin(&iter, field->submsg_desc, field->pData))
- {
- do
- {
- if (!pb_check_proto3_default_value(&iter))
- {
- return false;
- }
- } while (pb_field_iter_next(&iter));
- }
- return true;
- }
- }
-
- {
- /* Catch-all branch that does byte-per-byte comparison for zero value.
- *
- * This is for all pointer fields, and for static PB_LTYPE_VARINT,
- * UVARINT, SVARINT, FIXED32, FIXED64, EXTENSION fields, and also
- * callback fields. These all have integer or pointer value which
- * can be compared with 0.
- */
- pb_size_t i;
- const char *p = (const char*)field->pData;
- for (i = 0; i < field->data_size; i++)
- {
- if (p[i] != 0)
- {
- return false;
- }
- }
-
- return true;
- }
-}
-
-/* Encode a field with static or pointer allocation, i.e. one whose data
- * is available to the encoder directly. */
-static bool checkreturn encode_basic_field(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- if (!field->pData)
- {
- /* Missing pointer field */
- return true;
- }
-
- if (!pb_encode_tag_for_field(stream, field))
- return false;
-
- switch (PB_LTYPE(field->type))
- {
- case PB_LTYPE_BOOL:
- return pb_enc_bool(stream, field);
-
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- return pb_enc_varint(stream, field);
-
- case PB_LTYPE_FIXED32:
- case PB_LTYPE_FIXED64:
- return pb_enc_fixed(stream, field);
-
- case PB_LTYPE_BYTES:
- return pb_enc_bytes(stream, field);
-
- case PB_LTYPE_STRING:
- return pb_enc_string(stream, field);
-
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- return pb_enc_submessage(stream, field);
-
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- return pb_enc_fixed_length_bytes(stream, field);
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- }
-}
-
-/* Encode a field with callback semantics. This means that a user function is
- * called to provide and encode the actual data. */
-static bool checkreturn encode_callback_field(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- if (field->descriptor->field_callback != NULL)
- {
- if (!field->descriptor->field_callback(NULL, stream, field))
- PB_RETURN_ERROR(stream, "callback error");
- }
- return true;
-}
-
-/* Encode a single field of any callback, pointer or static type. */
-static bool checkreturn encode_field(pb_ostream_t *stream, pb_field_iter_t *field)
-{
- /* Check field presence */
- if (PB_HTYPE(field->type) == PB_HTYPE_ONEOF)
- {
- if (*(const pb_size_t*)field->pSize != field->tag)
- {
- /* Different type oneof field */
- return true;
- }
- }
- else if (PB_HTYPE(field->type) == PB_HTYPE_OPTIONAL)
- {
- if (field->pSize)
- {
- if (safe_read_bool(field->pSize) == false)
- {
- /* Missing optional field */
- return true;
- }
- }
- else if (PB_ATYPE(field->type) == PB_ATYPE_STATIC)
- {
- /* Proto3 singular field */
- if (pb_check_proto3_default_value(field))
- return true;
- }
- }
-
- if (!field->pData)
- {
- if (PB_HTYPE(field->type) == PB_HTYPE_REQUIRED)
- PB_RETURN_ERROR(stream, "missing required field");
-
- /* Pointer field set to NULL */
- return true;
- }
-
- /* Then encode field contents */
- if (PB_ATYPE(field->type) == PB_ATYPE_CALLBACK)
- {
- return encode_callback_field(stream, field);
- }
- else if (PB_HTYPE(field->type) == PB_HTYPE_REPEATED)
- {
- return encode_array(stream, field);
- }
- else
- {
- return encode_basic_field(stream, field);
- }
-}
-
-/* Default handler for extension fields. Expects to have a pb_msgdesc_t
- * pointer in the extension->type->arg field, pointing to a message with
- * only one field in it. */
-static bool checkreturn default_extension_encoder(pb_ostream_t *stream, const pb_extension_t *extension)
-{
- pb_field_iter_t iter;
-
- if (!pb_field_iter_begin_extension_const(&iter, extension))
- PB_RETURN_ERROR(stream, "invalid extension");
-
- return encode_field(stream, &iter);
-}
-
-
-/* Walk through all the registered extensions and give them a chance
- * to encode themselves. */
-static bool checkreturn encode_extension_field(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- const pb_extension_t *extension = *(const pb_extension_t* const *)field->pData;
-
- while (extension)
- {
- bool status;
- if (extension->type->encode)
- status = extension->type->encode(stream, extension);
- else
- status = default_extension_encoder(stream, extension);
-
- if (!status)
- return false;
-
- extension = extension->next;
- }
-
- return true;
-}
-
-/*********************
- * Encode all fields *
- *********************/
-
-bool checkreturn pb_encode(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct)
-{
- pb_field_iter_t iter;
- if (!pb_field_iter_begin_const(&iter, fields, src_struct))
- return true; /* Empty message type */
-
- do {
- if (PB_LTYPE(iter.type) == PB_LTYPE_EXTENSION)
- {
- /* Special case for the extension field placeholder */
- if (!encode_extension_field(stream, &iter))
- return false;
- }
- else
- {
- /* Regular field */
- if (!encode_field(stream, &iter))
- return false;
- }
- } while (pb_field_iter_next(&iter));
-
- return true;
-}
-
-bool checkreturn pb_encode_ex(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct, unsigned int flags)
-{
- if ((flags & PB_ENCODE_DELIMITED) != 0)
- {
- return pb_encode_submessage(stream, fields, src_struct);
- }
- else if ((flags & PB_ENCODE_NULLTERMINATED) != 0)
- {
- const pb_byte_t zero = 0;
-
- if (!pb_encode(stream, fields, src_struct))
- return false;
-
- return pb_write(stream, &zero, 1);
- }
- else
- {
- return pb_encode(stream, fields, src_struct);
- }
-}
-
-bool pb_get_encoded_size(size_t *size, const pb_msgdesc_t *fields, const void *src_struct)
-{
- pb_ostream_t stream = PB_OSTREAM_SIZING;
-
- if (!pb_encode(&stream, fields, src_struct))
- return false;
-
- *size = stream.bytes_written;
- return true;
-}
-
-/********************
- * Helper functions *
- ********************/
-
-/* This function avoids 64-bit shifts as they are quite slow on many platforms. */
-static bool checkreturn pb_encode_varint_32(pb_ostream_t *stream, uint32_t low, uint32_t high)
-{
- size_t i = 0;
- pb_byte_t buffer[10];
- pb_byte_t byte = (pb_byte_t)(low & 0x7F);
- low >>= 7;
-
- while (i < 4 && (low != 0 || high != 0))
- {
- byte |= 0x80;
- buffer[i++] = byte;
- byte = (pb_byte_t)(low & 0x7F);
- low >>= 7;
- }
-
- if (high)
- {
- byte = (pb_byte_t)(byte | ((high & 0x07) << 4));
- high >>= 3;
-
- while (high)
- {
- byte |= 0x80;
- buffer[i++] = byte;
- byte = (pb_byte_t)(high & 0x7F);
- high >>= 7;
- }
- }
-
- buffer[i++] = byte;
-
- return pb_write(stream, buffer, i);
-}
-
-bool checkreturn pb_encode_varint(pb_ostream_t *stream, pb_uint64_t value)
-{
- if (value <= 0x7F)
- {
- /* Fast path: single byte */
- pb_byte_t byte = (pb_byte_t)value;
- return pb_write(stream, &byte, 1);
- }
- else
- {
-#ifdef PB_WITHOUT_64BIT
- return pb_encode_varint_32(stream, value, 0);
-#else
- return pb_encode_varint_32(stream, (uint32_t)value, (uint32_t)(value >> 32));
-#endif
- }
-}
-
-bool checkreturn pb_encode_svarint(pb_ostream_t *stream, pb_int64_t value)
-{
- pb_uint64_t zigzagged;
- if (value < 0)
- zigzagged = ~((pb_uint64_t)value << 1);
- else
- zigzagged = (pb_uint64_t)value << 1;
-
- return pb_encode_varint(stream, zigzagged);
-}
-
-bool checkreturn pb_encode_fixed32(pb_ostream_t *stream, const void *value)
-{
- uint32_t val = *(const uint32_t*)value;
- pb_byte_t bytes[4];
- bytes[0] = (pb_byte_t)(val & 0xFF);
- bytes[1] = (pb_byte_t)((val >> 8) & 0xFF);
- bytes[2] = (pb_byte_t)((val >> 16) & 0xFF);
- bytes[3] = (pb_byte_t)((val >> 24) & 0xFF);
- return pb_write(stream, bytes, 4);
-}
-
-#ifndef PB_WITHOUT_64BIT
-bool checkreturn pb_encode_fixed64(pb_ostream_t *stream, const void *value)
-{
- uint64_t val = *(const uint64_t*)value;
- pb_byte_t bytes[8];
- bytes[0] = (pb_byte_t)(val & 0xFF);
- bytes[1] = (pb_byte_t)((val >> 8) & 0xFF);
- bytes[2] = (pb_byte_t)((val >> 16) & 0xFF);
- bytes[3] = (pb_byte_t)((val >> 24) & 0xFF);
- bytes[4] = (pb_byte_t)((val >> 32) & 0xFF);
- bytes[5] = (pb_byte_t)((val >> 40) & 0xFF);
- bytes[6] = (pb_byte_t)((val >> 48) & 0xFF);
- bytes[7] = (pb_byte_t)((val >> 56) & 0xFF);
- return pb_write(stream, bytes, 8);
-}
-#endif
-
-bool checkreturn pb_encode_tag(pb_ostream_t *stream, pb_wire_type_t wiretype, uint32_t field_number)
-{
- pb_uint64_t tag = ((pb_uint64_t)field_number << 3) | wiretype;
- return pb_encode_varint(stream, tag);
-}
-
-bool pb_encode_tag_for_field ( pb_ostream_t* stream, const pb_field_iter_t* field )
-{
- pb_wire_type_t wiretype;
- switch (PB_LTYPE(field->type))
- {
- case PB_LTYPE_BOOL:
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- wiretype = PB_WT_VARINT;
- break;
-
- case PB_LTYPE_FIXED32:
- wiretype = PB_WT_32BIT;
- break;
-
- case PB_LTYPE_FIXED64:
- wiretype = PB_WT_64BIT;
- break;
-
- case PB_LTYPE_BYTES:
- case PB_LTYPE_STRING:
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- wiretype = PB_WT_STRING;
- break;
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- }
-
- return pb_encode_tag(stream, wiretype, field->tag);
-}
-
-bool checkreturn pb_encode_string(pb_ostream_t *stream, const pb_byte_t *buffer, size_t size)
-{
- if (!pb_encode_varint(stream, (pb_uint64_t)size))
- return false;
-
- return pb_write(stream, buffer, size);
-}
-
-bool checkreturn pb_encode_submessage(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct)
-{
- /* First calculate the message size using a non-writing substream. */
- pb_ostream_t substream = PB_OSTREAM_SIZING;
- size_t size;
- bool status;
-
- if (!pb_encode(&substream, fields, src_struct))
- {
-#ifndef PB_NO_ERRMSG
- stream->errmsg = substream.errmsg;
-#endif
- return false;
- }
-
- size = substream.bytes_written;
-
- if (!pb_encode_varint(stream, (pb_uint64_t)size))
- return false;
-
- if (stream->callback == NULL)
- return pb_write(stream, NULL, size); /* Just sizing */
-
- if (stream->bytes_written + size > stream->max_size)
- PB_RETURN_ERROR(stream, "stream full");
-
- /* Use a substream to verify that a callback doesn't write more than
- * what it did the first time. */
- substream.callback = stream->callback;
- substream.state = stream->state;
- substream.max_size = size;
- substream.bytes_written = 0;
-#ifndef PB_NO_ERRMSG
- substream.errmsg = NULL;
-#endif
-
- status = pb_encode(&substream, fields, src_struct);
-
- stream->bytes_written += substream.bytes_written;
- stream->state = substream.state;
-#ifndef PB_NO_ERRMSG
- stream->errmsg = substream.errmsg;
-#endif
-
- if (substream.bytes_written != size)
- PB_RETURN_ERROR(stream, "submsg size changed");
-
- return status;
-}
-
-/* Field encoders */
-
-static bool checkreturn pb_enc_bool(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- uint32_t value = safe_read_bool(field->pData) ? 1 : 0;
- PB_UNUSED(field);
- return pb_encode_varint(stream, value);
-}
-
-static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- if (PB_LTYPE(field->type) == PB_LTYPE_UVARINT)
- {
- /* Perform unsigned integer extension */
- pb_uint64_t value = 0;
-
- if (field->data_size == sizeof(uint_least8_t))
- value = *(const uint_least8_t*)field->pData;
- else if (field->data_size == sizeof(uint_least16_t))
- value = *(const uint_least16_t*)field->pData;
- else if (field->data_size == sizeof(uint32_t))
- value = *(const uint32_t*)field->pData;
- else if (field->data_size == sizeof(pb_uint64_t))
- value = *(const pb_uint64_t*)field->pData;
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
-
- return pb_encode_varint(stream, value);
- }
- else
- {
- /* Perform signed integer extension */
- pb_int64_t value = 0;
-
- if (field->data_size == sizeof(int_least8_t))
- value = *(const int_least8_t*)field->pData;
- else if (field->data_size == sizeof(int_least16_t))
- value = *(const int_least16_t*)field->pData;
- else if (field->data_size == sizeof(int32_t))
- value = *(const int32_t*)field->pData;
- else if (field->data_size == sizeof(pb_int64_t))
- value = *(const pb_int64_t*)field->pData;
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
-
- if (PB_LTYPE(field->type) == PB_LTYPE_SVARINT)
- return pb_encode_svarint(stream, value);
-#ifdef PB_WITHOUT_64BIT
- else if (value < 0)
- return pb_encode_varint_32(stream, (uint32_t)value, (uint32_t)-1);
-#endif
- else
- return pb_encode_varint(stream, (pb_uint64_t)value);
-
- }
-}
-
-static bool checkreturn pb_enc_fixed(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
-#ifdef PB_CONVERT_DOUBLE_FLOAT
- if (field->data_size == sizeof(float) && PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
- {
- return pb_encode_float_as_double(stream, *(float*)field->pData);
- }
-#endif
-
- if (field->data_size == sizeof(uint32_t))
- {
- return pb_encode_fixed32(stream, field->pData);
- }
-#ifndef PB_WITHOUT_64BIT
- else if (field->data_size == sizeof(uint64_t))
- {
- return pb_encode_fixed64(stream, field->pData);
- }
-#endif
- else
- {
- PB_RETURN_ERROR(stream, "invalid data_size");
- }
-}
-
-static bool checkreturn pb_enc_bytes(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- const pb_bytes_array_t *bytes = NULL;
-
- bytes = (const pb_bytes_array_t*)field->pData;
-
- if (bytes == NULL)
- {
- /* Treat null pointer as an empty bytes field */
- return pb_encode_string(stream, NULL, 0);
- }
-
- if (PB_ATYPE(field->type) == PB_ATYPE_STATIC &&
- PB_BYTES_ARRAY_T_ALLOCSIZE(bytes->size) > field->data_size)
- {
- PB_RETURN_ERROR(stream, "bytes size exceeded");
- }
-
- return pb_encode_string(stream, bytes->bytes, (size_t)bytes->size);
-}
-
-static bool checkreturn pb_enc_string(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- size_t size = 0;
- size_t max_size = (size_t)field->data_size;
- const char *str = (const char*)field->pData;
-
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
- {
- max_size = (size_t)-1;
- }
- else
- {
- /* pb_dec_string() assumes string fields end with a null
- * terminator when the type isn't PB_ATYPE_POINTER, so we
- * shouldn't allow more than max-1 bytes to be written to
- * allow space for the null terminator.
- */
- if (max_size == 0)
- PB_RETURN_ERROR(stream, "zero-length string");
-
- max_size -= 1;
- }
-
-
- if (str == NULL)
- {
- size = 0; /* Treat null pointer as an empty string */
- }
- else
- {
- const char *p = str;
-
- /* strnlen() is not always available, so just use a loop */
- while (size < max_size && *p != '\0')
- {
- size++;
- p++;
- }
-
- if (*p != '\0')
- {
- PB_RETURN_ERROR(stream, "unterminated string");
- }
- }
-
-#ifdef PB_VALIDATE_UTF8
- if (!pb_validate_utf8(str))
- PB_RETURN_ERROR(stream, "invalid utf8");
-#endif
-
- return pb_encode_string(stream, (const pb_byte_t*)str, size);
-}
-
-static bool checkreturn pb_enc_submessage(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- if (field->submsg_desc == NULL)
- PB_RETURN_ERROR(stream, "invalid field descriptor");
-
- if (PB_LTYPE(field->type) == PB_LTYPE_SUBMSG_W_CB && field->pSize != NULL)
- {
- /* Message callback is stored right before pSize. */
- pb_callback_t *callback = (pb_callback_t*)field->pSize - 1;
- if (callback->funcs.encode)
- {
- if (!callback->funcs.encode(stream, field, &callback->arg))
- return false;
- }
- }
-
- return pb_encode_submessage(stream, field->submsg_desc, field->pData);
-}
-
-static bool checkreturn pb_enc_fixed_length_bytes(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- return pb_encode_string(stream, (const pb_byte_t*)field->pData, (size_t)field->data_size);
-}
-
-#ifdef PB_CONVERT_DOUBLE_FLOAT
-bool pb_encode_float_as_double(pb_ostream_t *stream, float value)
-{
- union { float f; uint32_t i; } in;
- uint8_t sign;
- int exponent;
- uint64_t mantissa;
-
- in.f = value;
-
- /* Decompose input value */
- sign = (uint8_t)((in.i >> 31) & 1);
- exponent = (int)((in.i >> 23) & 0xFF) - 127;
- mantissa = in.i & 0x7FFFFF;
-
- if (exponent == 128)
- {
- /* Special value (NaN etc.) */
- exponent = 1024;
- }
- else if (exponent == -127)
- {
- if (!mantissa)
- {
- /* Zero */
- exponent = -1023;
- }
- else
- {
- /* Denormalized */
- mantissa <<= 1;
- while (!(mantissa & 0x800000))
- {
- mantissa <<= 1;
- exponent--;
- }
- mantissa &= 0x7FFFFF;
- }
- }
-
- /* Combine fields */
- mantissa <<= 29;
- mantissa |= (uint64_t)(exponent + 1023) << 52;
- mantissa |= (uint64_t)sign << 63;
-
- return pb_encode_fixed64(stream, &mantissa);
-}
-#endif
+++ /dev/null
-/* USER CODE BEGIN Header */\r
-/**\r
- ******************************************************************************\r
- * File Name : stm32f7xx_hal_msp.c\r
- * Description : This file provides code for the MSP Initialization \r
- * and de-Initialization codes.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2019 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-/* USER CODE END Header */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "main.h"\r
-/* USER CODE BEGIN Includes */\r
-\r
-/* USER CODE END Includes */\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* USER CODE BEGIN TD */\r
-\r
-/* USER CODE END TD */\r
-\r
-/* Private define ------------------------------------------------------------*/\r
-/* USER CODE BEGIN Define */\r
- \r
-/* USER CODE END Define */\r
-\r
-/* Private macro -------------------------------------------------------------*/\r
-/* USER CODE BEGIN Macro */\r
-\r
-/* USER CODE END Macro */\r
-\r
-/* Private variables ---------------------------------------------------------*/\r
-/* USER CODE BEGIN PV */\r
-\r
-/* USER CODE END PV */\r
-\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* USER CODE BEGIN PFP */\r
-\r
-/* USER CODE END PFP */\r
-\r
-/* External functions --------------------------------------------------------*/\r
-/* USER CODE BEGIN ExternalFunctions */\r
-\r
-/* USER CODE END ExternalFunctions */\r
-\r
-/* USER CODE BEGIN 0 */\r
-\r
-/* USER CODE END 0 */\r
- \r
-void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);\r
- /**\r
- * Initializes the Global MSP.\r
- */\r
-void HAL_MspInit(void)\r
-{\r
- /* USER CODE BEGIN MspInit 0 */\r
-\r
- /* USER CODE END MspInit 0 */\r
-\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
- __HAL_RCC_SYSCFG_CLK_ENABLE();\r
-\r
- /* System interrupt init*/\r
-\r
- /* USER CODE BEGIN MspInit 1 */\r
-\r
- /* USER CODE END MspInit 1 */\r
-}\r
-\r
-/**\r
-* @brief TIM_Encoder MSP Initialization\r
-* This function configures the hardware resources used in this example\r
-* @param htim_encoder: TIM_Encoder handle pointer\r
-* @retval None\r
-*/\r
-void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* htim_encoder)\r
-{\r
- GPIO_InitTypeDef GPIO_InitStruct = {0};\r
- if(htim_encoder->Instance==TIM2)\r
- {\r
- /* USER CODE BEGIN TIM2_MspInit 0 */\r
-\r
- /* USER CODE END TIM2_MspInit 0 */\r
- /* Peripheral clock enable */\r
- __HAL_RCC_TIM2_CLK_ENABLE();\r
- \r
- __HAL_RCC_GPIOA_CLK_ENABLE();\r
- __HAL_RCC_GPIOB_CLK_ENABLE();\r
- /**TIM2 GPIO Configuration \r
- PA5 ------> TIM2_CH1\r
- PB3 ------> TIM2_CH2 \r
- */\r
- GPIO_InitStruct.Pin = encoder_sx1_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\r
- GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;\r
- HAL_GPIO_Init(encoder_sx1_GPIO_Port, &GPIO_InitStruct);\r
-\r
- GPIO_InitStruct.Pin = encoder_sx2_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\r
- GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;\r
- HAL_GPIO_Init(encoder_sx2_GPIO_Port, &GPIO_InitStruct);\r
-\r
- /* USER CODE BEGIN TIM2_MspInit 1 */\r
-\r
- /* USER CODE END TIM2_MspInit 1 */\r
- }\r
- else if(htim_encoder->Instance==TIM5)\r
- {\r
- /* USER CODE BEGIN TIM5_MspInit 0 */\r
-\r
- /* USER CODE END TIM5_MspInit 0 */\r
- /* Peripheral clock enable */\r
- __HAL_RCC_TIM5_CLK_ENABLE();\r
- \r
- __HAL_RCC_GPIOA_CLK_ENABLE();\r
- /**TIM5 GPIO Configuration \r
- PA0/WKUP ------> TIM5_CH1\r
- PA1 ------> TIM5_CH2 \r
- */\r
- GPIO_InitStruct.Pin = encoder_dx1_Pin|encoder_dx2_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\r
- GPIO_InitStruct.Alternate = GPIO_AF2_TIM5;\r
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);\r
-\r
- /* USER CODE BEGIN TIM5_MspInit 1 */\r
-\r
- /* USER CODE END TIM5_MspInit 1 */\r
- }\r
-\r
-}\r
-\r
-/**\r
-* @brief TIM_Base MSP Initialization\r
-* This function configures the hardware resources used in this example\r
-* @param htim_base: TIM_Base handle pointer\r
-* @retval None\r
-*/\r
-void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)\r
-{\r
- if(htim_base->Instance==TIM3)\r
- {\r
- /* USER CODE BEGIN TIM3_MspInit 0 */\r
-\r
- /* USER CODE END TIM3_MspInit 0 */\r
- /* Peripheral clock enable */\r
- __HAL_RCC_TIM3_CLK_ENABLE();\r
- /* USER CODE BEGIN TIM3_MspInit 1 */\r
-\r
- /* USER CODE END TIM3_MspInit 1 */\r
- }\r
- else if(htim_base->Instance==TIM4)\r
- {\r
- /* USER CODE BEGIN TIM4_MspInit 0 */\r
-\r
- /* USER CODE END TIM4_MspInit 0 */\r
- /* Peripheral clock enable */\r
- __HAL_RCC_TIM4_CLK_ENABLE();\r
- /* USER CODE BEGIN TIM4_MspInit 1 */\r
-\r
- /* USER CODE END TIM4_MspInit 1 */\r
- }\r
- else if(htim_base->Instance==TIM6)\r
- {\r
- /* USER CODE BEGIN TIM6_MspInit 0 */\r
-\r
- /* USER CODE END TIM6_MspInit 0 */\r
- /* Peripheral clock enable */\r
- __HAL_RCC_TIM6_CLK_ENABLE();\r
- /* USER CODE BEGIN TIM6_MspInit 1 */\r
-\r
- /* USER CODE END TIM6_MspInit 1 */\r
- }\r
-\r
-}\r
-\r
-void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)\r
-{\r
- GPIO_InitTypeDef GPIO_InitStruct = {0};\r
- if(htim->Instance==TIM4)\r
- {\r
- /* USER CODE BEGIN TIM4_MspPostInit 0 */\r
-\r
- /* USER CODE END TIM4_MspPostInit 0 */\r
- \r
- __HAL_RCC_GPIOD_CLK_ENABLE();\r
- /**TIM4 GPIO Configuration \r
- PD14 ------> TIM4_CH3\r
- PD15 ------> TIM4_CH4 \r
- */\r
- GPIO_InitStruct.Pin = pwm2_Pin|pwm1_Pin;\r
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\r
- GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;\r
- HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);\r
-\r
- /* USER CODE BEGIN TIM4_MspPostInit 1 */\r
-\r
- /* USER CODE END TIM4_MspPostInit 1 */\r
- }\r
-\r
-}\r
-/**\r
-* @brief TIM_Encoder MSP De-Initialization\r
-* This function freeze the hardware resources used in this example\r
-* @param htim_encoder: TIM_Encoder handle pointer\r
-* @retval None\r
-*/\r
-void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* htim_encoder)\r
-{\r
- if(htim_encoder->Instance==TIM2)\r
- {\r
- /* USER CODE BEGIN TIM2_MspDeInit 0 */\r
-\r
- /* USER CODE END TIM2_MspDeInit 0 */\r
- /* Peripheral clock disable */\r
- __HAL_RCC_TIM2_CLK_DISABLE();\r
- \r
- /**TIM2 GPIO Configuration \r
- PA5 ------> TIM2_CH1\r
- PB3 ------> TIM2_CH2 \r
- */\r
- HAL_GPIO_DeInit(encoder_sx1_GPIO_Port, encoder_sx1_Pin);\r
-\r
- HAL_GPIO_DeInit(encoder_sx2_GPIO_Port, encoder_sx2_Pin);\r
-\r
- /* USER CODE BEGIN TIM2_MspDeInit 1 */\r
-\r
- /* USER CODE END TIM2_MspDeInit 1 */\r
- }\r
- else if(htim_encoder->Instance==TIM5)\r
- {\r
- /* USER CODE BEGIN TIM5_MspDeInit 0 */\r
-\r
- /* USER CODE END TIM5_MspDeInit 0 */\r
- /* Peripheral clock disable */\r
- __HAL_RCC_TIM5_CLK_DISABLE();\r
- \r
- /**TIM5 GPIO Configuration \r
- PA0/WKUP ------> TIM5_CH1\r
- PA1 ------> TIM5_CH2 \r
- */\r
- HAL_GPIO_DeInit(GPIOA, encoder_dx1_Pin|encoder_dx2_Pin);\r
-\r
- /* USER CODE BEGIN TIM5_MspDeInit 1 */\r
-\r
- /* USER CODE END TIM5_MspDeInit 1 */\r
- }\r
-\r
-}\r
-\r
-/**\r
-* @brief TIM_Base MSP De-Initialization\r
-* This function freeze the hardware resources used in this example\r
-* @param htim_base: TIM_Base handle pointer\r
-* @retval None\r
-*/\r
-void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)\r
-{\r
- if(htim_base->Instance==TIM3)\r
- {\r
- /* USER CODE BEGIN TIM3_MspDeInit 0 */\r
-\r
- /* USER CODE END TIM3_MspDeInit 0 */\r
- /* Peripheral clock disable */\r
- __HAL_RCC_TIM3_CLK_DISABLE();\r
-\r
- /* TIM3 interrupt DeInit */\r
- HAL_NVIC_DisableIRQ(TIM3_IRQn);\r
- /* USER CODE BEGIN TIM3_MspDeInit 1 */\r
-\r
- /* USER CODE END TIM3_MspDeInit 1 */\r
- }\r
- else if(htim_base->Instance==TIM4)\r
- {\r
- /* USER CODE BEGIN TIM4_MspDeInit 0 */\r
-\r
- /* USER CODE END TIM4_MspDeInit 0 */\r
- /* Peripheral clock disable */\r
- __HAL_RCC_TIM4_CLK_DISABLE();\r
- /* USER CODE BEGIN TIM4_MspDeInit 1 */\r
-\r
- /* USER CODE END TIM4_MspDeInit 1 */\r
- }\r
- else if(htim_base->Instance==TIM6)\r
- {\r
- /* USER CODE BEGIN TIM6_MspDeInit 0 */\r
-\r
- /* USER CODE END TIM6_MspDeInit 0 */\r
- /* Peripheral clock disable */\r
- __HAL_RCC_TIM6_CLK_DISABLE();\r
-\r
- /* TIM6 interrupt DeInit */\r
- HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn);\r
- /* USER CODE BEGIN TIM6_MspDeInit 1 */\r
-\r
- /* USER CODE END TIM6_MspDeInit 1 */\r
- }\r
-\r
-}\r
-\r
-/**\r
-* @brief UART MSP Initialization\r
-* This function configures the hardware resources used in this example\r
-* @param huart: UART handle pointer\r
-* @retval None\r
-*/\r
-void HAL_UART_MspInit(UART_HandleTypeDef* huart)\r
-{\r
- GPIO_InitTypeDef GPIO_InitStruct = {0};\r
- if(huart->Instance==USART6)\r
- {\r
- /* USER CODE BEGIN USART6_MspInit 0 */\r
-\r
- /* USER CODE END USART6_MspInit 0 */\r
- /* Peripheral clock enable */\r
- __HAL_RCC_USART6_CLK_ENABLE();\r
- \r
- __HAL_RCC_GPIOC_CLK_ENABLE();\r
- /**USART6 GPIO Configuration \r
- PC6 ------> USART6_TX\r
- PC7 ------> USART6_RX \r
- */\r
- GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;\r
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;\r
- GPIO_InitStruct.Alternate = GPIO_AF8_USART6;\r
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);\r
-\r
- /* USER CODE BEGIN USART6_MspInit 1 */\r
-\r
- /* USER CODE END USART6_MspInit 1 */\r
- }\r
-\r
-}\r
-\r
-/**\r
-* @brief UART MSP De-Initialization\r
-* This function freeze the hardware resources used in this example\r
-* @param huart: UART handle pointer\r
-* @retval None\r
-*/\r
-void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)\r
-{\r
- if(huart->Instance==USART6)\r
- {\r
- /* USER CODE BEGIN USART6_MspDeInit 0 */\r
-\r
- /* USER CODE END USART6_MspDeInit 0 */\r
- /* Peripheral clock disable */\r
- __HAL_RCC_USART6_CLK_DISABLE();\r
- \r
- /**USART6 GPIO Configuration \r
- PC6 ------> USART6_TX\r
- PC7 ------> USART6_RX \r
- */\r
- HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7);\r
-\r
- /* USART6 interrupt DeInit */\r
- HAL_NVIC_DisableIRQ(USART6_IRQn);\r
- /* USER CODE BEGIN USART6_MspDeInit 1 */\r
-\r
- /* USER CODE END USART6_MspDeInit 1 */\r
- }\r
-\r
-}\r
-\r
-/* USER CODE BEGIN 1 */\r
-\r
-/* USER CODE END 1 */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/* USER CODE BEGIN Header */\r
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_it.c\r
- * @brief Interrupt Service Routines.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2019 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-/* USER CODE END Header */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "main.h"\r
-#include "stm32f7xx_it.h"\r
-/* Private includes ----------------------------------------------------------*/\r
-/* USER CODE BEGIN Includes */\r
-/* USER CODE END Includes */\r
- \r
-/* Private typedef -----------------------------------------------------------*/\r
-/* USER CODE BEGIN TD */\r
-\r
-/* USER CODE END TD */\r
-\r
-/* Private define ------------------------------------------------------------*/\r
-/* USER CODE BEGIN PD */\r
- \r
-/* USER CODE END PD */\r
-\r
-/* Private macro -------------------------------------------------------------*/\r
-/* USER CODE BEGIN PM */\r
-\r
-/* USER CODE END PM */\r
-\r
-/* Private variables ---------------------------------------------------------*/\r
-/* USER CODE BEGIN PV */\r
-\r
-/* USER CODE END PV */\r
-\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* USER CODE BEGIN PFP */\r
-\r
-/* USER CODE END PFP */\r
-\r
-/* Private user code ---------------------------------------------------------*/\r
-/* USER CODE BEGIN 0 */\r
-\r
-/* USER CODE END 0 */\r
-\r
-/* External variables --------------------------------------------------------*/\r
-extern TIM_HandleTypeDef htim3;\r
-extern TIM_HandleTypeDef htim6;\r
-extern UART_HandleTypeDef huart6;\r
-/* USER CODE BEGIN EV */\r
-\r
-/* USER CODE END EV */\r
-\r
-/******************************************************************************/\r
-/* Cortex-M7 Processor Interruption and Exception Handlers */ \r
-/******************************************************************************/\r
-/**\r
- * @brief This function handles Non maskable interrupt.\r
- */\r
-void NMI_Handler(void)\r
-{\r
- /* USER CODE BEGIN NonMaskableInt_IRQn 0 */\r
-\r
- /* USER CODE END NonMaskableInt_IRQn 0 */\r
- /* USER CODE BEGIN NonMaskableInt_IRQn 1 */\r
-\r
- /* USER CODE END NonMaskableInt_IRQn 1 */\r
-}\r
-\r
-/**\r
- * @brief This function handles Hard fault interrupt.\r
- */\r
-void HardFault_Handler(void)\r
-{\r
- /* USER CODE BEGIN HardFault_IRQn 0 */\r
-\r
- /* USER CODE END HardFault_IRQn 0 */\r
- while (1)\r
- {\r
- /* USER CODE BEGIN W1_HardFault_IRQn 0 */\r
- /* USER CODE END W1_HardFault_IRQn 0 */\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles Memory management fault.\r
- */\r
-void MemManage_Handler(void)\r
-{\r
- /* USER CODE BEGIN MemoryManagement_IRQn 0 */\r
-\r
- /* USER CODE END MemoryManagement_IRQn 0 */\r
- while (1)\r
- {\r
- /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */\r
- /* USER CODE END W1_MemoryManagement_IRQn 0 */\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles Pre-fetch fault, memory access fault.\r
- */\r
-void BusFault_Handler(void)\r
-{\r
- /* USER CODE BEGIN BusFault_IRQn 0 */\r
-\r
- /* USER CODE END BusFault_IRQn 0 */\r
- while (1)\r
- {\r
- /* USER CODE BEGIN W1_BusFault_IRQn 0 */\r
- /* USER CODE END W1_BusFault_IRQn 0 */\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles Undefined instruction or illegal state.\r
- */\r
-void UsageFault_Handler(void)\r
-{\r
- /* USER CODE BEGIN UsageFault_IRQn 0 */\r
-\r
- /* USER CODE END UsageFault_IRQn 0 */\r
- while (1)\r
- {\r
- /* USER CODE BEGIN W1_UsageFault_IRQn 0 */\r
- /* USER CODE END W1_UsageFault_IRQn 0 */\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles System service call via SWI instruction.\r
- */\r
-void SVC_Handler(void)\r
-{\r
- /* USER CODE BEGIN SVCall_IRQn 0 */\r
-\r
- /* USER CODE END SVCall_IRQn 0 */\r
- /* USER CODE BEGIN SVCall_IRQn 1 */\r
-\r
- /* USER CODE END SVCall_IRQn 1 */\r
-}\r
-\r
-/**\r
- * @brief This function handles Debug monitor.\r
- */\r
-void DebugMon_Handler(void)\r
-{\r
- /* USER CODE BEGIN DebugMonitor_IRQn 0 */\r
-\r
- /* USER CODE END DebugMonitor_IRQn 0 */\r
- /* USER CODE BEGIN DebugMonitor_IRQn 1 */\r
-\r
- /* USER CODE END DebugMonitor_IRQn 1 */\r
-}\r
-\r
-/**\r
- * @brief This function handles Pendable request for system service.\r
- */\r
-void PendSV_Handler(void)\r
-{\r
- /* USER CODE BEGIN PendSV_IRQn 0 */\r
-\r
- /* USER CODE END PendSV_IRQn 0 */\r
- /* USER CODE BEGIN PendSV_IRQn 1 */\r
-\r
- /* USER CODE END PendSV_IRQn 1 */\r
-}\r
-\r
-/**\r
- * @brief This function handles System tick timer.\r
- */\r
-void SysTick_Handler(void)\r
-{\r
- /* USER CODE BEGIN SysTick_IRQn 0 */\r
-\r
- /* USER CODE END SysTick_IRQn 0 */\r
- HAL_IncTick();\r
- /* USER CODE BEGIN SysTick_IRQn 1 */\r
-\r
- /* USER CODE END SysTick_IRQn 1 */\r
-}\r
-\r
-/******************************************************************************/\r
-/* STM32F7xx Peripheral Interrupt Handlers */\r
-/* Add here the Interrupt Handlers for the used peripherals. */\r
-/* For the available peripheral interrupt handler names, */\r
-/* please refer to the startup file (startup_stm32f7xx.s). */\r
-/******************************************************************************/\r
-\r
-/**\r
- * @brief This function handles TIM3 global interrupt.\r
- */\r
-void TIM3_IRQHandler(void)\r
-{\r
- /* USER CODE BEGIN TIM3_IRQn 0 */\r
-\r
- /* USER CODE END TIM3_IRQn 0 */\r
- HAL_TIM_IRQHandler(&htim3);\r
- /* USER CODE BEGIN TIM3_IRQn 1 */\r
-\r
- /* USER CODE END TIM3_IRQn 1 */\r
-}\r
-\r
-/**\r
- * @brief This function handles EXTI line[15:10] interrupts.\r
- */\r
-void EXTI15_10_IRQHandler(void)\r
-{\r
- /* USER CODE BEGIN EXTI15_10_IRQn 0 */\r
-\r
- /* USER CODE END EXTI15_10_IRQn 0 */\r
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);\r
- /* USER CODE BEGIN EXTI15_10_IRQn 1 */\r
-\r
- /* USER CODE END EXTI15_10_IRQn 1 */\r
-}\r
-\r
-/**\r
- * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.\r
- */\r
-void TIM6_DAC_IRQHandler(void)\r
-{\r
- /* USER CODE BEGIN TIM6_DAC_IRQn 0 */\r
-\r
- /* USER CODE END TIM6_DAC_IRQn 0 */\r
- HAL_TIM_IRQHandler(&htim6);\r
- /* USER CODE BEGIN TIM6_DAC_IRQn 1 */\r
-\r
- /* USER CODE END TIM6_DAC_IRQn 1 */\r
-}\r
-\r
-/**\r
- * @brief This function handles USART6 global interrupt.\r
- */\r
-void USART6_IRQHandler(void)\r
-{\r
- /* USER CODE BEGIN USART6_IRQn 0 */\r
-\r
- /* USER CODE END USART6_IRQn 0 */\r
- HAL_UART_IRQHandler(&huart6);\r
- /* USER CODE BEGIN USART6_IRQn 1 */\r
-\r
- /* USER CODE END USART6_IRQn 1 */\r
-}\r
-\r
-/* USER CODE BEGIN 1 */\r
-\r
-/* USER CODE END 1 */\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**
-*****************************************************************************
-**
-** File : syscalls.c
-**
-** Author : Auto-generated by STM32CubeIDE
-**
-** Abstract : STM32CubeIDE Minimal System calls file
-**
-** For more information about which c-functions
-** need which of these lowlevel functions
-** please consult the Newlib libc-manual
-**
-** Environment : STM32CubeIDE MCU
-**
-** Distribution: The file is distributed as is, without any warranty
-** of any kind.
-**
-*****************************************************************************
-**
-** <h2><center>© COPYRIGHT(c) 2018 STMicroelectronics</center></h2>
-**
-** Redistribution and use in source and binary forms, with or without modification,
-** are permitted provided that the following conditions are met:
-** 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.
-** 3. Neither the name of STMicroelectronics nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**
-*****************************************************************************
-*/
-
-/* Includes */
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <stdio.h>
-#include <signal.h>
-#include <time.h>
-#include <sys/time.h>
-#include <sys/times.h>
-
-
-/* Variables */
-//#undef errno
-extern int errno;
-extern int __io_putchar(int ch) __attribute__((weak));
-extern int __io_getchar(void) __attribute__((weak));
-
-register char * stack_ptr asm("sp");
-
-char *__env[1] = { 0 };
-char **environ = __env;
-
-
-/* Functions */
-void initialise_monitor_handles()
-{
-}
-
-int _getpid(void)
-{
- return 1;
-}
-
-int _kill(int pid, int sig)
-{
- errno = EINVAL;
- return -1;
-}
-
-void _exit (int status)
-{
- _kill(status, -1);
- while (1) {} /* Make sure we hang here */
-}
-
-__attribute__((weak)) int _read(int file, char *ptr, int len)
-{
- int DataIdx;
-
- for (DataIdx = 0; DataIdx < len; DataIdx++)
- {
- *ptr++ = __io_getchar();
- }
-
-return len;
-}
-
-__attribute__((weak)) int _write(int file, char *ptr, int len)
-{
- int DataIdx;
-
- for (DataIdx = 0; DataIdx < len; DataIdx++)
- {
- __io_putchar(*ptr++);
- }
- return len;
-}
-
-int _close(int file)
-{
- return -1;
-}
-
-
-int _fstat(int file, struct stat *st)
-{
- st->st_mode = S_IFCHR;
- return 0;
-}
-
-int _isatty(int file)
-{
- return 1;
-}
-
-int _lseek(int file, int ptr, int dir)
-{
- return 0;
-}
-
-int _open(char *path, int flags, ...)
-{
- /* Pretend like we always fail */
- return -1;
-}
-
-int _wait(int *status)
-{
- errno = ECHILD;
- return -1;
-}
-
-int _unlink(char *name)
-{
- errno = ENOENT;
- return -1;
-}
-
-int _times(struct tms *buf)
-{
- return -1;
-}
-
-int _stat(char *file, struct stat *st)
-{
- st->st_mode = S_IFCHR;
- return 0;
-}
-
-int _link(char *old, char *new)
-{
- errno = EMLINK;
- return -1;
-}
-
-int _fork(void)
-{
- errno = EAGAIN;
- return -1;
-}
-
-int _execve(char *name, char **argv, char **env)
-{
- errno = ENOMEM;
- return -1;
-}
+++ /dev/null
-/**
-*****************************************************************************
-**
-** File : sysmem.c
-**
-** Author : Auto-generated by STM32CubeIDE
-**
-** Abstract : STM32CubeIDE Minimal System Memory calls file
-**
-** For more information about which c-functions
-** need which of these lowlevel functions
-** please consult the Newlib libc-manual
-**
-** Environment : STM32CubeIDE MCU
-**
-** Distribution: The file is distributed as is, without any warranty
-** of any kind.
-**
-*****************************************************************************
-**
-** <h2><center>© COPYRIGHT(c) 2018 STMicroelectronics</center></h2>
-**
-** Redistribution and use in source and binary forms, with or without modification,
-** are permitted provided that the following conditions are met:
-** 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.
-** 3. Neither the name of STMicroelectronics nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**
-*****************************************************************************
-*/
-
-/* Includes */
-#include <errno.h>
-#include <stdio.h>
-
-/* Variables */
-extern int errno;
-register char * stack_ptr asm("sp");
-
-/* Functions */
-
-/**
- _sbrk
- Increase program data space. Malloc and related functions depend on this
-**/
-caddr_t _sbrk(int incr)
-{
- extern char end asm("end");
- static char *heap_end;
- char *prev_heap_end;
-
- if (heap_end == 0)
- heap_end = &end;
-
- prev_heap_end = heap_end;
- if (heap_end + incr > stack_ptr)
- {
- errno = ENOMEM;
- return (caddr_t) -1;
- }
-
- heap_end += incr;
-
- return (caddr_t) prev_heap_end;
-}
-
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file system_stm32f7xx.c\r
- * @author MCD Application Team\r
- * @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.\r
- *\r
- * This file provides two functions and one global variable to be called from \r
- * user application:\r
- * - SystemInit(): This function is called at startup just after reset and \r
- * before branch to main program. This call is made inside\r
- * the "startup_stm32f7xx.s" file.\r
- *\r
- * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used\r
- * by the user application to setup the SysTick \r
- * timer or configure other parameters.\r
- * \r
- * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must\r
- * be called whenever the core clock is changed\r
- * during program execution.\r
- *\r
- *\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>\r
- *\r
- * Redistribution and use in source and binary forms, with or without modification,\r
- * are permitted provided that the following conditions are met:\r
- * 1. Redistributions of source code must retain the above copyright notice,\r
- * this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright notice,\r
- * this list of conditions and the following disclaimer in the documentation\r
- * and/or other materials provided with the distribution.\r
- * 3. Neither the name of STMicroelectronics nor the names of its contributors\r
- * may be used to endorse or promote products derived from this software\r
- * without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/** @addtogroup CMSIS\r
- * @{\r
- */\r
-\r
-/** @addtogroup stm32f7xx_system\r
- * @{\r
- */ \r
- \r
-/** @addtogroup STM32F7xx_System_Private_Includes\r
- * @{\r
- */\r
-\r
-#include "stm32f7xx.h"\r
-\r
-#if !defined (HSE_VALUE) \r
- #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */\r
-#endif /* HSE_VALUE */\r
-\r
-#if !defined (HSI_VALUE)\r
- #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/\r
-#endif /* HSI_VALUE */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Private_TypesDefinitions\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Private_Defines\r
- * @{\r
- */\r
-\r
-/************************* Miscellaneous Configuration ************************/\r
-\r
-/*!< Uncomment the following line if you need to relocate your vector Table in\r
- Internal SRAM. */\r
-/* #define VECT_TAB_SRAM */\r
-#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. \r
- This value must be a multiple of 0x200. */\r
-/******************************************************************************/\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Private_Macros\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Private_Variables\r
- * @{\r
- */\r
-\r
- /* This variable is updated in three ways:\r
- 1) by calling CMSIS function SystemCoreClockUpdate()\r
- 2) by calling HAL API function HAL_RCC_GetHCLKFreq()\r
- 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency \r
- Note: If you use this function to configure the system clock; then there\r
- is no need to call the 2 first functions listed above, since SystemCoreClock\r
- variable is updated automatically.\r
- */\r
- uint32_t SystemCoreClock = 16000000;\r
- const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};\r
- const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Private_Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Setup the microcontroller system\r
- * Initialize the Embedded Flash Interface, the PLL and update the \r
- * SystemFrequency variable.\r
- * @param None\r
- * @retval None\r
- */\r
-void SystemInit(void)\r
-{\r
- /* FPU settings ------------------------------------------------------------*/\r
- #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\r
- SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */\r
- #endif\r
- /* Reset the RCC clock configuration to the default reset state ------------*/\r
- /* Set HSION bit */\r
- RCC->CR |= (uint32_t)0x00000001;\r
-\r
- /* Reset CFGR register */\r
- RCC->CFGR = 0x00000000;\r
-\r
- /* Reset HSEON, CSSON and PLLON bits */\r
- RCC->CR &= (uint32_t)0xFEF6FFFF;\r
-\r
- /* Reset PLLCFGR register */\r
- RCC->PLLCFGR = 0x24003010;\r
-\r
- /* Reset HSEBYP bit */\r
- RCC->CR &= (uint32_t)0xFFFBFFFF;\r
-\r
- /* Disable all interrupts */\r
- RCC->CIR = 0x00000000;\r
-\r
- /* Configure the Vector Table location add offset address ------------------*/\r
-#ifdef VECT_TAB_SRAM\r
- SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */\r
-#else\r
- SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */\r
-#endif\r
-}\r
-\r
-/**\r
- * @brief Update SystemCoreClock variable according to Clock Register Values.\r
- * The SystemCoreClock variable contains the core clock (HCLK), it can\r
- * be used by the user application to setup the SysTick timer or configure\r
- * other parameters.\r
- * \r
- * @note Each time the core clock (HCLK) changes, this function must be called\r
- * to update SystemCoreClock variable value. Otherwise, any configuration\r
- * based on this variable will be incorrect. \r
- * \r
- * @note - The system frequency computed by this function is not the real \r
- * frequency in the chip. It is calculated based on the predefined \r
- * constant and the selected clock source:\r
- * \r
- * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)\r
- * \r
- * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)\r
- * \r
- * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) \r
- * or HSI_VALUE(*) multiplied/divided by the PLL factors.\r
- * \r
- * (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value\r
- * 16 MHz) but the real value may vary depending on the variations\r
- * in voltage and temperature. \r
- * \r
- * (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value\r
- * 25 MHz), user has to ensure that HSE_VALUE is same as the real\r
- * frequency of the crystal used. Otherwise, this function may\r
- * have wrong result.\r
- * \r
- * - The result of this function could be not correct when using fractional\r
- * value for HSE crystal.\r
- * \r
- * @param None\r
- * @retval None\r
- */\r
-void SystemCoreClockUpdate(void)\r
-{\r
- uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;\r
- \r
- /* Get SYSCLK source -------------------------------------------------------*/\r
- tmp = RCC->CFGR & RCC_CFGR_SWS;\r
-\r
- switch (tmp)\r
- {\r
- case 0x00: /* HSI used as system clock source */\r
- SystemCoreClock = HSI_VALUE;\r
- break;\r
- case 0x04: /* HSE used as system clock source */\r
- SystemCoreClock = HSE_VALUE;\r
- break;\r
- case 0x08: /* PLL used as system clock source */\r
-\r
- /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N\r
- SYSCLK = PLL_VCO / PLL_P\r
- */ \r
- pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;\r
- pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;\r
- \r
- if (pllsource != 0)\r
- {\r
- /* HSE used as PLL clock source */\r
- pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);\r
- }\r
- else\r
- {\r
- /* HSI used as PLL clock source */\r
- pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); \r
- }\r
-\r
- pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;\r
- SystemCoreClock = pllvco/pllp;\r
- break;\r
- default:\r
- SystemCoreClock = HSI_VALUE;\r
- break;\r
- }\r
- /* Compute HCLK frequency --------------------------------------------------*/\r
- /* Get HCLK prescaler */\r
- tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];\r
- /* HCLK frequency */\r
- SystemCoreClock >>= tmp;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/**\r
- * @}\r
- */ \r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/* Automatically generated nanopb constant definitions */
-/* Generated by 0.4.1-dev */
-
-#include "velocities.pb.h"
-#if PB_PROTO_HEADER_VERSION != 40
-#error Regenerate this file with the current version of nanopb generator.
-#endif
-
-PB_BIND(Velocities, Velocities, AUTO)
-
-
-
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file startup_stm32f767xx.s\r
- * @author MCD Application Team\r
- * @brief STM32F767xx Devices vector table for GCC based toolchain. \r
- * This module performs:\r
- * - Set the initial SP\r
- * - Set the initial PC == Reset_Handler,\r
- * - Set the vector table entries with the exceptions ISR address\r
- * - Branches to main in the C library (which eventually\r
- * calls main()).\r
- * After Reset the Cortex-M7 processor is in Thread mode,\r
- * priority is Privileged, and the Stack is set to Main.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>\r
- *\r
- * Redistribution and use in source and binary forms, with or without modification,\r
- * are permitted provided that the following conditions are met:\r
- * 1. Redistributions of source code must retain the above copyright notice,\r
- * this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright notice,\r
- * this list of conditions and the following disclaimer in the documentation\r
- * and/or other materials provided with the distribution.\r
- * 3. Neither the name of STMicroelectronics nor the names of its contributors\r
- * may be used to endorse or promote products derived from this software\r
- * without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- ******************************************************************************\r
- */\r
- \r
- .syntax unified\r
- .cpu cortex-m7\r
- .fpu softvfp\r
- .thumb\r
-\r
-.global g_pfnVectors\r
-.global Default_Handler\r
-\r
-/* start address for the initialization values of the .data section. \r
-defined in linker script */\r
-.word _sidata\r
-/* start address for the .data section. defined in linker script */ \r
-.word _sdata\r
-/* end address for the .data section. defined in linker script */\r
-.word _edata\r
-/* start address for the .bss section. defined in linker script */\r
-.word _sbss\r
-/* end address for the .bss section. defined in linker script */\r
-.word _ebss\r
-/* stack used for SystemInit_ExtMemCtl; always internal RAM used */\r
-\r
-/**\r
- * @brief This is the code that gets called when the processor first\r
- * starts execution following a reset event. Only the absolutely\r
- * necessary set is performed, after which the application\r
- * supplied main() routine is called. \r
- * @param None\r
- * @retval : None\r
-*/\r
-\r
- .section .text.Reset_Handler\r
- .weak Reset_Handler\r
- .type Reset_Handler, %function\r
-Reset_Handler: \r
- ldr sp, =_estack /* set stack pointer */\r
-\r
-/* Copy the data segment initializers from flash to SRAM */ \r
- movs r1, #0\r
- b LoopCopyDataInit\r
-\r
-CopyDataInit:\r
- ldr r3, =_sidata\r
- ldr r3, [r3, r1]\r
- str r3, [r0, r1]\r
- adds r1, r1, #4\r
- \r
-LoopCopyDataInit:\r
- ldr r0, =_sdata\r
- ldr r3, =_edata\r
- adds r2, r0, r1\r
- cmp r2, r3\r
- bcc CopyDataInit\r
- ldr r2, =_sbss\r
- b LoopFillZerobss\r
-/* Zero fill the bss segment. */ \r
-FillZerobss:\r
- movs r3, #0\r
- str r3, [r2], #4\r
- \r
-LoopFillZerobss:\r
- ldr r3, = _ebss\r
- cmp r2, r3\r
- bcc FillZerobss\r
-\r
-/* Call the clock system initialization function.*/\r
- bl SystemInit \r
-/* Call static constructors */\r
- bl __libc_init_array\r
-/* Call the application's entry point.*/\r
- bl main\r
- bx lr \r
-.size Reset_Handler, .-Reset_Handler\r
-\r
-/**\r
- * @brief This is the code that gets called when the processor receives an \r
- * unexpected interrupt. This simply enters an infinite loop, preserving\r
- * the system state for examination by a debugger.\r
- * @param None \r
- * @retval None \r
-*/\r
- .section .text.Default_Handler,"ax",%progbits\r
-Default_Handler:\r
-Infinite_Loop:\r
- b Infinite_Loop\r
- .size Default_Handler, .-Default_Handler\r
-/******************************************************************************\r
-*\r
-* The minimal vector table for a Cortex M7. Note that the proper constructs\r
-* must be placed on this to ensure that it ends up at physical address\r
-* 0x0000.0000.\r
-* \r
-*******************************************************************************/\r
- .section .isr_vector,"a",%progbits\r
- .type g_pfnVectors, %object\r
- .size g_pfnVectors, .-g_pfnVectors\r
- \r
- \r
-g_pfnVectors:\r
- .word _estack\r
- .word Reset_Handler\r
-\r
- .word NMI_Handler\r
- .word HardFault_Handler\r
- .word MemManage_Handler\r
- .word BusFault_Handler\r
- .word UsageFault_Handler\r
- .word 0\r
- .word 0\r
- .word 0\r
- .word 0\r
- .word SVC_Handler\r
- .word DebugMon_Handler\r
- .word 0\r
- .word PendSV_Handler\r
- .word SysTick_Handler\r
- \r
- /* External Interrupts */\r
- .word WWDG_IRQHandler /* Window WatchDog */\r
- .word PVD_IRQHandler /* PVD through EXTI Line detection */\r
- .word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */\r
- .word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */\r
- .word FLASH_IRQHandler /* FLASH */\r
- .word RCC_IRQHandler /* RCC */\r
- .word EXTI0_IRQHandler /* EXTI Line0 */\r
- .word EXTI1_IRQHandler /* EXTI Line1 */\r
- .word EXTI2_IRQHandler /* EXTI Line2 */\r
- .word EXTI3_IRQHandler /* EXTI Line3 */\r
- .word EXTI4_IRQHandler /* EXTI Line4 */\r
- .word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */\r
- .word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */\r
- .word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */\r
- .word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */\r
- .word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */\r
- .word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */\r
- .word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */\r
- .word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */\r
- .word CAN1_TX_IRQHandler /* CAN1 TX */\r
- .word CAN1_RX0_IRQHandler /* CAN1 RX0 */\r
- .word CAN1_RX1_IRQHandler /* CAN1 RX1 */\r
- .word CAN1_SCE_IRQHandler /* CAN1 SCE */\r
- .word EXTI9_5_IRQHandler /* External Line[9:5]s */\r
- .word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */\r
- .word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */\r
- .word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */\r
- .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */\r
- .word TIM2_IRQHandler /* TIM2 */\r
- .word TIM3_IRQHandler /* TIM3 */\r
- .word TIM4_IRQHandler /* TIM4 */\r
- .word I2C1_EV_IRQHandler /* I2C1 Event */\r
- .word I2C1_ER_IRQHandler /* I2C1 Error */\r
- .word I2C2_EV_IRQHandler /* I2C2 Event */\r
- .word I2C2_ER_IRQHandler /* I2C2 Error */\r
- .word SPI1_IRQHandler /* SPI1 */\r
- .word SPI2_IRQHandler /* SPI2 */\r
- .word USART1_IRQHandler /* USART1 */\r
- .word USART2_IRQHandler /* USART2 */\r
- .word USART3_IRQHandler /* USART3 */\r
- .word EXTI15_10_IRQHandler /* External Line[15:10]s */\r
- .word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */\r
- .word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */\r
- .word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */\r
- .word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */\r
- .word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */\r
- .word TIM8_CC_IRQHandler /* TIM8 Capture Compare */\r
- .word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */\r
- .word FMC_IRQHandler /* FMC */\r
- .word SDMMC1_IRQHandler /* SDMMC1 */\r
- .word TIM5_IRQHandler /* TIM5 */\r
- .word SPI3_IRQHandler /* SPI3 */\r
- .word UART4_IRQHandler /* UART4 */\r
- .word UART5_IRQHandler /* UART5 */\r
- .word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */\r
- .word TIM7_IRQHandler /* TIM7 */\r
- .word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */\r
- .word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */\r
- .word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */\r
- .word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */\r
- .word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */\r
- .word ETH_IRQHandler /* Ethernet */\r
- .word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */\r
- .word CAN2_TX_IRQHandler /* CAN2 TX */\r
- .word CAN2_RX0_IRQHandler /* CAN2 RX0 */\r
- .word CAN2_RX1_IRQHandler /* CAN2 RX1 */\r
- .word CAN2_SCE_IRQHandler /* CAN2 SCE */\r
- .word OTG_FS_IRQHandler /* USB OTG FS */\r
- .word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */\r
- .word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */\r
- .word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */\r
- .word USART6_IRQHandler /* USART6 */\r
- .word I2C3_EV_IRQHandler /* I2C3 event */\r
- .word I2C3_ER_IRQHandler /* I2C3 error */\r
- .word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */\r
- .word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */\r
- .word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */\r
- .word OTG_HS_IRQHandler /* USB OTG HS */\r
- .word DCMI_IRQHandler /* DCMI */\r
- .word 0 /* Reserved */\r
- .word RNG_IRQHandler /* RNG */\r
- .word FPU_IRQHandler /* FPU */\r
- .word UART7_IRQHandler /* UART7 */\r
- .word UART8_IRQHandler /* UART8 */\r
- .word SPI4_IRQHandler /* SPI4 */\r
- .word SPI5_IRQHandler /* SPI5 */\r
- .word SPI6_IRQHandler /* SPI6 */\r
- .word SAI1_IRQHandler /* SAI1 */\r
- .word LTDC_IRQHandler /* LTDC */\r
- .word LTDC_ER_IRQHandler /* LTDC error */\r
- .word DMA2D_IRQHandler /* DMA2D */\r
- .word SAI2_IRQHandler /* SAI2 */\r
- .word QUADSPI_IRQHandler /* QUADSPI */\r
- .word LPTIM1_IRQHandler /* LPTIM1 */\r
- .word CEC_IRQHandler /* HDMI_CEC */\r
- .word I2C4_EV_IRQHandler /* I2C4 Event */\r
- .word I2C4_ER_IRQHandler /* I2C4 Error */\r
- .word SPDIF_RX_IRQHandler /* SPDIF_RX */\r
- .word 0 /* Reserved */\r
- .word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter 0 global Interrupt */\r
- .word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter 1 global Interrupt */\r
- .word DFSDM1_FLT2_IRQHandler /* DFSDM1 Filter 2 global Interrupt */\r
- .word DFSDM1_FLT3_IRQHandler /* DFSDM1 Filter 3 global Interrupt */\r
- .word SDMMC2_IRQHandler /* SDMMC2 */\r
- .word CAN3_TX_IRQHandler /* CAN3 TX */\r
- .word CAN3_RX0_IRQHandler /* CAN3 RX0 */\r
- .word CAN3_RX1_IRQHandler /* CAN3 RX1 */\r
- .word CAN3_SCE_IRQHandler /* CAN3 SCE */\r
- .word JPEG_IRQHandler /* JPEG */\r
- .word MDIOS_IRQHandler /* MDIOS */\r
- \r
-/*******************************************************************************\r
-*\r
-* Provide weak aliases for each Exception handler to the Default_Handler. \r
-* As they are weak aliases, any function with the same name will override \r
-* this definition.\r
-* \r
-*******************************************************************************/\r
- .weak NMI_Handler\r
- .thumb_set NMI_Handler,Default_Handler\r
- \r
- .weak HardFault_Handler\r
- .thumb_set HardFault_Handler,Default_Handler\r
- \r
- .weak MemManage_Handler\r
- .thumb_set MemManage_Handler,Default_Handler\r
- \r
- .weak BusFault_Handler\r
- .thumb_set BusFault_Handler,Default_Handler\r
-\r
- .weak UsageFault_Handler\r
- .thumb_set UsageFault_Handler,Default_Handler\r
-\r
- .weak SVC_Handler\r
- .thumb_set SVC_Handler,Default_Handler\r
-\r
- .weak DebugMon_Handler\r
- .thumb_set DebugMon_Handler,Default_Handler\r
-\r
- .weak PendSV_Handler\r
- .thumb_set PendSV_Handler,Default_Handler\r
-\r
- .weak SysTick_Handler\r
- .thumb_set SysTick_Handler,Default_Handler \r
- \r
- .weak WWDG_IRQHandler \r
- .thumb_set WWDG_IRQHandler,Default_Handler \r
- \r
- .weak PVD_IRQHandler \r
- .thumb_set PVD_IRQHandler,Default_Handler\r
- \r
- .weak TAMP_STAMP_IRQHandler \r
- .thumb_set TAMP_STAMP_IRQHandler,Default_Handler\r
- \r
- .weak RTC_WKUP_IRQHandler \r
- .thumb_set RTC_WKUP_IRQHandler,Default_Handler\r
- \r
- .weak FLASH_IRQHandler \r
- .thumb_set FLASH_IRQHandler,Default_Handler\r
- \r
- .weak RCC_IRQHandler \r
- .thumb_set RCC_IRQHandler,Default_Handler\r
- \r
- .weak EXTI0_IRQHandler \r
- .thumb_set EXTI0_IRQHandler,Default_Handler\r
- \r
- .weak EXTI1_IRQHandler \r
- .thumb_set EXTI1_IRQHandler,Default_Handler\r
- \r
- .weak EXTI2_IRQHandler \r
- .thumb_set EXTI2_IRQHandler,Default_Handler \r
- \r
- .weak EXTI3_IRQHandler \r
- .thumb_set EXTI3_IRQHandler,Default_Handler\r
- \r
- .weak EXTI4_IRQHandler \r
- .thumb_set EXTI4_IRQHandler,Default_Handler\r
- \r
- .weak DMA1_Stream0_IRQHandler \r
- .thumb_set DMA1_Stream0_IRQHandler,Default_Handler\r
- \r
- .weak DMA1_Stream1_IRQHandler \r
- .thumb_set DMA1_Stream1_IRQHandler,Default_Handler\r
- \r
- .weak DMA1_Stream2_IRQHandler \r
- .thumb_set DMA1_Stream2_IRQHandler,Default_Handler\r
- \r
- .weak DMA1_Stream3_IRQHandler \r
- .thumb_set DMA1_Stream3_IRQHandler,Default_Handler \r
- \r
- .weak DMA1_Stream4_IRQHandler \r
- .thumb_set DMA1_Stream4_IRQHandler,Default_Handler\r
- \r
- .weak DMA1_Stream5_IRQHandler \r
- .thumb_set DMA1_Stream5_IRQHandler,Default_Handler\r
- \r
- .weak DMA1_Stream6_IRQHandler \r
- .thumb_set DMA1_Stream6_IRQHandler,Default_Handler\r
- \r
- .weak ADC_IRQHandler \r
- .thumb_set ADC_IRQHandler,Default_Handler\r
- \r
- .weak CAN1_TX_IRQHandler \r
- .thumb_set CAN1_TX_IRQHandler,Default_Handler\r
- \r
- .weak CAN1_RX0_IRQHandler \r
- .thumb_set CAN1_RX0_IRQHandler,Default_Handler\r
- \r
- .weak CAN1_RX1_IRQHandler \r
- .thumb_set CAN1_RX1_IRQHandler,Default_Handler\r
- \r
- .weak CAN1_SCE_IRQHandler \r
- .thumb_set CAN1_SCE_IRQHandler,Default_Handler\r
- \r
- .weak EXTI9_5_IRQHandler \r
- .thumb_set EXTI9_5_IRQHandler,Default_Handler\r
- \r
- .weak TIM1_BRK_TIM9_IRQHandler \r
- .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler\r
- \r
- .weak TIM1_UP_TIM10_IRQHandler \r
- .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler\r
-\r
- .weak TIM1_TRG_COM_TIM11_IRQHandler \r
- .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler\r
- \r
- .weak TIM1_CC_IRQHandler \r
- .thumb_set TIM1_CC_IRQHandler,Default_Handler\r
- \r
- .weak TIM2_IRQHandler \r
- .thumb_set TIM2_IRQHandler,Default_Handler\r
- \r
- .weak TIM3_IRQHandler \r
- .thumb_set TIM3_IRQHandler,Default_Handler\r
- \r
- .weak TIM4_IRQHandler \r
- .thumb_set TIM4_IRQHandler,Default_Handler\r
- \r
- .weak I2C1_EV_IRQHandler \r
- .thumb_set I2C1_EV_IRQHandler,Default_Handler\r
- \r
- .weak I2C1_ER_IRQHandler \r
- .thumb_set I2C1_ER_IRQHandler,Default_Handler\r
- \r
- .weak I2C2_EV_IRQHandler \r
- .thumb_set I2C2_EV_IRQHandler,Default_Handler\r
- \r
- .weak I2C2_ER_IRQHandler \r
- .thumb_set I2C2_ER_IRQHandler,Default_Handler\r
- \r
- .weak SPI1_IRQHandler \r
- .thumb_set SPI1_IRQHandler,Default_Handler\r
- \r
- .weak SPI2_IRQHandler \r
- .thumb_set SPI2_IRQHandler,Default_Handler\r
- \r
- .weak USART1_IRQHandler \r
- .thumb_set USART1_IRQHandler,Default_Handler\r
- \r
- .weak USART2_IRQHandler \r
- .thumb_set USART2_IRQHandler,Default_Handler\r
- \r
- .weak USART3_IRQHandler \r
- .thumb_set USART3_IRQHandler,Default_Handler\r
- \r
- .weak EXTI15_10_IRQHandler \r
- .thumb_set EXTI15_10_IRQHandler,Default_Handler\r
- \r
- .weak RTC_Alarm_IRQHandler \r
- .thumb_set RTC_Alarm_IRQHandler,Default_Handler\r
- \r
- .weak OTG_FS_WKUP_IRQHandler \r
- .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler\r
- \r
- .weak TIM8_BRK_TIM12_IRQHandler \r
- .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler\r
- \r
- .weak TIM8_UP_TIM13_IRQHandler \r
- .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler\r
- \r
- .weak TIM8_TRG_COM_TIM14_IRQHandler \r
- .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler\r
- \r
- .weak TIM8_CC_IRQHandler \r
- .thumb_set TIM8_CC_IRQHandler,Default_Handler\r
- \r
- .weak DMA1_Stream7_IRQHandler \r
- .thumb_set DMA1_Stream7_IRQHandler,Default_Handler\r
- \r
- .weak FMC_IRQHandler \r
- .thumb_set FMC_IRQHandler,Default_Handler\r
- \r
- .weak SDMMC1_IRQHandler \r
- .thumb_set SDMMC1_IRQHandler,Default_Handler\r
- \r
- .weak TIM5_IRQHandler \r
- .thumb_set TIM5_IRQHandler,Default_Handler\r
- \r
- .weak SPI3_IRQHandler \r
- .thumb_set SPI3_IRQHandler,Default_Handler\r
- \r
- .weak UART4_IRQHandler \r
- .thumb_set UART4_IRQHandler,Default_Handler\r
- \r
- .weak UART5_IRQHandler \r
- .thumb_set UART5_IRQHandler,Default_Handler\r
- \r
- .weak TIM6_DAC_IRQHandler \r
- .thumb_set TIM6_DAC_IRQHandler,Default_Handler\r
- \r
- .weak TIM7_IRQHandler \r
- .thumb_set TIM7_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream0_IRQHandler \r
- .thumb_set DMA2_Stream0_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream1_IRQHandler \r
- .thumb_set DMA2_Stream1_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream2_IRQHandler \r
- .thumb_set DMA2_Stream2_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream3_IRQHandler \r
- .thumb_set DMA2_Stream3_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream4_IRQHandler \r
- .thumb_set DMA2_Stream4_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream4_IRQHandler \r
- .thumb_set DMA2_Stream4_IRQHandler,Default_Handler \r
-\r
- .weak ETH_IRQHandler \r
- .thumb_set ETH_IRQHandler,Default_Handler\r
- \r
- .weak ETH_WKUP_IRQHandler \r
- .thumb_set ETH_WKUP_IRQHandler,Default_Handler\r
-\r
- .weak CAN2_TX_IRQHandler \r
- .thumb_set CAN2_TX_IRQHandler,Default_Handler \r
- \r
- .weak CAN2_RX0_IRQHandler \r
- .thumb_set CAN2_RX0_IRQHandler,Default_Handler\r
- \r
- .weak CAN2_RX1_IRQHandler \r
- .thumb_set CAN2_RX1_IRQHandler,Default_Handler\r
- \r
- .weak CAN2_SCE_IRQHandler \r
- .thumb_set CAN2_SCE_IRQHandler,Default_Handler\r
- \r
- .weak OTG_FS_IRQHandler \r
- .thumb_set OTG_FS_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream5_IRQHandler \r
- .thumb_set DMA2_Stream5_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream6_IRQHandler \r
- .thumb_set DMA2_Stream6_IRQHandler,Default_Handler\r
- \r
- .weak DMA2_Stream7_IRQHandler \r
- .thumb_set DMA2_Stream7_IRQHandler,Default_Handler\r
- \r
- .weak USART6_IRQHandler \r
- .thumb_set USART6_IRQHandler,Default_Handler\r
- \r
- .weak I2C3_EV_IRQHandler \r
- .thumb_set I2C3_EV_IRQHandler,Default_Handler\r
- \r
- .weak I2C3_ER_IRQHandler \r
- .thumb_set I2C3_ER_IRQHandler,Default_Handler\r
- \r
- .weak OTG_HS_EP1_OUT_IRQHandler \r
- .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler\r
- \r
- .weak OTG_HS_EP1_IN_IRQHandler \r
- .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler\r
- \r
- .weak OTG_HS_WKUP_IRQHandler \r
- .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler\r
- \r
- .weak OTG_HS_IRQHandler \r
- .thumb_set OTG_HS_IRQHandler,Default_Handler\r
- \r
- .weak DCMI_IRQHandler \r
- .thumb_set DCMI_IRQHandler,Default_Handler\r
-\r
- .weak RNG_IRQHandler \r
- .thumb_set RNG_IRQHandler,Default_Handler \r
-\r
- .weak FPU_IRQHandler \r
- .thumb_set FPU_IRQHandler,Default_Handler\r
-\r
- .weak UART7_IRQHandler \r
- .thumb_set UART7_IRQHandler,Default_Handler\r
-\r
- .weak UART8_IRQHandler \r
- .thumb_set UART8_IRQHandler,Default_Handler \r
-\r
- .weak SPI4_IRQHandler \r
- .thumb_set SPI4_IRQHandler,Default_Handler\r
- \r
- .weak SPI5_IRQHandler \r
- .thumb_set SPI5_IRQHandler,Default_Handler\r
-\r
- .weak SPI6_IRQHandler \r
- .thumb_set SPI6_IRQHandler,Default_Handler \r
-\r
- .weak SAI1_IRQHandler \r
- .thumb_set SAI1_IRQHandler,Default_Handler\r
- \r
- .weak LTDC_IRQHandler \r
- .thumb_set LTDC_IRQHandler,Default_Handler\r
-\r
- .weak LTDC_ER_IRQHandler \r
- .thumb_set LTDC_ER_IRQHandler,Default_Handler\r
-\r
- .weak DMA2D_IRQHandler \r
- .thumb_set DMA2D_IRQHandler,Default_Handler \r
-\r
- .weak SAI2_IRQHandler \r
- .thumb_set SAI2_IRQHandler,Default_Handler\r
- \r
- .weak QUADSPI_IRQHandler \r
- .thumb_set QUADSPI_IRQHandler,Default_Handler\r
- \r
- .weak LPTIM1_IRQHandler \r
- .thumb_set LPTIM1_IRQHandler,Default_Handler\r
-\r
- .weak CEC_IRQHandler \r
- .thumb_set CEC_IRQHandler,Default_Handler\r
- \r
- .weak I2C4_EV_IRQHandler \r
- .thumb_set I2C4_EV_IRQHandler,Default_Handler \r
- \r
- .weak I2C4_ER_IRQHandler \r
- .thumb_set I2C4_ER_IRQHandler,Default_Handler\r
- \r
- .weak SPDIF_RX_IRQHandler \r
- .thumb_set SPDIF_RX_IRQHandler,Default_Handler\r
-\r
- .weak DFSDM1_FLT0_IRQHandler \r
- .thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler\r
-\r
- .weak DFSDM1_FLT1_IRQHandler \r
- .thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler\r
-\r
- .weak DFSDM1_FLT2_IRQHandler \r
- .thumb_set DFSDM1_FLT2_IRQHandler,Default_Handler\r
-\r
- .weak DFSDM1_FLT3_IRQHandler \r
- .thumb_set DFSDM1_FLT3_IRQHandler,Default_Handler\r
-\r
- .weak SDMMC2_IRQHandler \r
- .thumb_set SDMMC2_IRQHandler,Default_Handler\r
-\r
- .weak CAN3_TX_IRQHandler \r
- .thumb_set CAN3_TX_IRQHandler,Default_Handler\r
-\r
- .weak CAN3_RX0_IRQHandler \r
- .thumb_set CAN3_RX0_IRQHandler,Default_Handler\r
-\r
- .weak CAN3_RX1_IRQHandler \r
- .thumb_set CAN3_RX1_IRQHandler,Default_Handler\r
-\r
- .weak CAN3_SCE_IRQHandler \r
- .thumb_set CAN3_SCE_IRQHandler,Default_Handler\r
-\r
- .weak JPEG_IRQHandler \r
- .thumb_set JPEG_IRQHandler,Default_Handler\r
-\r
- .weak MDIOS_IRQHandler \r
- .thumb_set MDIOS_IRQHandler,Default_Handler \r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
- \r
+++ /dev/null
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-# Add inputs and outputs from these tool invocations to the build variables
-C_SRCS += \
-../Core/Src/pb_common.c \
-../Core/Src/pb_decode.c \
-../Core/Src/pb_encode.c \
-../Core/Src/stm32f7xx_hal_msp.c \
-../Core/Src/stm32f7xx_it.c \
-../Core/Src/syscalls.c \
-../Core/Src/sysmem.c \
-../Core/Src/system_stm32f7xx.c \
-../Core/Src/velocities.pb.c
-
-CPP_SRCS += \
-../Core/Src/encoder.cpp \
-../Core/Src/main.cpp
-
-OBJS += \
-./Core/Src/encoder.o \
-./Core/Src/main.o \
-./Core/Src/pb_common.o \
-./Core/Src/pb_decode.o \
-./Core/Src/pb_encode.o \
-./Core/Src/stm32f7xx_hal_msp.o \
-./Core/Src/stm32f7xx_it.o \
-./Core/Src/syscalls.o \
-./Core/Src/sysmem.o \
-./Core/Src/system_stm32f7xx.o \
-./Core/Src/velocities.pb.o
-
-C_DEPS += \
-./Core/Src/pb_common.d \
-./Core/Src/pb_decode.d \
-./Core/Src/pb_encode.d \
-./Core/Src/stm32f7xx_hal_msp.d \
-./Core/Src/stm32f7xx_it.d \
-./Core/Src/syscalls.d \
-./Core/Src/sysmem.d \
-./Core/Src/system_stm32f7xx.d \
-./Core/Src/velocities.pb.d
-
-CPP_DEPS += \
-./Core/Src/encoder.d \
-./Core/Src/main.d
-
-
-# Each subdirectory must supply rules for building sources it contributes
-Core/Src/encoder.o: ../Core/Src/encoder.cpp
- arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Core/Src/encoder.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/main.o: ../Core/Src/main.cpp
- arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/pb_common.o: ../Core/Src/pb_common.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/pb_common.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/pb_decode.o: ../Core/Src/pb_decode.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/pb_decode.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/pb_encode.o: ../Core/Src/pb_encode.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/pb_encode.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/stm32f7xx_hal_msp.o: ../Core/Src/stm32f7xx_hal_msp.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/stm32f7xx_hal_msp.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/stm32f7xx_it.o: ../Core/Src/stm32f7xx_it.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/stm32f7xx_it.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/syscalls.o: ../Core/Src/syscalls.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/syscalls.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/sysmem.o: ../Core/Src/sysmem.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/sysmem.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/system_stm32f7xx.o: ../Core/Src/system_stm32f7xx.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/system_stm32f7xx.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Core/Src/velocities.pb.o: ../Core/Src/velocities.pb.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/velocities.pb.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-
+++ /dev/null
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-# Add inputs and outputs from these tool invocations to the build variables
-S_SRCS += \
-../Core/Startup/startup_stm32f767zitx.s
-
-OBJS += \
-./Core/Startup/startup_stm32f767zitx.o
-
-
-# Each subdirectory must supply rules for building sources it contributes
-Core/Startup/%.o: ../Core/Startup/%.s
- arm-none-eabi-gcc -mcpu=cortex-m7 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@" "$<"
-
+++ /dev/null
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-# Add inputs and outputs from these tool invocations to the build variables
-C_SRCS += \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c \
-../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c
-
-OBJS += \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.o \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.o
-
-C_DEPS += \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.d \
-./Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.d
-
-
-# Each subdirectory must supply rules for building sources it contributes
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c
- arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Core/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
-
+++ /dev/null
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
--include ../makefile.init
-
-RM := rm -rf
-
-# All of the sources participating in the build are defined here
--include sources.mk
--include Drivers/STM32F7xx_HAL_Driver/Src/subdir.mk
--include Core/Startup/subdir.mk
--include Core/Src/subdir.mk
--include subdir.mk
--include objects.mk
-
-ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(strip $(CC_DEPS)),)
--include $(CC_DEPS)
-endif
-ifneq ($(strip $(C++_DEPS)),)
--include $(C++_DEPS)
-endif
-ifneq ($(strip $(C_UPPER_DEPS)),)
--include $(C_UPPER_DEPS)
-endif
-ifneq ($(strip $(CXX_DEPS)),)
--include $(CXX_DEPS)
-endif
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
-ifneq ($(strip $(CPP_DEPS)),)
--include $(CPP_DEPS)
-endif
-endif
-
--include ../makefile.defs
-
-# Add inputs and outputs from these tool invocations to the build variables
-EXECUTABLES += \
-otto_proto_test.elf \
-
-SIZE_OUTPUT += \
-default.size.stdout \
-
-OBJDUMP_LIST += \
-otto_proto_test.list \
-
-
-# All Target
-all: otto_proto_test.elf secondary-outputs
-
-# Tool invocations
-otto_proto_test.elf: $(OBJS) $(USER_OBJS) /home/fdila/Projects/otto/utils/proto_test/otto_proto_test/STM32F767ZITX_FLASH.ld
- arm-none-eabi-g++ -o "otto_proto_test.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m7 -T"/home/fdila/Projects/otto/utils/proto_test/otto_proto_test/STM32F767ZITX_FLASH.ld" -Wl,-Map="otto_proto_test.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group
- @echo 'Finished building target: $@'
- @echo ' '
-
-default.size.stdout: $(EXECUTABLES)
- arm-none-eabi-size $(EXECUTABLES)
- @echo 'Finished building: $@'
- @echo ' '
-
-otto_proto_test.list: $(EXECUTABLES)
- arm-none-eabi-objdump -h -S $(EXECUTABLES) > "otto_proto_test.list"
- @echo 'Finished building: $@'
- @echo ' '
-
-# Other Targets
-clean:
- -$(RM) *
- -@echo ' '
-
-secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST)
-
-.PHONY: all clean dependents
-.SECONDARY:
-
--include ../makefile.targets
+++ /dev/null
-"Core/Src/encoder.o"
-"Core/Src/main.o"
-"Core/Src/pb_common.o"
-"Core/Src/pb_decode.o"
-"Core/Src/pb_encode.o"
-"Core/Src/stm32f7xx_hal_msp.o"
-"Core/Src/stm32f7xx_it.o"
-"Core/Src/syscalls.o"
-"Core/Src/sysmem.o"
-"Core/Src/system_stm32f7xx.o"
-"Core/Src/velocities.pb.o"
-"Core/Startup/startup_stm32f767zitx.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.o"
-"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.o"
+++ /dev/null
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-USER_OBJS :=
-
-LIBS :=
-
+++ /dev/null
-
-otto_proto_test.elf: file format elf32-littlearm
-
-Sections:
-Idx Name Size VMA LMA File off Algn
- 0 .isr_vector 000001f8 08000000 08000000 00010000 2**0
- CONTENTS, ALLOC, LOAD, READONLY, DATA
- 1 .text 000087ec 080001f8 080001f8 000101f8 2**3
- CONTENTS, ALLOC, LOAD, READONLY, CODE
- 2 .rodata 00000300 080089e4 080089e4 000189e4 2**2
- CONTENTS, ALLOC, LOAD, READONLY, DATA
- 3 .ARM.extab 00000000 08008ce4 08008ce4 00020010 2**0
- CONTENTS
- 4 .ARM 00000008 08008ce4 08008ce4 00018ce4 2**2
- CONTENTS, ALLOC, LOAD, READONLY, DATA
- 5 .preinit_array 00000000 08008cec 08008cec 00020010 2**0
- CONTENTS, ALLOC, LOAD, DATA
- 6 .init_array 00000008 08008cec 08008cec 00018cec 2**2
- CONTENTS, ALLOC, LOAD, DATA
- 7 .fini_array 00000004 08008cf4 08008cf4 00018cf4 2**2
- CONTENTS, ALLOC, LOAD, DATA
- 8 .data 00000010 20000000 08008cf8 00020000 2**2
- CONTENTS, ALLOC, LOAD, DATA
- 9 .bss 00000338 20000010 08008d08 00020010 2**2
- ALLOC
- 10 ._user_heap_stack 00000600 20000348 08008d08 00020348 2**0
- ALLOC
- 11 .ARM.attributes 0000002e 00000000 00000000 00020010 2**0
- CONTENTS, READONLY
- 12 .debug_info 00013a2c 00000000 00000000 0002003e 2**0
- CONTENTS, READONLY, DEBUGGING
- 13 .debug_abbrev 000027df 00000000 00000000 00033a6a 2**0
- CONTENTS, READONLY, DEBUGGING
- 14 .debug_aranges 00001060 00000000 00000000 00036250 2**3
- CONTENTS, READONLY, DEBUGGING
- 15 .debug_ranges 00000f78 00000000 00000000 000372b0 2**3
- CONTENTS, READONLY, DEBUGGING
- 16 .debug_macro 0002a477 00000000 00000000 00038228 2**0
- CONTENTS, READONLY, DEBUGGING
- 17 .debug_line 0000c3e8 00000000 00000000 0006269f 2**0
- CONTENTS, READONLY, DEBUGGING
- 18 .debug_str 000fa3a7 00000000 00000000 0006ea87 2**0
- CONTENTS, READONLY, DEBUGGING
- 19 .comment 0000007b 00000000 00000000 00168e2e 2**0
- CONTENTS, READONLY
- 20 .debug_frame 000044e8 00000000 00000000 00168eac 2**2
- CONTENTS, READONLY, DEBUGGING
-
-Disassembly of section .text:
-
-080001f8 <__do_global_dtors_aux>:
- 80001f8: b510 push {r4, lr}
- 80001fa: 4c05 ldr r4, [pc, #20] ; (8000210 <__do_global_dtors_aux+0x18>)
- 80001fc: 7823 ldrb r3, [r4, #0]
- 80001fe: b933 cbnz r3, 800020e <__do_global_dtors_aux+0x16>
- 8000200: 4b04 ldr r3, [pc, #16] ; (8000214 <__do_global_dtors_aux+0x1c>)
- 8000202: b113 cbz r3, 800020a <__do_global_dtors_aux+0x12>
- 8000204: 4804 ldr r0, [pc, #16] ; (8000218 <__do_global_dtors_aux+0x20>)
- 8000206: f3af 8000 nop.w
- 800020a: 2301 movs r3, #1
- 800020c: 7023 strb r3, [r4, #0]
- 800020e: bd10 pop {r4, pc}
- 8000210: 20000010 .word 0x20000010
- 8000214: 00000000 .word 0x00000000
- 8000218: 080089cc .word 0x080089cc
-
-0800021c <frame_dummy>:
- 800021c: b508 push {r3, lr}
- 800021e: 4b03 ldr r3, [pc, #12] ; (800022c <frame_dummy+0x10>)
- 8000220: b11b cbz r3, 800022a <frame_dummy+0xe>
- 8000222: 4903 ldr r1, [pc, #12] ; (8000230 <frame_dummy+0x14>)
- 8000224: 4803 ldr r0, [pc, #12] ; (8000234 <frame_dummy+0x18>)
- 8000226: f3af 8000 nop.w
- 800022a: bd08 pop {r3, pc}
- 800022c: 00000000 .word 0x00000000
- 8000230: 20000014 .word 0x20000014
- 8000234: 080089cc .word 0x080089cc
-
-08000238 <__aeabi_uldivmod>:
- 8000238: b953 cbnz r3, 8000250 <__aeabi_uldivmod+0x18>
- 800023a: b94a cbnz r2, 8000250 <__aeabi_uldivmod+0x18>
- 800023c: 2900 cmp r1, #0
- 800023e: bf08 it eq
- 8000240: 2800 cmpeq r0, #0
- 8000242: bf1c itt ne
- 8000244: f04f 31ff movne.w r1, #4294967295 ; 0xffffffff
- 8000248: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff
- 800024c: f000 b972 b.w 8000534 <__aeabi_idiv0>
- 8000250: f1ad 0c08 sub.w ip, sp, #8
- 8000254: e96d ce04 strd ip, lr, [sp, #-16]!
- 8000258: f000 f806 bl 8000268 <__udivmoddi4>
- 800025c: f8dd e004 ldr.w lr, [sp, #4]
- 8000260: e9dd 2302 ldrd r2, r3, [sp, #8]
- 8000264: b004 add sp, #16
- 8000266: 4770 bx lr
-
-08000268 <__udivmoddi4>:
- 8000268: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- 800026c: 9e08 ldr r6, [sp, #32]
- 800026e: 4604 mov r4, r0
- 8000270: 4688 mov r8, r1
- 8000272: 2b00 cmp r3, #0
- 8000274: d14b bne.n 800030e <__udivmoddi4+0xa6>
- 8000276: 428a cmp r2, r1
- 8000278: 4615 mov r5, r2
- 800027a: d967 bls.n 800034c <__udivmoddi4+0xe4>
- 800027c: fab2 f282 clz r2, r2
- 8000280: b14a cbz r2, 8000296 <__udivmoddi4+0x2e>
- 8000282: f1c2 0720 rsb r7, r2, #32
- 8000286: fa01 f302 lsl.w r3, r1, r2
- 800028a: fa20 f707 lsr.w r7, r0, r7
- 800028e: 4095 lsls r5, r2
- 8000290: ea47 0803 orr.w r8, r7, r3
- 8000294: 4094 lsls r4, r2
- 8000296: ea4f 4e15 mov.w lr, r5, lsr #16
- 800029a: 0c23 lsrs r3, r4, #16
- 800029c: fbb8 f7fe udiv r7, r8, lr
- 80002a0: fa1f fc85 uxth.w ip, r5
- 80002a4: fb0e 8817 mls r8, lr, r7, r8
- 80002a8: ea43 4308 orr.w r3, r3, r8, lsl #16
- 80002ac: fb07 f10c mul.w r1, r7, ip
- 80002b0: 4299 cmp r1, r3
- 80002b2: d909 bls.n 80002c8 <__udivmoddi4+0x60>
- 80002b4: 18eb adds r3, r5, r3
- 80002b6: f107 30ff add.w r0, r7, #4294967295 ; 0xffffffff
- 80002ba: f080 811b bcs.w 80004f4 <__udivmoddi4+0x28c>
- 80002be: 4299 cmp r1, r3
- 80002c0: f240 8118 bls.w 80004f4 <__udivmoddi4+0x28c>
- 80002c4: 3f02 subs r7, #2
- 80002c6: 442b add r3, r5
- 80002c8: 1a5b subs r3, r3, r1
- 80002ca: b2a4 uxth r4, r4
- 80002cc: fbb3 f0fe udiv r0, r3, lr
- 80002d0: fb0e 3310 mls r3, lr, r0, r3
- 80002d4: ea44 4403 orr.w r4, r4, r3, lsl #16
- 80002d8: fb00 fc0c mul.w ip, r0, ip
- 80002dc: 45a4 cmp ip, r4
- 80002de: d909 bls.n 80002f4 <__udivmoddi4+0x8c>
- 80002e0: 192c adds r4, r5, r4
- 80002e2: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff
- 80002e6: f080 8107 bcs.w 80004f8 <__udivmoddi4+0x290>
- 80002ea: 45a4 cmp ip, r4
- 80002ec: f240 8104 bls.w 80004f8 <__udivmoddi4+0x290>
- 80002f0: 3802 subs r0, #2
- 80002f2: 442c add r4, r5
- 80002f4: ea40 4007 orr.w r0, r0, r7, lsl #16
- 80002f8: eba4 040c sub.w r4, r4, ip
- 80002fc: 2700 movs r7, #0
- 80002fe: b11e cbz r6, 8000308 <__udivmoddi4+0xa0>
- 8000300: 40d4 lsrs r4, r2
- 8000302: 2300 movs r3, #0
- 8000304: e9c6 4300 strd r4, r3, [r6]
- 8000308: 4639 mov r1, r7
- 800030a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
- 800030e: 428b cmp r3, r1
- 8000310: d909 bls.n 8000326 <__udivmoddi4+0xbe>
- 8000312: 2e00 cmp r6, #0
- 8000314: f000 80eb beq.w 80004ee <__udivmoddi4+0x286>
- 8000318: 2700 movs r7, #0
- 800031a: e9c6 0100 strd r0, r1, [r6]
- 800031e: 4638 mov r0, r7
- 8000320: 4639 mov r1, r7
- 8000322: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
- 8000326: fab3 f783 clz r7, r3
- 800032a: 2f00 cmp r7, #0
- 800032c: d147 bne.n 80003be <__udivmoddi4+0x156>
- 800032e: 428b cmp r3, r1
- 8000330: d302 bcc.n 8000338 <__udivmoddi4+0xd0>
- 8000332: 4282 cmp r2, r0
- 8000334: f200 80fa bhi.w 800052c <__udivmoddi4+0x2c4>
- 8000338: 1a84 subs r4, r0, r2
- 800033a: eb61 0303 sbc.w r3, r1, r3
- 800033e: 2001 movs r0, #1
- 8000340: 4698 mov r8, r3
- 8000342: 2e00 cmp r6, #0
- 8000344: d0e0 beq.n 8000308 <__udivmoddi4+0xa0>
- 8000346: e9c6 4800 strd r4, r8, [r6]
- 800034a: e7dd b.n 8000308 <__udivmoddi4+0xa0>
- 800034c: b902 cbnz r2, 8000350 <__udivmoddi4+0xe8>
- 800034e: deff udf #255 ; 0xff
- 8000350: fab2 f282 clz r2, r2
- 8000354: 2a00 cmp r2, #0
- 8000356: f040 808f bne.w 8000478 <__udivmoddi4+0x210>
- 800035a: 1b49 subs r1, r1, r5
- 800035c: ea4f 4e15 mov.w lr, r5, lsr #16
- 8000360: fa1f f885 uxth.w r8, r5
- 8000364: 2701 movs r7, #1
- 8000366: fbb1 fcfe udiv ip, r1, lr
- 800036a: 0c23 lsrs r3, r4, #16
- 800036c: fb0e 111c mls r1, lr, ip, r1
- 8000370: ea43 4301 orr.w r3, r3, r1, lsl #16
- 8000374: fb08 f10c mul.w r1, r8, ip
- 8000378: 4299 cmp r1, r3
- 800037a: d907 bls.n 800038c <__udivmoddi4+0x124>
- 800037c: 18eb adds r3, r5, r3
- 800037e: f10c 30ff add.w r0, ip, #4294967295 ; 0xffffffff
- 8000382: d202 bcs.n 800038a <__udivmoddi4+0x122>
- 8000384: 4299 cmp r1, r3
- 8000386: f200 80cd bhi.w 8000524 <__udivmoddi4+0x2bc>
- 800038a: 4684 mov ip, r0
- 800038c: 1a59 subs r1, r3, r1
- 800038e: b2a3 uxth r3, r4
- 8000390: fbb1 f0fe udiv r0, r1, lr
- 8000394: fb0e 1410 mls r4, lr, r0, r1
- 8000398: ea43 4404 orr.w r4, r3, r4, lsl #16
- 800039c: fb08 f800 mul.w r8, r8, r0
- 80003a0: 45a0 cmp r8, r4
- 80003a2: d907 bls.n 80003b4 <__udivmoddi4+0x14c>
- 80003a4: 192c adds r4, r5, r4
- 80003a6: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff
- 80003aa: d202 bcs.n 80003b2 <__udivmoddi4+0x14a>
- 80003ac: 45a0 cmp r8, r4
- 80003ae: f200 80b6 bhi.w 800051e <__udivmoddi4+0x2b6>
- 80003b2: 4618 mov r0, r3
- 80003b4: eba4 0408 sub.w r4, r4, r8
- 80003b8: ea40 400c orr.w r0, r0, ip, lsl #16
- 80003bc: e79f b.n 80002fe <__udivmoddi4+0x96>
- 80003be: f1c7 0c20 rsb ip, r7, #32
- 80003c2: 40bb lsls r3, r7
- 80003c4: fa22 fe0c lsr.w lr, r2, ip
- 80003c8: ea4e 0e03 orr.w lr, lr, r3
- 80003cc: fa01 f407 lsl.w r4, r1, r7
- 80003d0: fa20 f50c lsr.w r5, r0, ip
- 80003d4: fa21 f30c lsr.w r3, r1, ip
- 80003d8: ea4f 481e mov.w r8, lr, lsr #16
- 80003dc: 4325 orrs r5, r4
- 80003de: fbb3 f9f8 udiv r9, r3, r8
- 80003e2: 0c2c lsrs r4, r5, #16
- 80003e4: fb08 3319 mls r3, r8, r9, r3
- 80003e8: fa1f fa8e uxth.w sl, lr
- 80003ec: ea44 4303 orr.w r3, r4, r3, lsl #16
- 80003f0: fb09 f40a mul.w r4, r9, sl
- 80003f4: 429c cmp r4, r3
- 80003f6: fa02 f207 lsl.w r2, r2, r7
- 80003fa: fa00 f107 lsl.w r1, r0, r7
- 80003fe: d90b bls.n 8000418 <__udivmoddi4+0x1b0>
- 8000400: eb1e 0303 adds.w r3, lr, r3
- 8000404: f109 30ff add.w r0, r9, #4294967295 ; 0xffffffff
- 8000408: f080 8087 bcs.w 800051a <__udivmoddi4+0x2b2>
- 800040c: 429c cmp r4, r3
- 800040e: f240 8084 bls.w 800051a <__udivmoddi4+0x2b2>
- 8000412: f1a9 0902 sub.w r9, r9, #2
- 8000416: 4473 add r3, lr
- 8000418: 1b1b subs r3, r3, r4
- 800041a: b2ad uxth r5, r5
- 800041c: fbb3 f0f8 udiv r0, r3, r8
- 8000420: fb08 3310 mls r3, r8, r0, r3
- 8000424: ea45 4403 orr.w r4, r5, r3, lsl #16
- 8000428: fb00 fa0a mul.w sl, r0, sl
- 800042c: 45a2 cmp sl, r4
- 800042e: d908 bls.n 8000442 <__udivmoddi4+0x1da>
- 8000430: eb1e 0404 adds.w r4, lr, r4
- 8000434: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff
- 8000438: d26b bcs.n 8000512 <__udivmoddi4+0x2aa>
- 800043a: 45a2 cmp sl, r4
- 800043c: d969 bls.n 8000512 <__udivmoddi4+0x2aa>
- 800043e: 3802 subs r0, #2
- 8000440: 4474 add r4, lr
- 8000442: ea40 4009 orr.w r0, r0, r9, lsl #16
- 8000446: fba0 8902 umull r8, r9, r0, r2
- 800044a: eba4 040a sub.w r4, r4, sl
- 800044e: 454c cmp r4, r9
- 8000450: 46c2 mov sl, r8
- 8000452: 464b mov r3, r9
- 8000454: d354 bcc.n 8000500 <__udivmoddi4+0x298>
- 8000456: d051 beq.n 80004fc <__udivmoddi4+0x294>
- 8000458: 2e00 cmp r6, #0
- 800045a: d069 beq.n 8000530 <__udivmoddi4+0x2c8>
- 800045c: ebb1 050a subs.w r5, r1, sl
- 8000460: eb64 0403 sbc.w r4, r4, r3
- 8000464: fa04 fc0c lsl.w ip, r4, ip
- 8000468: 40fd lsrs r5, r7
- 800046a: 40fc lsrs r4, r7
- 800046c: ea4c 0505 orr.w r5, ip, r5
- 8000470: e9c6 5400 strd r5, r4, [r6]
- 8000474: 2700 movs r7, #0
- 8000476: e747 b.n 8000308 <__udivmoddi4+0xa0>
- 8000478: f1c2 0320 rsb r3, r2, #32
- 800047c: fa20 f703 lsr.w r7, r0, r3
- 8000480: 4095 lsls r5, r2
- 8000482: fa01 f002 lsl.w r0, r1, r2
- 8000486: fa21 f303 lsr.w r3, r1, r3
- 800048a: ea4f 4e15 mov.w lr, r5, lsr #16
- 800048e: 4338 orrs r0, r7
- 8000490: 0c01 lsrs r1, r0, #16
- 8000492: fbb3 f7fe udiv r7, r3, lr
- 8000496: fa1f f885 uxth.w r8, r5
- 800049a: fb0e 3317 mls r3, lr, r7, r3
- 800049e: ea41 4103 orr.w r1, r1, r3, lsl #16
- 80004a2: fb07 f308 mul.w r3, r7, r8
- 80004a6: 428b cmp r3, r1
- 80004a8: fa04 f402 lsl.w r4, r4, r2
- 80004ac: d907 bls.n 80004be <__udivmoddi4+0x256>
- 80004ae: 1869 adds r1, r5, r1
- 80004b0: f107 3cff add.w ip, r7, #4294967295 ; 0xffffffff
- 80004b4: d22f bcs.n 8000516 <__udivmoddi4+0x2ae>
- 80004b6: 428b cmp r3, r1
- 80004b8: d92d bls.n 8000516 <__udivmoddi4+0x2ae>
- 80004ba: 3f02 subs r7, #2
- 80004bc: 4429 add r1, r5
- 80004be: 1acb subs r3, r1, r3
- 80004c0: b281 uxth r1, r0
- 80004c2: fbb3 f0fe udiv r0, r3, lr
- 80004c6: fb0e 3310 mls r3, lr, r0, r3
- 80004ca: ea41 4103 orr.w r1, r1, r3, lsl #16
- 80004ce: fb00 f308 mul.w r3, r0, r8
- 80004d2: 428b cmp r3, r1
- 80004d4: d907 bls.n 80004e6 <__udivmoddi4+0x27e>
- 80004d6: 1869 adds r1, r5, r1
- 80004d8: f100 3cff add.w ip, r0, #4294967295 ; 0xffffffff
- 80004dc: d217 bcs.n 800050e <__udivmoddi4+0x2a6>
- 80004de: 428b cmp r3, r1
- 80004e0: d915 bls.n 800050e <__udivmoddi4+0x2a6>
- 80004e2: 3802 subs r0, #2
- 80004e4: 4429 add r1, r5
- 80004e6: 1ac9 subs r1, r1, r3
- 80004e8: ea40 4707 orr.w r7, r0, r7, lsl #16
- 80004ec: e73b b.n 8000366 <__udivmoddi4+0xfe>
- 80004ee: 4637 mov r7, r6
- 80004f0: 4630 mov r0, r6
- 80004f2: e709 b.n 8000308 <__udivmoddi4+0xa0>
- 80004f4: 4607 mov r7, r0
- 80004f6: e6e7 b.n 80002c8 <__udivmoddi4+0x60>
- 80004f8: 4618 mov r0, r3
- 80004fa: e6fb b.n 80002f4 <__udivmoddi4+0x8c>
- 80004fc: 4541 cmp r1, r8
- 80004fe: d2ab bcs.n 8000458 <__udivmoddi4+0x1f0>
- 8000500: ebb8 0a02 subs.w sl, r8, r2
- 8000504: eb69 020e sbc.w r2, r9, lr
- 8000508: 3801 subs r0, #1
- 800050a: 4613 mov r3, r2
- 800050c: e7a4 b.n 8000458 <__udivmoddi4+0x1f0>
- 800050e: 4660 mov r0, ip
- 8000510: e7e9 b.n 80004e6 <__udivmoddi4+0x27e>
- 8000512: 4618 mov r0, r3
- 8000514: e795 b.n 8000442 <__udivmoddi4+0x1da>
- 8000516: 4667 mov r7, ip
- 8000518: e7d1 b.n 80004be <__udivmoddi4+0x256>
- 800051a: 4681 mov r9, r0
- 800051c: e77c b.n 8000418 <__udivmoddi4+0x1b0>
- 800051e: 3802 subs r0, #2
- 8000520: 442c add r4, r5
- 8000522: e747 b.n 80003b4 <__udivmoddi4+0x14c>
- 8000524: f1ac 0c02 sub.w ip, ip, #2
- 8000528: 442b add r3, r5
- 800052a: e72f b.n 800038c <__udivmoddi4+0x124>
- 800052c: 4638 mov r0, r7
- 800052e: e708 b.n 8000342 <__udivmoddi4+0xda>
- 8000530: 4637 mov r7, r6
- 8000532: e6e9 b.n 8000308 <__udivmoddi4+0xa0>
-
-08000534 <__aeabi_idiv0>:
- 8000534: 4770 bx lr
- 8000536: bf00 nop
-
-08000538 <_ZN7Encoder8GetCountEv>:
- Encoder(TIM_HandleTypeDef *timer, int ticks_per_meters);
-
-
- void Setup();
-
- int GetCount() {
- 8000538: b480 push {r7}
- 800053a: b085 sub sp, #20
- 800053c: af00 add r7, sp, #0
- 800053e: 6078 str r0, [r7, #4]
- int count = ((int) __HAL_TIM_GET_COUNTER(this->timer_)
- 8000540: 687b ldr r3, [r7, #4]
- 8000542: 681b ldr r3, [r3, #0]
- 8000544: 681b ldr r3, [r3, #0]
- 8000546: 6a5a ldr r2, [r3, #36] ; 0x24
- - ((this->timer_->Init.Period) / 2));
- 8000548: 687b ldr r3, [r7, #4]
- 800054a: 681b ldr r3, [r3, #0]
- 800054c: 68db ldr r3, [r3, #12]
- 800054e: 085b lsrs r3, r3, #1
- 8000550: 1ad3 subs r3, r2, r3
- 8000552: 60fb str r3, [r7, #12]
- return count;
- 8000554: 68fb ldr r3, [r7, #12]
- }
- 8000556: 4618 mov r0, r3
- 8000558: 3714 adds r7, #20
- 800055a: 46bd mov sp, r7
- 800055c: f85d 7b04 ldr.w r7, [sp], #4
- 8000560: 4770 bx lr
-
-08000562 <_ZN7Encoder10ResetCountEv>:
-
- void ResetCount() {
- 8000562: b480 push {r7}
- 8000564: b083 sub sp, #12
- 8000566: af00 add r7, sp, #0
- 8000568: 6078 str r0, [r7, #4]
- //set counter to half its maximum value
- __HAL_TIM_SET_COUNTER(timer_, (timer_->Init.Period / 2));
- 800056a: 687b ldr r3, [r7, #4]
- 800056c: 681b ldr r3, [r3, #0]
- 800056e: 68da ldr r2, [r3, #12]
- 8000570: 687b ldr r3, [r7, #4]
- 8000572: 681b ldr r3, [r3, #0]
- 8000574: 681b ldr r3, [r3, #0]
- 8000576: 0852 lsrs r2, r2, #1
- 8000578: 625a str r2, [r3, #36] ; 0x24
- }
- 800057a: bf00 nop
- 800057c: 370c adds r7, #12
- 800057e: 46bd mov sp, r7
- 8000580: f85d 7b04 ldr.w r7, [sp], #4
- 8000584: 4770 bx lr
-
-08000586 <_ZN7EncoderC1EP17TIM_HandleTypeDefi>:
-// timer_ = timer;
-// wheel_circumference_ = wheel_circ;
-//
-//}
-
-Encoder::Encoder(TIM_HandleTypeDef *timer, int ticks_per_meter) {
- 8000586: b480 push {r7}
- 8000588: b085 sub sp, #20
- 800058a: af00 add r7, sp, #0
- 800058c: 60f8 str r0, [r7, #12]
- 800058e: 60b9 str r1, [r7, #8]
- 8000590: 607a str r2, [r7, #4]
- timer_ = timer;
- 8000592: 68fb ldr r3, [r7, #12]
- 8000594: 68ba ldr r2, [r7, #8]
- 8000596: 601a str r2, [r3, #0]
- ticks_per_meter_ = ticks_per_meter;
- 8000598: 68fb ldr r3, [r7, #12]
- 800059a: 687a ldr r2, [r7, #4]
- 800059c: 615a str r2, [r3, #20]
-
-}
- 800059e: 68fb ldr r3, [r7, #12]
- 80005a0: 4618 mov r0, r3
- 80005a2: 3714 adds r7, #20
- 80005a4: 46bd mov sp, r7
- 80005a6: f85d 7b04 ldr.w r7, [sp], #4
- 80005aa: 4770 bx lr
-
-080005ac <_ZN7Encoder5SetupEv>:
-
-void Encoder::Setup() {
- 80005ac: b580 push {r7, lr}
- 80005ae: b082 sub sp, #8
- 80005b0: af00 add r7, sp, #0
- 80005b2: 6078 str r0, [r7, #4]
- HAL_TIM_Encoder_Start(timer_, TIM_CHANNEL_ALL);
- 80005b4: 687b ldr r3, [r7, #4]
- 80005b6: 681b ldr r3, [r3, #0]
- 80005b8: 213c movs r1, #60 ; 0x3c
- 80005ba: 4618 mov r0, r3
- 80005bc: f006 faee bl 8006b9c <HAL_TIM_Encoder_Start>
- this->ResetCount();
- 80005c0: 6878 ldr r0, [r7, #4]
- 80005c2: f7ff ffce bl 8000562 <_ZN7Encoder10ResetCountEv>
- this->previous_millis_ = 0;
- 80005c6: 687b ldr r3, [r7, #4]
- 80005c8: 2200 movs r2, #0
- 80005ca: 605a str r2, [r3, #4]
- this->current_millis_ = HAL_GetTick();
- 80005cc: f004 fe02 bl 80051d4 <HAL_GetTick>
- 80005d0: 4602 mov r2, r0
- 80005d2: 687b ldr r3, [r7, #4]
- 80005d4: 609a str r2, [r3, #8]
-}
- 80005d6: bf00 nop
- 80005d8: 3708 adds r7, #8
- 80005da: 46bd mov sp, r7
- 80005dc: bd80 pop {r7, pc}
-
-080005de <_ZN7Encoder12UpdateValuesEv>:
-
-void Encoder::UpdateValues() {
- 80005de: b580 push {r7, lr}
- 80005e0: b082 sub sp, #8
- 80005e2: af00 add r7, sp, #0
- 80005e4: 6078 str r0, [r7, #4]
- this->previous_millis_ = this->current_millis_;
- 80005e6: 687b ldr r3, [r7, #4]
- 80005e8: 689a ldr r2, [r3, #8]
- 80005ea: 687b ldr r3, [r7, #4]
- 80005ec: 605a str r2, [r3, #4]
- this->current_millis_ = HAL_GetTick();
- 80005ee: f004 fdf1 bl 80051d4 <HAL_GetTick>
- 80005f2: 4602 mov r2, r0
- 80005f4: 687b ldr r3, [r7, #4]
- 80005f6: 609a str r2, [r3, #8]
- this->ticks_ = this->GetCount();
- 80005f8: 6878 ldr r0, [r7, #4]
- 80005fa: f7ff ff9d bl 8000538 <_ZN7Encoder8GetCountEv>
- 80005fe: 4602 mov r2, r0
- 8000600: 687b ldr r3, [r7, #4]
- 8000602: 60da str r2, [r3, #12]
- this->ResetCount();
- 8000604: 6878 ldr r0, [r7, #4]
- 8000606: f7ff ffac bl 8000562 <_ZN7Encoder10ResetCountEv>
-}
- 800060a: bf00 nop
- 800060c: 3708 adds r7, #8
- 800060e: 46bd mov sp, r7
- 8000610: bd80 pop {r7, pc}
-
-08000612 <_ZN7Encoder9GetMetersEv>:
-// float meters = ((float) this->ticks_ * this->wheel_circumference_)
-// / TICKS_PER_REVOLUTION;
-// return meters;
-//}
-
-float Encoder::GetMeters() {
- 8000612: b480 push {r7}
- 8000614: b085 sub sp, #20
- 8000616: af00 add r7, sp, #0
- 8000618: 6078 str r0, [r7, #4]
- float meters = (((float) this->ticks_) / this->ticks_per_meter_);
- 800061a: 687b ldr r3, [r7, #4]
- 800061c: 68db ldr r3, [r3, #12]
- 800061e: ee07 3a90 vmov s15, r3
- 8000622: eef8 6ae7 vcvt.f32.s32 s13, s15
- 8000626: 687b ldr r3, [r7, #4]
- 8000628: 695b ldr r3, [r3, #20]
- 800062a: ee07 3a90 vmov s15, r3
- 800062e: eeb8 7ae7 vcvt.f32.s32 s14, s15
- 8000632: eec6 7a87 vdiv.f32 s15, s13, s14
- 8000636: edc7 7a03 vstr s15, [r7, #12]
- return meters;
- 800063a: 68fb ldr r3, [r7, #12]
- 800063c: ee07 3a90 vmov s15, r3
-}
- 8000640: eeb0 0a67 vmov.f32 s0, s15
- 8000644: 3714 adds r7, #20
- 8000646: 46bd mov sp, r7
- 8000648: f85d 7b04 ldr.w r7, [sp], #4
- 800064c: 4770 bx lr
- ...
-
-08000650 <_ZN7Encoder17GetLinearVelocityEv>:
-
-
-float Encoder::GetLinearVelocity() {
- 8000650: b580 push {r7, lr}
- 8000652: b086 sub sp, #24
- 8000654: af00 add r7, sp, #0
- 8000656: 6078 str r0, [r7, #4]
- this->UpdateValues();
- 8000658: 6878 ldr r0, [r7, #4]
- 800065a: f7ff ffc0 bl 80005de <_ZN7Encoder12UpdateValuesEv>
- float meters = this->GetMeters();
- 800065e: 6878 ldr r0, [r7, #4]
- 8000660: f7ff ffd7 bl 8000612 <_ZN7Encoder9GetMetersEv>
- 8000664: ed87 0a05 vstr s0, [r7, #20]
- float deltaTime = this->current_millis_ - this->previous_millis_;
- 8000668: 687b ldr r3, [r7, #4]
- 800066a: 689a ldr r2, [r3, #8]
- 800066c: 687b ldr r3, [r7, #4]
- 800066e: 685b ldr r3, [r3, #4]
- 8000670: 1ad3 subs r3, r2, r3
- 8000672: ee07 3a90 vmov s15, r3
- 8000676: eef8 7a67 vcvt.f32.u32 s15, s15
- 800067a: edc7 7a04 vstr s15, [r7, #16]
- if (deltaTime == 0)
- 800067e: edd7 7a04 vldr s15, [r7, #16]
- 8000682: eef5 7a40 vcmp.f32 s15, #0.0
- 8000686: eef1 fa10 vmrs APSR_nzcv, fpscr
- 800068a: d102 bne.n 8000692 <_ZN7Encoder17GetLinearVelocityEv+0x42>
- return 0;
- 800068c: f04f 0300 mov.w r3, #0
- 8000690: e00c b.n 80006ac <_ZN7Encoder17GetLinearVelocityEv+0x5c>
- float linear_velocity = (meters / (deltaTime / 1000));
- 8000692: edd7 7a04 vldr s15, [r7, #16]
- 8000696: eddf 6a09 vldr s13, [pc, #36] ; 80006bc <_ZN7Encoder17GetLinearVelocityEv+0x6c>
- 800069a: ee87 7aa6 vdiv.f32 s14, s15, s13
- 800069e: edd7 6a05 vldr s13, [r7, #20]
- 80006a2: eec6 7a87 vdiv.f32 s15, s13, s14
- 80006a6: edc7 7a03 vstr s15, [r7, #12]
- return linear_velocity;
- 80006aa: 68fb ldr r3, [r7, #12]
- 80006ac: ee07 3a90 vmov s15, r3
-}
- 80006b0: eeb0 0a67 vmov.f32 s0, s15
- 80006b4: 3718 adds r7, #24
- 80006b6: 46bd mov sp, r7
- 80006b8: bd80 pop {r7, pc}
- 80006ba: bf00 nop
- 80006bc: 447a0000 .word 0x447a0000
-
-080006c0 <_ZN8OdometryC1Ev>:
- float linear_velocity_;
- float angular_velocity_;
-
-
- public:
- Odometry() {
- 80006c0: b480 push {r7}
- 80006c2: b083 sub sp, #12
- 80006c4: af00 add r7, sp, #0
- 80006c6: 6078 str r0, [r7, #4]
- left_velocity_ = 0;
- 80006c8: 687b ldr r3, [r7, #4]
- 80006ca: f04f 0200 mov.w r2, #0
- 80006ce: 601a str r2, [r3, #0]
- right_velocity_ = 0;
- 80006d0: 687b ldr r3, [r7, #4]
- 80006d2: f04f 0200 mov.w r2, #0
- 80006d6: 605a str r2, [r3, #4]
- linear_velocity_ = 0;
- 80006d8: 687b ldr r3, [r7, #4]
- 80006da: f04f 0200 mov.w r2, #0
- 80006de: 609a str r2, [r3, #8]
- angular_velocity_ = 0;
- 80006e0: 687b ldr r3, [r7, #4]
- 80006e2: f04f 0200 mov.w r2, #0
- 80006e6: 60da str r2, [r3, #12]
- }
- 80006e8: 687b ldr r3, [r7, #4]
- 80006ea: 4618 mov r0, r3
- 80006ec: 370c adds r7, #12
- 80006ee: 46bd mov sp, r7
- 80006f0: f85d 7b04 ldr.w r7, [sp], #4
- 80006f4: 4770 bx lr
- ...
-
-080006f8 <_ZN8Odometry19UpdateValuesFromVelEff>:
-
- void UpdateValuesFromVel(float linear_vel, float angular_vel) {
- 80006f8: b480 push {r7}
- 80006fa: b085 sub sp, #20
- 80006fc: af00 add r7, sp, #0
- 80006fe: 60f8 str r0, [r7, #12]
- 8000700: ed87 0a02 vstr s0, [r7, #8]
- 8000704: edc7 0a01 vstr s1, [r7, #4]
- left_velocity_ = linear_vel - (BASELINE * angular_vel)/2;
- 8000708: edd7 7a02 vldr s15, [r7, #8]
- 800070c: eeb7 6ae7 vcvt.f64.f32 d6, s15
- 8000710: edd7 7a01 vldr s15, [r7, #4]
- 8000714: eeb7 7ae7 vcvt.f64.f32 d7, s15
- 8000718: ed9f 5b15 vldr d5, [pc, #84] ; 8000770 <_ZN8Odometry19UpdateValuesFromVelEff+0x78>
- 800071c: ee27 5b05 vmul.f64 d5, d7, d5
- 8000720: eeb0 4b00 vmov.f64 d4, #0 ; 0x40000000 2.0
- 8000724: ee85 7b04 vdiv.f64 d7, d5, d4
- 8000728: ee36 7b47 vsub.f64 d7, d6, d7
- 800072c: eef7 7bc7 vcvt.f32.f64 s15, d7
- 8000730: 68fb ldr r3, [r7, #12]
- 8000732: edc3 7a00 vstr s15, [r3]
- right_velocity_ = linear_vel + (BASELINE * angular_vel)/2;
- 8000736: edd7 7a02 vldr s15, [r7, #8]
- 800073a: eeb7 6ae7 vcvt.f64.f32 d6, s15
- 800073e: edd7 7a01 vldr s15, [r7, #4]
- 8000742: eeb7 7ae7 vcvt.f64.f32 d7, s15
- 8000746: ed9f 5b0a vldr d5, [pc, #40] ; 8000770 <_ZN8Odometry19UpdateValuesFromVelEff+0x78>
- 800074a: ee27 5b05 vmul.f64 d5, d7, d5
- 800074e: eeb0 4b00 vmov.f64 d4, #0 ; 0x40000000 2.0
- 8000752: ee85 7b04 vdiv.f64 d7, d5, d4
- 8000756: ee36 7b07 vadd.f64 d7, d6, d7
- 800075a: eef7 7bc7 vcvt.f32.f64 s15, d7
- 800075e: 68fb ldr r3, [r7, #12]
- 8000760: edc3 7a01 vstr s15, [r3, #4]
- }
- 8000764: bf00 nop
- 8000766: 3714 adds r7, #20
- 8000768: 46bd mov sp, r7
- 800076a: f85d 7b04 ldr.w r7, [sp], #4
- 800076e: 4770 bx lr
- 8000770: 33333333 .word 0x33333333
- 8000774: 3fd33333 .word 0x3fd33333
-
-08000778 <_ZN8Odometry22UpdateValuesFromWheelsEff>:
-
- void UpdateValuesFromWheels(float left_velocity, float right_velocity){
- 8000778: b480 push {r7}
- 800077a: b085 sub sp, #20
- 800077c: af00 add r7, sp, #0
- 800077e: 60f8 str r0, [r7, #12]
- 8000780: ed87 0a02 vstr s0, [r7, #8]
- 8000784: edc7 0a01 vstr s1, [r7, #4]
- linear_velocity_ = (left_velocity + right_velocity)/2;
- 8000788: ed97 7a02 vldr s14, [r7, #8]
- 800078c: edd7 7a01 vldr s15, [r7, #4]
- 8000790: ee37 7a27 vadd.f32 s14, s14, s15
- 8000794: eef0 6a00 vmov.f32 s13, #0 ; 0x40000000 2.0
- 8000798: eec7 7a26 vdiv.f32 s15, s14, s13
- 800079c: 68fb ldr r3, [r7, #12]
- 800079e: edc3 7a02 vstr s15, [r3, #8]
- angular_velocity_ = (right_velocity - left_velocity)/BASELINE;
- 80007a2: ed97 7a01 vldr s14, [r7, #4]
- 80007a6: edd7 7a02 vldr s15, [r7, #8]
- 80007aa: ee77 7a67 vsub.f32 s15, s14, s15
- 80007ae: eeb7 6ae7 vcvt.f64.f32 d6, s15
- 80007b2: ed9f 5b07 vldr d5, [pc, #28] ; 80007d0 <_ZN8Odometry22UpdateValuesFromWheelsEff+0x58>
- 80007b6: ee86 7b05 vdiv.f64 d7, d6, d5
- 80007ba: eef7 7bc7 vcvt.f32.f64 s15, d7
- 80007be: 68fb ldr r3, [r7, #12]
- 80007c0: edc3 7a03 vstr s15, [r3, #12]
- }
- 80007c4: bf00 nop
- 80007c6: 3714 adds r7, #20
- 80007c8: 46bd mov sp, r7
- 80007ca: f85d 7b04 ldr.w r7, [sp], #4
- 80007ce: 4770 bx lr
- 80007d0: 33333333 .word 0x33333333
- 80007d4: 3fd33333 .word 0x3fd33333
-
-080007d8 <_ZN8Odometry15GetLeftVelocityEv>:
-
-
- float GetLeftVelocity(){
- 80007d8: b480 push {r7}
- 80007da: b083 sub sp, #12
- 80007dc: af00 add r7, sp, #0
- 80007de: 6078 str r0, [r7, #4]
- return left_velocity_;
- 80007e0: 687b ldr r3, [r7, #4]
- 80007e2: 681b ldr r3, [r3, #0]
- 80007e4: ee07 3a90 vmov s15, r3
- }
- 80007e8: eeb0 0a67 vmov.f32 s0, s15
- 80007ec: 370c adds r7, #12
- 80007ee: 46bd mov sp, r7
- 80007f0: f85d 7b04 ldr.w r7, [sp], #4
- 80007f4: 4770 bx lr
-
-080007f6 <_ZN8Odometry16GetRightVelocityEv>:
- float GetRightVelocity(){
- 80007f6: b480 push {r7}
- 80007f8: b083 sub sp, #12
- 80007fa: af00 add r7, sp, #0
- 80007fc: 6078 str r0, [r7, #4]
- return right_velocity_;
- 80007fe: 687b ldr r3, [r7, #4]
- 8000800: 685b ldr r3, [r3, #4]
- 8000802: ee07 3a90 vmov s15, r3
- }
- 8000806: eeb0 0a67 vmov.f32 s0, s15
- 800080a: 370c adds r7, #12
- 800080c: 46bd mov sp, r7
- 800080e: f85d 7b04 ldr.w r7, [sp], #4
- 8000812: 4770 bx lr
-
-08000814 <_ZN8Odometry17GetLinearVelocityEv>:
- float GetLinearVelocity(){
- 8000814: b480 push {r7}
- 8000816: b083 sub sp, #12
- 8000818: af00 add r7, sp, #0
- 800081a: 6078 str r0, [r7, #4]
- return linear_velocity_;
- 800081c: 687b ldr r3, [r7, #4]
- 800081e: 689b ldr r3, [r3, #8]
- 8000820: ee07 3a90 vmov s15, r3
- }
- 8000824: eeb0 0a67 vmov.f32 s0, s15
- 8000828: 370c adds r7, #12
- 800082a: 46bd mov sp, r7
- 800082c: f85d 7b04 ldr.w r7, [sp], #4
- 8000830: 4770 bx lr
-
-08000832 <_ZN8Odometry18GetAngularVelocityEv>:
- float GetAngularVelocity(){
- 8000832: b480 push {r7}
- 8000834: b083 sub sp, #12
- 8000836: af00 add r7, sp, #0
- 8000838: 6078 str r0, [r7, #4]
- return angular_velocity_;
- 800083a: 687b ldr r3, [r7, #4]
- 800083c: 68db ldr r3, [r3, #12]
- 800083e: ee07 3a90 vmov s15, r3
- }
- 8000842: eeb0 0a67 vmov.f32 s0, s15
- 8000846: 370c adds r7, #12
- 8000848: 46bd mov sp, r7
- 800084a: f85d 7b04 ldr.w r7, [sp], #4
- 800084e: 4770 bx lr
-
-08000850 <_ZN15MotorControllerC1EP12GPIO_TypeDeftS1_tP17TIM_HandleTypeDefm>:
- GPIO_TypeDef *dir_gpio_port_;
- uint16_t dir_pin_;
- TIM_HandleTypeDef *pwm_timer_;
- uint32_t pwm_channel_;
-
- MotorController(GPIO_TypeDef *sleep_gpio_port, uint16_t sleep_pin,
- 8000850: b480 push {r7}
- 8000852: b085 sub sp, #20
- 8000854: af00 add r7, sp, #0
- 8000856: 60f8 str r0, [r7, #12]
- 8000858: 60b9 str r1, [r7, #8]
- 800085a: 603b str r3, [r7, #0]
- 800085c: 4613 mov r3, r2
- 800085e: 80fb strh r3, [r7, #6]
- GPIO_TypeDef *dir_gpio_port, uint16_t dir_pin,
- TIM_HandleTypeDef *pwm_timer, uint32_t pwm_channel) {
- this->sleep_gpio_port_ = sleep_gpio_port;
- 8000860: 68fb ldr r3, [r7, #12]
- 8000862: 68ba ldr r2, [r7, #8]
- 8000864: 601a str r2, [r3, #0]
- this->sleep_pin_ = sleep_pin;
- 8000866: 68fb ldr r3, [r7, #12]
- 8000868: 88fa ldrh r2, [r7, #6]
- 800086a: 809a strh r2, [r3, #4]
- this->dir_gpio_port_ = dir_gpio_port;
- 800086c: 68fb ldr r3, [r7, #12]
- 800086e: 683a ldr r2, [r7, #0]
- 8000870: 609a str r2, [r3, #8]
- this->dir_pin_ = dir_pin;
- 8000872: 68fb ldr r3, [r7, #12]
- 8000874: 8b3a ldrh r2, [r7, #24]
- 8000876: 819a strh r2, [r3, #12]
- this->pwm_timer_ = pwm_timer;
- 8000878: 68fb ldr r3, [r7, #12]
- 800087a: 69fa ldr r2, [r7, #28]
- 800087c: 611a str r2, [r3, #16]
- this->pwm_channel_ = pwm_channel;
- 800087e: 68fb ldr r3, [r7, #12]
- 8000880: 6a3a ldr r2, [r7, #32]
- 8000882: 615a str r2, [r3, #20]
- }
- 8000884: 68fb ldr r3, [r7, #12]
- 8000886: 4618 mov r0, r3
- 8000888: 3714 adds r7, #20
- 800088a: 46bd mov sp, r7
- 800088c: f85d 7b04 ldr.w r7, [sp], #4
- 8000890: 4770 bx lr
-
-08000892 <_ZN15MotorController5setupEv>:
-
- void setup() {
- 8000892: b580 push {r7, lr}
- 8000894: b082 sub sp, #8
- 8000896: af00 add r7, sp, #0
- 8000898: 6078 str r0, [r7, #4]
- HAL_TIM_PWM_Start(pwm_timer_, pwm_channel_);
- 800089a: 687b ldr r3, [r7, #4]
- 800089c: 691a ldr r2, [r3, #16]
- 800089e: 687b ldr r3, [r7, #4]
- 80008a0: 695b ldr r3, [r3, #20]
- 80008a2: 4619 mov r1, r3
- 80008a4: 4610 mov r0, r2
- 80008a6: f006 f8a3 bl 80069f0 <HAL_TIM_PWM_Start>
- }
- 80008aa: bf00 nop
- 80008ac: 3708 adds r7, #8
- 80008ae: 46bd mov sp, r7
- 80008b0: bd80 pop {r7, pc}
- ...
-
-080008b4 <_ZN15MotorController9set_speedEi>:
-
- void set_speed(int duty_cycle) {
- 80008b4: b580 push {r7, lr}
- 80008b6: b082 sub sp, #8
- 80008b8: af00 add r7, sp, #0
- 80008ba: 6078 str r0, [r7, #4]
- 80008bc: 6039 str r1, [r7, #0]
- if (duty_cycle >= 0) {
- 80008be: 683b ldr r3, [r7, #0]
- 80008c0: 2b00 cmp r3, #0
- 80008c2: f2c0 8083 blt.w 80009cc <_ZN15MotorController9set_speedEi+0x118>
- //set direction to forward
- HAL_GPIO_WritePin(dir_gpio_port_, dir_pin_, GPIO_PIN_SET);
- 80008c6: 687b ldr r3, [r7, #4]
- 80008c8: 6898 ldr r0, [r3, #8]
- 80008ca: 687b ldr r3, [r7, #4]
- 80008cc: 899b ldrh r3, [r3, #12]
- 80008ce: 2201 movs r2, #1
- 80008d0: 4619 mov r1, r3
- 80008d2: f004 ff69 bl 80057a8 <HAL_GPIO_WritePin>
-
- //check if duty_cycle exceeds maximum
- if (duty_cycle > MAX_DUTY_CYCLE)
- 80008d6: 683b ldr r3, [r7, #0]
- 80008d8: f240 3216 movw r2, #790 ; 0x316
- 80008dc: 4293 cmp r3, r2
- 80008de: dd3d ble.n 800095c <_ZN15MotorController9set_speedEi+0xa8>
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, MAX_DUTY_CYCLE);
- 80008e0: 687b ldr r3, [r7, #4]
- 80008e2: 695b ldr r3, [r3, #20]
- 80008e4: 2b00 cmp r3, #0
- 80008e6: d106 bne.n 80008f6 <_ZN15MotorController9set_speedEi+0x42>
- 80008e8: 687b ldr r3, [r7, #4]
- 80008ea: 691b ldr r3, [r3, #16]
- 80008ec: 681b ldr r3, [r3, #0]
- 80008ee: f240 3216 movw r2, #790 ; 0x316
- 80008f2: 635a str r2, [r3, #52] ; 0x34
- 80008f4: e0f5 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 80008f6: 687b ldr r3, [r7, #4]
- 80008f8: 695b ldr r3, [r3, #20]
- 80008fa: 2b04 cmp r3, #4
- 80008fc: d106 bne.n 800090c <_ZN15MotorController9set_speedEi+0x58>
- 80008fe: 687b ldr r3, [r7, #4]
- 8000900: 691b ldr r3, [r3, #16]
- 8000902: 681b ldr r3, [r3, #0]
- 8000904: f240 3216 movw r2, #790 ; 0x316
- 8000908: 639a str r2, [r3, #56] ; 0x38
- 800090a: e0ea b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 800090c: 687b ldr r3, [r7, #4]
- 800090e: 695b ldr r3, [r3, #20]
- 8000910: 2b08 cmp r3, #8
- 8000912: d106 bne.n 8000922 <_ZN15MotorController9set_speedEi+0x6e>
- 8000914: 687b ldr r3, [r7, #4]
- 8000916: 691b ldr r3, [r3, #16]
- 8000918: 681b ldr r3, [r3, #0]
- 800091a: f240 3216 movw r2, #790 ; 0x316
- 800091e: 63da str r2, [r3, #60] ; 0x3c
- 8000920: e0df b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000922: 687b ldr r3, [r7, #4]
- 8000924: 695b ldr r3, [r3, #20]
- 8000926: 2b0c cmp r3, #12
- 8000928: d106 bne.n 8000938 <_ZN15MotorController9set_speedEi+0x84>
- 800092a: 687b ldr r3, [r7, #4]
- 800092c: 691b ldr r3, [r3, #16]
- 800092e: 681b ldr r3, [r3, #0]
- 8000930: f240 3216 movw r2, #790 ; 0x316
- 8000934: 641a str r2, [r3, #64] ; 0x40
- 8000936: e0d4 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000938: 687b ldr r3, [r7, #4]
- 800093a: 695b ldr r3, [r3, #20]
- 800093c: 2b10 cmp r3, #16
- 800093e: d106 bne.n 800094e <_ZN15MotorController9set_speedEi+0x9a>
- 8000940: 687b ldr r3, [r7, #4]
- 8000942: 691b ldr r3, [r3, #16]
- 8000944: 681b ldr r3, [r3, #0]
- 8000946: f240 3216 movw r2, #790 ; 0x316
- 800094a: 659a str r2, [r3, #88] ; 0x58
- 800094c: e0c9 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 800094e: 687b ldr r3, [r7, #4]
- 8000950: 691b ldr r3, [r3, #16]
- 8000952: 681b ldr r3, [r3, #0]
- 8000954: f240 3216 movw r2, #790 ; 0x316
- 8000958: 65da str r2, [r3, #92] ; 0x5c
- 800095a: e0c2 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- else
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, duty_cycle);
- 800095c: 687b ldr r3, [r7, #4]
- 800095e: 695b ldr r3, [r3, #20]
- 8000960: 2b00 cmp r3, #0
- 8000962: d105 bne.n 8000970 <_ZN15MotorController9set_speedEi+0xbc>
- 8000964: 683a ldr r2, [r7, #0]
- 8000966: 687b ldr r3, [r7, #4]
- 8000968: 691b ldr r3, [r3, #16]
- 800096a: 681b ldr r3, [r3, #0]
- 800096c: 635a str r2, [r3, #52] ; 0x34
- 800096e: e0b8 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000970: 687b ldr r3, [r7, #4]
- 8000972: 695b ldr r3, [r3, #20]
- 8000974: 2b04 cmp r3, #4
- 8000976: d105 bne.n 8000984 <_ZN15MotorController9set_speedEi+0xd0>
- 8000978: 683a ldr r2, [r7, #0]
- 800097a: 687b ldr r3, [r7, #4]
- 800097c: 691b ldr r3, [r3, #16]
- 800097e: 681b ldr r3, [r3, #0]
- 8000980: 639a str r2, [r3, #56] ; 0x38
- 8000982: e0ae b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000984: 687b ldr r3, [r7, #4]
- 8000986: 695b ldr r3, [r3, #20]
- 8000988: 2b08 cmp r3, #8
- 800098a: d105 bne.n 8000998 <_ZN15MotorController9set_speedEi+0xe4>
- 800098c: 683a ldr r2, [r7, #0]
- 800098e: 687b ldr r3, [r7, #4]
- 8000990: 691b ldr r3, [r3, #16]
- 8000992: 681b ldr r3, [r3, #0]
- 8000994: 63da str r2, [r3, #60] ; 0x3c
- 8000996: e0a4 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000998: 687b ldr r3, [r7, #4]
- 800099a: 695b ldr r3, [r3, #20]
- 800099c: 2b0c cmp r3, #12
- 800099e: d105 bne.n 80009ac <_ZN15MotorController9set_speedEi+0xf8>
- 80009a0: 683a ldr r2, [r7, #0]
- 80009a2: 687b ldr r3, [r7, #4]
- 80009a4: 691b ldr r3, [r3, #16]
- 80009a6: 681b ldr r3, [r3, #0]
- 80009a8: 641a str r2, [r3, #64] ; 0x40
- 80009aa: e09a b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 80009ac: 687b ldr r3, [r7, #4]
- 80009ae: 695b ldr r3, [r3, #20]
- 80009b0: 2b10 cmp r3, #16
- 80009b2: d105 bne.n 80009c0 <_ZN15MotorController9set_speedEi+0x10c>
- 80009b4: 683a ldr r2, [r7, #0]
- 80009b6: 687b ldr r3, [r7, #4]
- 80009b8: 691b ldr r3, [r3, #16]
- 80009ba: 681b ldr r3, [r3, #0]
- 80009bc: 659a str r2, [r3, #88] ; 0x58
- 80009be: e090 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 80009c0: 683a ldr r2, [r7, #0]
- 80009c2: 687b ldr r3, [r7, #4]
- 80009c4: 691b ldr r3, [r3, #16]
- 80009c6: 681b ldr r3, [r3, #0]
- 80009c8: 65da str r2, [r3, #92] ; 0x5c
- 80009ca: e08a b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
-
- } else if (duty_cycle < 0){
- 80009cc: 683b ldr r3, [r7, #0]
- 80009ce: 2b00 cmp r3, #0
- 80009d0: f280 8087 bge.w 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- //set direction to backwards
- HAL_GPIO_WritePin(dir_gpio_port_, dir_pin_, GPIO_PIN_RESET);
- 80009d4: 687b ldr r3, [r7, #4]
- 80009d6: 6898 ldr r0, [r3, #8]
- 80009d8: 687b ldr r3, [r7, #4]
- 80009da: 899b ldrh r3, [r3, #12]
- 80009dc: 2200 movs r2, #0
- 80009de: 4619 mov r1, r3
- 80009e0: f004 fee2 bl 80057a8 <HAL_GPIO_WritePin>
-
- //check if duty_cycle is lower than minimum
- if (duty_cycle < -MAX_DUTY_CYCLE)
- 80009e4: 683b ldr r3, [r7, #0]
- 80009e6: 4a45 ldr r2, [pc, #276] ; (8000afc <_ZN15MotorController9set_speedEi+0x248>)
- 80009e8: 4293 cmp r3, r2
- 80009ea: da3d bge.n 8000a68 <_ZN15MotorController9set_speedEi+0x1b4>
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, MAX_DUTY_CYCLE);
- 80009ec: 687b ldr r3, [r7, #4]
- 80009ee: 695b ldr r3, [r3, #20]
- 80009f0: 2b00 cmp r3, #0
- 80009f2: d106 bne.n 8000a02 <_ZN15MotorController9set_speedEi+0x14e>
- 80009f4: 687b ldr r3, [r7, #4]
- 80009f6: 691b ldr r3, [r3, #16]
- 80009f8: 681b ldr r3, [r3, #0]
- 80009fa: f240 3216 movw r2, #790 ; 0x316
- 80009fe: 635a str r2, [r3, #52] ; 0x34
- 8000a00: e06f b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000a02: 687b ldr r3, [r7, #4]
- 8000a04: 695b ldr r3, [r3, #20]
- 8000a06: 2b04 cmp r3, #4
- 8000a08: d106 bne.n 8000a18 <_ZN15MotorController9set_speedEi+0x164>
- 8000a0a: 687b ldr r3, [r7, #4]
- 8000a0c: 691b ldr r3, [r3, #16]
- 8000a0e: 681b ldr r3, [r3, #0]
- 8000a10: f240 3216 movw r2, #790 ; 0x316
- 8000a14: 639a str r2, [r3, #56] ; 0x38
- 8000a16: e064 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000a18: 687b ldr r3, [r7, #4]
- 8000a1a: 695b ldr r3, [r3, #20]
- 8000a1c: 2b08 cmp r3, #8
- 8000a1e: d106 bne.n 8000a2e <_ZN15MotorController9set_speedEi+0x17a>
- 8000a20: 687b ldr r3, [r7, #4]
- 8000a22: 691b ldr r3, [r3, #16]
- 8000a24: 681b ldr r3, [r3, #0]
- 8000a26: f240 3216 movw r2, #790 ; 0x316
- 8000a2a: 63da str r2, [r3, #60] ; 0x3c
- 8000a2c: e059 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000a2e: 687b ldr r3, [r7, #4]
- 8000a30: 695b ldr r3, [r3, #20]
- 8000a32: 2b0c cmp r3, #12
- 8000a34: d106 bne.n 8000a44 <_ZN15MotorController9set_speedEi+0x190>
- 8000a36: 687b ldr r3, [r7, #4]
- 8000a38: 691b ldr r3, [r3, #16]
- 8000a3a: 681b ldr r3, [r3, #0]
- 8000a3c: f240 3216 movw r2, #790 ; 0x316
- 8000a40: 641a str r2, [r3, #64] ; 0x40
- 8000a42: e04e b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000a44: 687b ldr r3, [r7, #4]
- 8000a46: 695b ldr r3, [r3, #20]
- 8000a48: 2b10 cmp r3, #16
- 8000a4a: d106 bne.n 8000a5a <_ZN15MotorController9set_speedEi+0x1a6>
- 8000a4c: 687b ldr r3, [r7, #4]
- 8000a4e: 691b ldr r3, [r3, #16]
- 8000a50: 681b ldr r3, [r3, #0]
- 8000a52: f240 3216 movw r2, #790 ; 0x316
- 8000a56: 659a str r2, [r3, #88] ; 0x58
- 8000a58: e043 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000a5a: 687b ldr r3, [r7, #4]
- 8000a5c: 691b ldr r3, [r3, #16]
- 8000a5e: 681b ldr r3, [r3, #0]
- 8000a60: f240 3216 movw r2, #790 ; 0x316
- 8000a64: 65da str r2, [r3, #92] ; 0x5c
- 8000a66: e03c b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- else
- //invert sign to make duty_cycle positive
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, -duty_cycle);
- 8000a68: 687b ldr r3, [r7, #4]
- 8000a6a: 695b ldr r3, [r3, #20]
- 8000a6c: 2b00 cmp r3, #0
- 8000a6e: d106 bne.n 8000a7e <_ZN15MotorController9set_speedEi+0x1ca>
- 8000a70: 683b ldr r3, [r7, #0]
- 8000a72: 425a negs r2, r3
- 8000a74: 687b ldr r3, [r7, #4]
- 8000a76: 691b ldr r3, [r3, #16]
- 8000a78: 681b ldr r3, [r3, #0]
- 8000a7a: 635a str r2, [r3, #52] ; 0x34
- 8000a7c: e031 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000a7e: 687b ldr r3, [r7, #4]
- 8000a80: 695b ldr r3, [r3, #20]
- 8000a82: 2b04 cmp r3, #4
- 8000a84: d106 bne.n 8000a94 <_ZN15MotorController9set_speedEi+0x1e0>
- 8000a86: 683b ldr r3, [r7, #0]
- 8000a88: 425a negs r2, r3
- 8000a8a: 687b ldr r3, [r7, #4]
- 8000a8c: 691b ldr r3, [r3, #16]
- 8000a8e: 681b ldr r3, [r3, #0]
- 8000a90: 639a str r2, [r3, #56] ; 0x38
- 8000a92: e026 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000a94: 687b ldr r3, [r7, #4]
- 8000a96: 695b ldr r3, [r3, #20]
- 8000a98: 2b08 cmp r3, #8
- 8000a9a: d106 bne.n 8000aaa <_ZN15MotorController9set_speedEi+0x1f6>
- 8000a9c: 683b ldr r3, [r7, #0]
- 8000a9e: 425a negs r2, r3
- 8000aa0: 687b ldr r3, [r7, #4]
- 8000aa2: 691b ldr r3, [r3, #16]
- 8000aa4: 681b ldr r3, [r3, #0]
- 8000aa6: 63da str r2, [r3, #60] ; 0x3c
- 8000aa8: e01b b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000aaa: 687b ldr r3, [r7, #4]
- 8000aac: 695b ldr r3, [r3, #20]
- 8000aae: 2b0c cmp r3, #12
- 8000ab0: d106 bne.n 8000ac0 <_ZN15MotorController9set_speedEi+0x20c>
- 8000ab2: 683b ldr r3, [r7, #0]
- 8000ab4: 425a negs r2, r3
- 8000ab6: 687b ldr r3, [r7, #4]
- 8000ab8: 691b ldr r3, [r3, #16]
- 8000aba: 681b ldr r3, [r3, #0]
- 8000abc: 641a str r2, [r3, #64] ; 0x40
- 8000abe: e010 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000ac0: 687b ldr r3, [r7, #4]
- 8000ac2: 695b ldr r3, [r3, #20]
- 8000ac4: 2b10 cmp r3, #16
- 8000ac6: d106 bne.n 8000ad6 <_ZN15MotorController9set_speedEi+0x222>
- 8000ac8: 683b ldr r3, [r7, #0]
- 8000aca: 425a negs r2, r3
- 8000acc: 687b ldr r3, [r7, #4]
- 8000ace: 691b ldr r3, [r3, #16]
- 8000ad0: 681b ldr r3, [r3, #0]
- 8000ad2: 659a str r2, [r3, #88] ; 0x58
- 8000ad4: e005 b.n 8000ae2 <_ZN15MotorController9set_speedEi+0x22e>
- 8000ad6: 683b ldr r3, [r7, #0]
- 8000ad8: 425a negs r2, r3
- 8000ada: 687b ldr r3, [r7, #4]
- 8000adc: 691b ldr r3, [r3, #16]
- 8000ade: 681b ldr r3, [r3, #0]
- 8000ae0: 65da str r2, [r3, #92] ; 0x5c
- }
-
- HAL_GPIO_WritePin(sleep_gpio_port_, sleep_pin_, GPIO_PIN_SET);
- 8000ae2: 687b ldr r3, [r7, #4]
- 8000ae4: 6818 ldr r0, [r3, #0]
- 8000ae6: 687b ldr r3, [r7, #4]
- 8000ae8: 889b ldrh r3, [r3, #4]
- 8000aea: 2201 movs r2, #1
- 8000aec: 4619 mov r1, r3
- 8000aee: f004 fe5b bl 80057a8 <HAL_GPIO_WritePin>
-
- }
- 8000af2: bf00 nop
- 8000af4: 3708 adds r7, #8
- 8000af6: 46bd mov sp, r7
- 8000af8: bd80 pop {r7, pc}
- 8000afa: bf00 nop
- 8000afc: fffffcea .word 0xfffffcea
-
-08000b00 <_ZN15MotorController5coastEv>:
- void brake() {
- HAL_GPIO_WritePin(sleep_gpio_port_, sleep_pin_, GPIO_PIN_SET);
- __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, 0);
- }
-
- void coast() {
- 8000b00: b580 push {r7, lr}
- 8000b02: b082 sub sp, #8
- 8000b04: af00 add r7, sp, #0
- 8000b06: 6078 str r0, [r7, #4]
- HAL_GPIO_WritePin(sleep_gpio_port_, sleep_pin_, GPIO_PIN_RESET);
- 8000b08: 687b ldr r3, [r7, #4]
- 8000b0a: 6818 ldr r0, [r3, #0]
- 8000b0c: 687b ldr r3, [r7, #4]
- 8000b0e: 889b ldrh r3, [r3, #4]
- 8000b10: 2200 movs r2, #0
- 8000b12: 4619 mov r1, r3
- 8000b14: f004 fe48 bl 80057a8 <HAL_GPIO_WritePin>
- }
- 8000b18: bf00 nop
- 8000b1a: 3708 adds r7, #8
- 8000b1c: 46bd mov sp, r7
- 8000b1e: bd80 pop {r7, pc}
-
-08000b20 <_ZN3PidC1Efff>:
- float previous_error_;
-
- int min_;
- int max_;
-
- Pid(float kp, float ki, float kd) {
- 8000b20: b480 push {r7}
- 8000b22: b085 sub sp, #20
- 8000b24: af00 add r7, sp, #0
- 8000b26: 60f8 str r0, [r7, #12]
- 8000b28: ed87 0a02 vstr s0, [r7, #8]
- 8000b2c: edc7 0a01 vstr s1, [r7, #4]
- 8000b30: ed87 1a00 vstr s2, [r7]
- this->kp_ = kp;
- 8000b34: 68fb ldr r3, [r7, #12]
- 8000b36: 68ba ldr r2, [r7, #8]
- 8000b38: 601a str r2, [r3, #0]
- this->ki_ = ki;
- 8000b3a: 68fb ldr r3, [r7, #12]
- 8000b3c: 687a ldr r2, [r7, #4]
- 8000b3e: 605a str r2, [r3, #4]
- this->kd_ = kd;
- 8000b40: 68fb ldr r3, [r7, #12]
- 8000b42: 683a ldr r2, [r7, #0]
- 8000b44: 609a str r2, [r3, #8]
-
- this->error_ = 0;
- 8000b46: 68fb ldr r3, [r7, #12]
- 8000b48: f04f 0200 mov.w r2, #0
- 8000b4c: 60da str r2, [r3, #12]
- this->setpoint_ = 0;
- 8000b4e: 68fb ldr r3, [r7, #12]
- 8000b50: f04f 0200 mov.w r2, #0
- 8000b54: 611a str r2, [r3, #16]
-
- this->previous_error_ = 0;
- 8000b56: 68fb ldr r3, [r7, #12]
- 8000b58: f04f 0200 mov.w r2, #0
- 8000b5c: 619a str r2, [r3, #24]
- this->error_sum_ = 0;
- 8000b5e: 68fb ldr r3, [r7, #12]
- 8000b60: f04f 0200 mov.w r2, #0
- 8000b64: 615a str r2, [r3, #20]
-
- this->min_ = -MAX_DUTY_CYCLE;
- 8000b66: 68fb ldr r3, [r7, #12]
- 8000b68: 4a06 ldr r2, [pc, #24] ; (8000b84 <_ZN3PidC1Efff+0x64>)
- 8000b6a: 61da str r2, [r3, #28]
- this->max_ = MAX_DUTY_CYCLE;
- 8000b6c: 68fb ldr r3, [r7, #12]
- 8000b6e: f240 3216 movw r2, #790 ; 0x316
- 8000b72: 621a str r2, [r3, #32]
-
- }
- 8000b74: 68fb ldr r3, [r7, #12]
- 8000b76: 4618 mov r0, r3
- 8000b78: 3714 adds r7, #20
- 8000b7a: 46bd mov sp, r7
- 8000b7c: f85d 7b04 ldr.w r7, [sp], #4
- 8000b80: 4770 bx lr
- 8000b82: bf00 nop
- 8000b84: fffffcea .word 0xfffffcea
-
-08000b88 <_ZN3Pid6configEfff>:
-
- void config(float kp, float ki, float kd) {
- 8000b88: b480 push {r7}
- 8000b8a: b085 sub sp, #20
- 8000b8c: af00 add r7, sp, #0
- 8000b8e: 60f8 str r0, [r7, #12]
- 8000b90: ed87 0a02 vstr s0, [r7, #8]
- 8000b94: edc7 0a01 vstr s1, [r7, #4]
- 8000b98: ed87 1a00 vstr s2, [r7]
- this->kp_ = kp;
- 8000b9c: 68fb ldr r3, [r7, #12]
- 8000b9e: 68ba ldr r2, [r7, #8]
- 8000ba0: 601a str r2, [r3, #0]
- this->ki_ = ki;
- 8000ba2: 68fb ldr r3, [r7, #12]
- 8000ba4: 687a ldr r2, [r7, #4]
- 8000ba6: 605a str r2, [r3, #4]
- this->kd_ = kd;
- 8000ba8: 68fb ldr r3, [r7, #12]
- 8000baa: 683a ldr r2, [r7, #0]
- 8000bac: 609a str r2, [r3, #8]
-
- this->error_ = 0;
- 8000bae: 68fb ldr r3, [r7, #12]
- 8000bb0: f04f 0200 mov.w r2, #0
- 8000bb4: 60da str r2, [r3, #12]
- this->setpoint_ = 0;
- 8000bb6: 68fb ldr r3, [r7, #12]
- 8000bb8: f04f 0200 mov.w r2, #0
- 8000bbc: 611a str r2, [r3, #16]
-
- this->previous_error_ = 0;
- 8000bbe: 68fb ldr r3, [r7, #12]
- 8000bc0: f04f 0200 mov.w r2, #0
- 8000bc4: 619a str r2, [r3, #24]
- this->error_sum_ = 0;
- 8000bc6: 68fb ldr r3, [r7, #12]
- 8000bc8: f04f 0200 mov.w r2, #0
- 8000bcc: 615a str r2, [r3, #20]
-
- }
- 8000bce: bf00 nop
- 8000bd0: 3714 adds r7, #20
- 8000bd2: 46bd mov sp, r7
- 8000bd4: f85d 7b04 ldr.w r7, [sp], #4
- 8000bd8: 4770 bx lr
-
-08000bda <_ZN3Pid3setEf>:
-
- void set(float setpoint) {
- 8000bda: b480 push {r7}
- 8000bdc: b083 sub sp, #12
- 8000bde: af00 add r7, sp, #0
- 8000be0: 6078 str r0, [r7, #4]
- 8000be2: ed87 0a00 vstr s0, [r7]
- this->setpoint_ = setpoint;
- 8000be6: 687b ldr r3, [r7, #4]
- 8000be8: 683a ldr r2, [r7, #0]
- 8000bea: 611a str r2, [r3, #16]
- }
- 8000bec: bf00 nop
- 8000bee: 370c adds r7, #12
- 8000bf0: 46bd mov sp, r7
- 8000bf2: f85d 7b04 ldr.w r7, [sp], #4
- 8000bf6: 4770 bx lr
-
-08000bf8 <_ZN3Pid6updateEf>:
-
- int update(float measure) {
- 8000bf8: b480 push {r7}
- 8000bfa: b085 sub sp, #20
- 8000bfc: af00 add r7, sp, #0
- 8000bfe: 6078 str r0, [r7, #4]
- 8000c00: ed87 0a00 vstr s0, [r7]
-
- this->error_ = this->setpoint_ - measure;
- 8000c04: 687b ldr r3, [r7, #4]
- 8000c06: ed93 7a04 vldr s14, [r3, #16]
- 8000c0a: edd7 7a00 vldr s15, [r7]
- 8000c0e: ee77 7a67 vsub.f32 s15, s14, s15
- 8000c12: 687b ldr r3, [r7, #4]
- 8000c14: edc3 7a03 vstr s15, [r3, #12]
-
- //proportional term
- float output = this->error_ * this->kp_;
- 8000c18: 687b ldr r3, [r7, #4]
- 8000c1a: ed93 7a03 vldr s14, [r3, #12]
- 8000c1e: 687b ldr r3, [r7, #4]
- 8000c20: edd3 7a00 vldr s15, [r3]
- 8000c24: ee67 7a27 vmul.f32 s15, s14, s15
- 8000c28: edc7 7a03 vstr s15, [r7, #12]
-
- //integral term without windup
- error_sum_ += this->error_;
- 8000c2c: 687b ldr r3, [r7, #4]
- 8000c2e: ed93 7a05 vldr s14, [r3, #20]
- 8000c32: 687b ldr r3, [r7, #4]
- 8000c34: edd3 7a03 vldr s15, [r3, #12]
- 8000c38: ee77 7a27 vadd.f32 s15, s14, s15
- 8000c3c: 687b ldr r3, [r7, #4]
- 8000c3e: edc3 7a05 vstr s15, [r3, #20]
- output += error_sum_ * this->ki_;
- 8000c42: 687b ldr r3, [r7, #4]
- 8000c44: ed93 7a05 vldr s14, [r3, #20]
- 8000c48: 687b ldr r3, [r7, #4]
- 8000c4a: edd3 7a01 vldr s15, [r3, #4]
- 8000c4e: ee67 7a27 vmul.f32 s15, s14, s15
- 8000c52: ed97 7a03 vldr s14, [r7, #12]
- 8000c56: ee77 7a27 vadd.f32 s15, s14, s15
- 8000c5a: edc7 7a03 vstr s15, [r7, #12]
-
- //derivative term
- output += (this->error_ - this->previous_error_) * kd_;
- 8000c5e: 687b ldr r3, [r7, #4]
- 8000c60: ed93 7a03 vldr s14, [r3, #12]
- 8000c64: 687b ldr r3, [r7, #4]
- 8000c66: edd3 7a06 vldr s15, [r3, #24]
- 8000c6a: ee37 7a67 vsub.f32 s14, s14, s15
- 8000c6e: 687b ldr r3, [r7, #4]
- 8000c70: edd3 7a02 vldr s15, [r3, #8]
- 8000c74: ee67 7a27 vmul.f32 s15, s14, s15
- 8000c78: ed97 7a03 vldr s14, [r7, #12]
- 8000c7c: ee77 7a27 vadd.f32 s15, s14, s15
- 8000c80: edc7 7a03 vstr s15, [r7, #12]
- this->previous_error_ = this->error_;
- 8000c84: 687b ldr r3, [r7, #4]
- 8000c86: 68da ldr r2, [r3, #12]
- 8000c88: 687b ldr r3, [r7, #4]
- 8000c8a: 619a str r2, [r3, #24]
-
- int integer_output = static_cast<int> (output);
- 8000c8c: edd7 7a03 vldr s15, [r7, #12]
- 8000c90: eefd 7ae7 vcvt.s32.f32 s15, s15
- 8000c94: ee17 3a90 vmov r3, s15
- 8000c98: 60bb str r3, [r7, #8]
-// if(integer_output > this->max_)
-// integer_output = this->max_;
-// else if (integer_output < this->min_)
-// integer_output = this->min_;
-
- return integer_output;
- 8000c9a: 68bb ldr r3, [r7, #8]
-
- }
- 8000c9c: 4618 mov r0, r3
- 8000c9e: 3714 adds r7, #20
- 8000ca0: 46bd mov sp, r7
- 8000ca2: f85d 7b04 ldr.w r7, [sp], #4
- 8000ca6: 4770 bx lr
-
-08000ca8 <main>:
-
-/**
- * @brief The application entry point.
- * @retval int
- */
-int main(void) {
- 8000ca8: b5b0 push {r4, r5, r7, lr}
- 8000caa: b086 sub sp, #24
- 8000cac: af00 add r7, sp, #0
- /* USER CODE END 1 */
-
- /* MCU Configuration--------------------------------------------------------*/
-
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- 8000cae: f004 fa40 bl 8005132 <HAL_Init>
- /* USER CODE BEGIN Init */
-
- /* USER CODE END Init */
-
- /* Configure the system clock */
- SystemClock_Config();
- 8000cb2: f000 f88f bl 8000dd4 <_Z18SystemClock_Configv>
- /* USER CODE BEGIN SysInit */
-
- /* USER CODE END SysInit */
-
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- 8000cb6: f000 fb65 bl 8001384 <_ZL12MX_GPIO_Initv>
- MX_TIM2_Init();
- 8000cba: f000 f931 bl 8000f20 <_ZL12MX_TIM2_Initv>
- MX_TIM3_Init();
- 8000cbe: f000 f98d bl 8000fdc <_ZL12MX_TIM3_Initv>
- MX_TIM4_Init();
- 8000cc2: f000 f9e9 bl 8001098 <_ZL12MX_TIM4_Initv>
- MX_TIM5_Init();
- 8000cc6: f000 fa87 bl 80011d8 <_ZL12MX_TIM5_Initv>
- MX_USART6_UART_Init();
- 8000cca: f000 fb27 bl 800131c <_ZL19MX_USART6_UART_Initv>
- MX_TIM6_Init();
- 8000cce: f000 fae3 bl 8001298 <_ZL12MX_TIM6_Initv>
-
- /* Initialize interrupts */
- MX_NVIC_Init();
- 8000cd2: f000 f909 bl 8000ee8 <_ZL12MX_NVIC_Initv>
- /* USER CODE BEGIN 2 */
-
- left_encoder.Setup();
- 8000cd6: 4828 ldr r0, [pc, #160] ; (8000d78 <main+0xd0>)
- 8000cd8: f7ff fc68 bl 80005ac <_ZN7Encoder5SetupEv>
- right_encoder.Setup();
- 8000cdc: 4827 ldr r0, [pc, #156] ; (8000d7c <main+0xd4>)
- 8000cde: f7ff fc65 bl 80005ac <_ZN7Encoder5SetupEv>
-
- left_motor.setup();
- 8000ce2: 4827 ldr r0, [pc, #156] ; (8000d80 <main+0xd8>)
- 8000ce4: f7ff fdd5 bl 8000892 <_ZN15MotorController5setupEv>
- right_motor.setup();
- 8000ce8: 4826 ldr r0, [pc, #152] ; (8000d84 <main+0xdc>)
- 8000cea: f7ff fdd2 bl 8000892 <_ZN15MotorController5setupEv>
- left_motor.coast();
- 8000cee: 4824 ldr r0, [pc, #144] ; (8000d80 <main+0xd8>)
- 8000cf0: f7ff ff06 bl 8000b00 <_ZN15MotorController5coastEv>
- right_motor.coast();
- 8000cf4: 4823 ldr r0, [pc, #140] ; (8000d84 <main+0xdc>)
- 8000cf6: f7ff ff03 bl 8000b00 <_ZN15MotorController5coastEv>
-
- left_pid.config(180, 200, 0);
- 8000cfa: ed9f 1a23 vldr s2, [pc, #140] ; 8000d88 <main+0xe0>
- 8000cfe: eddf 0a23 vldr s1, [pc, #140] ; 8000d8c <main+0xe4>
- 8000d02: ed9f 0a23 vldr s0, [pc, #140] ; 8000d90 <main+0xe8>
- 8000d06: 4823 ldr r0, [pc, #140] ; (8000d94 <main+0xec>)
- 8000d08: f7ff ff3e bl 8000b88 <_ZN3Pid6configEfff>
- right_pid.config(185, 195, 0);
- 8000d0c: ed9f 1a1e vldr s2, [pc, #120] ; 8000d88 <main+0xe0>
- 8000d10: eddf 0a21 vldr s1, [pc, #132] ; 8000d98 <main+0xf0>
- 8000d14: ed9f 0a21 vldr s0, [pc, #132] ; 8000d9c <main+0xf4>
- 8000d18: 4821 ldr r0, [pc, #132] ; (8000da0 <main+0xf8>)
- 8000d1a: f7ff ff35 bl 8000b88 <_ZN3Pid6configEfff>
- cross_pid.config(50, 20, 0);
- 8000d1e: ed9f 1a1a vldr s2, [pc, #104] ; 8000d88 <main+0xe0>
- 8000d22: eef3 0a04 vmov.f32 s1, #52 ; 0x41a00000 20.0
- 8000d26: ed9f 0a1f vldr s0, [pc, #124] ; 8000da4 <main+0xfc>
- 8000d2a: 481f ldr r0, [pc, #124] ; (8000da8 <main+0x100>)
- 8000d2c: f7ff ff2c bl 8000b88 <_ZN3Pid6configEfff>
-
- tx_buffer = (uint8_t*) &output_msg;
- 8000d30: 4b1e ldr r3, [pc, #120] ; (8000dac <main+0x104>)
- 8000d32: 4a1f ldr r2, [pc, #124] ; (8000db0 <main+0x108>)
- 8000d34: 601a str r2, [r3, #0]
- rx_buffer = (uint8_t*) &input_msg;
- 8000d36: 4b1f ldr r3, [pc, #124] ; (8000db4 <main+0x10c>)
- 8000d38: 4a1f ldr r2, [pc, #124] ; (8000db8 <main+0x110>)
- 8000d3a: 601a str r2, [r3, #0]
-
- vel_output.angular_vel = 1;
- 8000d3c: 4b1f ldr r3, [pc, #124] ; (8000dbc <main+0x114>)
- 8000d3e: f04f 527e mov.w r2, #1065353216 ; 0x3f800000
- 8000d42: 605a str r2, [r3, #4]
- vel_output.linear_vel = 2;
- 8000d44: 4b1d ldr r3, [pc, #116] ; (8000dbc <main+0x114>)
- 8000d46: f04f 4280 mov.w r2, #1073741824 ; 0x40000000
- 8000d4a: 601a str r2, [r3, #0]
- stream_tx = pb_ostream_from_buffer(buffer_tx, sizeof(buffer_tx));
- 8000d4c: 4c1c ldr r4, [pc, #112] ; (8000dc0 <main+0x118>)
- 8000d4e: 463b mov r3, r7
- 8000d50: 220a movs r2, #10
- 8000d52: 491c ldr r1, [pc, #112] ; (8000dc4 <main+0x11c>)
- 8000d54: 4618 mov r0, r3
- 8000d56: f002 ff11 bl 8003b7c <pb_ostream_from_buffer>
- 8000d5a: 4625 mov r5, r4
- 8000d5c: 463c mov r4, r7
- 8000d5e: cc0f ldmia r4!, {r0, r1, r2, r3}
- 8000d60: c50f stmia r5!, {r0, r1, r2, r3}
- 8000d62: 6823 ldr r3, [r4, #0]
- 8000d64: 602b str r3, [r5, #0]
-
- //Enables UART RX interrupt
- HAL_UART_Receive_IT(&huart6, buffer_rx, 10);
- 8000d66: 220a movs r2, #10
- 8000d68: 4917 ldr r1, [pc, #92] ; (8000dc8 <main+0x120>)
- 8000d6a: 4818 ldr r0, [pc, #96] ; (8000dcc <main+0x124>)
- 8000d6c: f006 ff7e bl 8007c6c <HAL_UART_Receive_IT>
- HAL_TIM_Base_Start_IT(&htim6);
- 8000d70: 4817 ldr r0, [pc, #92] ; (8000dd0 <main+0x128>)
- 8000d72: f005 fddd bl 8006930 <HAL_TIM_Base_Start_IT>
- /* USER CODE END 2 */
-
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1) {
- 8000d76: e7fe b.n 8000d76 <main+0xce>
- 8000d78: 20000204 .word 0x20000204
- 8000d7c: 200001ec .word 0x200001ec
- 8000d80: 200002cc .word 0x200002cc
- 8000d84: 200002b4 .word 0x200002b4
- 8000d88: 00000000 .word 0x00000000
- 8000d8c: 43480000 .word 0x43480000
- 8000d90: 43340000 .word 0x43340000
- 8000d94: 20000234 .word 0x20000234
- 8000d98: 43430000 .word 0x43430000
- 8000d9c: 43390000 .word 0x43390000
- 8000da0: 20000258 .word 0x20000258
- 8000da4: 42480000 .word 0x42480000
- 8000da8: 2000027c .word 0x2000027c
- 8000dac: 200002e4 .word 0x200002e4
- 8000db0: 200002f4 .word 0x200002f4
- 8000db4: 200002e8 .word 0x200002e8
- 8000db8: 200002ec .word 0x200002ec
- 8000dbc: 20000308 .word 0x20000308
- 8000dc0: 2000031c .word 0x2000031c
- 8000dc4: 20000310 .word 0x20000310
- 8000dc8: 20000338 .word 0x20000338
- 8000dcc: 2000016c .word 0x2000016c
- 8000dd0: 2000012c .word 0x2000012c
-
-08000dd4 <_Z18SystemClock_Configv>:
-
-/**
- * @brief System Clock Configuration
- * @retval Nonewheel_circumference_
- */
-void SystemClock_Config(void) {
- 8000dd4: b580 push {r7, lr}
- 8000dd6: b0b8 sub sp, #224 ; 0xe0
- 8000dd8: af00 add r7, sp, #0
- RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
- 8000dda: f107 03ac add.w r3, r7, #172 ; 0xac
- 8000dde: 2234 movs r2, #52 ; 0x34
- 8000de0: 2100 movs r1, #0
- 8000de2: 4618 mov r0, r3
- 8000de4: f007 fdea bl 80089bc <memset>
- RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
- 8000de8: f107 0398 add.w r3, r7, #152 ; 0x98
- 8000dec: 2200 movs r2, #0
- 8000dee: 601a str r2, [r3, #0]
- 8000df0: 605a str r2, [r3, #4]
- 8000df2: 609a str r2, [r3, #8]
- 8000df4: 60da str r2, [r3, #12]
- 8000df6: 611a str r2, [r3, #16]
- RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
- 8000df8: f107 0308 add.w r3, r7, #8
- 8000dfc: 2290 movs r2, #144 ; 0x90
- 8000dfe: 2100 movs r1, #0
- 8000e00: 4618 mov r0, r3
- 8000e02: f007 fddb bl 80089bc <memset>
-
- /** Configure the main internal regulator output voltage
- */
- __HAL_RCC_PWR_CLK_ENABLE();
- 8000e06: 4b36 ldr r3, [pc, #216] ; (8000ee0 <_Z18SystemClock_Configv+0x10c>)
- 8000e08: 6c1b ldr r3, [r3, #64] ; 0x40
- 8000e0a: 4a35 ldr r2, [pc, #212] ; (8000ee0 <_Z18SystemClock_Configv+0x10c>)
- 8000e0c: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
- 8000e10: 6413 str r3, [r2, #64] ; 0x40
- 8000e12: 4b33 ldr r3, [pc, #204] ; (8000ee0 <_Z18SystemClock_Configv+0x10c>)
- 8000e14: 6c1b ldr r3, [r3, #64] ; 0x40
- 8000e16: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
- 8000e1a: 607b str r3, [r7, #4]
- 8000e1c: 687b ldr r3, [r7, #4]
- __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
- 8000e1e: 4b31 ldr r3, [pc, #196] ; (8000ee4 <_Z18SystemClock_Configv+0x110>)
- 8000e20: 681b ldr r3, [r3, #0]
- 8000e22: f423 4340 bic.w r3, r3, #49152 ; 0xc000
- 8000e26: 4a2f ldr r2, [pc, #188] ; (8000ee4 <_Z18SystemClock_Configv+0x110>)
- 8000e28: f443 4380 orr.w r3, r3, #16384 ; 0x4000
- 8000e2c: 6013 str r3, [r2, #0]
- 8000e2e: 4b2d ldr r3, [pc, #180] ; (8000ee4 <_Z18SystemClock_Configv+0x110>)
- 8000e30: 681b ldr r3, [r3, #0]
- 8000e32: f403 4340 and.w r3, r3, #49152 ; 0xc000
- 8000e36: 603b str r3, [r7, #0]
- 8000e38: 683b ldr r3, [r7, #0]
- /** Initializes the CPU, AHB and APB busses clocks
- */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
- 8000e3a: 2302 movs r3, #2
- 8000e3c: f8c7 30ac str.w r3, [r7, #172] ; 0xac
- RCC_OscInitStruct.HSIState = RCC_HSI_ON;
- 8000e40: 2301 movs r3, #1
- 8000e42: f8c7 30b8 str.w r3, [r7, #184] ; 0xb8
- RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
- 8000e46: 2310 movs r3, #16
- 8000e48: f8c7 30bc str.w r3, [r7, #188] ; 0xbc
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
- 8000e4c: 2300 movs r3, #0
- 8000e4e: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4
- if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
- 8000e52: f107 03ac add.w r3, r7, #172 ; 0xac
- 8000e56: 4618 mov r0, r3
- 8000e58: f004 fcd8 bl 800580c <HAL_RCC_OscConfig>
- 8000e5c: 4603 mov r3, r0
- 8000e5e: 2b00 cmp r3, #0
- 8000e60: bf14 ite ne
- 8000e62: 2301 movne r3, #1
- 8000e64: 2300 moveq r3, #0
- 8000e66: b2db uxtb r3, r3
- 8000e68: 2b00 cmp r3, #0
- 8000e6a: d001 beq.n 8000e70 <_Z18SystemClock_Configv+0x9c>
- Error_Handler();
- 8000e6c: f000 fcdc bl 8001828 <Error_Handler>
- }
- /** Initializes the CPU, AHB and APB busses clocks
- */
- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
- 8000e70: 230f movs r3, #15
- 8000e72: f8c7 3098 str.w r3, [r7, #152] ; 0x98
- | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
- 8000e76: 2300 movs r3, #0
- 8000e78: f8c7 309c str.w r3, [r7, #156] ; 0x9c
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- 8000e7c: 2300 movs r3, #0
- 8000e7e: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
- 8000e82: 2300 movs r3, #0
- 8000e84: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
- 8000e88: 2300 movs r3, #0
- 8000e8a: f8c7 30a8 str.w r3, [r7, #168] ; 0xa8
-
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {
- 8000e8e: f107 0398 add.w r3, r7, #152 ; 0x98
- 8000e92: 2100 movs r1, #0
- 8000e94: 4618 mov r0, r3
- 8000e96: f004 ff2b bl 8005cf0 <HAL_RCC_ClockConfig>
- 8000e9a: 4603 mov r3, r0
- 8000e9c: 2b00 cmp r3, #0
- 8000e9e: bf14 ite ne
- 8000ea0: 2301 movne r3, #1
- 8000ea2: 2300 moveq r3, #0
- 8000ea4: b2db uxtb r3, r3
- 8000ea6: 2b00 cmp r3, #0
- 8000ea8: d001 beq.n 8000eae <_Z18SystemClock_Configv+0xda>
- Error_Handler();
- 8000eaa: f000 fcbd bl 8001828 <Error_Handler>
- }
- PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6;
- 8000eae: f44f 6300 mov.w r3, #2048 ; 0x800
- 8000eb2: 60bb str r3, [r7, #8]
- PeriphClkInitStruct.Usart6ClockSelection = RCC_USART6CLKSOURCE_PCLK2;
- 8000eb4: 2300 movs r3, #0
- 8000eb6: 663b str r3, [r7, #96] ; 0x60
- if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
- 8000eb8: f107 0308 add.w r3, r7, #8
- 8000ebc: 4618 mov r0, r3
- 8000ebe: f005 f8e5 bl 800608c <HAL_RCCEx_PeriphCLKConfig>
- 8000ec2: 4603 mov r3, r0
- 8000ec4: 2b00 cmp r3, #0
- 8000ec6: bf14 ite ne
- 8000ec8: 2301 movne r3, #1
- 8000eca: 2300 moveq r3, #0
- 8000ecc: b2db uxtb r3, r3
- 8000ece: 2b00 cmp r3, #0
- 8000ed0: d001 beq.n 8000ed6 <_Z18SystemClock_Configv+0x102>
- Error_Handler();
- 8000ed2: f000 fca9 bl 8001828 <Error_Handler>
- }
-}
- 8000ed6: bf00 nop
- 8000ed8: 37e0 adds r7, #224 ; 0xe0
- 8000eda: 46bd mov sp, r7
- 8000edc: bd80 pop {r7, pc}
- 8000ede: bf00 nop
- 8000ee0: 40023800 .word 0x40023800
- 8000ee4: 40007000 .word 0x40007000
-
-08000ee8 <_ZL12MX_NVIC_Initv>:
-
-/**
- * @brief NVIC Configuration.
- * @retval None
- */
-static void MX_NVIC_Init(void) {
- 8000ee8: b580 push {r7, lr}
- 8000eea: af00 add r7, sp, #0
- /* TIM3_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(TIM3_IRQn, 2, 1);
- 8000eec: 2201 movs r2, #1
- 8000eee: 2102 movs r1, #2
- 8000ef0: 201d movs r0, #29
- 8000ef2: f004 fa56 bl 80053a2 <HAL_NVIC_SetPriority>
- HAL_NVIC_EnableIRQ(TIM3_IRQn);
- 8000ef6: 201d movs r0, #29
- 8000ef8: f004 fa6f bl 80053da <HAL_NVIC_EnableIRQ>
- /* TIM6_DAC_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 2, 2);
- 8000efc: 2202 movs r2, #2
- 8000efe: 2102 movs r1, #2
- 8000f00: 2036 movs r0, #54 ; 0x36
- 8000f02: f004 fa4e bl 80053a2 <HAL_NVIC_SetPriority>
- HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
- 8000f06: 2036 movs r0, #54 ; 0x36
- 8000f08: f004 fa67 bl 80053da <HAL_NVIC_EnableIRQ>
- /* USART6_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(USART6_IRQn, 1, 0);
- 8000f0c: 2200 movs r2, #0
- 8000f0e: 2101 movs r1, #1
- 8000f10: 2047 movs r0, #71 ; 0x47
- 8000f12: f004 fa46 bl 80053a2 <HAL_NVIC_SetPriority>
- HAL_NVIC_EnableIRQ(USART6_IRQn);
- 8000f16: 2047 movs r0, #71 ; 0x47
- 8000f18: f004 fa5f bl 80053da <HAL_NVIC_EnableIRQ>
-}
- 8000f1c: bf00 nop
- 8000f1e: bd80 pop {r7, pc}
-
-08000f20 <_ZL12MX_TIM2_Initv>:
-/**
- * @brief TIM2 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_TIM2_Init(void) {
- 8000f20: b580 push {r7, lr}
- 8000f22: b08c sub sp, #48 ; 0x30
- 8000f24: af00 add r7, sp, #0
-
- /* USER CODE BEGIN TIM2_Init 0 */
-
- /* USER CODE END TIM2_Init 0 */
-
- TIM_Encoder_InitTypeDef sConfig = { 0 };
- 8000f26: f107 030c add.w r3, r7, #12
- 8000f2a: 2224 movs r2, #36 ; 0x24
- 8000f2c: 2100 movs r1, #0
- 8000f2e: 4618 mov r0, r3
- 8000f30: f007 fd44 bl 80089bc <memset>
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };
- 8000f34: 463b mov r3, r7
- 8000f36: 2200 movs r2, #0
- 8000f38: 601a str r2, [r3, #0]
- 8000f3a: 605a str r2, [r3, #4]
- 8000f3c: 609a str r2, [r3, #8]
-
- /* USER CODE BEGIN TIM2_Init 1 */
-
- /* USER CODE END TIM2_Init 1 */
- htim2.Instance = TIM2;
- 8000f3e: 4b26 ldr r3, [pc, #152] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000f40: f04f 4280 mov.w r2, #1073741824 ; 0x40000000
- 8000f44: 601a str r2, [r3, #0]
- htim2.Init.Prescaler = 0;
- 8000f46: 4b24 ldr r3, [pc, #144] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000f48: 2200 movs r2, #0
- 8000f4a: 605a str r2, [r3, #4]
- htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
- 8000f4c: 4b22 ldr r3, [pc, #136] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000f4e: 2200 movs r2, #0
- 8000f50: 609a str r2, [r3, #8]
- htim2.Init.Period = 4294967295;
- 8000f52: 4b21 ldr r3, [pc, #132] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000f54: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff
- 8000f58: 60da str r2, [r3, #12]
- htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- 8000f5a: 4b1f ldr r3, [pc, #124] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000f5c: 2200 movs r2, #0
- 8000f5e: 611a str r2, [r3, #16]
- htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- 8000f60: 4b1d ldr r3, [pc, #116] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000f62: 2200 movs r2, #0
- 8000f64: 619a str r2, [r3, #24]
- sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
- 8000f66: 2303 movs r3, #3
- 8000f68: 60fb str r3, [r7, #12]
- sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
- 8000f6a: 2300 movs r3, #0
- 8000f6c: 613b str r3, [r7, #16]
- sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
- 8000f6e: 2301 movs r3, #1
- 8000f70: 617b str r3, [r7, #20]
- sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
- 8000f72: 2300 movs r3, #0
- 8000f74: 61bb str r3, [r7, #24]
- sConfig.IC1Filter = 0;
- 8000f76: 2300 movs r3, #0
- 8000f78: 61fb str r3, [r7, #28]
- sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
- 8000f7a: 2300 movs r3, #0
- 8000f7c: 623b str r3, [r7, #32]
- sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
- 8000f7e: 2301 movs r3, #1
- 8000f80: 627b str r3, [r7, #36] ; 0x24
- sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
- 8000f82: 2300 movs r3, #0
- 8000f84: 62bb str r3, [r7, #40] ; 0x28
- sConfig.IC2Filter = 0;
- 8000f86: 2300 movs r3, #0
- 8000f88: 62fb str r3, [r7, #44] ; 0x2c
- if (HAL_TIM_Encoder_Init(&htim2, &sConfig) != HAL_OK) {
- 8000f8a: f107 030c add.w r3, r7, #12
- 8000f8e: 4619 mov r1, r3
- 8000f90: 4811 ldr r0, [pc, #68] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000f92: f005 fd71 bl 8006a78 <HAL_TIM_Encoder_Init>
- 8000f96: 4603 mov r3, r0
- 8000f98: 2b00 cmp r3, #0
- 8000f9a: bf14 ite ne
- 8000f9c: 2301 movne r3, #1
- 8000f9e: 2300 moveq r3, #0
- 8000fa0: b2db uxtb r3, r3
- 8000fa2: 2b00 cmp r3, #0
- 8000fa4: d001 beq.n 8000faa <_ZL12MX_TIM2_Initv+0x8a>
- Error_Handler();
- 8000fa6: f000 fc3f bl 8001828 <Error_Handler>
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- 8000faa: 2300 movs r3, #0
- 8000fac: 603b str r3, [r7, #0]
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- 8000fae: 2300 movs r3, #0
- 8000fb0: 60bb str r3, [r7, #8]
- if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) {
- 8000fb2: 463b mov r3, r7
- 8000fb4: 4619 mov r1, r3
- 8000fb6: 4808 ldr r0, [pc, #32] ; (8000fd8 <_ZL12MX_TIM2_Initv+0xb8>)
- 8000fb8: f006 fcfe bl 80079b8 <HAL_TIMEx_MasterConfigSynchronization>
- 8000fbc: 4603 mov r3, r0
- 8000fbe: 2b00 cmp r3, #0
- 8000fc0: bf14 ite ne
- 8000fc2: 2301 movne r3, #1
- 8000fc4: 2300 moveq r3, #0
- 8000fc6: b2db uxtb r3, r3
- 8000fc8: 2b00 cmp r3, #0
- 8000fca: d001 beq.n 8000fd0 <_ZL12MX_TIM2_Initv+0xb0>
- Error_Handler();
- 8000fcc: f000 fc2c bl 8001828 <Error_Handler>
- }
- /* USER CODE BEGIN TIM2_Init 2 */
-
- /* USER CODE END TIM2_Init 2 */
-
-}
- 8000fd0: bf00 nop
- 8000fd2: 3730 adds r7, #48 ; 0x30
- 8000fd4: 46bd mov sp, r7
- 8000fd6: bd80 pop {r7, pc}
- 8000fd8: 2000002c .word 0x2000002c
-
-08000fdc <_ZL12MX_TIM3_Initv>:
-/**
- * @brief TIM3 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_TIM3_Init(void) {
- 8000fdc: b580 push {r7, lr}
- 8000fde: b088 sub sp, #32
- 8000fe0: af00 add r7, sp, #0
-
- /* USER CODE BEGIN TIM3_Init 0 */
-
- /* USER CODE END TIM3_Init 0 */
-
- TIM_ClockConfigTypeDef sClockSourceConfig = { 0 };
- 8000fe2: f107 0310 add.w r3, r7, #16
- 8000fe6: 2200 movs r2, #0
- 8000fe8: 601a str r2, [r3, #0]
- 8000fea: 605a str r2, [r3, #4]
- 8000fec: 609a str r2, [r3, #8]
- 8000fee: 60da str r2, [r3, #12]
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };
- 8000ff0: 1d3b adds r3, r7, #4
- 8000ff2: 2200 movs r2, #0
- 8000ff4: 601a str r2, [r3, #0]
- 8000ff6: 605a str r2, [r3, #4]
- 8000ff8: 609a str r2, [r3, #8]
-
- /* USER CODE BEGIN TIM3_Init 1 */
-
- /* USER CODE END TIM3_Init 1 */
- htim3.Instance = TIM3;
- 8000ffa: 4b25 ldr r3, [pc, #148] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 8000ffc: 4a25 ldr r2, [pc, #148] ; (8001094 <_ZL12MX_TIM3_Initv+0xb8>)
- 8000ffe: 601a str r2, [r3, #0]
- htim3.Init.Prescaler = 999;
- 8001000: 4b23 ldr r3, [pc, #140] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 8001002: f240 32e7 movw r2, #999 ; 0x3e7
- 8001006: 605a str r2, [r3, #4]
- htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
- 8001008: 4b21 ldr r3, [pc, #132] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 800100a: 2200 movs r2, #0
- 800100c: 609a str r2, [r3, #8]
- htim3.Init.Period = 159;
- 800100e: 4b20 ldr r3, [pc, #128] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 8001010: 229f movs r2, #159 ; 0x9f
- 8001012: 60da str r2, [r3, #12]
- htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- 8001014: 4b1e ldr r3, [pc, #120] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 8001016: 2200 movs r2, #0
- 8001018: 611a str r2, [r3, #16]
- htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- 800101a: 4b1d ldr r3, [pc, #116] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 800101c: 2200 movs r2, #0
- 800101e: 619a str r2, [r3, #24]
- if (HAL_TIM_Base_Init(&htim3) != HAL_OK) {
- 8001020: 481b ldr r0, [pc, #108] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 8001022: f005 fc59 bl 80068d8 <HAL_TIM_Base_Init>
- 8001026: 4603 mov r3, r0
- 8001028: 2b00 cmp r3, #0
- 800102a: bf14 ite ne
- 800102c: 2301 movne r3, #1
- 800102e: 2300 moveq r3, #0
- 8001030: b2db uxtb r3, r3
- 8001032: 2b00 cmp r3, #0
- 8001034: d001 beq.n 800103a <_ZL12MX_TIM3_Initv+0x5e>
- Error_Handler();
- 8001036: f000 fbf7 bl 8001828 <Error_Handler>
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- 800103a: f44f 5380 mov.w r3, #4096 ; 0x1000
- 800103e: 613b str r3, [r7, #16]
- if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) {
- 8001040: f107 0310 add.w r3, r7, #16
- 8001044: 4619 mov r1, r3
- 8001046: 4812 ldr r0, [pc, #72] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 8001048: f006 f816 bl 8007078 <HAL_TIM_ConfigClockSource>
- 800104c: 4603 mov r3, r0
- 800104e: 2b00 cmp r3, #0
- 8001050: bf14 ite ne
- 8001052: 2301 movne r3, #1
- 8001054: 2300 moveq r3, #0
- 8001056: b2db uxtb r3, r3
- 8001058: 2b00 cmp r3, #0
- 800105a: d001 beq.n 8001060 <_ZL12MX_TIM3_Initv+0x84>
- Error_Handler();
- 800105c: f000 fbe4 bl 8001828 <Error_Handler>
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- 8001060: 2300 movs r3, #0
- 8001062: 607b str r3, [r7, #4]
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- 8001064: 2300 movs r3, #0
- 8001066: 60fb str r3, [r7, #12]
- if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) {
- 8001068: 1d3b adds r3, r7, #4
- 800106a: 4619 mov r1, r3
- 800106c: 4808 ldr r0, [pc, #32] ; (8001090 <_ZL12MX_TIM3_Initv+0xb4>)
- 800106e: f006 fca3 bl 80079b8 <HAL_TIMEx_MasterConfigSynchronization>
- 8001072: 4603 mov r3, r0
- 8001074: 2b00 cmp r3, #0
- 8001076: bf14 ite ne
- 8001078: 2301 movne r3, #1
- 800107a: 2300 moveq r3, #0
- 800107c: b2db uxtb r3, r3
- 800107e: 2b00 cmp r3, #0
- 8001080: d001 beq.n 8001086 <_ZL12MX_TIM3_Initv+0xaa>
- Error_Handler();
- 8001082: f000 fbd1 bl 8001828 <Error_Handler>
- }
- /* USER CODE BEGIN TIM3_Init 2 */
-
- /* USER CODE END TIM3_Init 2 */
-
-}
- 8001086: bf00 nop
- 8001088: 3720 adds r7, #32
- 800108a: 46bd mov sp, r7
- 800108c: bd80 pop {r7, pc}
- 800108e: bf00 nop
- 8001090: 2000006c .word 0x2000006c
- 8001094: 40000400 .word 0x40000400
-
-08001098 <_ZL12MX_TIM4_Initv>:
-/**
- * @brief TIM4 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_TIM4_Init(void) {
- 8001098: b580 push {r7, lr}
- 800109a: b08e sub sp, #56 ; 0x38
- 800109c: af00 add r7, sp, #0
-
- /* USER CODE BEGIN TIM4_Init 0 */
-
- /* USER CODE END TIM4_Init 0 */
-
- TIM_ClockConfigTypeDef sClockSourceConfig = { 0 };
- 800109e: f107 0328 add.w r3, r7, #40 ; 0x28
- 80010a2: 2200 movs r2, #0
- 80010a4: 601a str r2, [r3, #0]
- 80010a6: 605a str r2, [r3, #4]
- 80010a8: 609a str r2, [r3, #8]
- 80010aa: 60da str r2, [r3, #12]
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };
- 80010ac: f107 031c add.w r3, r7, #28
- 80010b0: 2200 movs r2, #0
- 80010b2: 601a str r2, [r3, #0]
- 80010b4: 605a str r2, [r3, #4]
- 80010b6: 609a str r2, [r3, #8]
- TIM_OC_InitTypeDef sConfigOC = { 0 };
- 80010b8: 463b mov r3, r7
- 80010ba: 2200 movs r2, #0
- 80010bc: 601a str r2, [r3, #0]
- 80010be: 605a str r2, [r3, #4]
- 80010c0: 609a str r2, [r3, #8]
- 80010c2: 60da str r2, [r3, #12]
- 80010c4: 611a str r2, [r3, #16]
- 80010c6: 615a str r2, [r3, #20]
- 80010c8: 619a str r2, [r3, #24]
-
- /* USER CODE BEGIN TIM4_Init 1 */
-
- /* USER CODE END TIM4_Init 1 */
- htim4.Instance = TIM4;
- 80010ca: 4b41 ldr r3, [pc, #260] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80010cc: 4a41 ldr r2, [pc, #260] ; (80011d4 <_ZL12MX_TIM4_Initv+0x13c>)
- 80010ce: 601a str r2, [r3, #0]
- htim4.Init.Prescaler = 0;
- 80010d0: 4b3f ldr r3, [pc, #252] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80010d2: 2200 movs r2, #0
- 80010d4: 605a str r2, [r3, #4]
- htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
- 80010d6: 4b3e ldr r3, [pc, #248] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80010d8: 2200 movs r2, #0
- 80010da: 609a str r2, [r3, #8]
- htim4.Init.Period = 799;
- 80010dc: 4b3c ldr r3, [pc, #240] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80010de: f240 321f movw r2, #799 ; 0x31f
- 80010e2: 60da str r2, [r3, #12]
- htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- 80010e4: 4b3a ldr r3, [pc, #232] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80010e6: 2200 movs r2, #0
- 80010e8: 611a str r2, [r3, #16]
- htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- 80010ea: 4b39 ldr r3, [pc, #228] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80010ec: 2200 movs r2, #0
- 80010ee: 619a str r2, [r3, #24]
- if (HAL_TIM_Base_Init(&htim4) != HAL_OK) {
- 80010f0: 4837 ldr r0, [pc, #220] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80010f2: f005 fbf1 bl 80068d8 <HAL_TIM_Base_Init>
- 80010f6: 4603 mov r3, r0
- 80010f8: 2b00 cmp r3, #0
- 80010fa: bf14 ite ne
- 80010fc: 2301 movne r3, #1
- 80010fe: 2300 moveq r3, #0
- 8001100: b2db uxtb r3, r3
- 8001102: 2b00 cmp r3, #0
- 8001104: d001 beq.n 800110a <_ZL12MX_TIM4_Initv+0x72>
- Error_Handler();
- 8001106: f000 fb8f bl 8001828 <Error_Handler>
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- 800110a: f44f 5380 mov.w r3, #4096 ; 0x1000
- 800110e: 62bb str r3, [r7, #40] ; 0x28
- if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) {
- 8001110: f107 0328 add.w r3, r7, #40 ; 0x28
- 8001114: 4619 mov r1, r3
- 8001116: 482e ldr r0, [pc, #184] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 8001118: f005 ffae bl 8007078 <HAL_TIM_ConfigClockSource>
- 800111c: 4603 mov r3, r0
- 800111e: 2b00 cmp r3, #0
- 8001120: bf14 ite ne
- 8001122: 2301 movne r3, #1
- 8001124: 2300 moveq r3, #0
- 8001126: b2db uxtb r3, r3
- 8001128: 2b00 cmp r3, #0
- 800112a: d001 beq.n 8001130 <_ZL12MX_TIM4_Initv+0x98>
- Error_Handler();
- 800112c: f000 fb7c bl 8001828 <Error_Handler>
- }
- if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) {
- 8001130: 4827 ldr r0, [pc, #156] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 8001132: f005 fc27 bl 8006984 <HAL_TIM_PWM_Init>
- 8001136: 4603 mov r3, r0
- 8001138: 2b00 cmp r3, #0
- 800113a: bf14 ite ne
- 800113c: 2301 movne r3, #1
- 800113e: 2300 moveq r3, #0
- 8001140: b2db uxtb r3, r3
- 8001142: 2b00 cmp r3, #0
- 8001144: d001 beq.n 800114a <_ZL12MX_TIM4_Initv+0xb2>
- Error_Handler();
- 8001146: f000 fb6f bl 8001828 <Error_Handler>
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- 800114a: 2300 movs r3, #0
- 800114c: 61fb str r3, [r7, #28]
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- 800114e: 2300 movs r3, #0
- 8001150: 627b str r3, [r7, #36] ; 0x24
- if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) {
- 8001152: f107 031c add.w r3, r7, #28
- 8001156: 4619 mov r1, r3
- 8001158: 481d ldr r0, [pc, #116] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 800115a: f006 fc2d bl 80079b8 <HAL_TIMEx_MasterConfigSynchronization>
- 800115e: 4603 mov r3, r0
- 8001160: 2b00 cmp r3, #0
- 8001162: bf14 ite ne
- 8001164: 2301 movne r3, #1
- 8001166: 2300 moveq r3, #0
- 8001168: b2db uxtb r3, r3
- 800116a: 2b00 cmp r3, #0
- 800116c: d001 beq.n 8001172 <_ZL12MX_TIM4_Initv+0xda>
- Error_Handler();
- 800116e: f000 fb5b bl 8001828 <Error_Handler>
- }
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- 8001172: 2360 movs r3, #96 ; 0x60
- 8001174: 603b str r3, [r7, #0]
- sConfigOC.Pulse = 0;
- 8001176: 2300 movs r3, #0
- 8001178: 607b str r3, [r7, #4]
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
- 800117a: 2300 movs r3, #0
- 800117c: 60bb str r3, [r7, #8]
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- 800117e: 2300 movs r3, #0
- 8001180: 613b str r3, [r7, #16]
- if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) {
- 8001182: 463b mov r3, r7
- 8001184: 2208 movs r2, #8
- 8001186: 4619 mov r1, r3
- 8001188: 4811 ldr r0, [pc, #68] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 800118a: f005 fe5d bl 8006e48 <HAL_TIM_PWM_ConfigChannel>
- 800118e: 4603 mov r3, r0
- 8001190: 2b00 cmp r3, #0
- 8001192: bf14 ite ne
- 8001194: 2301 movne r3, #1
- 8001196: 2300 moveq r3, #0
- 8001198: b2db uxtb r3, r3
- 800119a: 2b00 cmp r3, #0
- 800119c: d001 beq.n 80011a2 <_ZL12MX_TIM4_Initv+0x10a>
- Error_Handler();
- 800119e: f000 fb43 bl 8001828 <Error_Handler>
- }
- if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) {
- 80011a2: 463b mov r3, r7
- 80011a4: 220c movs r2, #12
- 80011a6: 4619 mov r1, r3
- 80011a8: 4809 ldr r0, [pc, #36] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80011aa: f005 fe4d bl 8006e48 <HAL_TIM_PWM_ConfigChannel>
- 80011ae: 4603 mov r3, r0
- 80011b0: 2b00 cmp r3, #0
- 80011b2: bf14 ite ne
- 80011b4: 2301 movne r3, #1
- 80011b6: 2300 moveq r3, #0
- 80011b8: b2db uxtb r3, r3
- 80011ba: 2b00 cmp r3, #0
- 80011bc: d001 beq.n 80011c2 <_ZL12MX_TIM4_Initv+0x12a>
- Error_Handler();
- 80011be: f000 fb33 bl 8001828 <Error_Handler>
- }
- /* USER CODE BEGIN TIM4_Init 2 */
-
- /* USER CODE END TIM4_Init 2 */
- HAL_TIM_MspPostInit(&htim4);
- 80011c2: 4803 ldr r0, [pc, #12] ; (80011d0 <_ZL12MX_TIM4_Initv+0x138>)
- 80011c4: f003 fe86 bl 8004ed4 <HAL_TIM_MspPostInit>
-
-}
- 80011c8: bf00 nop
- 80011ca: 3738 adds r7, #56 ; 0x38
- 80011cc: 46bd mov sp, r7
- 80011ce: bd80 pop {r7, pc}
- 80011d0: 200000ac .word 0x200000ac
- 80011d4: 40000800 .word 0x40000800
-
-080011d8 <_ZL12MX_TIM5_Initv>:
-/**
- * @brief TIM5 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_TIM5_Init(void) {
- 80011d8: b580 push {r7, lr}
- 80011da: b08c sub sp, #48 ; 0x30
- 80011dc: af00 add r7, sp, #0
-
- /* USER CODE BEGIN TIM5_Init 0 */
-
- /* USER CODE END TIM5_Init 0 */
-
- TIM_Encoder_InitTypeDef sConfig = { 0 };
- 80011de: f107 030c add.w r3, r7, #12
- 80011e2: 2224 movs r2, #36 ; 0x24
- 80011e4: 2100 movs r1, #0
- 80011e6: 4618 mov r0, r3
- 80011e8: f007 fbe8 bl 80089bc <memset>
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };
- 80011ec: 463b mov r3, r7
- 80011ee: 2200 movs r2, #0
- 80011f0: 601a str r2, [r3, #0]
- 80011f2: 605a str r2, [r3, #4]
- 80011f4: 609a str r2, [r3, #8]
-
- /* USER CODE BEGIN TIM5_Init 1 */
-
- /* USER CODE END TIM5_Init 1 */
- htim5.Instance = TIM5;
- 80011f6: 4b26 ldr r3, [pc, #152] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 80011f8: 4a26 ldr r2, [pc, #152] ; (8001294 <_ZL12MX_TIM5_Initv+0xbc>)
- 80011fa: 601a str r2, [r3, #0]
- htim5.Init.Prescaler = 0;
- 80011fc: 4b24 ldr r3, [pc, #144] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 80011fe: 2200 movs r2, #0
- 8001200: 605a str r2, [r3, #4]
- htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
- 8001202: 4b23 ldr r3, [pc, #140] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 8001204: 2200 movs r2, #0
- 8001206: 609a str r2, [r3, #8]
- htim5.Init.Period = 4294967295;
- 8001208: 4b21 ldr r3, [pc, #132] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 800120a: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff
- 800120e: 60da str r2, [r3, #12]
- htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- 8001210: 4b1f ldr r3, [pc, #124] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 8001212: 2200 movs r2, #0
- 8001214: 611a str r2, [r3, #16]
- htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- 8001216: 4b1e ldr r3, [pc, #120] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 8001218: 2200 movs r2, #0
- 800121a: 619a str r2, [r3, #24]
- sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
- 800121c: 2303 movs r3, #3
- 800121e: 60fb str r3, [r7, #12]
- sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
- 8001220: 2300 movs r3, #0
- 8001222: 613b str r3, [r7, #16]
- sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
- 8001224: 2301 movs r3, #1
- 8001226: 617b str r3, [r7, #20]
- sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
- 8001228: 2300 movs r3, #0
- 800122a: 61bb str r3, [r7, #24]
- sConfig.IC1Filter = 0;
- 800122c: 2300 movs r3, #0
- 800122e: 61fb str r3, [r7, #28]
- sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
- 8001230: 2300 movs r3, #0
- 8001232: 623b str r3, [r7, #32]
- sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
- 8001234: 2301 movs r3, #1
- 8001236: 627b str r3, [r7, #36] ; 0x24
- sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
- 8001238: 2300 movs r3, #0
- 800123a: 62bb str r3, [r7, #40] ; 0x28
- sConfig.IC2Filter = 0;
- 800123c: 2300 movs r3, #0
- 800123e: 62fb str r3, [r7, #44] ; 0x2c
- if (HAL_TIM_Encoder_Init(&htim5, &sConfig) != HAL_OK) {
- 8001240: f107 030c add.w r3, r7, #12
- 8001244: 4619 mov r1, r3
- 8001246: 4812 ldr r0, [pc, #72] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 8001248: f005 fc16 bl 8006a78 <HAL_TIM_Encoder_Init>
- 800124c: 4603 mov r3, r0
- 800124e: 2b00 cmp r3, #0
- 8001250: bf14 ite ne
- 8001252: 2301 movne r3, #1
- 8001254: 2300 moveq r3, #0
- 8001256: b2db uxtb r3, r3
- 8001258: 2b00 cmp r3, #0
- 800125a: d001 beq.n 8001260 <_ZL12MX_TIM5_Initv+0x88>
- Error_Handler();
- 800125c: f000 fae4 bl 8001828 <Error_Handler>
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- 8001260: 2300 movs r3, #0
- 8001262: 603b str r3, [r7, #0]
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- 8001264: 2300 movs r3, #0
- 8001266: 60bb str r3, [r7, #8]
- if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK) {
- 8001268: 463b mov r3, r7
- 800126a: 4619 mov r1, r3
- 800126c: 4808 ldr r0, [pc, #32] ; (8001290 <_ZL12MX_TIM5_Initv+0xb8>)
- 800126e: f006 fba3 bl 80079b8 <HAL_TIMEx_MasterConfigSynchronization>
- 8001272: 4603 mov r3, r0
- 8001274: 2b00 cmp r3, #0
- 8001276: bf14 ite ne
- 8001278: 2301 movne r3, #1
- 800127a: 2300 moveq r3, #0
- 800127c: b2db uxtb r3, r3
- 800127e: 2b00 cmp r3, #0
- 8001280: d001 beq.n 8001286 <_ZL12MX_TIM5_Initv+0xae>
- Error_Handler();
- 8001282: f000 fad1 bl 8001828 <Error_Handler>
- }
- /* USER CODE BEGIN TIM5_Init 2 */
-
- /* USER CODE END TIM5_Init 2 */
-
-}
- 8001286: bf00 nop
- 8001288: 3730 adds r7, #48 ; 0x30
- 800128a: 46bd mov sp, r7
- 800128c: bd80 pop {r7, pc}
- 800128e: bf00 nop
- 8001290: 200000ec .word 0x200000ec
- 8001294: 40000c00 .word 0x40000c00
-
-08001298 <_ZL12MX_TIM6_Initv>:
-/**
- * @brief TIM6 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_TIM6_Init(void) {
- 8001298: b580 push {r7, lr}
- 800129a: b084 sub sp, #16
- 800129c: af00 add r7, sp, #0
-
- /* USER CODE BEGIN TIM6_Init 0 */
-
- /* USER CODE END TIM6_Init 0 */
-
- TIM_MasterConfigTypeDef sMasterConfig = { 0 };
- 800129e: 1d3b adds r3, r7, #4
- 80012a0: 2200 movs r2, #0
- 80012a2: 601a str r2, [r3, #0]
- 80012a4: 605a str r2, [r3, #4]
- 80012a6: 609a str r2, [r3, #8]
-
- /* USER CODE BEGIN TIM6_Init 1 */
-
- /* USER CODE END TIM6_Init 1 */
- htim6.Instance = TIM6;
- 80012a8: 4b1a ldr r3, [pc, #104] ; (8001314 <_ZL12MX_TIM6_Initv+0x7c>)
- 80012aa: 4a1b ldr r2, [pc, #108] ; (8001318 <_ZL12MX_TIM6_Initv+0x80>)
- 80012ac: 601a str r2, [r3, #0]
- htim6.Init.Prescaler = 9999;
- 80012ae: 4b19 ldr r3, [pc, #100] ; (8001314 <_ZL12MX_TIM6_Initv+0x7c>)
- 80012b0: f242 720f movw r2, #9999 ; 0x270f
- 80012b4: 605a str r2, [r3, #4]
- htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
- 80012b6: 4b17 ldr r3, [pc, #92] ; (8001314 <_ZL12MX_TIM6_Initv+0x7c>)
- 80012b8: 2200 movs r2, #0
- 80012ba: 609a str r2, [r3, #8]
- htim6.Init.Period = 799;
- 80012bc: 4b15 ldr r3, [pc, #84] ; (8001314 <_ZL12MX_TIM6_Initv+0x7c>)
- 80012be: f240 321f movw r2, #799 ; 0x31f
- 80012c2: 60da str r2, [r3, #12]
- htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- 80012c4: 4b13 ldr r3, [pc, #76] ; (8001314 <_ZL12MX_TIM6_Initv+0x7c>)
- 80012c6: 2200 movs r2, #0
- 80012c8: 619a str r2, [r3, #24]
- if (HAL_TIM_Base_Init(&htim6) != HAL_OK) {
- 80012ca: 4812 ldr r0, [pc, #72] ; (8001314 <_ZL12MX_TIM6_Initv+0x7c>)
- 80012cc: f005 fb04 bl 80068d8 <HAL_TIM_Base_Init>
- 80012d0: 4603 mov r3, r0
- 80012d2: 2b00 cmp r3, #0
- 80012d4: bf14 ite ne
- 80012d6: 2301 movne r3, #1
- 80012d8: 2300 moveq r3, #0
- 80012da: b2db uxtb r3, r3
- 80012dc: 2b00 cmp r3, #0
- 80012de: d001 beq.n 80012e4 <_ZL12MX_TIM6_Initv+0x4c>
- Error_Handler();
- 80012e0: f000 faa2 bl 8001828 <Error_Handler>
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- 80012e4: 2300 movs r3, #0
- 80012e6: 607b str r3, [r7, #4]
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- 80012e8: 2300 movs r3, #0
- 80012ea: 60fb str r3, [r7, #12]
- if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) {
- 80012ec: 1d3b adds r3, r7, #4
- 80012ee: 4619 mov r1, r3
- 80012f0: 4808 ldr r0, [pc, #32] ; (8001314 <_ZL12MX_TIM6_Initv+0x7c>)
- 80012f2: f006 fb61 bl 80079b8 <HAL_TIMEx_MasterConfigSynchronization>
- 80012f6: 4603 mov r3, r0
- 80012f8: 2b00 cmp r3, #0
- 80012fa: bf14 ite ne
- 80012fc: 2301 movne r3, #1
- 80012fe: 2300 moveq r3, #0
- 8001300: b2db uxtb r3, r3
- 8001302: 2b00 cmp r3, #0
- 8001304: d001 beq.n 800130a <_ZL12MX_TIM6_Initv+0x72>
- Error_Handler();
- 8001306: f000 fa8f bl 8001828 <Error_Handler>
- }
- /* USER CODE BEGIN TIM6_Init 2 */
-
- /* USER CODE END TIM6_Init 2 */
-
-}
- 800130a: bf00 nop
- 800130c: 3710 adds r7, #16
- 800130e: 46bd mov sp, r7
- 8001310: bd80 pop {r7, pc}
- 8001312: bf00 nop
- 8001314: 2000012c .word 0x2000012c
- 8001318: 40001000 .word 0x40001000
-
-0800131c <_ZL19MX_USART6_UART_Initv>:
-/**
- * @brief USART6 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_USART6_UART_Init(void) {
- 800131c: b580 push {r7, lr}
- 800131e: af00 add r7, sp, #0
- /* USER CODE END USART6_Init 0 */
-
- /* USER CODE BEGIN USART6_Init 1 */
-
- /* USER CODE END USART6_Init 1 */
- huart6.Instance = USART6;
- 8001320: 4b16 ldr r3, [pc, #88] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001322: 4a17 ldr r2, [pc, #92] ; (8001380 <_ZL19MX_USART6_UART_Initv+0x64>)
- 8001324: 601a str r2, [r3, #0]
- huart6.Init.BaudRate = 115200;
- 8001326: 4b15 ldr r3, [pc, #84] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001328: f44f 32e1 mov.w r2, #115200 ; 0x1c200
- 800132c: 605a str r2, [r3, #4]
- huart6.Init.WordLength = UART_WORDLENGTH_8B;
- 800132e: 4b13 ldr r3, [pc, #76] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001330: 2200 movs r2, #0
- 8001332: 609a str r2, [r3, #8]
- huart6.Init.StopBits = UART_STOPBITS_1;
- 8001334: 4b11 ldr r3, [pc, #68] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001336: 2200 movs r2, #0
- 8001338: 60da str r2, [r3, #12]
- huart6.Init.Parity = UART_PARITY_NONE;
- 800133a: 4b10 ldr r3, [pc, #64] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 800133c: 2200 movs r2, #0
- 800133e: 611a str r2, [r3, #16]
- huart6.Init.Mode = UART_MODE_TX_RX;
- 8001340: 4b0e ldr r3, [pc, #56] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001342: 220c movs r2, #12
- 8001344: 615a str r2, [r3, #20]
- huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- 8001346: 4b0d ldr r3, [pc, #52] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001348: 2200 movs r2, #0
- 800134a: 619a str r2, [r3, #24]
- huart6.Init.OverSampling = UART_OVERSAMPLING_16;
- 800134c: 4b0b ldr r3, [pc, #44] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 800134e: 2200 movs r2, #0
- 8001350: 61da str r2, [r3, #28]
- huart6.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
- 8001352: 4b0a ldr r3, [pc, #40] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001354: 2200 movs r2, #0
- 8001356: 621a str r2, [r3, #32]
- huart6.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- 8001358: 4b08 ldr r3, [pc, #32] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 800135a: 2200 movs r2, #0
- 800135c: 625a str r2, [r3, #36] ; 0x24
- if (HAL_UART_Init(&huart6) != HAL_OK) {
- 800135e: 4807 ldr r0, [pc, #28] ; (800137c <_ZL19MX_USART6_UART_Initv+0x60>)
- 8001360: f006 fba4 bl 8007aac <HAL_UART_Init>
- 8001364: 4603 mov r3, r0
- 8001366: 2b00 cmp r3, #0
- 8001368: bf14 ite ne
- 800136a: 2301 movne r3, #1
- 800136c: 2300 moveq r3, #0
- 800136e: b2db uxtb r3, r3
- 8001370: 2b00 cmp r3, #0
- 8001372: d001 beq.n 8001378 <_ZL19MX_USART6_UART_Initv+0x5c>
- Error_Handler();
- 8001374: f000 fa58 bl 8001828 <Error_Handler>
- }
- /* USER CODE BEGIN USART6_Init 2 */
-
- /* USER CODE END USART6_Init 2 */
-
-}
- 8001378: bf00 nop
- 800137a: bd80 pop {r7, pc}
- 800137c: 2000016c .word 0x2000016c
- 8001380: 40011400 .word 0x40011400
-
-08001384 <_ZL12MX_GPIO_Initv>:
-/**
- * @brief GPIO Initialization Function
- * @param None
- * @retval None
- */
-static void MX_GPIO_Init(void) {
- 8001384: b580 push {r7, lr}
- 8001386: b08c sub sp, #48 ; 0x30
- 8001388: af00 add r7, sp, #0
- GPIO_InitTypeDef GPIO_InitStruct = { 0 };
- 800138a: f107 031c add.w r3, r7, #28
- 800138e: 2200 movs r2, #0
- 8001390: 601a str r2, [r3, #0]
- 8001392: 605a str r2, [r3, #4]
- 8001394: 609a str r2, [r3, #8]
- 8001396: 60da str r2, [r3, #12]
- 8001398: 611a str r2, [r3, #16]
-
- /* GPIO Ports Clock Enable */
- __HAL_RCC_GPIOC_CLK_ENABLE();
- 800139a: 4b5e ldr r3, [pc, #376] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 800139c: 6b1b ldr r3, [r3, #48] ; 0x30
- 800139e: 4a5d ldr r2, [pc, #372] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013a0: f043 0304 orr.w r3, r3, #4
- 80013a4: 6313 str r3, [r2, #48] ; 0x30
- 80013a6: 4b5b ldr r3, [pc, #364] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013a8: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013aa: f003 0304 and.w r3, r3, #4
- 80013ae: 61bb str r3, [r7, #24]
- 80013b0: 69bb ldr r3, [r7, #24]
- __HAL_RCC_GPIOA_CLK_ENABLE();
- 80013b2: 4b58 ldr r3, [pc, #352] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013b4: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013b6: 4a57 ldr r2, [pc, #348] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013b8: f043 0301 orr.w r3, r3, #1
- 80013bc: 6313 str r3, [r2, #48] ; 0x30
- 80013be: 4b55 ldr r3, [pc, #340] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013c0: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013c2: f003 0301 and.w r3, r3, #1
- 80013c6: 617b str r3, [r7, #20]
- 80013c8: 697b ldr r3, [r7, #20]
- __HAL_RCC_GPIOF_CLK_ENABLE();
- 80013ca: 4b52 ldr r3, [pc, #328] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013cc: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013ce: 4a51 ldr r2, [pc, #324] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013d0: f043 0320 orr.w r3, r3, #32
- 80013d4: 6313 str r3, [r2, #48] ; 0x30
- 80013d6: 4b4f ldr r3, [pc, #316] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013d8: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013da: f003 0320 and.w r3, r3, #32
- 80013de: 613b str r3, [r7, #16]
- 80013e0: 693b ldr r3, [r7, #16]
- __HAL_RCC_GPIOE_CLK_ENABLE();
- 80013e2: 4b4c ldr r3, [pc, #304] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013e4: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013e6: 4a4b ldr r2, [pc, #300] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013e8: f043 0310 orr.w r3, r3, #16
- 80013ec: 6313 str r3, [r2, #48] ; 0x30
- 80013ee: 4b49 ldr r3, [pc, #292] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013f0: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013f2: f003 0310 and.w r3, r3, #16
- 80013f6: 60fb str r3, [r7, #12]
- 80013f8: 68fb ldr r3, [r7, #12]
- __HAL_RCC_GPIOD_CLK_ENABLE();
- 80013fa: 4b46 ldr r3, [pc, #280] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 80013fc: 6b1b ldr r3, [r3, #48] ; 0x30
- 80013fe: 4a45 ldr r2, [pc, #276] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 8001400: f043 0308 orr.w r3, r3, #8
- 8001404: 6313 str r3, [r2, #48] ; 0x30
- 8001406: 4b43 ldr r3, [pc, #268] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 8001408: 6b1b ldr r3, [r3, #48] ; 0x30
- 800140a: f003 0308 and.w r3, r3, #8
- 800140e: 60bb str r3, [r7, #8]
- 8001410: 68bb ldr r3, [r7, #8]
- __HAL_RCC_GPIOB_CLK_ENABLE();
- 8001412: 4b40 ldr r3, [pc, #256] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 8001414: 6b1b ldr r3, [r3, #48] ; 0x30
- 8001416: 4a3f ldr r2, [pc, #252] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 8001418: f043 0302 orr.w r3, r3, #2
- 800141c: 6313 str r3, [r2, #48] ; 0x30
- 800141e: 4b3d ldr r3, [pc, #244] ; (8001514 <_ZL12MX_GPIO_Initv+0x190>)
- 8001420: 6b1b ldr r3, [r3, #48] ; 0x30
- 8001422: f003 0302 and.w r3, r3, #2
- 8001426: 607b str r3, [r7, #4]
- 8001428: 687b ldr r3, [r7, #4]
-
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOF, dir2_Pin | dir1_Pin, GPIO_PIN_RESET);
- 800142a: 2200 movs r2, #0
- 800142c: f44f 5140 mov.w r1, #12288 ; 0x3000
- 8001430: 4839 ldr r0, [pc, #228] ; (8001518 <_ZL12MX_GPIO_Initv+0x194>)
- 8001432: f004 f9b9 bl 80057a8 <HAL_GPIO_WritePin>
-
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOF, sleep2_Pin | sleep1_Pin, GPIO_PIN_SET);
- 8001436: 2201 movs r2, #1
- 8001438: f44f 4140 mov.w r1, #49152 ; 0xc000
- 800143c: 4836 ldr r0, [pc, #216] ; (8001518 <_ZL12MX_GPIO_Initv+0x194>)
- 800143e: f004 f9b3 bl 80057a8 <HAL_GPIO_WritePin>
-
- /*Configure GPIO pin : user_button_Pin */
- GPIO_InitStruct.Pin = user_button_Pin;
- 8001442: f44f 5300 mov.w r3, #8192 ; 0x2000
- 8001446: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
- 8001448: 4b34 ldr r3, [pc, #208] ; (800151c <_ZL12MX_GPIO_Initv+0x198>)
- 800144a: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 800144c: 2300 movs r3, #0
- 800144e: 627b str r3, [r7, #36] ; 0x24
- HAL_GPIO_Init(user_button_GPIO_Port, &GPIO_InitStruct);
- 8001450: f107 031c add.w r3, r7, #28
- 8001454: 4619 mov r1, r3
- 8001456: 4832 ldr r0, [pc, #200] ; (8001520 <_ZL12MX_GPIO_Initv+0x19c>)
- 8001458: f003 fffc bl 8005454 <HAL_GPIO_Init>
-
- /*Configure GPIO pin : current2_Pin */
- GPIO_InitStruct.Pin = current2_Pin;
- 800145c: 2301 movs r3, #1
- 800145e: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- 8001460: 2303 movs r3, #3
- 8001462: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 8001464: 2300 movs r3, #0
- 8001466: 627b str r3, [r7, #36] ; 0x24
- HAL_GPIO_Init(current2_GPIO_Port, &GPIO_InitStruct);
- 8001468: f107 031c add.w r3, r7, #28
- 800146c: 4619 mov r1, r3
- 800146e: 482c ldr r0, [pc, #176] ; (8001520 <_ZL12MX_GPIO_Initv+0x19c>)
- 8001470: f003 fff0 bl 8005454 <HAL_GPIO_Init>
-
- /*Configure GPIO pin : current1_Pin */
- GPIO_InitStruct.Pin = current1_Pin;
- 8001474: 2308 movs r3, #8
- 8001476: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- 8001478: 2303 movs r3, #3
- 800147a: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 800147c: 2300 movs r3, #0
- 800147e: 627b str r3, [r7, #36] ; 0x24
- HAL_GPIO_Init(current1_GPIO_Port, &GPIO_InitStruct);
- 8001480: f107 031c add.w r3, r7, #28
- 8001484: 4619 mov r1, r3
- 8001486: 4827 ldr r0, [pc, #156] ; (8001524 <_ZL12MX_GPIO_Initv+0x1a0>)
- 8001488: f003 ffe4 bl 8005454 <HAL_GPIO_Init>
-
- /*Configure GPIO pin : fault2_Pin */
- GPIO_InitStruct.Pin = fault2_Pin;
- 800148c: 2340 movs r3, #64 ; 0x40
- 800148e: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
- 8001490: 2300 movs r3, #0
- 8001492: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 8001494: 2300 movs r3, #0
- 8001496: 627b str r3, [r7, #36] ; 0x24
- HAL_GPIO_Init(fault2_GPIO_Port, &GPIO_InitStruct);
- 8001498: f107 031c add.w r3, r7, #28
- 800149c: 4619 mov r1, r3
- 800149e: 4821 ldr r0, [pc, #132] ; (8001524 <_ZL12MX_GPIO_Initv+0x1a0>)
- 80014a0: f003 ffd8 bl 8005454 <HAL_GPIO_Init>
-
- /*Configure GPIO pins : dir2_Pin dir1_Pin */
- GPIO_InitStruct.Pin = dir2_Pin | dir1_Pin;
- 80014a4: f44f 5340 mov.w r3, #12288 ; 0x3000
- 80014a8: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- 80014aa: 2301 movs r3, #1
- 80014ac: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 80014ae: 2300 movs r3, #0
- 80014b0: 627b str r3, [r7, #36] ; 0x24
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- 80014b2: 2300 movs r3, #0
- 80014b4: 62bb str r3, [r7, #40] ; 0x28
- HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
- 80014b6: f107 031c add.w r3, r7, #28
- 80014ba: 4619 mov r1, r3
- 80014bc: 4816 ldr r0, [pc, #88] ; (8001518 <_ZL12MX_GPIO_Initv+0x194>)
- 80014be: f003 ffc9 bl 8005454 <HAL_GPIO_Init>
-
- /*Configure GPIO pins : sleep2_Pin sleep1_Pin */
- GPIO_InitStruct.Pin = sleep2_Pin | sleep1_Pin;
- 80014c2: f44f 4340 mov.w r3, #49152 ; 0xc000
- 80014c6: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- 80014c8: 2301 movs r3, #1
- 80014ca: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- 80014cc: 2301 movs r3, #1
- 80014ce: 627b str r3, [r7, #36] ; 0x24
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- 80014d0: 2300 movs r3, #0
- 80014d2: 62bb str r3, [r7, #40] ; 0x28
- HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
- 80014d4: f107 031c add.w r3, r7, #28
- 80014d8: 4619 mov r1, r3
- 80014da: 480f ldr r0, [pc, #60] ; (8001518 <_ZL12MX_GPIO_Initv+0x194>)
- 80014dc: f003 ffba bl 8005454 <HAL_GPIO_Init>
-
- /*Configure GPIO pin : fault1_Pin */
- GPIO_InitStruct.Pin = fault1_Pin;
- 80014e0: f44f 7300 mov.w r3, #512 ; 0x200
- 80014e4: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
- 80014e6: 2300 movs r3, #0
- 80014e8: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 80014ea: 2300 movs r3, #0
- 80014ec: 627b str r3, [r7, #36] ; 0x24
- HAL_GPIO_Init(fault1_GPIO_Port, &GPIO_InitStruct);
- 80014ee: f107 031c add.w r3, r7, #28
- 80014f2: 4619 mov r1, r3
- 80014f4: 480c ldr r0, [pc, #48] ; (8001528 <_ZL12MX_GPIO_Initv+0x1a4>)
- 80014f6: f003 ffad bl 8005454 <HAL_GPIO_Init>
-
- /* EXTI interrupt init*/
- HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
- 80014fa: 2200 movs r2, #0
- 80014fc: 2100 movs r1, #0
- 80014fe: 2028 movs r0, #40 ; 0x28
- 8001500: f003 ff4f bl 80053a2 <HAL_NVIC_SetPriority>
- HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
- 8001504: 2028 movs r0, #40 ; 0x28
- 8001506: f003 ff68 bl 80053da <HAL_NVIC_EnableIRQ>
-
-}
- 800150a: bf00 nop
- 800150c: 3730 adds r7, #48 ; 0x30
- 800150e: 46bd mov sp, r7
- 8001510: bd80 pop {r7, pc}
- 8001512: bf00 nop
- 8001514: 40023800 .word 0x40023800
- 8001518: 40021400 .word 0x40021400
- 800151c: 10110000 .word 0x10110000
- 8001520: 40020800 .word 0x40020800
- 8001524: 40020000 .word 0x40020000
- 8001528: 40021000 .word 0x40021000
-
-0800152c <HAL_TIM_PeriodElapsedCallback>:
-
-/* USER CODE BEGIN 4 */
-void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
- 800152c: b5b0 push {r4, r5, r7, lr}
- 800152e: ed2d 8b02 vpush {d8}
- 8001532: b08a sub sp, #40 ; 0x28
- 8001534: af00 add r7, sp, #0
- 8001536: 61f8 str r0, [r7, #28]
-
- //TIMER 100Hz PID control
- if (htim->Instance == TIM3) {
- 8001538: 69fb ldr r3, [r7, #28]
- 800153a: 681b ldr r3, [r3, #0]
- 800153c: 4a4a ldr r2, [pc, #296] ; (8001668 <HAL_TIM_PeriodElapsedCallback+0x13c>)
- 800153e: 4293 cmp r3, r2
- 8001540: d14d bne.n 80015de <HAL_TIM_PeriodElapsedCallback+0xb2>
-
- left_velocity = left_encoder.GetLinearVelocity();
- 8001542: 484a ldr r0, [pc, #296] ; (800166c <HAL_TIM_PeriodElapsedCallback+0x140>)
- 8001544: f7ff f884 bl 8000650 <_ZN7Encoder17GetLinearVelocityEv>
- 8001548: eef0 7a40 vmov.f32 s15, s0
- 800154c: 4b48 ldr r3, [pc, #288] ; (8001670 <HAL_TIM_PeriodElapsedCallback+0x144>)
- 800154e: edc3 7a00 vstr s15, [r3]
- left_dutycycle = left_pid.update(left_velocity);
- 8001552: 4b47 ldr r3, [pc, #284] ; (8001670 <HAL_TIM_PeriodElapsedCallback+0x144>)
- 8001554: edd3 7a00 vldr s15, [r3]
- 8001558: eeb0 0a67 vmov.f32 s0, s15
- 800155c: 4845 ldr r0, [pc, #276] ; (8001674 <HAL_TIM_PeriodElapsedCallback+0x148>)
- 800155e: f7ff fb4b bl 8000bf8 <_ZN3Pid6updateEf>
- 8001562: 4602 mov r2, r0
- 8001564: 4b44 ldr r3, [pc, #272] ; (8001678 <HAL_TIM_PeriodElapsedCallback+0x14c>)
- 8001566: 601a str r2, [r3, #0]
- left_motor.set_speed(left_dutycycle);
- 8001568: 4b43 ldr r3, [pc, #268] ; (8001678 <HAL_TIM_PeriodElapsedCallback+0x14c>)
- 800156a: 681b ldr r3, [r3, #0]
- 800156c: 4619 mov r1, r3
- 800156e: 4843 ldr r0, [pc, #268] ; (800167c <HAL_TIM_PeriodElapsedCallback+0x150>)
- 8001570: f7ff f9a0 bl 80008b4 <_ZN15MotorController9set_speedEi>
-
- right_velocity = right_encoder.GetLinearVelocity();
- 8001574: 4842 ldr r0, [pc, #264] ; (8001680 <HAL_TIM_PeriodElapsedCallback+0x154>)
- 8001576: f7ff f86b bl 8000650 <_ZN7Encoder17GetLinearVelocityEv>
- 800157a: eef0 7a40 vmov.f32 s15, s0
- 800157e: 4b41 ldr r3, [pc, #260] ; (8001684 <HAL_TIM_PeriodElapsedCallback+0x158>)
- 8001580: edc3 7a00 vstr s15, [r3]
- right_dutycycle = right_pid.update(right_velocity);
- 8001584: 4b3f ldr r3, [pc, #252] ; (8001684 <HAL_TIM_PeriodElapsedCallback+0x158>)
- 8001586: edd3 7a00 vldr s15, [r3]
- 800158a: eeb0 0a67 vmov.f32 s0, s15
- 800158e: 483e ldr r0, [pc, #248] ; (8001688 <HAL_TIM_PeriodElapsedCallback+0x15c>)
- 8001590: f7ff fb32 bl 8000bf8 <_ZN3Pid6updateEf>
- 8001594: 4602 mov r2, r0
- 8001596: 4b3d ldr r3, [pc, #244] ; (800168c <HAL_TIM_PeriodElapsedCallback+0x160>)
- 8001598: 601a str r2, [r3, #0]
- right_motor.set_speed(right_dutycycle);
- 800159a: 4b3c ldr r3, [pc, #240] ; (800168c <HAL_TIM_PeriodElapsedCallback+0x160>)
- 800159c: 681b ldr r3, [r3, #0]
- 800159e: 4619 mov r1, r3
- 80015a0: 483b ldr r0, [pc, #236] ; (8001690 <HAL_TIM_PeriodElapsedCallback+0x164>)
- 80015a2: f7ff f987 bl 80008b4 <_ZN15MotorController9set_speedEi>
-
- float difference = left_velocity - right_velocity;
- 80015a6: 4b32 ldr r3, [pc, #200] ; (8001670 <HAL_TIM_PeriodElapsedCallback+0x144>)
- 80015a8: ed93 7a00 vldr s14, [r3]
- 80015ac: 4b35 ldr r3, [pc, #212] ; (8001684 <HAL_TIM_PeriodElapsedCallback+0x158>)
- 80015ae: edd3 7a00 vldr s15, [r3]
- 80015b2: ee77 7a67 vsub.f32 s15, s14, s15
- 80015b6: edc7 7a09 vstr s15, [r7, #36] ; 0x24
-
- int cross_dutycycle = cross_pid.update(difference);
- 80015ba: ed97 0a09 vldr s0, [r7, #36] ; 0x24
- 80015be: 4835 ldr r0, [pc, #212] ; (8001694 <HAL_TIM_PeriodElapsedCallback+0x168>)
- 80015c0: f7ff fb1a bl 8000bf8 <_ZN3Pid6updateEf>
- 80015c4: 6238 str r0, [r7, #32]
-
- left_dutycycle += cross_dutycycle;
- 80015c6: 4b2c ldr r3, [pc, #176] ; (8001678 <HAL_TIM_PeriodElapsedCallback+0x14c>)
- 80015c8: 681a ldr r2, [r3, #0]
- 80015ca: 6a3b ldr r3, [r7, #32]
- 80015cc: 4413 add r3, r2
- 80015ce: 4a2a ldr r2, [pc, #168] ; (8001678 <HAL_TIM_PeriodElapsedCallback+0x14c>)
- 80015d0: 6013 str r3, [r2, #0]
- right_dutycycle -= cross_dutycycle;
- 80015d2: 4b2e ldr r3, [pc, #184] ; (800168c <HAL_TIM_PeriodElapsedCallback+0x160>)
- 80015d4: 681a ldr r2, [r3, #0]
- 80015d6: 6a3b ldr r3, [r7, #32]
- 80015d8: 1ad3 subs r3, r2, r3
- 80015da: 4a2c ldr r2, [pc, #176] ; (800168c <HAL_TIM_PeriodElapsedCallback+0x160>)
- 80015dc: 6013 str r3, [r2, #0]
-
- }
-
- //TIMER 2Hz Transmit
- if (htim->Instance == TIM6) {
- 80015de: 69fb ldr r3, [r7, #28]
- 80015e0: 681b ldr r3, [r3, #0]
- 80015e2: 4a2d ldr r2, [pc, #180] ; (8001698 <HAL_TIM_PeriodElapsedCallback+0x16c>)
- 80015e4: 4293 cmp r3, r2
- 80015e6: d138 bne.n 800165a <HAL_TIM_PeriodElapsedCallback+0x12e>
-
- odom.UpdateValuesFromWheels(left_encoder.GetLinearVelocity(),
- 80015e8: 4820 ldr r0, [pc, #128] ; (800166c <HAL_TIM_PeriodElapsedCallback+0x140>)
- 80015ea: f7ff f831 bl 8000650 <_ZN7Encoder17GetLinearVelocityEv>
- 80015ee: eeb0 8a40 vmov.f32 s16, s0
- 80015f2: 4823 ldr r0, [pc, #140] ; (8001680 <HAL_TIM_PeriodElapsedCallback+0x154>)
- 80015f4: f7ff f82c bl 8000650 <_ZN7Encoder17GetLinearVelocityEv>
- 80015f8: eef0 7a40 vmov.f32 s15, s0
- 80015fc: eef0 0a67 vmov.f32 s1, s15
- 8001600: eeb0 0a48 vmov.f32 s0, s16
- 8001604: 4825 ldr r0, [pc, #148] ; (800169c <HAL_TIM_PeriodElapsedCallback+0x170>)
- 8001606: f7ff f8b7 bl 8000778 <_ZN8Odometry22UpdateValuesFromWheelsEff>
- right_encoder.GetLinearVelocity());
-
- vel_output.linear_vel = odom.GetLinearVelocity();
- 800160a: 4824 ldr r0, [pc, #144] ; (800169c <HAL_TIM_PeriodElapsedCallback+0x170>)
- 800160c: f7ff f902 bl 8000814 <_ZN8Odometry17GetLinearVelocityEv>
- 8001610: eef0 7a40 vmov.f32 s15, s0
- 8001614: 4b22 ldr r3, [pc, #136] ; (80016a0 <HAL_TIM_PeriodElapsedCallback+0x174>)
- 8001616: edc3 7a00 vstr s15, [r3]
- vel_output.angular_vel = odom.GetAngularVelocity();
- 800161a: 4820 ldr r0, [pc, #128] ; (800169c <HAL_TIM_PeriodElapsedCallback+0x170>)
- 800161c: f7ff f909 bl 8000832 <_ZN8Odometry18GetAngularVelocityEv>
- 8001620: eef0 7a40 vmov.f32 s15, s0
- 8001624: 4b1e ldr r3, [pc, #120] ; (80016a0 <HAL_TIM_PeriodElapsedCallback+0x174>)
- 8001626: edc3 7a01 vstr s15, [r3, #4]
-
- stream_tx = pb_ostream_from_buffer(buffer_tx, sizeof(buffer_tx));
- 800162a: 4c1e ldr r4, [pc, #120] ; (80016a4 <HAL_TIM_PeriodElapsedCallback+0x178>)
- 800162c: 463b mov r3, r7
- 800162e: 220a movs r2, #10
- 8001630: 491d ldr r1, [pc, #116] ; (80016a8 <HAL_TIM_PeriodElapsedCallback+0x17c>)
- 8001632: 4618 mov r0, r3
- 8001634: f002 faa2 bl 8003b7c <pb_ostream_from_buffer>
- 8001638: 4625 mov r5, r4
- 800163a: 463c mov r4, r7
- 800163c: cc0f ldmia r4!, {r0, r1, r2, r3}
- 800163e: c50f stmia r5!, {r0, r1, r2, r3}
- 8001640: 6823 ldr r3, [r4, #0]
- 8001642: 602b str r3, [r5, #0]
-
- pb_encode(&stream_tx, Velocities_fields, &vel_output);
- 8001644: 4a16 ldr r2, [pc, #88] ; (80016a0 <HAL_TIM_PeriodElapsedCallback+0x174>)
- 8001646: 4919 ldr r1, [pc, #100] ; (80016ac <HAL_TIM_PeriodElapsedCallback+0x180>)
- 8001648: 4816 ldr r0, [pc, #88] ; (80016a4 <HAL_TIM_PeriodElapsedCallback+0x178>)
- 800164a: f002 feaa bl 80043a2 <pb_encode>
-
- HAL_UART_Transmit(&huart6, buffer_tx, 10, 100);
- 800164e: 2364 movs r3, #100 ; 0x64
- 8001650: 220a movs r2, #10
- 8001652: 4915 ldr r1, [pc, #84] ; (80016a8 <HAL_TIM_PeriodElapsedCallback+0x17c>)
- 8001654: 4816 ldr r0, [pc, #88] ; (80016b0 <HAL_TIM_PeriodElapsedCallback+0x184>)
- 8001656: f006 fa77 bl 8007b48 <HAL_UART_Transmit>
- }
-}
- 800165a: bf00 nop
- 800165c: 3728 adds r7, #40 ; 0x28
- 800165e: 46bd mov sp, r7
- 8001660: ecbd 8b02 vpop {d8}
- 8001664: bdb0 pop {r4, r5, r7, pc}
- 8001666: bf00 nop
- 8001668: 40000400 .word 0x40000400
- 800166c: 20000204 .word 0x20000204
- 8001670: 2000022c .word 0x2000022c
- 8001674: 20000234 .word 0x20000234
- 8001678: 200002ac .word 0x200002ac
- 800167c: 200002cc .word 0x200002cc
- 8001680: 200001ec .word 0x200001ec
- 8001684: 20000230 .word 0x20000230
- 8001688: 20000258 .word 0x20000258
- 800168c: 200002b0 .word 0x200002b0
- 8001690: 200002b4 .word 0x200002b4
- 8001694: 2000027c .word 0x2000027c
- 8001698: 40001000 .word 0x40001000
- 800169c: 2000021c .word 0x2000021c
- 80016a0: 20000308 .word 0x20000308
- 80016a4: 2000031c .word 0x2000031c
- 80016a8: 20000310 .word 0x20000310
- 80016ac: 08008cd0 .word 0x08008cd0
- 80016b0: 2000016c .word 0x2000016c
-
-080016b4 <HAL_UART_RxCpltCallback>:
-
-void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) {
- 80016b4: b580 push {r7, lr}
- 80016b6: b088 sub sp, #32
- 80016b8: af00 add r7, sp, #0
- 80016ba: 6078 str r0, [r7, #4]
-
- pb_istream_t stream = pb_istream_from_buffer(buffer_rx, 10);
- 80016bc: f107 030c add.w r3, r7, #12
- 80016c0: 220a movs r2, #10
- 80016c2: 492c ldr r1, [pc, #176] ; (8001774 <HAL_UART_RxCpltCallback+0xc0>)
- 80016c4: 4618 mov r0, r3
- 80016c6: f000 fc99 bl 8001ffc <pb_istream_from_buffer>
-
- bool status = pb_decode(&stream, Velocities_fields, &vel_input);
- 80016ca: f107 030c add.w r3, r7, #12
- 80016ce: 4a2a ldr r2, [pc, #168] ; (8001778 <HAL_UART_RxCpltCallback+0xc4>)
- 80016d0: 492a ldr r1, [pc, #168] ; (800177c <HAL_UART_RxCpltCallback+0xc8>)
- 80016d2: 4618 mov r0, r3
- 80016d4: f001 fdda bl 800328c <pb_decode>
- 80016d8: 4603 mov r3, r0
- 80016da: 77fb strb r3, [r7, #31]
-
- // if decoding went ok
- if (status) {
- 80016dc: 7ffb ldrb r3, [r7, #31]
- 80016de: 2b00 cmp r3, #0
- 80016e0: d03f beq.n 8001762 <HAL_UART_RxCpltCallback+0xae>
-
- odom.UpdateValuesFromVel(vel_input.linear_vel, vel_input.angular_vel);
- 80016e2: 4b25 ldr r3, [pc, #148] ; (8001778 <HAL_UART_RxCpltCallback+0xc4>)
- 80016e4: edd3 7a00 vldr s15, [r3]
- 80016e8: 4b23 ldr r3, [pc, #140] ; (8001778 <HAL_UART_RxCpltCallback+0xc4>)
- 80016ea: ed93 7a01 vldr s14, [r3, #4]
- 80016ee: eef0 0a47 vmov.f32 s1, s14
- 80016f2: eeb0 0a67 vmov.f32 s0, s15
- 80016f6: 4822 ldr r0, [pc, #136] ; (8001780 <HAL_UART_RxCpltCallback+0xcc>)
- 80016f8: f7fe fffe bl 80006f8 <_ZN8Odometry19UpdateValuesFromVelEff>
-
- left_setpoint = odom.GetLeftVelocity();
- 80016fc: 4820 ldr r0, [pc, #128] ; (8001780 <HAL_UART_RxCpltCallback+0xcc>)
- 80016fe: f7ff f86b bl 80007d8 <_ZN8Odometry15GetLeftVelocityEv>
- 8001702: eef0 7a40 vmov.f32 s15, s0
- 8001706: 4b1f ldr r3, [pc, #124] ; (8001784 <HAL_UART_RxCpltCallback+0xd0>)
- 8001708: edc3 7a00 vstr s15, [r3]
- right_setpoint = odom.GetRightVelocity();
- 800170c: 481c ldr r0, [pc, #112] ; (8001780 <HAL_UART_RxCpltCallback+0xcc>)
- 800170e: f7ff f872 bl 80007f6 <_ZN8Odometry16GetRightVelocityEv>
- 8001712: eef0 7a40 vmov.f32 s15, s0
- 8001716: 4b1c ldr r3, [pc, #112] ; (8001788 <HAL_UART_RxCpltCallback+0xd4>)
- 8001718: edc3 7a00 vstr s15, [r3]
-
- left_pid.set(left_setpoint);
- 800171c: 4b19 ldr r3, [pc, #100] ; (8001784 <HAL_UART_RxCpltCallback+0xd0>)
- 800171e: edd3 7a00 vldr s15, [r3]
- 8001722: eeb0 0a67 vmov.f32 s0, s15
- 8001726: 4819 ldr r0, [pc, #100] ; (800178c <HAL_UART_RxCpltCallback+0xd8>)
- 8001728: f7ff fa57 bl 8000bda <_ZN3Pid3setEf>
- right_pid.set(right_setpoint);
- 800172c: 4b16 ldr r3, [pc, #88] ; (8001788 <HAL_UART_RxCpltCallback+0xd4>)
- 800172e: edd3 7a00 vldr s15, [r3]
- 8001732: eeb0 0a67 vmov.f32 s0, s15
- 8001736: 4816 ldr r0, [pc, #88] ; (8001790 <HAL_UART_RxCpltCallback+0xdc>)
- 8001738: f7ff fa4f bl 8000bda <_ZN3Pid3setEf>
-
- cross_setpoint = left_setpoint - right_setpoint;
- 800173c: 4b11 ldr r3, [pc, #68] ; (8001784 <HAL_UART_RxCpltCallback+0xd0>)
- 800173e: ed93 7a00 vldr s14, [r3]
- 8001742: 4b11 ldr r3, [pc, #68] ; (8001788 <HAL_UART_RxCpltCallback+0xd4>)
- 8001744: edd3 7a00 vldr s15, [r3]
- 8001748: ee77 7a67 vsub.f32 s15, s14, s15
- 800174c: 4b11 ldr r3, [pc, #68] ; (8001794 <HAL_UART_RxCpltCallback+0xe0>)
- 800174e: edc3 7a00 vstr s15, [r3]
- cross_pid.set(cross_setpoint);
- 8001752: 4b10 ldr r3, [pc, #64] ; (8001794 <HAL_UART_RxCpltCallback+0xe0>)
- 8001754: edd3 7a00 vldr s15, [r3]
- 8001758: eeb0 0a67 vmov.f32 s0, s15
- 800175c: 480e ldr r0, [pc, #56] ; (8001798 <HAL_UART_RxCpltCallback+0xe4>)
- 800175e: f7ff fa3c bl 8000bda <_ZN3Pid3setEf>
- }
-
- HAL_UART_Receive_IT(&huart6, buffer_rx, 10);
- 8001762: 220a movs r2, #10
- 8001764: 4903 ldr r1, [pc, #12] ; (8001774 <HAL_UART_RxCpltCallback+0xc0>)
- 8001766: 480d ldr r0, [pc, #52] ; (800179c <HAL_UART_RxCpltCallback+0xe8>)
- 8001768: f006 fa80 bl 8007c6c <HAL_UART_Receive_IT>
-
-}
- 800176c: bf00 nop
- 800176e: 3720 adds r7, #32
- 8001770: 46bd mov sp, r7
- 8001772: bd80 pop {r7, pc}
- 8001774: 20000338 .word 0x20000338
- 8001778: 20000330 .word 0x20000330
- 800177c: 08008cd0 .word 0x08008cd0
- 8001780: 2000021c .word 0x2000021c
- 8001784: 200002a0 .word 0x200002a0
- 8001788: 200002a4 .word 0x200002a4
- 800178c: 20000234 .word 0x20000234
- 8001790: 20000258 .word 0x20000258
- 8001794: 200002a8 .word 0x200002a8
- 8001798: 2000027c .word 0x2000027c
- 800179c: 2000016c .word 0x2000016c
-
-080017a0 <HAL_GPIO_EXTI_Callback>:
-
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
- 80017a0: b580 push {r7, lr}
- 80017a2: b082 sub sp, #8
- 80017a4: af00 add r7, sp, #0
- 80017a6: 4603 mov r3, r0
- 80017a8: 80fb strh r3, [r7, #6]
- //Blue user button
- if (GPIO_Pin == GPIO_PIN_13) {
- 80017aa: 88fb ldrh r3, [r7, #6]
- 80017ac: f5b3 5f00 cmp.w r3, #8192 ; 0x2000
- 80017b0: d12b bne.n 800180a <HAL_GPIO_EXTI_Callback+0x6a>
- previous_millis = current_millis;
- 80017b2: 4b18 ldr r3, [pc, #96] ; (8001814 <HAL_GPIO_EXTI_Callback+0x74>)
- 80017b4: 681b ldr r3, [r3, #0]
- 80017b6: 4a18 ldr r2, [pc, #96] ; (8001818 <HAL_GPIO_EXTI_Callback+0x78>)
- 80017b8: 6013 str r3, [r2, #0]
- current_millis = HAL_GetTick();
- 80017ba: f003 fd0b bl 80051d4 <HAL_GetTick>
- 80017be: 4603 mov r3, r0
- 80017c0: 461a mov r2, r3
- 80017c2: 4b14 ldr r3, [pc, #80] ; (8001814 <HAL_GPIO_EXTI_Callback+0x74>)
- 80017c4: 601a str r2, [r3, #0]
- if (current_millis - previous_millis < 500)
- 80017c6: 4b13 ldr r3, [pc, #76] ; (8001814 <HAL_GPIO_EXTI_Callback+0x74>)
- 80017c8: 681a ldr r2, [r3, #0]
- 80017ca: 4b13 ldr r3, [pc, #76] ; (8001818 <HAL_GPIO_EXTI_Callback+0x78>)
- 80017cc: 681b ldr r3, [r3, #0]
- 80017ce: 1ad3 subs r3, r2, r3
- 80017d0: f5b3 7ffa cmp.w r3, #500 ; 0x1f4
- 80017d4: da03 bge.n 80017de <HAL_GPIO_EXTI_Callback+0x3e>
- debounce = false;
- 80017d6: 4b11 ldr r3, [pc, #68] ; (800181c <HAL_GPIO_EXTI_Callback+0x7c>)
- 80017d8: 2200 movs r2, #0
- 80017da: 701a strb r2, [r3, #0]
- 80017dc: e002 b.n 80017e4 <HAL_GPIO_EXTI_Callback+0x44>
- else
- debounce = true;
- 80017de: 4b0f ldr r3, [pc, #60] ; (800181c <HAL_GPIO_EXTI_Callback+0x7c>)
- 80017e0: 2201 movs r2, #1
- 80017e2: 701a strb r2, [r3, #0]
- if (mode == 0 && debounce) {
- 80017e4: 4b0e ldr r3, [pc, #56] ; (8001820 <HAL_GPIO_EXTI_Callback+0x80>)
- 80017e6: edd3 7a00 vldr s15, [r3]
- 80017ea: eef5 7a40 vcmp.f32 s15, #0.0
- 80017ee: eef1 fa10 vmrs APSR_nzcv, fpscr
- 80017f2: d10a bne.n 800180a <HAL_GPIO_EXTI_Callback+0x6a>
- 80017f4: 4b09 ldr r3, [pc, #36] ; (800181c <HAL_GPIO_EXTI_Callback+0x7c>)
- 80017f6: 781b ldrb r3, [r3, #0]
- 80017f8: 2b00 cmp r3, #0
- 80017fa: d006 beq.n 800180a <HAL_GPIO_EXTI_Callback+0x6a>
- mode = 1;
- 80017fc: 4b08 ldr r3, [pc, #32] ; (8001820 <HAL_GPIO_EXTI_Callback+0x80>)
- 80017fe: f04f 527e mov.w r2, #1065353216 ; 0x3f800000
- 8001802: 601a str r2, [r3, #0]
- //Enables TIM3 interrupt (used for PID control)
- HAL_TIM_Base_Start_IT(&htim3);
- 8001804: 4807 ldr r0, [pc, #28] ; (8001824 <HAL_GPIO_EXTI_Callback+0x84>)
- 8001806: f005 f893 bl 8006930 <HAL_TIM_Base_Start_IT>
- }
- }
-}
- 800180a: bf00 nop
- 800180c: 3708 adds r7, #8
- 800180e: 46bd mov sp, r7
- 8001810: bd80 pop {r7, pc}
- 8001812: bf00 nop
- 8001814: 20000300 .word 0x20000300
- 8001818: 200002fc .word 0x200002fc
- 800181c: 20000000 .word 0x20000000
- 8001820: 20000304 .word 0x20000304
- 8001824: 2000006c .word 0x2000006c
-
-08001828 <Error_Handler>:
-
-/**
- * @brief This function is executed in case of error occurrence.
- * @retval None
- */
-void Error_Handler(void) {
- 8001828: b480 push {r7}
- 800182a: af00 add r7, sp, #0
- /* USER CODE BEGIN Error_Handler_Debug */
- /* User can add his own implementation to report the HAL error return state */
-
- /* USER CODE END Error_Handler_Debug */
-}
- 800182c: bf00 nop
- 800182e: 46bd mov sp, r7
- 8001830: f85d 7b04 ldr.w r7, [sp], #4
- 8001834: 4770 bx lr
- ...
-
-08001838 <_Z41__static_initialization_and_destruction_0ii>:
- 8001838: b580 push {r7, lr}
- 800183a: b086 sub sp, #24
- 800183c: af04 add r7, sp, #16
- 800183e: 6078 str r0, [r7, #4]
- 8001840: 6039 str r1, [r7, #0]
- 8001842: 687b ldr r3, [r7, #4]
- 8001844: 2b01 cmp r3, #1
- 8001846: d148 bne.n 80018da <_Z41__static_initialization_and_destruction_0ii+0xa2>
- 8001848: 683b ldr r3, [r7, #0]
- 800184a: f64f 72ff movw r2, #65535 ; 0xffff
- 800184e: 4293 cmp r3, r2
- 8001850: d143 bne.n 80018da <_Z41__static_initialization_and_destruction_0ii+0xa2>
-Encoder right_encoder = Encoder(&htim5, RIGHT_TICKS_PER_METER);
- 8001852: 4a24 ldr r2, [pc, #144] ; (80018e4 <_Z41__static_initialization_and_destruction_0ii+0xac>)
- 8001854: 4924 ldr r1, [pc, #144] ; (80018e8 <_Z41__static_initialization_and_destruction_0ii+0xb0>)
- 8001856: 4825 ldr r0, [pc, #148] ; (80018ec <_Z41__static_initialization_and_destruction_0ii+0xb4>)
- 8001858: f7fe fe95 bl 8000586 <_ZN7EncoderC1EP17TIM_HandleTypeDefi>
-Encoder left_encoder = Encoder(&htim2, LEFT_TICKS_PER_METER);
- 800185c: 4a24 ldr r2, [pc, #144] ; (80018f0 <_Z41__static_initialization_and_destruction_0ii+0xb8>)
- 800185e: 4925 ldr r1, [pc, #148] ; (80018f4 <_Z41__static_initialization_and_destruction_0ii+0xbc>)
- 8001860: 4825 ldr r0, [pc, #148] ; (80018f8 <_Z41__static_initialization_and_destruction_0ii+0xc0>)
- 8001862: f7fe fe90 bl 8000586 <_ZN7EncoderC1EP17TIM_HandleTypeDefi>
-Odometry odom = Odometry();
- 8001866: 4825 ldr r0, [pc, #148] ; (80018fc <_Z41__static_initialization_and_destruction_0ii+0xc4>)
- 8001868: f7fe ff2a bl 80006c0 <_ZN8OdometryC1Ev>
-Pid left_pid(0, 0, 0);
- 800186c: ed9f 1a24 vldr s2, [pc, #144] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 8001870: eddf 0a23 vldr s1, [pc, #140] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 8001874: ed9f 0a22 vldr s0, [pc, #136] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 8001878: 4822 ldr r0, [pc, #136] ; (8001904 <_Z41__static_initialization_and_destruction_0ii+0xcc>)
- 800187a: f7ff f951 bl 8000b20 <_ZN3PidC1Efff>
-Pid right_pid(0, 0, 0);
- 800187e: ed9f 1a20 vldr s2, [pc, #128] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 8001882: eddf 0a1f vldr s1, [pc, #124] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 8001886: ed9f 0a1e vldr s0, [pc, #120] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 800188a: 481f ldr r0, [pc, #124] ; (8001908 <_Z41__static_initialization_and_destruction_0ii+0xd0>)
- 800188c: f7ff f948 bl 8000b20 <_ZN3PidC1Efff>
-Pid cross_pid(0, 0, 0);
- 8001890: ed9f 1a1b vldr s2, [pc, #108] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 8001894: eddf 0a1a vldr s1, [pc, #104] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 8001898: ed9f 0a19 vldr s0, [pc, #100] ; 8001900 <_Z41__static_initialization_and_destruction_0ii+0xc8>
- 800189c: 481b ldr r0, [pc, #108] ; (800190c <_Z41__static_initialization_and_destruction_0ii+0xd4>)
- 800189e: f7ff f93f bl 8000b20 <_ZN3PidC1Efff>
- TIM_CHANNEL_4);
- 80018a2: 230c movs r3, #12
- 80018a4: 9302 str r3, [sp, #8]
- 80018a6: 4b1a ldr r3, [pc, #104] ; (8001910 <_Z41__static_initialization_and_destruction_0ii+0xd8>)
- 80018a8: 9301 str r3, [sp, #4]
- 80018aa: f44f 5300 mov.w r3, #8192 ; 0x2000
- 80018ae: 9300 str r3, [sp, #0]
- 80018b0: 4b18 ldr r3, [pc, #96] ; (8001914 <_Z41__static_initialization_and_destruction_0ii+0xdc>)
- 80018b2: f44f 4200 mov.w r2, #32768 ; 0x8000
- 80018b6: 4917 ldr r1, [pc, #92] ; (8001914 <_Z41__static_initialization_and_destruction_0ii+0xdc>)
- 80018b8: 4817 ldr r0, [pc, #92] ; (8001918 <_Z41__static_initialization_and_destruction_0ii+0xe0>)
- 80018ba: f7fe ffc9 bl 8000850 <_ZN15MotorControllerC1EP12GPIO_TypeDeftS1_tP17TIM_HandleTypeDefm>
- TIM_CHANNEL_3);
- 80018be: 2308 movs r3, #8
- 80018c0: 9302 str r3, [sp, #8]
- 80018c2: 4b13 ldr r3, [pc, #76] ; (8001910 <_Z41__static_initialization_and_destruction_0ii+0xd8>)
- 80018c4: 9301 str r3, [sp, #4]
- 80018c6: f44f 5380 mov.w r3, #4096 ; 0x1000
- 80018ca: 9300 str r3, [sp, #0]
- 80018cc: 4b11 ldr r3, [pc, #68] ; (8001914 <_Z41__static_initialization_and_destruction_0ii+0xdc>)
- 80018ce: f44f 4280 mov.w r2, #16384 ; 0x4000
- 80018d2: 4910 ldr r1, [pc, #64] ; (8001914 <_Z41__static_initialization_and_destruction_0ii+0xdc>)
- 80018d4: 4811 ldr r0, [pc, #68] ; (800191c <_Z41__static_initialization_and_destruction_0ii+0xe4>)
- 80018d6: f7fe ffbb bl 8000850 <_ZN15MotorControllerC1EP12GPIO_TypeDeftS1_tP17TIM_HandleTypeDefm>
-}
- 80018da: bf00 nop
- 80018dc: 3708 adds r7, #8
- 80018de: 46bd mov sp, r7
- 80018e0: bd80 pop {r7, pc}
- 80018e2: bf00 nop
- 80018e4: 000300dd .word 0x000300dd
- 80018e8: 200000ec .word 0x200000ec
- 80018ec: 200001ec .word 0x200001ec
- 80018f0: 0002fccc .word 0x0002fccc
- 80018f4: 2000002c .word 0x2000002c
- 80018f8: 20000204 .word 0x20000204
- 80018fc: 2000021c .word 0x2000021c
- 8001900: 00000000 .word 0x00000000
- 8001904: 20000234 .word 0x20000234
- 8001908: 20000258 .word 0x20000258
- 800190c: 2000027c .word 0x2000027c
- 8001910: 200000ac .word 0x200000ac
- 8001914: 40021400 .word 0x40021400
- 8001918: 200002b4 .word 0x200002b4
- 800191c: 200002cc .word 0x200002cc
-
-08001920 <_GLOBAL__sub_I_htim2>:
- 8001920: b580 push {r7, lr}
- 8001922: af00 add r7, sp, #0
- 8001924: f64f 71ff movw r1, #65535 ; 0xffff
- 8001928: 2001 movs r0, #1
- 800192a: f7ff ff85 bl 8001838 <_Z41__static_initialization_and_destruction_0ii>
- 800192e: bd80 pop {r7, pc}
-
-08001930 <load_descriptor_values>:
- */
-
-#include "pb_common.h"
-
-static bool load_descriptor_values(pb_field_iter_t *iter)
-{
- 8001930: b480 push {r7}
- 8001932: b08f sub sp, #60 ; 0x3c
- 8001934: af00 add r7, sp, #0
- 8001936: 6078 str r0, [r7, #4]
- uint32_t word0;
- uint32_t data_offset;
- uint8_t format;
- int8_t size_offset;
-
- if (iter->index >= iter->descriptor->field_count)
- 8001938: 687b ldr r3, [r7, #4]
- 800193a: 891a ldrh r2, [r3, #8]
- 800193c: 687b ldr r3, [r7, #4]
- 800193e: 681b ldr r3, [r3, #0]
- 8001940: 881b ldrh r3, [r3, #0]
- 8001942: b29b uxth r3, r3
- 8001944: 429a cmp r2, r3
- 8001946: d301 bcc.n 800194c <load_descriptor_values+0x1c>
- return false;
- 8001948: 2300 movs r3, #0
- 800194a: e14d b.n 8001be8 <load_descriptor_values+0x2b8>
-
- word0 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index]);
- 800194c: 687b ldr r3, [r7, #4]
- 800194e: 681b ldr r3, [r3, #0]
- 8001950: f8d3 2002 ldr.w r2, [r3, #2]
- 8001954: 687b ldr r3, [r7, #4]
- 8001956: 895b ldrh r3, [r3, #10]
- 8001958: 009b lsls r3, r3, #2
- 800195a: 4413 add r3, r2
- 800195c: 681b ldr r3, [r3, #0]
- 800195e: 62fb str r3, [r7, #44] ; 0x2c
- format = word0 & 3;
- 8001960: 6afb ldr r3, [r7, #44] ; 0x2c
- 8001962: b2db uxtb r3, r3
- 8001964: f003 0303 and.w r3, r3, #3
- 8001968: f887 302b strb.w r3, [r7, #43] ; 0x2b
- iter->tag = (pb_size_t)((word0 >> 2) & 0x3F);
- 800196c: 6afb ldr r3, [r7, #44] ; 0x2c
- 800196e: 089b lsrs r3, r3, #2
- 8001970: b29b uxth r3, r3
- 8001972: f003 033f and.w r3, r3, #63 ; 0x3f
- 8001976: b29a uxth r2, r3
- 8001978: 687b ldr r3, [r7, #4]
- 800197a: 821a strh r2, [r3, #16]
- iter->type = (pb_type_t)((word0 >> 8) & 0xFF);
- 800197c: 6afb ldr r3, [r7, #44] ; 0x2c
- 800197e: 0a1b lsrs r3, r3, #8
- 8001980: b2da uxtb r2, r3
- 8001982: 687b ldr r3, [r7, #4]
- 8001984: 759a strb r2, [r3, #22]
-
- if (format == 0)
- 8001986: f897 302b ldrb.w r3, [r7, #43] ; 0x2b
- 800198a: 2b00 cmp r3, #0
- 800198c: d116 bne.n 80019bc <load_descriptor_values+0x8c>
- {
- /* 1-word format */
- iter->array_size = 1;
- 800198e: 687b ldr r3, [r7, #4]
- 8001990: 2201 movs r2, #1
- 8001992: 829a strh r2, [r3, #20]
- size_offset = (int8_t)((word0 >> 24) & 0x0F);
- 8001994: 6afb ldr r3, [r7, #44] ; 0x2c
- 8001996: 0e1b lsrs r3, r3, #24
- 8001998: b25b sxtb r3, r3
- 800199a: f003 030f and.w r3, r3, #15
- 800199e: f887 3033 strb.w r3, [r7, #51] ; 0x33
- data_offset = (word0 >> 16) & 0xFF;
- 80019a2: 6afb ldr r3, [r7, #44] ; 0x2c
- 80019a4: 0c1b lsrs r3, r3, #16
- 80019a6: b2db uxtb r3, r3
- 80019a8: 637b str r3, [r7, #52] ; 0x34
- iter->data_size = (pb_size_t)((word0 >> 28) & 0x0F);
- 80019aa: 6afb ldr r3, [r7, #44] ; 0x2c
- 80019ac: 0f1b lsrs r3, r3, #28
- 80019ae: b29b uxth r3, r3
- 80019b0: f003 030f and.w r3, r3, #15
- 80019b4: b29a uxth r2, r3
- 80019b6: 687b ldr r3, [r7, #4]
- 80019b8: 825a strh r2, [r3, #18]
- 80019ba: e0b7 b.n 8001b2c <load_descriptor_values+0x1fc>
- }
- else if (format == 1)
- 80019bc: f897 302b ldrb.w r3, [r7, #43] ; 0x2b
- 80019c0: 2b01 cmp r3, #1
- 80019c2: d130 bne.n 8001a26 <load_descriptor_values+0xf6>
- {
- /* 2-word format */
- uint32_t word1 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 1]);
- 80019c4: 687b ldr r3, [r7, #4]
- 80019c6: 681b ldr r3, [r3, #0]
- 80019c8: f8d3 2002 ldr.w r2, [r3, #2]
- 80019cc: 687b ldr r3, [r7, #4]
- 80019ce: 895b ldrh r3, [r3, #10]
- 80019d0: 3301 adds r3, #1
- 80019d2: 009b lsls r3, r3, #2
- 80019d4: 4413 add r3, r2
- 80019d6: 681b ldr r3, [r3, #0]
- 80019d8: 60bb str r3, [r7, #8]
-
- iter->array_size = (pb_size_t)((word0 >> 16) & 0x0FFF);
- 80019da: 6afb ldr r3, [r7, #44] ; 0x2c
- 80019dc: 0c1b lsrs r3, r3, #16
- 80019de: b29b uxth r3, r3
- 80019e0: f3c3 030b ubfx r3, r3, #0, #12
- 80019e4: b29a uxth r2, r3
- 80019e6: 687b ldr r3, [r7, #4]
- 80019e8: 829a strh r2, [r3, #20]
- iter->tag = (pb_size_t)(iter->tag | ((word1 >> 28) << 6));
- 80019ea: 687b ldr r3, [r7, #4]
- 80019ec: 8a1a ldrh r2, [r3, #16]
- 80019ee: 68bb ldr r3, [r7, #8]
- 80019f0: 0f1b lsrs r3, r3, #28
- 80019f2: b29b uxth r3, r3
- 80019f4: 019b lsls r3, r3, #6
- 80019f6: b29b uxth r3, r3
- 80019f8: 4313 orrs r3, r2
- 80019fa: b29a uxth r2, r3
- 80019fc: 687b ldr r3, [r7, #4]
- 80019fe: 821a strh r2, [r3, #16]
- size_offset = (int8_t)((word0 >> 28) & 0x0F);
- 8001a00: 6afb ldr r3, [r7, #44] ; 0x2c
- 8001a02: 0f1b lsrs r3, r3, #28
- 8001a04: b25b sxtb r3, r3
- 8001a06: f003 030f and.w r3, r3, #15
- 8001a0a: f887 3033 strb.w r3, [r7, #51] ; 0x33
- data_offset = word1 & 0xFFFF;
- 8001a0e: 68bb ldr r3, [r7, #8]
- 8001a10: b29b uxth r3, r3
- 8001a12: 637b str r3, [r7, #52] ; 0x34
- iter->data_size = (pb_size_t)((word1 >> 16) & 0x0FFF);
- 8001a14: 68bb ldr r3, [r7, #8]
- 8001a16: 0c1b lsrs r3, r3, #16
- 8001a18: b29b uxth r3, r3
- 8001a1a: f3c3 030b ubfx r3, r3, #0, #12
- 8001a1e: b29a uxth r2, r3
- 8001a20: 687b ldr r3, [r7, #4]
- 8001a22: 825a strh r2, [r3, #18]
- 8001a24: e082 b.n 8001b2c <load_descriptor_values+0x1fc>
- }
- else if (format == 2)
- 8001a26: f897 302b ldrb.w r3, [r7, #43] ; 0x2b
- 8001a2a: 2b02 cmp r3, #2
- 8001a2c: d13a bne.n 8001aa4 <load_descriptor_values+0x174>
- {
- /* 4-word format */
- uint32_t word1 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 1]);
- 8001a2e: 687b ldr r3, [r7, #4]
- 8001a30: 681b ldr r3, [r3, #0]
- 8001a32: f8d3 2002 ldr.w r2, [r3, #2]
- 8001a36: 687b ldr r3, [r7, #4]
- 8001a38: 895b ldrh r3, [r3, #10]
- 8001a3a: 3301 adds r3, #1
- 8001a3c: 009b lsls r3, r3, #2
- 8001a3e: 4413 add r3, r2
- 8001a40: 681b ldr r3, [r3, #0]
- 8001a42: 617b str r3, [r7, #20]
- uint32_t word2 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 2]);
- 8001a44: 687b ldr r3, [r7, #4]
- 8001a46: 681b ldr r3, [r3, #0]
- 8001a48: f8d3 2002 ldr.w r2, [r3, #2]
- 8001a4c: 687b ldr r3, [r7, #4]
- 8001a4e: 895b ldrh r3, [r3, #10]
- 8001a50: 3302 adds r3, #2
- 8001a52: 009b lsls r3, r3, #2
- 8001a54: 4413 add r3, r2
- 8001a56: 681b ldr r3, [r3, #0]
- 8001a58: 613b str r3, [r7, #16]
- uint32_t word3 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 3]);
- 8001a5a: 687b ldr r3, [r7, #4]
- 8001a5c: 681b ldr r3, [r3, #0]
- 8001a5e: f8d3 2002 ldr.w r2, [r3, #2]
- 8001a62: 687b ldr r3, [r7, #4]
- 8001a64: 895b ldrh r3, [r3, #10]
- 8001a66: 3303 adds r3, #3
- 8001a68: 009b lsls r3, r3, #2
- 8001a6a: 4413 add r3, r2
- 8001a6c: 681b ldr r3, [r3, #0]
- 8001a6e: 60fb str r3, [r7, #12]
-
- iter->array_size = (pb_size_t)(word0 >> 16);
- 8001a70: 6afb ldr r3, [r7, #44] ; 0x2c
- 8001a72: 0c1b lsrs r3, r3, #16
- 8001a74: b29a uxth r2, r3
- 8001a76: 687b ldr r3, [r7, #4]
- 8001a78: 829a strh r2, [r3, #20]
- iter->tag = (pb_size_t)(iter->tag | ((word1 >> 8) << 6));
- 8001a7a: 687b ldr r3, [r7, #4]
- 8001a7c: 8a1a ldrh r2, [r3, #16]
- 8001a7e: 697b ldr r3, [r7, #20]
- 8001a80: 0a1b lsrs r3, r3, #8
- 8001a82: b29b uxth r3, r3
- 8001a84: 019b lsls r3, r3, #6
- 8001a86: b29b uxth r3, r3
- 8001a88: 4313 orrs r3, r2
- 8001a8a: b29a uxth r2, r3
- 8001a8c: 687b ldr r3, [r7, #4]
- 8001a8e: 821a strh r2, [r3, #16]
- size_offset = (int8_t)(word1 & 0xFF);
- 8001a90: 697b ldr r3, [r7, #20]
- 8001a92: f887 3033 strb.w r3, [r7, #51] ; 0x33
- data_offset = word2;
- 8001a96: 693b ldr r3, [r7, #16]
- 8001a98: 637b str r3, [r7, #52] ; 0x34
- iter->data_size = (pb_size_t)word3;
- 8001a9a: 68fb ldr r3, [r7, #12]
- 8001a9c: b29a uxth r2, r3
- 8001a9e: 687b ldr r3, [r7, #4]
- 8001aa0: 825a strh r2, [r3, #18]
- 8001aa2: e043 b.n 8001b2c <load_descriptor_values+0x1fc>
- }
- else
- {
- /* 8-word format */
- uint32_t word1 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 1]);
- 8001aa4: 687b ldr r3, [r7, #4]
- 8001aa6: 681b ldr r3, [r3, #0]
- 8001aa8: f8d3 2002 ldr.w r2, [r3, #2]
- 8001aac: 687b ldr r3, [r7, #4]
- 8001aae: 895b ldrh r3, [r3, #10]
- 8001ab0: 3301 adds r3, #1
- 8001ab2: 009b lsls r3, r3, #2
- 8001ab4: 4413 add r3, r2
- 8001ab6: 681b ldr r3, [r3, #0]
- 8001ab8: 627b str r3, [r7, #36] ; 0x24
- uint32_t word2 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 2]);
- 8001aba: 687b ldr r3, [r7, #4]
- 8001abc: 681b ldr r3, [r3, #0]
- 8001abe: f8d3 2002 ldr.w r2, [r3, #2]
- 8001ac2: 687b ldr r3, [r7, #4]
- 8001ac4: 895b ldrh r3, [r3, #10]
- 8001ac6: 3302 adds r3, #2
- 8001ac8: 009b lsls r3, r3, #2
- 8001aca: 4413 add r3, r2
- 8001acc: 681b ldr r3, [r3, #0]
- 8001ace: 623b str r3, [r7, #32]
- uint32_t word3 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 3]);
- 8001ad0: 687b ldr r3, [r7, #4]
- 8001ad2: 681b ldr r3, [r3, #0]
- 8001ad4: f8d3 2002 ldr.w r2, [r3, #2]
- 8001ad8: 687b ldr r3, [r7, #4]
- 8001ada: 895b ldrh r3, [r3, #10]
- 8001adc: 3303 adds r3, #3
- 8001ade: 009b lsls r3, r3, #2
- 8001ae0: 4413 add r3, r2
- 8001ae2: 681b ldr r3, [r3, #0]
- 8001ae4: 61fb str r3, [r7, #28]
- uint32_t word4 = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index + 4]);
- 8001ae6: 687b ldr r3, [r7, #4]
- 8001ae8: 681b ldr r3, [r3, #0]
- 8001aea: f8d3 2002 ldr.w r2, [r3, #2]
- 8001aee: 687b ldr r3, [r7, #4]
- 8001af0: 895b ldrh r3, [r3, #10]
- 8001af2: 3304 adds r3, #4
- 8001af4: 009b lsls r3, r3, #2
- 8001af6: 4413 add r3, r2
- 8001af8: 681b ldr r3, [r3, #0]
- 8001afa: 61bb str r3, [r7, #24]
-
- iter->array_size = (pb_size_t)word4;
- 8001afc: 69bb ldr r3, [r7, #24]
- 8001afe: b29a uxth r2, r3
- 8001b00: 687b ldr r3, [r7, #4]
- 8001b02: 829a strh r2, [r3, #20]
- iter->tag = (pb_size_t)(iter->tag | ((word1 >> 8) << 6));
- 8001b04: 687b ldr r3, [r7, #4]
- 8001b06: 8a1a ldrh r2, [r3, #16]
- 8001b08: 6a7b ldr r3, [r7, #36] ; 0x24
- 8001b0a: 0a1b lsrs r3, r3, #8
- 8001b0c: b29b uxth r3, r3
- 8001b0e: 019b lsls r3, r3, #6
- 8001b10: b29b uxth r3, r3
- 8001b12: 4313 orrs r3, r2
- 8001b14: b29a uxth r2, r3
- 8001b16: 687b ldr r3, [r7, #4]
- 8001b18: 821a strh r2, [r3, #16]
- size_offset = (int8_t)(word1 & 0xFF);
- 8001b1a: 6a7b ldr r3, [r7, #36] ; 0x24
- 8001b1c: f887 3033 strb.w r3, [r7, #51] ; 0x33
- data_offset = word2;
- 8001b20: 6a3b ldr r3, [r7, #32]
- 8001b22: 637b str r3, [r7, #52] ; 0x34
- iter->data_size = (pb_size_t)word3;
- 8001b24: 69fb ldr r3, [r7, #28]
- 8001b26: b29a uxth r2, r3
- 8001b28: 687b ldr r3, [r7, #4]
- 8001b2a: 825a strh r2, [r3, #18]
- }
-
- iter->pField = (char*)iter->message + data_offset;
- 8001b2c: 687b ldr r3, [r7, #4]
- 8001b2e: 685a ldr r2, [r3, #4]
- 8001b30: 6b7b ldr r3, [r7, #52] ; 0x34
- 8001b32: 441a add r2, r3
- 8001b34: 687b ldr r3, [r7, #4]
- 8001b36: 619a str r2, [r3, #24]
-
- if (size_offset)
- 8001b38: f997 3033 ldrsb.w r3, [r7, #51] ; 0x33
- 8001b3c: 2b00 cmp r3, #0
- 8001b3e: d008 beq.n 8001b52 <load_descriptor_values+0x222>
- {
- iter->pSize = (char*)iter->pField - size_offset;
- 8001b40: 687b ldr r3, [r7, #4]
- 8001b42: 699a ldr r2, [r3, #24]
- 8001b44: f997 3033 ldrsb.w r3, [r7, #51] ; 0x33
- 8001b48: 425b negs r3, r3
- 8001b4a: 441a add r2, r3
- 8001b4c: 687b ldr r3, [r7, #4]
- 8001b4e: 621a str r2, [r3, #32]
- 8001b50: e01a b.n 8001b88 <load_descriptor_values+0x258>
- }
- else if (PB_HTYPE(iter->type) == PB_HTYPE_REPEATED &&
- 8001b52: 687b ldr r3, [r7, #4]
- 8001b54: 7d9b ldrb r3, [r3, #22]
- 8001b56: f003 0330 and.w r3, r3, #48 ; 0x30
- 8001b5a: 2b20 cmp r3, #32
- 8001b5c: d111 bne.n 8001b82 <load_descriptor_values+0x252>
- (PB_ATYPE(iter->type) == PB_ATYPE_STATIC ||
- 8001b5e: 687b ldr r3, [r7, #4]
- 8001b60: 7d9b ldrb r3, [r3, #22]
- 8001b62: f003 03c0 and.w r3, r3, #192 ; 0xc0
- else if (PB_HTYPE(iter->type) == PB_HTYPE_REPEATED &&
- 8001b66: 2b00 cmp r3, #0
- 8001b68: d005 beq.n 8001b76 <load_descriptor_values+0x246>
- PB_ATYPE(iter->type) == PB_ATYPE_POINTER))
- 8001b6a: 687b ldr r3, [r7, #4]
- 8001b6c: 7d9b ldrb r3, [r3, #22]
- 8001b6e: f003 03c0 and.w r3, r3, #192 ; 0xc0
- (PB_ATYPE(iter->type) == PB_ATYPE_STATIC ||
- 8001b72: 2b80 cmp r3, #128 ; 0x80
- 8001b74: d105 bne.n 8001b82 <load_descriptor_values+0x252>
- {
- /* Fixed count array */
- iter->pSize = &iter->array_size;
- 8001b76: 687b ldr r3, [r7, #4]
- 8001b78: f103 0214 add.w r2, r3, #20
- 8001b7c: 687b ldr r3, [r7, #4]
- 8001b7e: 621a str r2, [r3, #32]
- 8001b80: e002 b.n 8001b88 <load_descriptor_values+0x258>
- }
- else
- {
- iter->pSize = NULL;
- 8001b82: 687b ldr r3, [r7, #4]
- 8001b84: 2200 movs r2, #0
- 8001b86: 621a str r2, [r3, #32]
- }
-
- if (PB_ATYPE(iter->type) == PB_ATYPE_POINTER && iter->pField != NULL)
- 8001b88: 687b ldr r3, [r7, #4]
- 8001b8a: 7d9b ldrb r3, [r3, #22]
- 8001b8c: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8001b90: 2b80 cmp r3, #128 ; 0x80
- 8001b92: d109 bne.n 8001ba8 <load_descriptor_values+0x278>
- 8001b94: 687b ldr r3, [r7, #4]
- 8001b96: 699b ldr r3, [r3, #24]
- 8001b98: 2b00 cmp r3, #0
- 8001b9a: d005 beq.n 8001ba8 <load_descriptor_values+0x278>
- {
- iter->pData = *(void**)iter->pField;
- 8001b9c: 687b ldr r3, [r7, #4]
- 8001b9e: 699b ldr r3, [r3, #24]
- 8001ba0: 681a ldr r2, [r3, #0]
- 8001ba2: 687b ldr r3, [r7, #4]
- 8001ba4: 61da str r2, [r3, #28]
- 8001ba6: e003 b.n 8001bb0 <load_descriptor_values+0x280>
- }
- else
- {
- iter->pData = iter->pField;
- 8001ba8: 687b ldr r3, [r7, #4]
- 8001baa: 699a ldr r2, [r3, #24]
- 8001bac: 687b ldr r3, [r7, #4]
- 8001bae: 61da str r2, [r3, #28]
- }
-
- if (PB_LTYPE_IS_SUBMSG(iter->type))
- 8001bb0: 687b ldr r3, [r7, #4]
- 8001bb2: 7d9b ldrb r3, [r3, #22]
- 8001bb4: f003 030f and.w r3, r3, #15
- 8001bb8: 2b08 cmp r3, #8
- 8001bba: d005 beq.n 8001bc8 <load_descriptor_values+0x298>
- 8001bbc: 687b ldr r3, [r7, #4]
- 8001bbe: 7d9b ldrb r3, [r3, #22]
- 8001bc0: f003 030f and.w r3, r3, #15
- 8001bc4: 2b09 cmp r3, #9
- 8001bc6: d10b bne.n 8001be0 <load_descriptor_values+0x2b0>
- {
- iter->submsg_desc = iter->descriptor->submsg_info[iter->submessage_index];
- 8001bc8: 687b ldr r3, [r7, #4]
- 8001bca: 681b ldr r3, [r3, #0]
- 8001bcc: f8d3 2006 ldr.w r2, [r3, #6]
- 8001bd0: 687b ldr r3, [r7, #4]
- 8001bd2: 89db ldrh r3, [r3, #14]
- 8001bd4: 009b lsls r3, r3, #2
- 8001bd6: 4413 add r3, r2
- 8001bd8: 681a ldr r2, [r3, #0]
- 8001bda: 687b ldr r3, [r7, #4]
- 8001bdc: 625a str r2, [r3, #36] ; 0x24
- 8001bde: e002 b.n 8001be6 <load_descriptor_values+0x2b6>
- }
- else
- {
- iter->submsg_desc = NULL;
- 8001be0: 687b ldr r3, [r7, #4]
- 8001be2: 2200 movs r2, #0
- 8001be4: 625a str r2, [r3, #36] ; 0x24
- }
-
- return true;
- 8001be6: 2301 movs r3, #1
-}
- 8001be8: 4618 mov r0, r3
- 8001bea: 373c adds r7, #60 ; 0x3c
- 8001bec: 46bd mov sp, r7
- 8001bee: f85d 7b04 ldr.w r7, [sp], #4
- 8001bf2: 4770 bx lr
-
-08001bf4 <advance_iterator>:
-
-static void advance_iterator(pb_field_iter_t *iter)
-{
- 8001bf4: b480 push {r7}
- 8001bf6: b085 sub sp, #20
- 8001bf8: af00 add r7, sp, #0
- 8001bfa: 6078 str r0, [r7, #4]
- iter->index++;
- 8001bfc: 687b ldr r3, [r7, #4]
- 8001bfe: 891b ldrh r3, [r3, #8]
- 8001c00: 3301 adds r3, #1
- 8001c02: b29a uxth r2, r3
- 8001c04: 687b ldr r3, [r7, #4]
- 8001c06: 811a strh r2, [r3, #8]
-
- if (iter->index >= iter->descriptor->field_count)
- 8001c08: 687b ldr r3, [r7, #4]
- 8001c0a: 891a ldrh r2, [r3, #8]
- 8001c0c: 687b ldr r3, [r7, #4]
- 8001c0e: 681b ldr r3, [r3, #0]
- 8001c10: 881b ldrh r3, [r3, #0]
- 8001c12: b29b uxth r3, r3
- 8001c14: 429a cmp r2, r3
- 8001c16: d30c bcc.n 8001c32 <advance_iterator+0x3e>
- {
- /* Restart */
- iter->index = 0;
- 8001c18: 687b ldr r3, [r7, #4]
- 8001c1a: 2200 movs r2, #0
- 8001c1c: 811a strh r2, [r3, #8]
- iter->field_info_index = 0;
- 8001c1e: 687b ldr r3, [r7, #4]
- 8001c20: 2200 movs r2, #0
- 8001c22: 815a strh r2, [r3, #10]
- iter->submessage_index = 0;
- 8001c24: 687b ldr r3, [r7, #4]
- 8001c26: 2200 movs r2, #0
- 8001c28: 81da strh r2, [r3, #14]
- iter->required_field_index = 0;
- 8001c2a: 687b ldr r3, [r7, #4]
- 8001c2c: 2200 movs r2, #0
- 8001c2e: 819a strh r2, [r3, #12]
- if (PB_LTYPE_IS_SUBMSG(prev_type))
- {
- iter->submessage_index++;
- }
- }
-}
- 8001c30: e035 b.n 8001c9e <advance_iterator+0xaa>
- uint32_t prev_descriptor = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index]);
- 8001c32: 687b ldr r3, [r7, #4]
- 8001c34: 681b ldr r3, [r3, #0]
- 8001c36: f8d3 2002 ldr.w r2, [r3, #2]
- 8001c3a: 687b ldr r3, [r7, #4]
- 8001c3c: 895b ldrh r3, [r3, #10]
- 8001c3e: 009b lsls r3, r3, #2
- 8001c40: 4413 add r3, r2
- 8001c42: 681b ldr r3, [r3, #0]
- 8001c44: 60fb str r3, [r7, #12]
- pb_type_t prev_type = (prev_descriptor >> 8) & 0xFF;
- 8001c46: 68fb ldr r3, [r7, #12]
- 8001c48: 0a1b lsrs r3, r3, #8
- 8001c4a: 72fb strb r3, [r7, #11]
- pb_size_t descriptor_len = (pb_size_t)(1 << (prev_descriptor & 3));
- 8001c4c: 68fb ldr r3, [r7, #12]
- 8001c4e: f003 0303 and.w r3, r3, #3
- 8001c52: 2201 movs r2, #1
- 8001c54: fa02 f303 lsl.w r3, r2, r3
- 8001c58: 813b strh r3, [r7, #8]
- iter->field_info_index = (pb_size_t)(iter->field_info_index + descriptor_len);
- 8001c5a: 687b ldr r3, [r7, #4]
- 8001c5c: 895a ldrh r2, [r3, #10]
- 8001c5e: 893b ldrh r3, [r7, #8]
- 8001c60: 4413 add r3, r2
- 8001c62: b29a uxth r2, r3
- 8001c64: 687b ldr r3, [r7, #4]
- 8001c66: 815a strh r2, [r3, #10]
- if (PB_HTYPE(prev_type) == PB_HTYPE_REQUIRED)
- 8001c68: 7afb ldrb r3, [r7, #11]
- 8001c6a: f003 0330 and.w r3, r3, #48 ; 0x30
- 8001c6e: 2b00 cmp r3, #0
- 8001c70: d105 bne.n 8001c7e <advance_iterator+0x8a>
- iter->required_field_index++;
- 8001c72: 687b ldr r3, [r7, #4]
- 8001c74: 899b ldrh r3, [r3, #12]
- 8001c76: 3301 adds r3, #1
- 8001c78: b29a uxth r2, r3
- 8001c7a: 687b ldr r3, [r7, #4]
- 8001c7c: 819a strh r2, [r3, #12]
- if (PB_LTYPE_IS_SUBMSG(prev_type))
- 8001c7e: 7afb ldrb r3, [r7, #11]
- 8001c80: f003 030f and.w r3, r3, #15
- 8001c84: 2b08 cmp r3, #8
- 8001c86: d004 beq.n 8001c92 <advance_iterator+0x9e>
- 8001c88: 7afb ldrb r3, [r7, #11]
- 8001c8a: f003 030f and.w r3, r3, #15
- 8001c8e: 2b09 cmp r3, #9
- 8001c90: d105 bne.n 8001c9e <advance_iterator+0xaa>
- iter->submessage_index++;
- 8001c92: 687b ldr r3, [r7, #4]
- 8001c94: 89db ldrh r3, [r3, #14]
- 8001c96: 3301 adds r3, #1
- 8001c98: b29a uxth r2, r3
- 8001c9a: 687b ldr r3, [r7, #4]
- 8001c9c: 81da strh r2, [r3, #14]
-}
- 8001c9e: bf00 nop
- 8001ca0: 3714 adds r7, #20
- 8001ca2: 46bd mov sp, r7
- 8001ca4: f85d 7b04 ldr.w r7, [sp], #4
- 8001ca8: 4770 bx lr
-
-08001caa <pb_field_iter_begin>:
-
-bool pb_field_iter_begin(pb_field_iter_t *iter, const pb_msgdesc_t *desc, void *message)
-{
- 8001caa: b580 push {r7, lr}
- 8001cac: b084 sub sp, #16
- 8001cae: af00 add r7, sp, #0
- 8001cb0: 60f8 str r0, [r7, #12]
- 8001cb2: 60b9 str r1, [r7, #8]
- 8001cb4: 607a str r2, [r7, #4]
- memset(iter, 0, sizeof(*iter));
- 8001cb6: 2228 movs r2, #40 ; 0x28
- 8001cb8: 2100 movs r1, #0
- 8001cba: 68f8 ldr r0, [r7, #12]
- 8001cbc: f006 fe7e bl 80089bc <memset>
-
- iter->descriptor = desc;
- 8001cc0: 68fb ldr r3, [r7, #12]
- 8001cc2: 68ba ldr r2, [r7, #8]
- 8001cc4: 601a str r2, [r3, #0]
- iter->message = message;
- 8001cc6: 68fb ldr r3, [r7, #12]
- 8001cc8: 687a ldr r2, [r7, #4]
- 8001cca: 605a str r2, [r3, #4]
-
- return load_descriptor_values(iter);
- 8001ccc: 68f8 ldr r0, [r7, #12]
- 8001cce: f7ff fe2f bl 8001930 <load_descriptor_values>
- 8001cd2: 4603 mov r3, r0
-}
- 8001cd4: 4618 mov r0, r3
- 8001cd6: 3710 adds r7, #16
- 8001cd8: 46bd mov sp, r7
- 8001cda: bd80 pop {r7, pc}
-
-08001cdc <pb_field_iter_begin_extension>:
-
-bool pb_field_iter_begin_extension(pb_field_iter_t *iter, pb_extension_t *extension)
-{
- 8001cdc: b580 push {r7, lr}
- 8001cde: b086 sub sp, #24
- 8001ce0: af00 add r7, sp, #0
- 8001ce2: 6078 str r0, [r7, #4]
- 8001ce4: 6039 str r1, [r7, #0]
- const pb_msgdesc_t *msg = (const pb_msgdesc_t*)extension->type->arg;
- 8001ce6: 683b ldr r3, [r7, #0]
- 8001ce8: 681b ldr r3, [r3, #0]
- 8001cea: 689b ldr r3, [r3, #8]
- 8001cec: 613b str r3, [r7, #16]
- bool status;
-
- uint32_t word0 = PB_PROGMEM_READU32(msg->field_info[0]);
- 8001cee: 693b ldr r3, [r7, #16]
- 8001cf0: f8d3 3002 ldr.w r3, [r3, #2]
- 8001cf4: 681b ldr r3, [r3, #0]
- 8001cf6: 60fb str r3, [r7, #12]
- if (PB_ATYPE(word0 >> 8) == PB_ATYPE_POINTER)
- 8001cf8: 68fb ldr r3, [r7, #12]
- 8001cfa: 0a1b lsrs r3, r3, #8
- 8001cfc: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8001d00: 2b80 cmp r3, #128 ; 0x80
- 8001d02: d109 bne.n 8001d18 <pb_field_iter_begin_extension+0x3c>
- {
- /* For pointer extensions, the pointer is stored directly
- * in the extension structure. This avoids having an extra
- * indirection. */
- status = pb_field_iter_begin(iter, msg, &extension->dest);
- 8001d04: 683b ldr r3, [r7, #0]
- 8001d06: 3304 adds r3, #4
- 8001d08: 461a mov r2, r3
- 8001d0a: 6939 ldr r1, [r7, #16]
- 8001d0c: 6878 ldr r0, [r7, #4]
- 8001d0e: f7ff ffcc bl 8001caa <pb_field_iter_begin>
- 8001d12: 4603 mov r3, r0
- 8001d14: 75fb strb r3, [r7, #23]
- 8001d16: e008 b.n 8001d2a <pb_field_iter_begin_extension+0x4e>
- }
- else
- {
- status = pb_field_iter_begin(iter, msg, extension->dest);
- 8001d18: 683b ldr r3, [r7, #0]
- 8001d1a: 685b ldr r3, [r3, #4]
- 8001d1c: 461a mov r2, r3
- 8001d1e: 6939 ldr r1, [r7, #16]
- 8001d20: 6878 ldr r0, [r7, #4]
- 8001d22: f7ff ffc2 bl 8001caa <pb_field_iter_begin>
- 8001d26: 4603 mov r3, r0
- 8001d28: 75fb strb r3, [r7, #23]
- }
-
- iter->pSize = &extension->found;
- 8001d2a: 683b ldr r3, [r7, #0]
- 8001d2c: f103 020c add.w r2, r3, #12
- 8001d30: 687b ldr r3, [r7, #4]
- 8001d32: 621a str r2, [r3, #32]
- return status;
- 8001d34: 7dfb ldrb r3, [r7, #23]
-}
- 8001d36: 4618 mov r0, r3
- 8001d38: 3718 adds r7, #24
- 8001d3a: 46bd mov sp, r7
- 8001d3c: bd80 pop {r7, pc}
-
-08001d3e <pb_field_iter_next>:
-
-bool pb_field_iter_next(pb_field_iter_t *iter)
-{
- 8001d3e: b580 push {r7, lr}
- 8001d40: b082 sub sp, #8
- 8001d42: af00 add r7, sp, #0
- 8001d44: 6078 str r0, [r7, #4]
- advance_iterator(iter);
- 8001d46: 6878 ldr r0, [r7, #4]
- 8001d48: f7ff ff54 bl 8001bf4 <advance_iterator>
- (void)load_descriptor_values(iter);
- 8001d4c: 6878 ldr r0, [r7, #4]
- 8001d4e: f7ff fdef bl 8001930 <load_descriptor_values>
- return iter->index != 0;
- 8001d52: 687b ldr r3, [r7, #4]
- 8001d54: 891b ldrh r3, [r3, #8]
- 8001d56: 2b00 cmp r3, #0
- 8001d58: bf14 ite ne
- 8001d5a: 2301 movne r3, #1
- 8001d5c: 2300 moveq r3, #0
- 8001d5e: b2db uxtb r3, r3
-}
- 8001d60: 4618 mov r0, r3
- 8001d62: 3708 adds r7, #8
- 8001d64: 46bd mov sp, r7
- 8001d66: bd80 pop {r7, pc}
-
-08001d68 <pb_field_iter_find>:
-
-bool pb_field_iter_find(pb_field_iter_t *iter, uint32_t tag)
-{
- 8001d68: b580 push {r7, lr}
- 8001d6a: b084 sub sp, #16
- 8001d6c: af00 add r7, sp, #0
- 8001d6e: 6078 str r0, [r7, #4]
- 8001d70: 6039 str r1, [r7, #0]
- if (iter->tag == tag)
- 8001d72: 687b ldr r3, [r7, #4]
- 8001d74: 8a1b ldrh r3, [r3, #16]
- 8001d76: 461a mov r2, r3
- 8001d78: 683b ldr r3, [r7, #0]
- 8001d7a: 4293 cmp r3, r2
- 8001d7c: d101 bne.n 8001d82 <pb_field_iter_find+0x1a>
- {
- return true; /* Nothing to do, correct field already. */
- 8001d7e: 2301 movs r3, #1
- 8001d80: e031 b.n 8001de6 <pb_field_iter_find+0x7e>
- }
- else
- {
- pb_size_t start = iter->index;
- 8001d82: 687b ldr r3, [r7, #4]
- 8001d84: 891b ldrh r3, [r3, #8]
- 8001d86: 81fb strh r3, [r7, #14]
- uint32_t fieldinfo;
-
- do
- {
- /* Advance iterator but don't load values yet */
- advance_iterator(iter);
- 8001d88: 6878 ldr r0, [r7, #4]
- 8001d8a: f7ff ff33 bl 8001bf4 <advance_iterator>
-
- /* Do fast check for tag number match */
- fieldinfo = PB_PROGMEM_READU32(iter->descriptor->field_info[iter->field_info_index]);
- 8001d8e: 687b ldr r3, [r7, #4]
- 8001d90: 681b ldr r3, [r3, #0]
- 8001d92: f8d3 2002 ldr.w r2, [r3, #2]
- 8001d96: 687b ldr r3, [r7, #4]
- 8001d98: 895b ldrh r3, [r3, #10]
- 8001d9a: 009b lsls r3, r3, #2
- 8001d9c: 4413 add r3, r2
- 8001d9e: 681b ldr r3, [r3, #0]
- 8001da0: 60bb str r3, [r7, #8]
-
- if (((fieldinfo >> 2) & 0x3F) == (tag & 0x3F))
- 8001da2: 68bb ldr r3, [r7, #8]
- 8001da4: 089a lsrs r2, r3, #2
- 8001da6: 683b ldr r3, [r7, #0]
- 8001da8: 4053 eors r3, r2
- 8001daa: f003 033f and.w r3, r3, #63 ; 0x3f
- 8001dae: 2b00 cmp r3, #0
- 8001db0: d110 bne.n 8001dd4 <pb_field_iter_find+0x6c>
- {
- /* Good candidate, check further */
- (void)load_descriptor_values(iter);
- 8001db2: 6878 ldr r0, [r7, #4]
- 8001db4: f7ff fdbc bl 8001930 <load_descriptor_values>
-
- if (iter->tag == tag &&
- 8001db8: 687b ldr r3, [r7, #4]
- 8001dba: 8a1b ldrh r3, [r3, #16]
- 8001dbc: 461a mov r2, r3
- 8001dbe: 683b ldr r3, [r7, #0]
- 8001dc0: 4293 cmp r3, r2
- 8001dc2: d107 bne.n 8001dd4 <pb_field_iter_find+0x6c>
- PB_LTYPE(iter->type) != PB_LTYPE_EXTENSION)
- 8001dc4: 687b ldr r3, [r7, #4]
- 8001dc6: 7d9b ldrb r3, [r3, #22]
- 8001dc8: f003 030f and.w r3, r3, #15
- if (iter->tag == tag &&
- 8001dcc: 2b0a cmp r3, #10
- 8001dce: d001 beq.n 8001dd4 <pb_field_iter_find+0x6c>
- {
- /* Found it */
- return true;
- 8001dd0: 2301 movs r3, #1
- 8001dd2: e008 b.n 8001de6 <pb_field_iter_find+0x7e>
- }
- }
- } while (iter->index != start);
- 8001dd4: 687b ldr r3, [r7, #4]
- 8001dd6: 891b ldrh r3, [r3, #8]
- 8001dd8: 89fa ldrh r2, [r7, #14]
- 8001dda: 429a cmp r2, r3
- 8001ddc: d1d4 bne.n 8001d88 <pb_field_iter_find+0x20>
-
- /* Searched all the way back to start, and found nothing. */
- (void)load_descriptor_values(iter);
- 8001dde: 6878 ldr r0, [r7, #4]
- 8001de0: f7ff fda6 bl 8001930 <load_descriptor_values>
- return false;
- 8001de4: 2300 movs r3, #0
- }
-}
- 8001de6: 4618 mov r0, r3
- 8001de8: 3710 adds r7, #16
- 8001dea: 46bd mov sp, r7
- 8001dec: bd80 pop {r7, pc}
-
-08001dee <pb_const_cast>:
-
-static void *pb_const_cast(const void *p)
-{
- 8001dee: b480 push {r7}
- 8001df0: b085 sub sp, #20
- 8001df2: af00 add r7, sp, #0
- 8001df4: 6078 str r0, [r7, #4]
- * to avoid spurious compiler warnings. */
- union {
- void *p1;
- const void *p2;
- } t;
- t.p2 = p;
- 8001df6: 687b ldr r3, [r7, #4]
- 8001df8: 60fb str r3, [r7, #12]
- return t.p1;
- 8001dfa: 68fb ldr r3, [r7, #12]
-}
- 8001dfc: 4618 mov r0, r3
- 8001dfe: 3714 adds r7, #20
- 8001e00: 46bd mov sp, r7
- 8001e02: f85d 7b04 ldr.w r7, [sp], #4
- 8001e06: 4770 bx lr
-
-08001e08 <pb_field_iter_begin_const>:
-
-bool pb_field_iter_begin_const(pb_field_iter_t *iter, const pb_msgdesc_t *desc, const void *message)
-{
- 8001e08: b580 push {r7, lr}
- 8001e0a: b084 sub sp, #16
- 8001e0c: af00 add r7, sp, #0
- 8001e0e: 60f8 str r0, [r7, #12]
- 8001e10: 60b9 str r1, [r7, #8]
- 8001e12: 607a str r2, [r7, #4]
- return pb_field_iter_begin(iter, desc, pb_const_cast(message));
- 8001e14: 6878 ldr r0, [r7, #4]
- 8001e16: f7ff ffea bl 8001dee <pb_const_cast>
- 8001e1a: 4603 mov r3, r0
- 8001e1c: 461a mov r2, r3
- 8001e1e: 68b9 ldr r1, [r7, #8]
- 8001e20: 68f8 ldr r0, [r7, #12]
- 8001e22: f7ff ff42 bl 8001caa <pb_field_iter_begin>
- 8001e26: 4603 mov r3, r0
-}
- 8001e28: 4618 mov r0, r3
- 8001e2a: 3710 adds r7, #16
- 8001e2c: 46bd mov sp, r7
- 8001e2e: bd80 pop {r7, pc}
-
-08001e30 <pb_field_iter_begin_extension_const>:
-
-bool pb_field_iter_begin_extension_const(pb_field_iter_t *iter, const pb_extension_t *extension)
-{
- 8001e30: b580 push {r7, lr}
- 8001e32: b082 sub sp, #8
- 8001e34: af00 add r7, sp, #0
- 8001e36: 6078 str r0, [r7, #4]
- 8001e38: 6039 str r1, [r7, #0]
- return pb_field_iter_begin_extension(iter, (pb_extension_t*)pb_const_cast(extension));
- 8001e3a: 6838 ldr r0, [r7, #0]
- 8001e3c: f7ff ffd7 bl 8001dee <pb_const_cast>
- 8001e40: 4603 mov r3, r0
- 8001e42: 4619 mov r1, r3
- 8001e44: 6878 ldr r0, [r7, #4]
- 8001e46: f7ff ff49 bl 8001cdc <pb_field_iter_begin_extension>
- 8001e4a: 4603 mov r3, r0
-}
- 8001e4c: 4618 mov r0, r3
- 8001e4e: 3708 adds r7, #8
- 8001e50: 46bd mov sp, r7
- 8001e52: bd80 pop {r7, pc}
-
-08001e54 <buf_read>:
-/*******************************
- * pb_istream_t implementation *
- *******************************/
-
-static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t count)
-{
- 8001e54: b480 push {r7}
- 8001e56: b087 sub sp, #28
- 8001e58: af00 add r7, sp, #0
- 8001e5a: 60f8 str r0, [r7, #12]
- 8001e5c: 60b9 str r1, [r7, #8]
- 8001e5e: 607a str r2, [r7, #4]
- size_t i;
- const pb_byte_t *source = (const pb_byte_t*)stream->state;
- 8001e60: 68fb ldr r3, [r7, #12]
- 8001e62: 685b ldr r3, [r3, #4]
- 8001e64: 613b str r3, [r7, #16]
- stream->state = (pb_byte_t*)stream->state + count;
- 8001e66: 68fb ldr r3, [r7, #12]
- 8001e68: 685a ldr r2, [r3, #4]
- 8001e6a: 687b ldr r3, [r7, #4]
- 8001e6c: 441a add r2, r3
- 8001e6e: 68fb ldr r3, [r7, #12]
- 8001e70: 605a str r2, [r3, #4]
-
- if (buf != NULL)
- 8001e72: 68bb ldr r3, [r7, #8]
- 8001e74: 2b00 cmp r3, #0
- 8001e76: d011 beq.n 8001e9c <buf_read+0x48>
- {
- for (i = 0; i < count; i++)
- 8001e78: 2300 movs r3, #0
- 8001e7a: 617b str r3, [r7, #20]
- 8001e7c: e00a b.n 8001e94 <buf_read+0x40>
- buf[i] = source[i];
- 8001e7e: 693a ldr r2, [r7, #16]
- 8001e80: 697b ldr r3, [r7, #20]
- 8001e82: 441a add r2, r3
- 8001e84: 68b9 ldr r1, [r7, #8]
- 8001e86: 697b ldr r3, [r7, #20]
- 8001e88: 440b add r3, r1
- 8001e8a: 7812 ldrb r2, [r2, #0]
- 8001e8c: 701a strb r2, [r3, #0]
- for (i = 0; i < count; i++)
- 8001e8e: 697b ldr r3, [r7, #20]
- 8001e90: 3301 adds r3, #1
- 8001e92: 617b str r3, [r7, #20]
- 8001e94: 697a ldr r2, [r7, #20]
- 8001e96: 687b ldr r3, [r7, #4]
- 8001e98: 429a cmp r2, r3
- 8001e9a: d3f0 bcc.n 8001e7e <buf_read+0x2a>
- }
-
- return true;
- 8001e9c: 2301 movs r3, #1
-}
- 8001e9e: 4618 mov r0, r3
- 8001ea0: 371c adds r7, #28
- 8001ea2: 46bd mov sp, r7
- 8001ea4: f85d 7b04 ldr.w r7, [sp], #4
- 8001ea8: 4770 bx lr
- ...
-
-08001eac <pb_read>:
-
-bool checkreturn pb_read(pb_istream_t *stream, pb_byte_t *buf, size_t count)
-{
- 8001eac: b580 push {r7, lr}
- 8001eae: b088 sub sp, #32
- 8001eb0: af00 add r7, sp, #0
- 8001eb2: 60f8 str r0, [r7, #12]
- 8001eb4: 60b9 str r1, [r7, #8]
- 8001eb6: 607a str r2, [r7, #4]
- if (count == 0)
- 8001eb8: 687b ldr r3, [r7, #4]
- 8001eba: 2b00 cmp r3, #0
- 8001ebc: d101 bne.n 8001ec2 <pb_read+0x16>
- return true;
- 8001ebe: 2301 movs r3, #1
- 8001ec0: e056 b.n 8001f70 <pb_read+0xc4>
-
-#ifndef PB_BUFFER_ONLY
- if (buf == NULL && stream->callback != buf_read)
- 8001ec2: 68bb ldr r3, [r7, #8]
- 8001ec4: 2b00 cmp r3, #0
- 8001ec6: d123 bne.n 8001f10 <pb_read+0x64>
- 8001ec8: 68fb ldr r3, [r7, #12]
- 8001eca: 681b ldr r3, [r3, #0]
- 8001ecc: 4a2a ldr r2, [pc, #168] ; (8001f78 <pb_read+0xcc>)
- 8001ece: 4293 cmp r3, r2
- 8001ed0: d01e beq.n 8001f10 <pb_read+0x64>
- {
- /* Skip input bytes */
- pb_byte_t tmp[16];
- while (count > 16)
- 8001ed2: e011 b.n 8001ef8 <pb_read+0x4c>
- {
- if (!pb_read(stream, tmp, 16))
- 8001ed4: f107 0310 add.w r3, r7, #16
- 8001ed8: 2210 movs r2, #16
- 8001eda: 4619 mov r1, r3
- 8001edc: 68f8 ldr r0, [r7, #12]
- 8001ede: f7ff ffe5 bl 8001eac <pb_read>
- 8001ee2: 4603 mov r3, r0
- 8001ee4: f083 0301 eor.w r3, r3, #1
- 8001ee8: b2db uxtb r3, r3
- 8001eea: 2b00 cmp r3, #0
- 8001eec: d001 beq.n 8001ef2 <pb_read+0x46>
- return false;
- 8001eee: 2300 movs r3, #0
- 8001ef0: e03e b.n 8001f70 <pb_read+0xc4>
-
- count -= 16;
- 8001ef2: 687b ldr r3, [r7, #4]
- 8001ef4: 3b10 subs r3, #16
- 8001ef6: 607b str r3, [r7, #4]
- while (count > 16)
- 8001ef8: 687b ldr r3, [r7, #4]
- 8001efa: 2b10 cmp r3, #16
- 8001efc: d8ea bhi.n 8001ed4 <pb_read+0x28>
- }
-
- return pb_read(stream, tmp, count);
- 8001efe: f107 0310 add.w r3, r7, #16
- 8001f02: 687a ldr r2, [r7, #4]
- 8001f04: 4619 mov r1, r3
- 8001f06: 68f8 ldr r0, [r7, #12]
- 8001f08: f7ff ffd0 bl 8001eac <pb_read>
- 8001f0c: 4603 mov r3, r0
- 8001f0e: e02f b.n 8001f70 <pb_read+0xc4>
- }
-#endif
-
- if (stream->bytes_left < count)
- 8001f10: 68fb ldr r3, [r7, #12]
- 8001f12: 689b ldr r3, [r3, #8]
- 8001f14: 687a ldr r2, [r7, #4]
- 8001f16: 429a cmp r2, r3
- 8001f18: d90b bls.n 8001f32 <pb_read+0x86>
- PB_RETURN_ERROR(stream, "end-of-stream");
- 8001f1a: 68fb ldr r3, [r7, #12]
- 8001f1c: 68db ldr r3, [r3, #12]
- 8001f1e: 2b00 cmp r3, #0
- 8001f20: d002 beq.n 8001f28 <pb_read+0x7c>
- 8001f22: 68fb ldr r3, [r7, #12]
- 8001f24: 68db ldr r3, [r3, #12]
- 8001f26: e000 b.n 8001f2a <pb_read+0x7e>
- 8001f28: 4b14 ldr r3, [pc, #80] ; (8001f7c <pb_read+0xd0>)
- 8001f2a: 68fa ldr r2, [r7, #12]
- 8001f2c: 60d3 str r3, [r2, #12]
- 8001f2e: 2300 movs r3, #0
- 8001f30: e01e b.n 8001f70 <pb_read+0xc4>
-
-#ifndef PB_BUFFER_ONLY
- if (!stream->callback(stream, buf, count))
- 8001f32: 68fb ldr r3, [r7, #12]
- 8001f34: 681b ldr r3, [r3, #0]
- 8001f36: 687a ldr r2, [r7, #4]
- 8001f38: 68b9 ldr r1, [r7, #8]
- 8001f3a: 68f8 ldr r0, [r7, #12]
- 8001f3c: 4798 blx r3
- 8001f3e: 4603 mov r3, r0
- 8001f40: f083 0301 eor.w r3, r3, #1
- 8001f44: b2db uxtb r3, r3
- 8001f46: 2b00 cmp r3, #0
- 8001f48: d00b beq.n 8001f62 <pb_read+0xb6>
- PB_RETURN_ERROR(stream, "io error");
- 8001f4a: 68fb ldr r3, [r7, #12]
- 8001f4c: 68db ldr r3, [r3, #12]
- 8001f4e: 2b00 cmp r3, #0
- 8001f50: d002 beq.n 8001f58 <pb_read+0xac>
- 8001f52: 68fb ldr r3, [r7, #12]
- 8001f54: 68db ldr r3, [r3, #12]
- 8001f56: e000 b.n 8001f5a <pb_read+0xae>
- 8001f58: 4b09 ldr r3, [pc, #36] ; (8001f80 <pb_read+0xd4>)
- 8001f5a: 68fa ldr r2, [r7, #12]
- 8001f5c: 60d3 str r3, [r2, #12]
- 8001f5e: 2300 movs r3, #0
- 8001f60: e006 b.n 8001f70 <pb_read+0xc4>
-#else
- if (!buf_read(stream, buf, count))
- return false;
-#endif
-
- stream->bytes_left -= count;
- 8001f62: 68fb ldr r3, [r7, #12]
- 8001f64: 689a ldr r2, [r3, #8]
- 8001f66: 687b ldr r3, [r7, #4]
- 8001f68: 1ad2 subs r2, r2, r3
- 8001f6a: 68fb ldr r3, [r7, #12]
- 8001f6c: 609a str r2, [r3, #8]
- return true;
- 8001f6e: 2301 movs r3, #1
-}
- 8001f70: 4618 mov r0, r3
- 8001f72: 3720 adds r7, #32
- 8001f74: 46bd mov sp, r7
- 8001f76: bd80 pop {r7, pc}
- 8001f78: 08001e55 .word 0x08001e55
- 8001f7c: 080089e4 .word 0x080089e4
- 8001f80: 080089f4 .word 0x080089f4
-
-08001f84 <pb_readbyte>:
-
-/* Read a single byte from input stream. buf may not be NULL.
- * This is an optimization for the varint decoding. */
-static bool checkreturn pb_readbyte(pb_istream_t *stream, pb_byte_t *buf)
-{
- 8001f84: b580 push {r7, lr}
- 8001f86: b082 sub sp, #8
- 8001f88: af00 add r7, sp, #0
- 8001f8a: 6078 str r0, [r7, #4]
- 8001f8c: 6039 str r1, [r7, #0]
- if (stream->bytes_left == 0)
- 8001f8e: 687b ldr r3, [r7, #4]
- 8001f90: 689b ldr r3, [r3, #8]
- 8001f92: 2b00 cmp r3, #0
- 8001f94: d10b bne.n 8001fae <pb_readbyte+0x2a>
- PB_RETURN_ERROR(stream, "end-of-stream");
- 8001f96: 687b ldr r3, [r7, #4]
- 8001f98: 68db ldr r3, [r3, #12]
- 8001f9a: 2b00 cmp r3, #0
- 8001f9c: d002 beq.n 8001fa4 <pb_readbyte+0x20>
- 8001f9e: 687b ldr r3, [r7, #4]
- 8001fa0: 68db ldr r3, [r3, #12]
- 8001fa2: e000 b.n 8001fa6 <pb_readbyte+0x22>
- 8001fa4: 4b13 ldr r3, [pc, #76] ; (8001ff4 <pb_readbyte+0x70>)
- 8001fa6: 687a ldr r2, [r7, #4]
- 8001fa8: 60d3 str r3, [r2, #12]
- 8001faa: 2300 movs r3, #0
- 8001fac: e01d b.n 8001fea <pb_readbyte+0x66>
-
-#ifndef PB_BUFFER_ONLY
- if (!stream->callback(stream, buf, 1))
- 8001fae: 687b ldr r3, [r7, #4]
- 8001fb0: 681b ldr r3, [r3, #0]
- 8001fb2: 2201 movs r2, #1
- 8001fb4: 6839 ldr r1, [r7, #0]
- 8001fb6: 6878 ldr r0, [r7, #4]
- 8001fb8: 4798 blx r3
- 8001fba: 4603 mov r3, r0
- 8001fbc: f083 0301 eor.w r3, r3, #1
- 8001fc0: b2db uxtb r3, r3
- 8001fc2: 2b00 cmp r3, #0
- 8001fc4: d00b beq.n 8001fde <pb_readbyte+0x5a>
- PB_RETURN_ERROR(stream, "io error");
- 8001fc6: 687b ldr r3, [r7, #4]
- 8001fc8: 68db ldr r3, [r3, #12]
- 8001fca: 2b00 cmp r3, #0
- 8001fcc: d002 beq.n 8001fd4 <pb_readbyte+0x50>
- 8001fce: 687b ldr r3, [r7, #4]
- 8001fd0: 68db ldr r3, [r3, #12]
- 8001fd2: e000 b.n 8001fd6 <pb_readbyte+0x52>
- 8001fd4: 4b08 ldr r3, [pc, #32] ; (8001ff8 <pb_readbyte+0x74>)
- 8001fd6: 687a ldr r2, [r7, #4]
- 8001fd8: 60d3 str r3, [r2, #12]
- 8001fda: 2300 movs r3, #0
- 8001fdc: e005 b.n 8001fea <pb_readbyte+0x66>
-#else
- *buf = *(const pb_byte_t*)stream->state;
- stream->state = (pb_byte_t*)stream->state + 1;
-#endif
-
- stream->bytes_left--;
- 8001fde: 687b ldr r3, [r7, #4]
- 8001fe0: 689b ldr r3, [r3, #8]
- 8001fe2: 1e5a subs r2, r3, #1
- 8001fe4: 687b ldr r3, [r7, #4]
- 8001fe6: 609a str r2, [r3, #8]
-
- return true;
- 8001fe8: 2301 movs r3, #1
-}
- 8001fea: 4618 mov r0, r3
- 8001fec: 3708 adds r7, #8
- 8001fee: 46bd mov sp, r7
- 8001ff0: bd80 pop {r7, pc}
- 8001ff2: bf00 nop
- 8001ff4: 080089e4 .word 0x080089e4
- 8001ff8: 080089f4 .word 0x080089f4
-
-08001ffc <pb_istream_from_buffer>:
-
-pb_istream_t pb_istream_from_buffer(const pb_byte_t *buf, size_t bufsize)
-{
- 8001ffc: b490 push {r4, r7}
- 8001ffe: b08a sub sp, #40 ; 0x28
- 8002000: af00 add r7, sp, #0
- 8002002: 60f8 str r0, [r7, #12]
- 8002004: 60b9 str r1, [r7, #8]
- 8002006: 607a str r2, [r7, #4]
- const void *c_state;
- } state;
-#ifdef PB_BUFFER_ONLY
- stream.callback = NULL;
-#else
- stream.callback = &buf_read;
- 8002008: 4b0a ldr r3, [pc, #40] ; (8002034 <pb_istream_from_buffer+0x38>)
- 800200a: 61bb str r3, [r7, #24]
-#endif
- state.c_state = buf;
- 800200c: 68bb ldr r3, [r7, #8]
- 800200e: 617b str r3, [r7, #20]
- stream.state = state.state;
- 8002010: 697b ldr r3, [r7, #20]
- 8002012: 61fb str r3, [r7, #28]
- stream.bytes_left = bufsize;
- 8002014: 687b ldr r3, [r7, #4]
- 8002016: 623b str r3, [r7, #32]
-#ifndef PB_NO_ERRMSG
- stream.errmsg = NULL;
- 8002018: 2300 movs r3, #0
- 800201a: 627b str r3, [r7, #36] ; 0x24
-#endif
- return stream;
- 800201c: 68fb ldr r3, [r7, #12]
- 800201e: 461c mov r4, r3
- 8002020: f107 0318 add.w r3, r7, #24
- 8002024: cb0f ldmia r3, {r0, r1, r2, r3}
- 8002026: e884 000f stmia.w r4, {r0, r1, r2, r3}
-}
- 800202a: 68f8 ldr r0, [r7, #12]
- 800202c: 3728 adds r7, #40 ; 0x28
- 800202e: 46bd mov sp, r7
- 8002030: bc90 pop {r4, r7}
- 8002032: 4770 bx lr
- 8002034: 08001e55 .word 0x08001e55
-
-08002038 <pb_decode_varint32_eof>:
-/********************
- * Helper functions *
- ********************/
-
-static bool checkreturn pb_decode_varint32_eof(pb_istream_t *stream, uint32_t *dest, bool *eof)
-{
- 8002038: b580 push {r7, lr}
- 800203a: b088 sub sp, #32
- 800203c: af00 add r7, sp, #0
- 800203e: 60f8 str r0, [r7, #12]
- 8002040: 60b9 str r1, [r7, #8]
- 8002042: 607a str r2, [r7, #4]
- pb_byte_t byte;
- uint32_t result;
-
- if (!pb_readbyte(stream, &byte))
- 8002044: f107 0316 add.w r3, r7, #22
- 8002048: 4619 mov r1, r3
- 800204a: 68f8 ldr r0, [r7, #12]
- 800204c: f7ff ff9a bl 8001f84 <pb_readbyte>
- 8002050: 4603 mov r3, r0
- 8002052: f083 0301 eor.w r3, r3, #1
- 8002056: b2db uxtb r3, r3
- 8002058: 2b00 cmp r3, #0
- 800205a: d00b beq.n 8002074 <pb_decode_varint32_eof+0x3c>
- {
- if (stream->bytes_left == 0)
- 800205c: 68fb ldr r3, [r7, #12]
- 800205e: 689b ldr r3, [r3, #8]
- 8002060: 2b00 cmp r3, #0
- 8002062: d105 bne.n 8002070 <pb_decode_varint32_eof+0x38>
- {
- if (eof)
- 8002064: 687b ldr r3, [r7, #4]
- 8002066: 2b00 cmp r3, #0
- 8002068: d002 beq.n 8002070 <pb_decode_varint32_eof+0x38>
- {
- *eof = true;
- 800206a: 687b ldr r3, [r7, #4]
- 800206c: 2201 movs r2, #1
- 800206e: 701a strb r2, [r3, #0]
- }
- }
-
- return false;
- 8002070: 2300 movs r3, #0
- 8002072: e064 b.n 800213e <pb_decode_varint32_eof+0x106>
- }
-
- if ((byte & 0x80) == 0)
- 8002074: 7dbb ldrb r3, [r7, #22]
- 8002076: b25b sxtb r3, r3
- 8002078: 2b00 cmp r3, #0
- 800207a: db02 blt.n 8002082 <pb_decode_varint32_eof+0x4a>
- {
- /* Quick case, 1 byte value */
- result = byte;
- 800207c: 7dbb ldrb r3, [r7, #22]
- 800207e: 61fb str r3, [r7, #28]
- 8002080: e059 b.n 8002136 <pb_decode_varint32_eof+0xfe>
- }
- else
- {
- /* Multibyte case */
- uint_fast8_t bitpos = 7;
- 8002082: 2307 movs r3, #7
- 8002084: 61bb str r3, [r7, #24]
- result = byte & 0x7F;
- 8002086: 7dbb ldrb r3, [r7, #22]
- 8002088: f003 037f and.w r3, r3, #127 ; 0x7f
- 800208c: 61fb str r3, [r7, #28]
-
- do
- {
- if (!pb_readbyte(stream, &byte))
- 800208e: f107 0316 add.w r3, r7, #22
- 8002092: 4619 mov r1, r3
- 8002094: 68f8 ldr r0, [r7, #12]
- 8002096: f7ff ff75 bl 8001f84 <pb_readbyte>
- 800209a: 4603 mov r3, r0
- 800209c: f083 0301 eor.w r3, r3, #1
- 80020a0: b2db uxtb r3, r3
- 80020a2: 2b00 cmp r3, #0
- 80020a4: d001 beq.n 80020aa <pb_decode_varint32_eof+0x72>
- return false;
- 80020a6: 2300 movs r3, #0
- 80020a8: e049 b.n 800213e <pb_decode_varint32_eof+0x106>
-
- if (bitpos >= 32)
- 80020aa: 69bb ldr r3, [r7, #24]
- 80020ac: 2b1f cmp r3, #31
- 80020ae: d91e bls.n 80020ee <pb_decode_varint32_eof+0xb6>
- {
- /* Note: The varint could have trailing 0x80 bytes, or 0xFF for negative. */
- uint8_t sign_extension = (bitpos < 63) ? 0xFF : 0x01;
- 80020b0: 69bb ldr r3, [r7, #24]
- 80020b2: 2b3e cmp r3, #62 ; 0x3e
- 80020b4: d801 bhi.n 80020ba <pb_decode_varint32_eof+0x82>
- 80020b6: 23ff movs r3, #255 ; 0xff
- 80020b8: e000 b.n 80020bc <pb_decode_varint32_eof+0x84>
- 80020ba: 2301 movs r3, #1
- 80020bc: 75fb strb r3, [r7, #23]
-
- if ((byte & 0x7F) != 0x00 && ((result >> 31) == 0 || byte != sign_extension))
- 80020be: 7dbb ldrb r3, [r7, #22]
- 80020c0: f003 037f and.w r3, r3, #127 ; 0x7f
- 80020c4: 2b00 cmp r3, #0
- 80020c6: d01b beq.n 8002100 <pb_decode_varint32_eof+0xc8>
- 80020c8: 69fb ldr r3, [r7, #28]
- 80020ca: 2b00 cmp r3, #0
- 80020cc: da03 bge.n 80020d6 <pb_decode_varint32_eof+0x9e>
- 80020ce: 7dbb ldrb r3, [r7, #22]
- 80020d0: 7dfa ldrb r2, [r7, #23]
- 80020d2: 429a cmp r2, r3
- 80020d4: d014 beq.n 8002100 <pb_decode_varint32_eof+0xc8>
- {
- PB_RETURN_ERROR(stream, "varint overflow");
- 80020d6: 68fb ldr r3, [r7, #12]
- 80020d8: 68db ldr r3, [r3, #12]
- 80020da: 2b00 cmp r3, #0
- 80020dc: d002 beq.n 80020e4 <pb_decode_varint32_eof+0xac>
- 80020de: 68fb ldr r3, [r7, #12]
- 80020e0: 68db ldr r3, [r3, #12]
- 80020e2: e000 b.n 80020e6 <pb_decode_varint32_eof+0xae>
- 80020e4: 4b18 ldr r3, [pc, #96] ; (8002148 <pb_decode_varint32_eof+0x110>)
- 80020e6: 68fa ldr r2, [r7, #12]
- 80020e8: 60d3 str r3, [r2, #12]
- 80020ea: 2300 movs r3, #0
- 80020ec: e027 b.n 800213e <pb_decode_varint32_eof+0x106>
- }
- }
- else
- {
- result |= (uint32_t)(byte & 0x7F) << bitpos;
- 80020ee: 7dbb ldrb r3, [r7, #22]
- 80020f0: f003 027f and.w r2, r3, #127 ; 0x7f
- 80020f4: 69bb ldr r3, [r7, #24]
- 80020f6: fa02 f303 lsl.w r3, r2, r3
- 80020fa: 69fa ldr r2, [r7, #28]
- 80020fc: 4313 orrs r3, r2
- 80020fe: 61fb str r3, [r7, #28]
- }
- bitpos = (uint_fast8_t)(bitpos + 7);
- 8002100: 69bb ldr r3, [r7, #24]
- 8002102: 3307 adds r3, #7
- 8002104: 61bb str r3, [r7, #24]
- } while (byte & 0x80);
- 8002106: 7dbb ldrb r3, [r7, #22]
- 8002108: b25b sxtb r3, r3
- 800210a: 2b00 cmp r3, #0
- 800210c: dbbf blt.n 800208e <pb_decode_varint32_eof+0x56>
-
- if (bitpos == 35 && (byte & 0x70) != 0)
- 800210e: 69bb ldr r3, [r7, #24]
- 8002110: 2b23 cmp r3, #35 ; 0x23
- 8002112: d110 bne.n 8002136 <pb_decode_varint32_eof+0xfe>
- 8002114: 7dbb ldrb r3, [r7, #22]
- 8002116: f003 0370 and.w r3, r3, #112 ; 0x70
- 800211a: 2b00 cmp r3, #0
- 800211c: d00b beq.n 8002136 <pb_decode_varint32_eof+0xfe>
- {
- /* The last byte was at bitpos=28, so only bottom 4 bits fit. */
- PB_RETURN_ERROR(stream, "varint overflow");
- 800211e: 68fb ldr r3, [r7, #12]
- 8002120: 68db ldr r3, [r3, #12]
- 8002122: 2b00 cmp r3, #0
- 8002124: d002 beq.n 800212c <pb_decode_varint32_eof+0xf4>
- 8002126: 68fb ldr r3, [r7, #12]
- 8002128: 68db ldr r3, [r3, #12]
- 800212a: e000 b.n 800212e <pb_decode_varint32_eof+0xf6>
- 800212c: 4b06 ldr r3, [pc, #24] ; (8002148 <pb_decode_varint32_eof+0x110>)
- 800212e: 68fa ldr r2, [r7, #12]
- 8002130: 60d3 str r3, [r2, #12]
- 8002132: 2300 movs r3, #0
- 8002134: e003 b.n 800213e <pb_decode_varint32_eof+0x106>
- }
- }
-
- *dest = result;
- 8002136: 68bb ldr r3, [r7, #8]
- 8002138: 69fa ldr r2, [r7, #28]
- 800213a: 601a str r2, [r3, #0]
- return true;
- 800213c: 2301 movs r3, #1
-}
- 800213e: 4618 mov r0, r3
- 8002140: 3720 adds r7, #32
- 8002142: 46bd mov sp, r7
- 8002144: bd80 pop {r7, pc}
- 8002146: bf00 nop
- 8002148: 08008a00 .word 0x08008a00
-
-0800214c <pb_decode_varint32>:
-
-bool checkreturn pb_decode_varint32(pb_istream_t *stream, uint32_t *dest)
-{
- 800214c: b580 push {r7, lr}
- 800214e: b082 sub sp, #8
- 8002150: af00 add r7, sp, #0
- 8002152: 6078 str r0, [r7, #4]
- 8002154: 6039 str r1, [r7, #0]
- return pb_decode_varint32_eof(stream, dest, NULL);
- 8002156: 2200 movs r2, #0
- 8002158: 6839 ldr r1, [r7, #0]
- 800215a: 6878 ldr r0, [r7, #4]
- 800215c: f7ff ff6c bl 8002038 <pb_decode_varint32_eof>
- 8002160: 4603 mov r3, r0
-}
- 8002162: 4618 mov r0, r3
- 8002164: 3708 adds r7, #8
- 8002166: 46bd mov sp, r7
- 8002168: bd80 pop {r7, pc}
- ...
-
-0800216c <pb_decode_varint>:
-
-#ifndef PB_WITHOUT_64BIT
-bool checkreturn pb_decode_varint(pb_istream_t *stream, uint64_t *dest)
-{
- 800216c: e92d 48f0 stmdb sp!, {r4, r5, r6, r7, fp, lr}
- 8002170: b088 sub sp, #32
- 8002172: af00 add r7, sp, #0
- 8002174: 6078 str r0, [r7, #4]
- 8002176: 6039 str r1, [r7, #0]
- pb_byte_t byte;
- uint_fast8_t bitpos = 0;
- 8002178: 2300 movs r3, #0
- 800217a: 61fb str r3, [r7, #28]
- uint64_t result = 0;
- 800217c: f04f 0200 mov.w r2, #0
- 8002180: f04f 0300 mov.w r3, #0
- 8002184: e9c7 2304 strd r2, r3, [r7, #16]
-
- do
- {
- if (bitpos >= 64)
- 8002188: 69fb ldr r3, [r7, #28]
- 800218a: 2b3f cmp r3, #63 ; 0x3f
- 800218c: d90b bls.n 80021a6 <pb_decode_varint+0x3a>
- PB_RETURN_ERROR(stream, "varint overflow");
- 800218e: 687b ldr r3, [r7, #4]
- 8002190: 68db ldr r3, [r3, #12]
- 8002192: 2b00 cmp r3, #0
- 8002194: d002 beq.n 800219c <pb_decode_varint+0x30>
- 8002196: 687b ldr r3, [r7, #4]
- 8002198: 68db ldr r3, [r3, #12]
- 800219a: e000 b.n 800219e <pb_decode_varint+0x32>
- 800219c: 4b23 ldr r3, [pc, #140] ; (800222c <pb_decode_varint+0xc0>)
- 800219e: 687a ldr r2, [r7, #4]
- 80021a0: 60d3 str r3, [r2, #12]
- 80021a2: 2300 movs r3, #0
- 80021a4: e03d b.n 8002222 <pb_decode_varint+0xb6>
-
- if (!pb_readbyte(stream, &byte))
- 80021a6: f107 030f add.w r3, r7, #15
- 80021aa: 4619 mov r1, r3
- 80021ac: 6878 ldr r0, [r7, #4]
- 80021ae: f7ff fee9 bl 8001f84 <pb_readbyte>
- 80021b2: 4603 mov r3, r0
- 80021b4: f083 0301 eor.w r3, r3, #1
- 80021b8: b2db uxtb r3, r3
- 80021ba: 2b00 cmp r3, #0
- 80021bc: d001 beq.n 80021c2 <pb_decode_varint+0x56>
- return false;
- 80021be: 2300 movs r3, #0
- 80021c0: e02f b.n 8002222 <pb_decode_varint+0xb6>
-
- result |= (uint64_t)(byte & 0x7F) << bitpos;
- 80021c2: 7bfb ldrb r3, [r7, #15]
- 80021c4: b2da uxtb r2, r3
- 80021c6: f04f 0300 mov.w r3, #0
- 80021ca: f04f 007f mov.w r0, #127 ; 0x7f
- 80021ce: f04f 0100 mov.w r1, #0
- 80021d2: ea02 0b00 and.w fp, r2, r0
- 80021d6: ea03 0c01 and.w ip, r3, r1
- 80021da: 69f9 ldr r1, [r7, #28]
- 80021dc: f1a1 0620 sub.w r6, r1, #32
- 80021e0: f1c1 0020 rsb r0, r1, #32
- 80021e4: fa0c f501 lsl.w r5, ip, r1
- 80021e8: fa0b f606 lsl.w r6, fp, r6
- 80021ec: 4335 orrs r5, r6
- 80021ee: fa2b f000 lsr.w r0, fp, r0
- 80021f2: 4305 orrs r5, r0
- 80021f4: fa0b f401 lsl.w r4, fp, r1
- 80021f8: e9d7 2304 ldrd r2, r3, [r7, #16]
- 80021fc: ea42 0004 orr.w r0, r2, r4
- 8002200: ea43 0105 orr.w r1, r3, r5
- 8002204: e9c7 0104 strd r0, r1, [r7, #16]
- bitpos = (uint_fast8_t)(bitpos + 7);
- 8002208: 69fb ldr r3, [r7, #28]
- 800220a: 3307 adds r3, #7
- 800220c: 61fb str r3, [r7, #28]
- } while (byte & 0x80);
- 800220e: 7bfb ldrb r3, [r7, #15]
- 8002210: b25b sxtb r3, r3
- 8002212: 2b00 cmp r3, #0
- 8002214: dbb8 blt.n 8002188 <pb_decode_varint+0x1c>
-
- *dest = result;
- 8002216: 683a ldr r2, [r7, #0]
- 8002218: e9d7 3404 ldrd r3, r4, [r7, #16]
- 800221c: e9c2 3400 strd r3, r4, [r2]
- return true;
- 8002220: 2301 movs r3, #1
-}
- 8002222: 4618 mov r0, r3
- 8002224: 3720 adds r7, #32
- 8002226: 46bd mov sp, r7
- 8002228: e8bd 88f0 ldmia.w sp!, {r4, r5, r6, r7, fp, pc}
- 800222c: 08008a00 .word 0x08008a00
-
-08002230 <pb_skip_varint>:
-#endif
-
-bool checkreturn pb_skip_varint(pb_istream_t *stream)
-{
- 8002230: b580 push {r7, lr}
- 8002232: b084 sub sp, #16
- 8002234: af00 add r7, sp, #0
- 8002236: 6078 str r0, [r7, #4]
- pb_byte_t byte;
- do
- {
- if (!pb_read(stream, &byte, 1))
- 8002238: f107 030f add.w r3, r7, #15
- 800223c: 2201 movs r2, #1
- 800223e: 4619 mov r1, r3
- 8002240: 6878 ldr r0, [r7, #4]
- 8002242: f7ff fe33 bl 8001eac <pb_read>
- 8002246: 4603 mov r3, r0
- 8002248: f083 0301 eor.w r3, r3, #1
- 800224c: b2db uxtb r3, r3
- 800224e: 2b00 cmp r3, #0
- 8002250: d001 beq.n 8002256 <pb_skip_varint+0x26>
- return false;
- 8002252: 2300 movs r3, #0
- 8002254: e004 b.n 8002260 <pb_skip_varint+0x30>
- } while (byte & 0x80);
- 8002256: 7bfb ldrb r3, [r7, #15]
- 8002258: b25b sxtb r3, r3
- 800225a: 2b00 cmp r3, #0
- 800225c: dbec blt.n 8002238 <pb_skip_varint+0x8>
- return true;
- 800225e: 2301 movs r3, #1
-}
- 8002260: 4618 mov r0, r3
- 8002262: 3710 adds r7, #16
- 8002264: 46bd mov sp, r7
- 8002266: bd80 pop {r7, pc}
-
-08002268 <pb_skip_string>:
-
-bool checkreturn pb_skip_string(pb_istream_t *stream)
-{
- 8002268: b580 push {r7, lr}
- 800226a: b084 sub sp, #16
- 800226c: af00 add r7, sp, #0
- 800226e: 6078 str r0, [r7, #4]
- uint32_t length;
- if (!pb_decode_varint32(stream, &length))
- 8002270: f107 030c add.w r3, r7, #12
- 8002274: 4619 mov r1, r3
- 8002276: 6878 ldr r0, [r7, #4]
- 8002278: f7ff ff68 bl 800214c <pb_decode_varint32>
- 800227c: 4603 mov r3, r0
- 800227e: f083 0301 eor.w r3, r3, #1
- 8002282: b2db uxtb r3, r3
- 8002284: 2b00 cmp r3, #0
- 8002286: d001 beq.n 800228c <pb_skip_string+0x24>
- return false;
- 8002288: 2300 movs r3, #0
- 800228a: e006 b.n 800229a <pb_skip_string+0x32>
- if ((size_t)length != length)
- {
- PB_RETURN_ERROR(stream, "size too large");
- }
-
- return pb_read(stream, NULL, (size_t)length);
- 800228c: 68fb ldr r3, [r7, #12]
- 800228e: 461a mov r2, r3
- 8002290: 2100 movs r1, #0
- 8002292: 6878 ldr r0, [r7, #4]
- 8002294: f7ff fe0a bl 8001eac <pb_read>
- 8002298: 4603 mov r3, r0
-}
- 800229a: 4618 mov r0, r3
- 800229c: 3710 adds r7, #16
- 800229e: 46bd mov sp, r7
- 80022a0: bd80 pop {r7, pc}
-
-080022a2 <pb_decode_tag>:
-
-bool checkreturn pb_decode_tag(pb_istream_t *stream, pb_wire_type_t *wire_type, uint32_t *tag, bool *eof)
-{
- 80022a2: b580 push {r7, lr}
- 80022a4: b086 sub sp, #24
- 80022a6: af00 add r7, sp, #0
- 80022a8: 60f8 str r0, [r7, #12]
- 80022aa: 60b9 str r1, [r7, #8]
- 80022ac: 607a str r2, [r7, #4]
- 80022ae: 603b str r3, [r7, #0]
- uint32_t temp;
- *eof = false;
- 80022b0: 683b ldr r3, [r7, #0]
- 80022b2: 2200 movs r2, #0
- 80022b4: 701a strb r2, [r3, #0]
- *wire_type = (pb_wire_type_t) 0;
- 80022b6: 68bb ldr r3, [r7, #8]
- 80022b8: 2200 movs r2, #0
- 80022ba: 701a strb r2, [r3, #0]
- *tag = 0;
- 80022bc: 687b ldr r3, [r7, #4]
- 80022be: 2200 movs r2, #0
- 80022c0: 601a str r2, [r3, #0]
-
- if (!pb_decode_varint32_eof(stream, &temp, eof))
- 80022c2: f107 0314 add.w r3, r7, #20
- 80022c6: 683a ldr r2, [r7, #0]
- 80022c8: 4619 mov r1, r3
- 80022ca: 68f8 ldr r0, [r7, #12]
- 80022cc: f7ff feb4 bl 8002038 <pb_decode_varint32_eof>
- 80022d0: 4603 mov r3, r0
- 80022d2: f083 0301 eor.w r3, r3, #1
- 80022d6: b2db uxtb r3, r3
- 80022d8: 2b00 cmp r3, #0
- 80022da: d001 beq.n 80022e0 <pb_decode_tag+0x3e>
- {
- return false;
- 80022dc: 2300 movs r3, #0
- 80022de: e00b b.n 80022f8 <pb_decode_tag+0x56>
- }
-
- *tag = temp >> 3;
- 80022e0: 697b ldr r3, [r7, #20]
- 80022e2: 08da lsrs r2, r3, #3
- 80022e4: 687b ldr r3, [r7, #4]
- 80022e6: 601a str r2, [r3, #0]
- *wire_type = (pb_wire_type_t)(temp & 7);
- 80022e8: 697b ldr r3, [r7, #20]
- 80022ea: b2db uxtb r3, r3
- 80022ec: f003 0307 and.w r3, r3, #7
- 80022f0: b2da uxtb r2, r3
- 80022f2: 68bb ldr r3, [r7, #8]
- 80022f4: 701a strb r2, [r3, #0]
- return true;
- 80022f6: 2301 movs r3, #1
-}
- 80022f8: 4618 mov r0, r3
- 80022fa: 3718 adds r7, #24
- 80022fc: 46bd mov sp, r7
- 80022fe: bd80 pop {r7, pc}
-
-08002300 <pb_skip_field>:
-
-bool checkreturn pb_skip_field(pb_istream_t *stream, pb_wire_type_t wire_type)
-{
- 8002300: b580 push {r7, lr}
- 8002302: b082 sub sp, #8
- 8002304: af00 add r7, sp, #0
- 8002306: 6078 str r0, [r7, #4]
- 8002308: 460b mov r3, r1
- 800230a: 70fb strb r3, [r7, #3]
- switch (wire_type)
- 800230c: 78fb ldrb r3, [r7, #3]
- 800230e: 2b05 cmp r3, #5
- 8002310: d826 bhi.n 8002360 <pb_skip_field+0x60>
- 8002312: a201 add r2, pc, #4 ; (adr r2, 8002318 <pb_skip_field+0x18>)
- 8002314: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 8002318: 08002331 .word 0x08002331
- 800231c: 0800233b .word 0x0800233b
- 8002320: 08002349 .word 0x08002349
- 8002324: 08002361 .word 0x08002361
- 8002328: 08002361 .word 0x08002361
- 800232c: 08002353 .word 0x08002353
- {
- case PB_WT_VARINT: return pb_skip_varint(stream);
- 8002330: 6878 ldr r0, [r7, #4]
- 8002332: f7ff ff7d bl 8002230 <pb_skip_varint>
- 8002336: 4603 mov r3, r0
- 8002338: e01d b.n 8002376 <pb_skip_field+0x76>
- case PB_WT_64BIT: return pb_read(stream, NULL, 8);
- 800233a: 2208 movs r2, #8
- 800233c: 2100 movs r1, #0
- 800233e: 6878 ldr r0, [r7, #4]
- 8002340: f7ff fdb4 bl 8001eac <pb_read>
- 8002344: 4603 mov r3, r0
- 8002346: e016 b.n 8002376 <pb_skip_field+0x76>
- case PB_WT_STRING: return pb_skip_string(stream);
- 8002348: 6878 ldr r0, [r7, #4]
- 800234a: f7ff ff8d bl 8002268 <pb_skip_string>
- 800234e: 4603 mov r3, r0
- 8002350: e011 b.n 8002376 <pb_skip_field+0x76>
- case PB_WT_32BIT: return pb_read(stream, NULL, 4);
- 8002352: 2204 movs r2, #4
- 8002354: 2100 movs r1, #0
- 8002356: 6878 ldr r0, [r7, #4]
- 8002358: f7ff fda8 bl 8001eac <pb_read>
- 800235c: 4603 mov r3, r0
- 800235e: e00a b.n 8002376 <pb_skip_field+0x76>
- default: PB_RETURN_ERROR(stream, "invalid wire_type");
- 8002360: 687b ldr r3, [r7, #4]
- 8002362: 68db ldr r3, [r3, #12]
- 8002364: 2b00 cmp r3, #0
- 8002366: d002 beq.n 800236e <pb_skip_field+0x6e>
- 8002368: 687b ldr r3, [r7, #4]
- 800236a: 68db ldr r3, [r3, #12]
- 800236c: e000 b.n 8002370 <pb_skip_field+0x70>
- 800236e: 4b04 ldr r3, [pc, #16] ; (8002380 <pb_skip_field+0x80>)
- 8002370: 687a ldr r2, [r7, #4]
- 8002372: 60d3 str r3, [r2, #12]
- 8002374: 2300 movs r3, #0
- }
-}
- 8002376: 4618 mov r0, r3
- 8002378: 3708 adds r7, #8
- 800237a: 46bd mov sp, r7
- 800237c: bd80 pop {r7, pc}
- 800237e: bf00 nop
- 8002380: 08008a10 .word 0x08008a10
-
-08002384 <read_raw_value>:
-
-/* Read a raw value to buffer, for the purpose of passing it to callback as
- * a substream. Size is maximum size on call, and actual size on return.
- */
-static bool checkreturn read_raw_value(pb_istream_t *stream, pb_wire_type_t wire_type, pb_byte_t *buf, size_t *size)
-{
- 8002384: b580 push {r7, lr}
- 8002386: b086 sub sp, #24
- 8002388: af00 add r7, sp, #0
- 800238a: 60f8 str r0, [r7, #12]
- 800238c: 607a str r2, [r7, #4]
- 800238e: 603b str r3, [r7, #0]
- 8002390: 460b mov r3, r1
- 8002392: 72fb strb r3, [r7, #11]
- size_t max_size = *size;
- 8002394: 683b ldr r3, [r7, #0]
- 8002396: 681b ldr r3, [r3, #0]
- 8002398: 617b str r3, [r7, #20]
- switch (wire_type)
- 800239a: 7afb ldrb r3, [r7, #11]
- 800239c: 2b01 cmp r3, #1
- 800239e: d032 beq.n 8002406 <read_raw_value+0x82>
- 80023a0: 2b05 cmp r3, #5
- 80023a2: d03a beq.n 800241a <read_raw_value+0x96>
- 80023a4: 2b00 cmp r3, #0
- 80023a6: d142 bne.n 800242e <read_raw_value+0xaa>
- {
- case PB_WT_VARINT:
- *size = 0;
- 80023a8: 683b ldr r3, [r7, #0]
- 80023aa: 2200 movs r2, #0
- 80023ac: 601a str r2, [r3, #0]
- do
- {
- (*size)++;
- 80023ae: 683b ldr r3, [r7, #0]
- 80023b0: 681b ldr r3, [r3, #0]
- 80023b2: 1c5a adds r2, r3, #1
- 80023b4: 683b ldr r3, [r7, #0]
- 80023b6: 601a str r2, [r3, #0]
- if (*size > max_size)
- 80023b8: 683b ldr r3, [r7, #0]
- 80023ba: 681b ldr r3, [r3, #0]
- 80023bc: 697a ldr r2, [r7, #20]
- 80023be: 429a cmp r2, r3
- 80023c0: d20b bcs.n 80023da <read_raw_value+0x56>
- PB_RETURN_ERROR(stream, "varint overflow");
- 80023c2: 68fb ldr r3, [r7, #12]
- 80023c4: 68db ldr r3, [r3, #12]
- 80023c6: 2b00 cmp r3, #0
- 80023c8: d002 beq.n 80023d0 <read_raw_value+0x4c>
- 80023ca: 68fb ldr r3, [r7, #12]
- 80023cc: 68db ldr r3, [r3, #12]
- 80023ce: e000 b.n 80023d2 <read_raw_value+0x4e>
- 80023d0: 4b1e ldr r3, [pc, #120] ; (800244c <read_raw_value+0xc8>)
- 80023d2: 68fa ldr r2, [r7, #12]
- 80023d4: 60d3 str r3, [r2, #12]
- 80023d6: 2300 movs r3, #0
- 80023d8: e034 b.n 8002444 <read_raw_value+0xc0>
-
- if (!pb_read(stream, buf, 1))
- 80023da: 2201 movs r2, #1
- 80023dc: 6879 ldr r1, [r7, #4]
- 80023de: 68f8 ldr r0, [r7, #12]
- 80023e0: f7ff fd64 bl 8001eac <pb_read>
- 80023e4: 4603 mov r3, r0
- 80023e6: f083 0301 eor.w r3, r3, #1
- 80023ea: b2db uxtb r3, r3
- 80023ec: 2b00 cmp r3, #0
- 80023ee: d001 beq.n 80023f4 <read_raw_value+0x70>
- return false;
- 80023f0: 2300 movs r3, #0
- 80023f2: e027 b.n 8002444 <read_raw_value+0xc0>
- } while (*buf++ & 0x80);
- 80023f4: 687b ldr r3, [r7, #4]
- 80023f6: 1c5a adds r2, r3, #1
- 80023f8: 607a str r2, [r7, #4]
- 80023fa: 781b ldrb r3, [r3, #0]
- 80023fc: b25b sxtb r3, r3
- 80023fe: 2b00 cmp r3, #0
- 8002400: dbd5 blt.n 80023ae <read_raw_value+0x2a>
- return true;
- 8002402: 2301 movs r3, #1
- 8002404: e01e b.n 8002444 <read_raw_value+0xc0>
-
- case PB_WT_64BIT:
- *size = 8;
- 8002406: 683b ldr r3, [r7, #0]
- 8002408: 2208 movs r2, #8
- 800240a: 601a str r2, [r3, #0]
- return pb_read(stream, buf, 8);
- 800240c: 2208 movs r2, #8
- 800240e: 6879 ldr r1, [r7, #4]
- 8002410: 68f8 ldr r0, [r7, #12]
- 8002412: f7ff fd4b bl 8001eac <pb_read>
- 8002416: 4603 mov r3, r0
- 8002418: e014 b.n 8002444 <read_raw_value+0xc0>
-
- case PB_WT_32BIT:
- *size = 4;
- 800241a: 683b ldr r3, [r7, #0]
- 800241c: 2204 movs r2, #4
- 800241e: 601a str r2, [r3, #0]
- return pb_read(stream, buf, 4);
- 8002420: 2204 movs r2, #4
- 8002422: 6879 ldr r1, [r7, #4]
- 8002424: 68f8 ldr r0, [r7, #12]
- 8002426: f7ff fd41 bl 8001eac <pb_read>
- 800242a: 4603 mov r3, r0
- 800242c: e00a b.n 8002444 <read_raw_value+0xc0>
- /* Calling read_raw_value with a PB_WT_STRING is an error.
- * Explicitly handle this case and fallthrough to default to avoid
- * compiler warnings.
- */
-
- default: PB_RETURN_ERROR(stream, "invalid wire_type");
- 800242e: 68fb ldr r3, [r7, #12]
- 8002430: 68db ldr r3, [r3, #12]
- 8002432: 2b00 cmp r3, #0
- 8002434: d002 beq.n 800243c <read_raw_value+0xb8>
- 8002436: 68fb ldr r3, [r7, #12]
- 8002438: 68db ldr r3, [r3, #12]
- 800243a: e000 b.n 800243e <read_raw_value+0xba>
- 800243c: 4b04 ldr r3, [pc, #16] ; (8002450 <read_raw_value+0xcc>)
- 800243e: 68fa ldr r2, [r7, #12]
- 8002440: 60d3 str r3, [r2, #12]
- 8002442: 2300 movs r3, #0
- }
-}
- 8002444: 4618 mov r0, r3
- 8002446: 3718 adds r7, #24
- 8002448: 46bd mov sp, r7
- 800244a: bd80 pop {r7, pc}
- 800244c: 08008a00 .word 0x08008a00
- 8002450: 08008a10 .word 0x08008a10
-
-08002454 <pb_make_string_substream>:
-
-/* Decode string length from stream and return a substream with limited length.
- * Remember to close the substream using pb_close_string_substream().
- */
-bool checkreturn pb_make_string_substream(pb_istream_t *stream, pb_istream_t *substream)
-{
- 8002454: b590 push {r4, r7, lr}
- 8002456: b085 sub sp, #20
- 8002458: af00 add r7, sp, #0
- 800245a: 6078 str r0, [r7, #4]
- 800245c: 6039 str r1, [r7, #0]
- uint32_t size;
- if (!pb_decode_varint32(stream, &size))
- 800245e: f107 030c add.w r3, r7, #12
- 8002462: 4619 mov r1, r3
- 8002464: 6878 ldr r0, [r7, #4]
- 8002466: f7ff fe71 bl 800214c <pb_decode_varint32>
- 800246a: 4603 mov r3, r0
- 800246c: f083 0301 eor.w r3, r3, #1
- 8002470: b2db uxtb r3, r3
- 8002472: 2b00 cmp r3, #0
- 8002474: d001 beq.n 800247a <pb_make_string_substream+0x26>
- return false;
- 8002476: 2300 movs r3, #0
- 8002478: e020 b.n 80024bc <pb_make_string_substream+0x68>
-
- *substream = *stream;
- 800247a: 683a ldr r2, [r7, #0]
- 800247c: 687b ldr r3, [r7, #4]
- 800247e: 4614 mov r4, r2
- 8002480: cb0f ldmia r3, {r0, r1, r2, r3}
- 8002482: e884 000f stmia.w r4, {r0, r1, r2, r3}
- if (substream->bytes_left < size)
- 8002486: 683b ldr r3, [r7, #0]
- 8002488: 689a ldr r2, [r3, #8]
- 800248a: 68fb ldr r3, [r7, #12]
- 800248c: 429a cmp r2, r3
- 800248e: d20b bcs.n 80024a8 <pb_make_string_substream+0x54>
- PB_RETURN_ERROR(stream, "parent stream too short");
- 8002490: 687b ldr r3, [r7, #4]
- 8002492: 68db ldr r3, [r3, #12]
- 8002494: 2b00 cmp r3, #0
- 8002496: d002 beq.n 800249e <pb_make_string_substream+0x4a>
- 8002498: 687b ldr r3, [r7, #4]
- 800249a: 68db ldr r3, [r3, #12]
- 800249c: e000 b.n 80024a0 <pb_make_string_substream+0x4c>
- 800249e: 4b09 ldr r3, [pc, #36] ; (80024c4 <pb_make_string_substream+0x70>)
- 80024a0: 687a ldr r2, [r7, #4]
- 80024a2: 60d3 str r3, [r2, #12]
- 80024a4: 2300 movs r3, #0
- 80024a6: e009 b.n 80024bc <pb_make_string_substream+0x68>
-
- substream->bytes_left = (size_t)size;
- 80024a8: 68fa ldr r2, [r7, #12]
- 80024aa: 683b ldr r3, [r7, #0]
- 80024ac: 609a str r2, [r3, #8]
- stream->bytes_left -= (size_t)size;
- 80024ae: 687b ldr r3, [r7, #4]
- 80024b0: 689a ldr r2, [r3, #8]
- 80024b2: 68fb ldr r3, [r7, #12]
- 80024b4: 1ad2 subs r2, r2, r3
- 80024b6: 687b ldr r3, [r7, #4]
- 80024b8: 609a str r2, [r3, #8]
- return true;
- 80024ba: 2301 movs r3, #1
-}
- 80024bc: 4618 mov r0, r3
- 80024be: 3714 adds r7, #20
- 80024c0: 46bd mov sp, r7
- 80024c2: bd90 pop {r4, r7, pc}
- 80024c4: 08008a24 .word 0x08008a24
-
-080024c8 <pb_close_string_substream>:
-
-bool checkreturn pb_close_string_substream(pb_istream_t *stream, pb_istream_t *substream)
-{
- 80024c8: b580 push {r7, lr}
- 80024ca: b082 sub sp, #8
- 80024cc: af00 add r7, sp, #0
- 80024ce: 6078 str r0, [r7, #4]
- 80024d0: 6039 str r1, [r7, #0]
- if (substream->bytes_left) {
- 80024d2: 683b ldr r3, [r7, #0]
- 80024d4: 689b ldr r3, [r3, #8]
- 80024d6: 2b00 cmp r3, #0
- 80024d8: d00e beq.n 80024f8 <pb_close_string_substream+0x30>
- if (!pb_read(substream, NULL, substream->bytes_left))
- 80024da: 683b ldr r3, [r7, #0]
- 80024dc: 689b ldr r3, [r3, #8]
- 80024de: 461a mov r2, r3
- 80024e0: 2100 movs r1, #0
- 80024e2: 6838 ldr r0, [r7, #0]
- 80024e4: f7ff fce2 bl 8001eac <pb_read>
- 80024e8: 4603 mov r3, r0
- 80024ea: f083 0301 eor.w r3, r3, #1
- 80024ee: b2db uxtb r3, r3
- 80024f0: 2b00 cmp r3, #0
- 80024f2: d001 beq.n 80024f8 <pb_close_string_substream+0x30>
- return false;
- 80024f4: 2300 movs r3, #0
- 80024f6: e008 b.n 800250a <pb_close_string_substream+0x42>
- }
-
- stream->state = substream->state;
- 80024f8: 683b ldr r3, [r7, #0]
- 80024fa: 685a ldr r2, [r3, #4]
- 80024fc: 687b ldr r3, [r7, #4]
- 80024fe: 605a str r2, [r3, #4]
-
-#ifndef PB_NO_ERRMSG
- stream->errmsg = substream->errmsg;
- 8002500: 683b ldr r3, [r7, #0]
- 8002502: 68da ldr r2, [r3, #12]
- 8002504: 687b ldr r3, [r7, #4]
- 8002506: 60da str r2, [r3, #12]
-#endif
- return true;
- 8002508: 2301 movs r3, #1
-}
- 800250a: 4618 mov r0, r3
- 800250c: 3708 adds r7, #8
- 800250e: 46bd mov sp, r7
- 8002510: bd80 pop {r7, pc}
- ...
-
-08002514 <check_wire_type>:
-/*************************
- * Decode a single field *
- *************************/
-
-static bool checkreturn check_wire_type(pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- 8002514: b480 push {r7}
- 8002516: b083 sub sp, #12
- 8002518: af00 add r7, sp, #0
- 800251a: 4603 mov r3, r0
- 800251c: 6039 str r1, [r7, #0]
- 800251e: 71fb strb r3, [r7, #7]
- switch (PB_LTYPE(field->type))
- 8002520: 683b ldr r3, [r7, #0]
- 8002522: 7d9b ldrb r3, [r3, #22]
- 8002524: f003 030f and.w r3, r3, #15
- 8002528: 2b0b cmp r3, #11
- 800252a: d837 bhi.n 800259c <check_wire_type+0x88>
- 800252c: a201 add r2, pc, #4 ; (adr r2, 8002534 <check_wire_type+0x20>)
- 800252e: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 8002532: bf00 nop
- 8002534: 08002565 .word 0x08002565
- 8002538: 08002565 .word 0x08002565
- 800253c: 08002565 .word 0x08002565
- 8002540: 08002565 .word 0x08002565
- 8002544: 08002573 .word 0x08002573
- 8002548: 08002581 .word 0x08002581
- 800254c: 0800258f .word 0x0800258f
- 8002550: 0800258f .word 0x0800258f
- 8002554: 0800258f .word 0x0800258f
- 8002558: 0800258f .word 0x0800258f
- 800255c: 0800259d .word 0x0800259d
- 8002560: 0800258f .word 0x0800258f
- {
- case PB_LTYPE_BOOL:
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- return wire_type == PB_WT_VARINT;
- 8002564: 79fb ldrb r3, [r7, #7]
- 8002566: 2b00 cmp r3, #0
- 8002568: bf0c ite eq
- 800256a: 2301 moveq r3, #1
- 800256c: 2300 movne r3, #0
- 800256e: b2db uxtb r3, r3
- 8002570: e015 b.n 800259e <check_wire_type+0x8a>
-
- case PB_LTYPE_FIXED32:
- return wire_type == PB_WT_32BIT;
- 8002572: 79fb ldrb r3, [r7, #7]
- 8002574: 2b05 cmp r3, #5
- 8002576: bf0c ite eq
- 8002578: 2301 moveq r3, #1
- 800257a: 2300 movne r3, #0
- 800257c: b2db uxtb r3, r3
- 800257e: e00e b.n 800259e <check_wire_type+0x8a>
-
- case PB_LTYPE_FIXED64:
- return wire_type == PB_WT_64BIT;
- 8002580: 79fb ldrb r3, [r7, #7]
- 8002582: 2b01 cmp r3, #1
- 8002584: bf0c ite eq
- 8002586: 2301 moveq r3, #1
- 8002588: 2300 movne r3, #0
- 800258a: b2db uxtb r3, r3
- 800258c: e007 b.n 800259e <check_wire_type+0x8a>
- case PB_LTYPE_BYTES:
- case PB_LTYPE_STRING:
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- return wire_type == PB_WT_STRING;
- 800258e: 79fb ldrb r3, [r7, #7]
- 8002590: 2b02 cmp r3, #2
- 8002592: bf0c ite eq
- 8002594: 2301 moveq r3, #1
- 8002596: 2300 movne r3, #0
- 8002598: b2db uxtb r3, r3
- 800259a: e000 b.n 800259e <check_wire_type+0x8a>
-
- default:
- return false;
- 800259c: 2300 movs r3, #0
- }
-}
- 800259e: 4618 mov r0, r3
- 80025a0: 370c adds r7, #12
- 80025a2: 46bd mov sp, r7
- 80025a4: f85d 7b04 ldr.w r7, [sp], #4
- 80025a8: 4770 bx lr
- 80025aa: bf00 nop
-
-080025ac <decode_basic_field>:
-
-static bool checkreturn decode_basic_field(pb_istream_t *stream, pb_field_iter_t *field)
-{
- 80025ac: b580 push {r7, lr}
- 80025ae: b082 sub sp, #8
- 80025b0: af00 add r7, sp, #0
- 80025b2: 6078 str r0, [r7, #4]
- 80025b4: 6039 str r1, [r7, #0]
- switch (PB_LTYPE(field->type))
- 80025b6: 683b ldr r3, [r7, #0]
- 80025b8: 7d9b ldrb r3, [r3, #22]
- 80025ba: f003 030f and.w r3, r3, #15
- 80025be: 2b0b cmp r3, #11
- 80025c0: d844 bhi.n 800264c <decode_basic_field+0xa0>
- 80025c2: a201 add r2, pc, #4 ; (adr r2, 80025c8 <decode_basic_field+0x1c>)
- 80025c4: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 80025c8: 080025f9 .word 0x080025f9
- 80025cc: 08002605 .word 0x08002605
- 80025d0: 08002605 .word 0x08002605
- 80025d4: 08002605 .word 0x08002605
- 80025d8: 08002611 .word 0x08002611
- 80025dc: 08002611 .word 0x08002611
- 80025e0: 0800261d .word 0x0800261d
- 80025e4: 08002629 .word 0x08002629
- 80025e8: 08002635 .word 0x08002635
- 80025ec: 08002635 .word 0x08002635
- 80025f0: 0800264d .word 0x0800264d
- 80025f4: 08002641 .word 0x08002641
- {
- case PB_LTYPE_BOOL:
- return pb_dec_bool(stream, field);
- 80025f8: 6839 ldr r1, [r7, #0]
- 80025fa: 6878 ldr r0, [r7, #4]
- 80025fc: f000 ff5f bl 80034be <pb_dec_bool>
- 8002600: 4603 mov r3, r0
- 8002602: e02e b.n 8002662 <decode_basic_field+0xb6>
-
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- return pb_dec_varint(stream, field);
- 8002604: 6839 ldr r1, [r7, #0]
- 8002606: 6878 ldr r0, [r7, #4]
- 8002608: f000 ff6a bl 80034e0 <pb_dec_varint>
- 800260c: 4603 mov r3, r0
- 800260e: e028 b.n 8002662 <decode_basic_field+0xb6>
-
- case PB_LTYPE_FIXED32:
- case PB_LTYPE_FIXED64:
- return pb_dec_fixed(stream, field);
- 8002610: 6839 ldr r1, [r7, #0]
- 8002612: 6878 ldr r0, [r7, #4]
- 8002614: f001 f87e bl 8003714 <pb_dec_fixed>
- 8002618: 4603 mov r3, r0
- 800261a: e022 b.n 8002662 <decode_basic_field+0xb6>
-
- case PB_LTYPE_BYTES:
- return pb_dec_bytes(stream, field);
- 800261c: 6839 ldr r1, [r7, #0]
- 800261e: 6878 ldr r0, [r7, #4]
- 8002620: f001 f8a6 bl 8003770 <pb_dec_bytes>
- 8002624: 4603 mov r3, r0
- 8002626: e01c b.n 8002662 <decode_basic_field+0xb6>
-
- case PB_LTYPE_STRING:
- return pb_dec_string(stream, field);
- 8002628: 6839 ldr r1, [r7, #0]
- 800262a: 6878 ldr r0, [r7, #4]
- 800262c: f001 f914 bl 8003858 <pb_dec_string>
- 8002630: 4603 mov r3, r0
- 8002632: e016 b.n 8002662 <decode_basic_field+0xb6>
-
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- return pb_dec_submessage(stream, field);
- 8002634: 6839 ldr r1, [r7, #0]
- 8002636: 6878 ldr r0, [r7, #4]
- 8002638: f001 f98a bl 8003950 <pb_dec_submessage>
- 800263c: 4603 mov r3, r0
- 800263e: e010 b.n 8002662 <decode_basic_field+0xb6>
-
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- return pb_dec_fixed_length_bytes(stream, field);
- 8002640: 6839 ldr r1, [r7, #0]
- 8002642: 6878 ldr r0, [r7, #4]
- 8002644: f001 fa1e bl 8003a84 <pb_dec_fixed_length_bytes>
- 8002648: 4603 mov r3, r0
- 800264a: e00a b.n 8002662 <decode_basic_field+0xb6>
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- 800264c: 687b ldr r3, [r7, #4]
- 800264e: 68db ldr r3, [r3, #12]
- 8002650: 2b00 cmp r3, #0
- 8002652: d002 beq.n 800265a <decode_basic_field+0xae>
- 8002654: 687b ldr r3, [r7, #4]
- 8002656: 68db ldr r3, [r3, #12]
- 8002658: e000 b.n 800265c <decode_basic_field+0xb0>
- 800265a: 4b04 ldr r3, [pc, #16] ; (800266c <decode_basic_field+0xc0>)
- 800265c: 687a ldr r2, [r7, #4]
- 800265e: 60d3 str r3, [r2, #12]
- 8002660: 2300 movs r3, #0
- }
-}
- 8002662: 4618 mov r0, r3
- 8002664: 3708 adds r7, #8
- 8002666: 46bd mov sp, r7
- 8002668: bd80 pop {r7, pc}
- 800266a: bf00 nop
- 800266c: 08008a3c .word 0x08008a3c
-
-08002670 <decode_static_field>:
-
-static bool checkreturn decode_static_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- 8002670: b580 push {r7, lr}
- 8002672: b08c sub sp, #48 ; 0x30
- 8002674: af00 add r7, sp, #0
- 8002676: 60f8 str r0, [r7, #12]
- 8002678: 460b mov r3, r1
- 800267a: 607a str r2, [r7, #4]
- 800267c: 72fb strb r3, [r7, #11]
- switch (PB_HTYPE(field->type))
- 800267e: 687b ldr r3, [r7, #4]
- 8002680: 7d9b ldrb r3, [r3, #22]
- 8002682: f003 0330 and.w r3, r3, #48 ; 0x30
- 8002686: 2b10 cmp r3, #16
- 8002688: d027 beq.n 80026da <decode_static_field+0x6a>
- 800268a: 2b10 cmp r3, #16
- 800268c: d802 bhi.n 8002694 <decode_static_field+0x24>
- 800268e: 2b00 cmp r3, #0
- 8002690: d006 beq.n 80026a0 <decode_static_field+0x30>
- 8002692: e12e b.n 80028f2 <decode_static_field+0x282>
- 8002694: 2b20 cmp r3, #32
- 8002696: d045 beq.n 8002724 <decode_static_field+0xb4>
- 8002698: 2b30 cmp r3, #48 ; 0x30
- 800269a: f000 80f4 beq.w 8002886 <decode_static_field+0x216>
- 800269e: e128 b.n 80028f2 <decode_static_field+0x282>
- {
- case PB_HTYPE_REQUIRED:
- if (!check_wire_type(wire_type, field))
- 80026a0: 7afb ldrb r3, [r7, #11]
- 80026a2: 6879 ldr r1, [r7, #4]
- 80026a4: 4618 mov r0, r3
- 80026a6: f7ff ff35 bl 8002514 <check_wire_type>
- 80026aa: 4603 mov r3, r0
- 80026ac: f083 0301 eor.w r3, r3, #1
- 80026b0: b2db uxtb r3, r3
- 80026b2: 2b00 cmp r3, #0
- 80026b4: d00b beq.n 80026ce <decode_static_field+0x5e>
- PB_RETURN_ERROR(stream, "wrong wire type");
- 80026b6: 68fb ldr r3, [r7, #12]
- 80026b8: 68db ldr r3, [r3, #12]
- 80026ba: 2b00 cmp r3, #0
- 80026bc: d002 beq.n 80026c4 <decode_static_field+0x54>
- 80026be: 68fb ldr r3, [r7, #12]
- 80026c0: 68db ldr r3, [r3, #12]
- 80026c2: e000 b.n 80026c6 <decode_static_field+0x56>
- 80026c4: 4b92 ldr r3, [pc, #584] ; (8002910 <decode_static_field+0x2a0>)
- 80026c6: 68fa ldr r2, [r7, #12]
- 80026c8: 60d3 str r3, [r2, #12]
- 80026ca: 2300 movs r3, #0
- 80026cc: e11c b.n 8002908 <decode_static_field+0x298>
-
- return decode_basic_field(stream, field);
- 80026ce: 6879 ldr r1, [r7, #4]
- 80026d0: 68f8 ldr r0, [r7, #12]
- 80026d2: f7ff ff6b bl 80025ac <decode_basic_field>
- 80026d6: 4603 mov r3, r0
- 80026d8: e116 b.n 8002908 <decode_static_field+0x298>
-
- case PB_HTYPE_OPTIONAL:
- if (!check_wire_type(wire_type, field))
- 80026da: 7afb ldrb r3, [r7, #11]
- 80026dc: 6879 ldr r1, [r7, #4]
- 80026de: 4618 mov r0, r3
- 80026e0: f7ff ff18 bl 8002514 <check_wire_type>
- 80026e4: 4603 mov r3, r0
- 80026e6: f083 0301 eor.w r3, r3, #1
- 80026ea: b2db uxtb r3, r3
- 80026ec: 2b00 cmp r3, #0
- 80026ee: d00b beq.n 8002708 <decode_static_field+0x98>
- PB_RETURN_ERROR(stream, "wrong wire type");
- 80026f0: 68fb ldr r3, [r7, #12]
- 80026f2: 68db ldr r3, [r3, #12]
- 80026f4: 2b00 cmp r3, #0
- 80026f6: d002 beq.n 80026fe <decode_static_field+0x8e>
- 80026f8: 68fb ldr r3, [r7, #12]
- 80026fa: 68db ldr r3, [r3, #12]
- 80026fc: e000 b.n 8002700 <decode_static_field+0x90>
- 80026fe: 4b84 ldr r3, [pc, #528] ; (8002910 <decode_static_field+0x2a0>)
- 8002700: 68fa ldr r2, [r7, #12]
- 8002702: 60d3 str r3, [r2, #12]
- 8002704: 2300 movs r3, #0
- 8002706: e0ff b.n 8002908 <decode_static_field+0x298>
-
- if (field->pSize != NULL)
- 8002708: 687b ldr r3, [r7, #4]
- 800270a: 6a1b ldr r3, [r3, #32]
- 800270c: 2b00 cmp r3, #0
- 800270e: d003 beq.n 8002718 <decode_static_field+0xa8>
- *(bool*)field->pSize = true;
- 8002710: 687b ldr r3, [r7, #4]
- 8002712: 6a1b ldr r3, [r3, #32]
- 8002714: 2201 movs r2, #1
- 8002716: 701a strb r2, [r3, #0]
- return decode_basic_field(stream, field);
- 8002718: 6879 ldr r1, [r7, #4]
- 800271a: 68f8 ldr r0, [r7, #12]
- 800271c: f7ff ff46 bl 80025ac <decode_basic_field>
- 8002720: 4603 mov r3, r0
- 8002722: e0f1 b.n 8002908 <decode_static_field+0x298>
-
- case PB_HTYPE_REPEATED:
- if (wire_type == PB_WT_STRING
- 8002724: 7afb ldrb r3, [r7, #11]
- 8002726: 2b02 cmp r3, #2
- 8002728: d16b bne.n 8002802 <decode_static_field+0x192>
- && PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
- 800272a: 687b ldr r3, [r7, #4]
- 800272c: 7d9b ldrb r3, [r3, #22]
- 800272e: f003 030f and.w r3, r3, #15
- 8002732: 2b05 cmp r3, #5
- 8002734: d865 bhi.n 8002802 <decode_static_field+0x192>
- {
- /* Packed array */
- bool status = true;
- 8002736: 2301 movs r3, #1
- 8002738: f887 302f strb.w r3, [r7, #47] ; 0x2f
- pb_istream_t substream;
- pb_size_t *size = (pb_size_t*)field->pSize;
- 800273c: 687b ldr r3, [r7, #4]
- 800273e: 6a1b ldr r3, [r3, #32]
- 8002740: 62bb str r3, [r7, #40] ; 0x28
- field->pData = (char*)field->pField + field->data_size * (*size);
- 8002742: 687b ldr r3, [r7, #4]
- 8002744: 699b ldr r3, [r3, #24]
- 8002746: 687a ldr r2, [r7, #4]
- 8002748: 8a52 ldrh r2, [r2, #18]
- 800274a: 4611 mov r1, r2
- 800274c: 6aba ldr r2, [r7, #40] ; 0x28
- 800274e: 8812 ldrh r2, [r2, #0]
- 8002750: fb02 f201 mul.w r2, r2, r1
- 8002754: 441a add r2, r3
- 8002756: 687b ldr r3, [r7, #4]
- 8002758: 61da str r2, [r3, #28]
-
- if (!pb_make_string_substream(stream, &substream))
- 800275a: f107 0314 add.w r3, r7, #20
- 800275e: 4619 mov r1, r3
- 8002760: 68f8 ldr r0, [r7, #12]
- 8002762: f7ff fe77 bl 8002454 <pb_make_string_substream>
- 8002766: 4603 mov r3, r0
- 8002768: f083 0301 eor.w r3, r3, #1
- 800276c: b2db uxtb r3, r3
- 800276e: 2b00 cmp r3, #0
- 8002770: d01e beq.n 80027b0 <decode_static_field+0x140>
- return false;
- 8002772: 2300 movs r3, #0
- 8002774: e0c8 b.n 8002908 <decode_static_field+0x298>
-
- while (substream.bytes_left > 0 && *size < field->array_size)
- {
- if (!decode_basic_field(&substream, field))
- 8002776: f107 0314 add.w r3, r7, #20
- 800277a: 6879 ldr r1, [r7, #4]
- 800277c: 4618 mov r0, r3
- 800277e: f7ff ff15 bl 80025ac <decode_basic_field>
- 8002782: 4603 mov r3, r0
- 8002784: f083 0301 eor.w r3, r3, #1
- 8002788: b2db uxtb r3, r3
- 800278a: 2b00 cmp r3, #0
- 800278c: d003 beq.n 8002796 <decode_static_field+0x126>
- {
- status = false;
- 800278e: 2300 movs r3, #0
- 8002790: f887 302f strb.w r3, [r7, #47] ; 0x2f
- break;
- 8002794: e015 b.n 80027c2 <decode_static_field+0x152>
- }
- (*size)++;
- 8002796: 6abb ldr r3, [r7, #40] ; 0x28
- 8002798: 881b ldrh r3, [r3, #0]
- 800279a: 3301 adds r3, #1
- 800279c: b29a uxth r2, r3
- 800279e: 6abb ldr r3, [r7, #40] ; 0x28
- 80027a0: 801a strh r2, [r3, #0]
- field->pData = (char*)field->pData + field->data_size;
- 80027a2: 687b ldr r3, [r7, #4]
- 80027a4: 69db ldr r3, [r3, #28]
- 80027a6: 687a ldr r2, [r7, #4]
- 80027a8: 8a52 ldrh r2, [r2, #18]
- 80027aa: 441a add r2, r3
- 80027ac: 687b ldr r3, [r7, #4]
- 80027ae: 61da str r2, [r3, #28]
- while (substream.bytes_left > 0 && *size < field->array_size)
- 80027b0: 69fb ldr r3, [r7, #28]
- 80027b2: 2b00 cmp r3, #0
- 80027b4: d005 beq.n 80027c2 <decode_static_field+0x152>
- 80027b6: 6abb ldr r3, [r7, #40] ; 0x28
- 80027b8: 881a ldrh r2, [r3, #0]
- 80027ba: 687b ldr r3, [r7, #4]
- 80027bc: 8a9b ldrh r3, [r3, #20]
- 80027be: 429a cmp r2, r3
- 80027c0: d3d9 bcc.n 8002776 <decode_static_field+0x106>
- }
-
- if (substream.bytes_left != 0)
- 80027c2: 69fb ldr r3, [r7, #28]
- 80027c4: 2b00 cmp r3, #0
- 80027c6: d00b beq.n 80027e0 <decode_static_field+0x170>
- PB_RETURN_ERROR(stream, "array overflow");
- 80027c8: 68fb ldr r3, [r7, #12]
- 80027ca: 68db ldr r3, [r3, #12]
- 80027cc: 2b00 cmp r3, #0
- 80027ce: d002 beq.n 80027d6 <decode_static_field+0x166>
- 80027d0: 68fb ldr r3, [r7, #12]
- 80027d2: 68db ldr r3, [r3, #12]
- 80027d4: e000 b.n 80027d8 <decode_static_field+0x168>
- 80027d6: 4b4f ldr r3, [pc, #316] ; (8002914 <decode_static_field+0x2a4>)
- 80027d8: 68fa ldr r2, [r7, #12]
- 80027da: 60d3 str r3, [r2, #12]
- 80027dc: 2300 movs r3, #0
- 80027de: e093 b.n 8002908 <decode_static_field+0x298>
- if (!pb_close_string_substream(stream, &substream))
- 80027e0: f107 0314 add.w r3, r7, #20
- 80027e4: 4619 mov r1, r3
- 80027e6: 68f8 ldr r0, [r7, #12]
- 80027e8: f7ff fe6e bl 80024c8 <pb_close_string_substream>
- 80027ec: 4603 mov r3, r0
- 80027ee: f083 0301 eor.w r3, r3, #1
- 80027f2: b2db uxtb r3, r3
- 80027f4: 2b00 cmp r3, #0
- 80027f6: d001 beq.n 80027fc <decode_static_field+0x18c>
- return false;
- 80027f8: 2300 movs r3, #0
- 80027fa: e085 b.n 8002908 <decode_static_field+0x298>
-
- return status;
- 80027fc: f897 302f ldrb.w r3, [r7, #47] ; 0x2f
- 8002800: e082 b.n 8002908 <decode_static_field+0x298>
- }
- else
- {
- /* Repeated field */
- pb_size_t *size = (pb_size_t*)field->pSize;
- 8002802: 687b ldr r3, [r7, #4]
- 8002804: 6a1b ldr r3, [r3, #32]
- 8002806: 627b str r3, [r7, #36] ; 0x24
- field->pData = (char*)field->pField + field->data_size * (*size);
- 8002808: 687b ldr r3, [r7, #4]
- 800280a: 699b ldr r3, [r3, #24]
- 800280c: 687a ldr r2, [r7, #4]
- 800280e: 8a52 ldrh r2, [r2, #18]
- 8002810: 4611 mov r1, r2
- 8002812: 6a7a ldr r2, [r7, #36] ; 0x24
- 8002814: 8812 ldrh r2, [r2, #0]
- 8002816: fb02 f201 mul.w r2, r2, r1
- 800281a: 441a add r2, r3
- 800281c: 687b ldr r3, [r7, #4]
- 800281e: 61da str r2, [r3, #28]
-
- if (!check_wire_type(wire_type, field))
- 8002820: 7afb ldrb r3, [r7, #11]
- 8002822: 6879 ldr r1, [r7, #4]
- 8002824: 4618 mov r0, r3
- 8002826: f7ff fe75 bl 8002514 <check_wire_type>
- 800282a: 4603 mov r3, r0
- 800282c: f083 0301 eor.w r3, r3, #1
- 8002830: b2db uxtb r3, r3
- 8002832: 2b00 cmp r3, #0
- 8002834: d00b beq.n 800284e <decode_static_field+0x1de>
- PB_RETURN_ERROR(stream, "wrong wire type");
- 8002836: 68fb ldr r3, [r7, #12]
- 8002838: 68db ldr r3, [r3, #12]
- 800283a: 2b00 cmp r3, #0
- 800283c: d002 beq.n 8002844 <decode_static_field+0x1d4>
- 800283e: 68fb ldr r3, [r7, #12]
- 8002840: 68db ldr r3, [r3, #12]
- 8002842: e000 b.n 8002846 <decode_static_field+0x1d6>
- 8002844: 4b32 ldr r3, [pc, #200] ; (8002910 <decode_static_field+0x2a0>)
- 8002846: 68fa ldr r2, [r7, #12]
- 8002848: 60d3 str r3, [r2, #12]
- 800284a: 2300 movs r3, #0
- 800284c: e05c b.n 8002908 <decode_static_field+0x298>
-
- if ((*size)++ >= field->array_size)
- 800284e: 6a7b ldr r3, [r7, #36] ; 0x24
- 8002850: 881b ldrh r3, [r3, #0]
- 8002852: 1c5a adds r2, r3, #1
- 8002854: b291 uxth r1, r2
- 8002856: 6a7a ldr r2, [r7, #36] ; 0x24
- 8002858: 8011 strh r1, [r2, #0]
- 800285a: 687a ldr r2, [r7, #4]
- 800285c: 8a92 ldrh r2, [r2, #20]
- 800285e: 4293 cmp r3, r2
- 8002860: d30b bcc.n 800287a <decode_static_field+0x20a>
- PB_RETURN_ERROR(stream, "array overflow");
- 8002862: 68fb ldr r3, [r7, #12]
- 8002864: 68db ldr r3, [r3, #12]
- 8002866: 2b00 cmp r3, #0
- 8002868: d002 beq.n 8002870 <decode_static_field+0x200>
- 800286a: 68fb ldr r3, [r7, #12]
- 800286c: 68db ldr r3, [r3, #12]
- 800286e: e000 b.n 8002872 <decode_static_field+0x202>
- 8002870: 4b28 ldr r3, [pc, #160] ; (8002914 <decode_static_field+0x2a4>)
- 8002872: 68fa ldr r2, [r7, #12]
- 8002874: 60d3 str r3, [r2, #12]
- 8002876: 2300 movs r3, #0
- 8002878: e046 b.n 8002908 <decode_static_field+0x298>
-
- return decode_basic_field(stream, field);
- 800287a: 6879 ldr r1, [r7, #4]
- 800287c: 68f8 ldr r0, [r7, #12]
- 800287e: f7ff fe95 bl 80025ac <decode_basic_field>
- 8002882: 4603 mov r3, r0
- 8002884: e040 b.n 8002908 <decode_static_field+0x298>
- }
-
- case PB_HTYPE_ONEOF:
- *(pb_size_t*)field->pSize = field->tag;
- 8002886: 687b ldr r3, [r7, #4]
- 8002888: 6a1b ldr r3, [r3, #32]
- 800288a: 687a ldr r2, [r7, #4]
- 800288c: 8a12 ldrh r2, [r2, #16]
- 800288e: 801a strh r2, [r3, #0]
- if (PB_LTYPE_IS_SUBMSG(field->type))
- 8002890: 687b ldr r3, [r7, #4]
- 8002892: 7d9b ldrb r3, [r3, #22]
- 8002894: f003 030f and.w r3, r3, #15
- 8002898: 2b08 cmp r3, #8
- 800289a: d005 beq.n 80028a8 <decode_static_field+0x238>
- 800289c: 687b ldr r3, [r7, #4]
- 800289e: 7d9b ldrb r3, [r3, #22]
- 80028a0: f003 030f and.w r3, r3, #15
- 80028a4: 2b09 cmp r3, #9
- 80028a6: d107 bne.n 80028b8 <decode_static_field+0x248>
- * from some other union field.
- * If callbacks are needed inside oneof field, use .proto
- * option submsg_callback to have a separate callback function
- * that can set the fields before submessage is decoded.
- * pb_dec_submessage() will set any default values. */
- memset(field->pData, 0, (size_t)field->data_size);
- 80028a8: 687b ldr r3, [r7, #4]
- 80028aa: 69d8 ldr r0, [r3, #28]
- 80028ac: 687b ldr r3, [r7, #4]
- 80028ae: 8a5b ldrh r3, [r3, #18]
- 80028b0: 461a mov r2, r3
- 80028b2: 2100 movs r1, #0
- 80028b4: f006 f882 bl 80089bc <memset>
- }
-
- if (!check_wire_type(wire_type, field))
- 80028b8: 7afb ldrb r3, [r7, #11]
- 80028ba: 6879 ldr r1, [r7, #4]
- 80028bc: 4618 mov r0, r3
- 80028be: f7ff fe29 bl 8002514 <check_wire_type>
- 80028c2: 4603 mov r3, r0
- 80028c4: f083 0301 eor.w r3, r3, #1
- 80028c8: b2db uxtb r3, r3
- 80028ca: 2b00 cmp r3, #0
- 80028cc: d00b beq.n 80028e6 <decode_static_field+0x276>
- PB_RETURN_ERROR(stream, "wrong wire type");
- 80028ce: 68fb ldr r3, [r7, #12]
- 80028d0: 68db ldr r3, [r3, #12]
- 80028d2: 2b00 cmp r3, #0
- 80028d4: d002 beq.n 80028dc <decode_static_field+0x26c>
- 80028d6: 68fb ldr r3, [r7, #12]
- 80028d8: 68db ldr r3, [r3, #12]
- 80028da: e000 b.n 80028de <decode_static_field+0x26e>
- 80028dc: 4b0c ldr r3, [pc, #48] ; (8002910 <decode_static_field+0x2a0>)
- 80028de: 68fa ldr r2, [r7, #12]
- 80028e0: 60d3 str r3, [r2, #12]
- 80028e2: 2300 movs r3, #0
- 80028e4: e010 b.n 8002908 <decode_static_field+0x298>
-
- return decode_basic_field(stream, field);
- 80028e6: 6879 ldr r1, [r7, #4]
- 80028e8: 68f8 ldr r0, [r7, #12]
- 80028ea: f7ff fe5f bl 80025ac <decode_basic_field>
- 80028ee: 4603 mov r3, r0
- 80028f0: e00a b.n 8002908 <decode_static_field+0x298>
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- 80028f2: 68fb ldr r3, [r7, #12]
- 80028f4: 68db ldr r3, [r3, #12]
- 80028f6: 2b00 cmp r3, #0
- 80028f8: d002 beq.n 8002900 <decode_static_field+0x290>
- 80028fa: 68fb ldr r3, [r7, #12]
- 80028fc: 68db ldr r3, [r3, #12]
- 80028fe: e000 b.n 8002902 <decode_static_field+0x292>
- 8002900: 4b05 ldr r3, [pc, #20] ; (8002918 <decode_static_field+0x2a8>)
- 8002902: 68fa ldr r2, [r7, #12]
- 8002904: 60d3 str r3, [r2, #12]
- 8002906: 2300 movs r3, #0
- }
-}
- 8002908: 4618 mov r0, r3
- 800290a: 3730 adds r7, #48 ; 0x30
- 800290c: 46bd mov sp, r7
- 800290e: bd80 pop {r7, pc}
- 8002910: 08008a50 .word 0x08008a50
- 8002914: 08008a60 .word 0x08008a60
- 8002918: 08008a3c .word 0x08008a3c
-
-0800291c <decode_pointer_field>:
- }
-}
-#endif
-
-static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- 800291c: b480 push {r7}
- 800291e: b085 sub sp, #20
- 8002920: af00 add r7, sp, #0
- 8002922: 60f8 str r0, [r7, #12]
- 8002924: 460b mov r3, r1
- 8002926: 607a str r2, [r7, #4]
- 8002928: 72fb strb r3, [r7, #11]
-#ifndef PB_ENABLE_MALLOC
- PB_UNUSED(wire_type);
- PB_UNUSED(field);
- PB_RETURN_ERROR(stream, "no malloc support");
- 800292a: 68fb ldr r3, [r7, #12]
- 800292c: 68db ldr r3, [r3, #12]
- 800292e: 2b00 cmp r3, #0
- 8002930: d002 beq.n 8002938 <decode_pointer_field+0x1c>
- 8002932: 68fb ldr r3, [r7, #12]
- 8002934: 68db ldr r3, [r3, #12]
- 8002936: e000 b.n 800293a <decode_pointer_field+0x1e>
- 8002938: 4b04 ldr r3, [pc, #16] ; (800294c <decode_pointer_field+0x30>)
- 800293a: 68fa ldr r2, [r7, #12]
- 800293c: 60d3 str r3, [r2, #12]
- 800293e: 2300 movs r3, #0
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- }
-#endif
-}
- 8002940: 4618 mov r0, r3
- 8002942: 3714 adds r7, #20
- 8002944: 46bd mov sp, r7
- 8002946: f85d 7b04 ldr.w r7, [sp], #4
- 800294a: 4770 bx lr
- 800294c: 08008a70 .word 0x08008a70
-
-08002950 <decode_callback_field>:
-
-static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- 8002950: b590 push {r4, r7, lr}
- 8002952: b097 sub sp, #92 ; 0x5c
- 8002954: af00 add r7, sp, #0
- 8002956: 61f8 str r0, [r7, #28]
- 8002958: 460b mov r3, r1
- 800295a: 617a str r2, [r7, #20]
- 800295c: 76fb strb r3, [r7, #27]
- if (!field->descriptor->field_callback)
- 800295e: 697b ldr r3, [r7, #20]
- 8002960: 681b ldr r3, [r3, #0]
- 8002962: f8d3 300e ldr.w r3, [r3, #14]
- 8002966: 2b00 cmp r3, #0
- 8002968: d106 bne.n 8002978 <decode_callback_field+0x28>
- return pb_skip_field(stream, wire_type);
- 800296a: 7efb ldrb r3, [r7, #27]
- 800296c: 4619 mov r1, r3
- 800296e: 69f8 ldr r0, [r7, #28]
- 8002970: f7ff fcc6 bl 8002300 <pb_skip_field>
- 8002974: 4603 mov r3, r0
- 8002976: e06d b.n 8002a54 <decode_callback_field+0x104>
-
- if (wire_type == PB_WT_STRING)
- 8002978: 7efb ldrb r3, [r7, #27]
- 800297a: 2b02 cmp r3, #2
- 800297c: d141 bne.n 8002a02 <decode_callback_field+0xb2>
- {
- pb_istream_t substream;
- size_t prev_bytes_left;
-
- if (!pb_make_string_substream(stream, &substream))
- 800297e: f107 0344 add.w r3, r7, #68 ; 0x44
- 8002982: 4619 mov r1, r3
- 8002984: 69f8 ldr r0, [r7, #28]
- 8002986: f7ff fd65 bl 8002454 <pb_make_string_substream>
- 800298a: 4603 mov r3, r0
- 800298c: f083 0301 eor.w r3, r3, #1
- 8002990: b2db uxtb r3, r3
- 8002992: 2b00 cmp r3, #0
- 8002994: d001 beq.n 800299a <decode_callback_field+0x4a>
- return false;
- 8002996: 2300 movs r3, #0
- 8002998: e05c b.n 8002a54 <decode_callback_field+0x104>
-
- do
- {
- prev_bytes_left = substream.bytes_left;
- 800299a: 6cfb ldr r3, [r7, #76] ; 0x4c
- 800299c: 657b str r3, [r7, #84] ; 0x54
- if (!field->descriptor->field_callback(&substream, NULL, field))
- 800299e: 697b ldr r3, [r7, #20]
- 80029a0: 681b ldr r3, [r3, #0]
- 80029a2: f8d3 300e ldr.w r3, [r3, #14]
- 80029a6: f107 0044 add.w r0, r7, #68 ; 0x44
- 80029aa: 697a ldr r2, [r7, #20]
- 80029ac: 2100 movs r1, #0
- 80029ae: 4798 blx r3
- 80029b0: 4603 mov r3, r0
- 80029b2: f083 0301 eor.w r3, r3, #1
- 80029b6: b2db uxtb r3, r3
- 80029b8: 2b00 cmp r3, #0
- 80029ba: d00b beq.n 80029d4 <decode_callback_field+0x84>
- PB_RETURN_ERROR(stream, "callback failed");
- 80029bc: 69fb ldr r3, [r7, #28]
- 80029be: 68db ldr r3, [r3, #12]
- 80029c0: 2b00 cmp r3, #0
- 80029c2: d002 beq.n 80029ca <decode_callback_field+0x7a>
- 80029c4: 69fb ldr r3, [r7, #28]
- 80029c6: 68db ldr r3, [r3, #12]
- 80029c8: e000 b.n 80029cc <decode_callback_field+0x7c>
- 80029ca: 4b24 ldr r3, [pc, #144] ; (8002a5c <decode_callback_field+0x10c>)
- 80029cc: 69fa ldr r2, [r7, #28]
- 80029ce: 60d3 str r3, [r2, #12]
- 80029d0: 2300 movs r3, #0
- 80029d2: e03f b.n 8002a54 <decode_callback_field+0x104>
- } while (substream.bytes_left > 0 && substream.bytes_left < prev_bytes_left);
- 80029d4: 6cfb ldr r3, [r7, #76] ; 0x4c
- 80029d6: 2b00 cmp r3, #0
- 80029d8: d003 beq.n 80029e2 <decode_callback_field+0x92>
- 80029da: 6cfb ldr r3, [r7, #76] ; 0x4c
- 80029dc: 6d7a ldr r2, [r7, #84] ; 0x54
- 80029de: 429a cmp r2, r3
- 80029e0: d8db bhi.n 800299a <decode_callback_field+0x4a>
-
- if (!pb_close_string_substream(stream, &substream))
- 80029e2: f107 0344 add.w r3, r7, #68 ; 0x44
- 80029e6: 4619 mov r1, r3
- 80029e8: 69f8 ldr r0, [r7, #28]
- 80029ea: f7ff fd6d bl 80024c8 <pb_close_string_substream>
- 80029ee: 4603 mov r3, r0
- 80029f0: f083 0301 eor.w r3, r3, #1
- 80029f4: b2db uxtb r3, r3
- 80029f6: 2b00 cmp r3, #0
- 80029f8: d001 beq.n 80029fe <decode_callback_field+0xae>
- return false;
- 80029fa: 2300 movs r3, #0
- 80029fc: e02a b.n 8002a54 <decode_callback_field+0x104>
-
- return true;
- 80029fe: 2301 movs r3, #1
- 8002a00: e028 b.n 8002a54 <decode_callback_field+0x104>
- * This is required so that we can limit the stream length,
- * which in turn allows to use same callback for packed and
- * not-packed fields. */
- pb_istream_t substream;
- pb_byte_t buffer[10];
- size_t size = sizeof(buffer);
- 8002a02: 230a movs r3, #10
- 8002a04: 627b str r3, [r7, #36] ; 0x24
-
- if (!read_raw_value(stream, wire_type, buffer, &size))
- 8002a06: f107 0324 add.w r3, r7, #36 ; 0x24
- 8002a0a: f107 0228 add.w r2, r7, #40 ; 0x28
- 8002a0e: 7ef9 ldrb r1, [r7, #27]
- 8002a10: 69f8 ldr r0, [r7, #28]
- 8002a12: f7ff fcb7 bl 8002384 <read_raw_value>
- 8002a16: 4603 mov r3, r0
- 8002a18: f083 0301 eor.w r3, r3, #1
- 8002a1c: b2db uxtb r3, r3
- 8002a1e: 2b00 cmp r3, #0
- 8002a20: d001 beq.n 8002a26 <decode_callback_field+0xd6>
- return false;
- 8002a22: 2300 movs r3, #0
- 8002a24: e016 b.n 8002a54 <decode_callback_field+0x104>
- substream = pb_istream_from_buffer(buffer, size);
- 8002a26: 6a7a ldr r2, [r7, #36] ; 0x24
- 8002a28: 463b mov r3, r7
- 8002a2a: f107 0128 add.w r1, r7, #40 ; 0x28
- 8002a2e: 4618 mov r0, r3
- 8002a30: f7ff fae4 bl 8001ffc <pb_istream_from_buffer>
- 8002a34: f107 0434 add.w r4, r7, #52 ; 0x34
- 8002a38: 463b mov r3, r7
- 8002a3a: cb0f ldmia r3, {r0, r1, r2, r3}
- 8002a3c: e884 000f stmia.w r4, {r0, r1, r2, r3}
-
- return field->descriptor->field_callback(&substream, NULL, field);
- 8002a40: 697b ldr r3, [r7, #20]
- 8002a42: 681b ldr r3, [r3, #0]
- 8002a44: f8d3 300e ldr.w r3, [r3, #14]
- 8002a48: f107 0034 add.w r0, r7, #52 ; 0x34
- 8002a4c: 697a ldr r2, [r7, #20]
- 8002a4e: 2100 movs r1, #0
- 8002a50: 4798 blx r3
- 8002a52: 4603 mov r3, r0
- }
-}
- 8002a54: 4618 mov r0, r3
- 8002a56: 375c adds r7, #92 ; 0x5c
- 8002a58: 46bd mov sp, r7
- 8002a5a: bd90 pop {r4, r7, pc}
- 8002a5c: 08008a84 .word 0x08008a84
-
-08002a60 <decode_field>:
-
-static bool checkreturn decode_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *field)
-{
- 8002a60: b580 push {r7, lr}
- 8002a62: b084 sub sp, #16
- 8002a64: af00 add r7, sp, #0
- 8002a66: 60f8 str r0, [r7, #12]
- 8002a68: 460b mov r3, r1
- 8002a6a: 607a str r2, [r7, #4]
- 8002a6c: 72fb strb r3, [r7, #11]
- if (!pb_release_union_field(stream, field))
- return false;
- }
-#endif
-
- switch (PB_ATYPE(field->type))
- 8002a6e: 687b ldr r3, [r7, #4]
- 8002a70: 7d9b ldrb r3, [r3, #22]
- 8002a72: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8002a76: 2b40 cmp r3, #64 ; 0x40
- 8002a78: d013 beq.n 8002aa2 <decode_field+0x42>
- 8002a7a: 2b80 cmp r3, #128 ; 0x80
- 8002a7c: d009 beq.n 8002a92 <decode_field+0x32>
- 8002a7e: 2b00 cmp r3, #0
- 8002a80: d117 bne.n 8002ab2 <decode_field+0x52>
- {
- case PB_ATYPE_STATIC:
- return decode_static_field(stream, wire_type, field);
- 8002a82: 7afb ldrb r3, [r7, #11]
- 8002a84: 687a ldr r2, [r7, #4]
- 8002a86: 4619 mov r1, r3
- 8002a88: 68f8 ldr r0, [r7, #12]
- 8002a8a: f7ff fdf1 bl 8002670 <decode_static_field>
- 8002a8e: 4603 mov r3, r0
- 8002a90: e01a b.n 8002ac8 <decode_field+0x68>
-
- case PB_ATYPE_POINTER:
- return decode_pointer_field(stream, wire_type, field);
- 8002a92: 7afb ldrb r3, [r7, #11]
- 8002a94: 687a ldr r2, [r7, #4]
- 8002a96: 4619 mov r1, r3
- 8002a98: 68f8 ldr r0, [r7, #12]
- 8002a9a: f7ff ff3f bl 800291c <decode_pointer_field>
- 8002a9e: 4603 mov r3, r0
- 8002aa0: e012 b.n 8002ac8 <decode_field+0x68>
-
- case PB_ATYPE_CALLBACK:
- return decode_callback_field(stream, wire_type, field);
- 8002aa2: 7afb ldrb r3, [r7, #11]
- 8002aa4: 687a ldr r2, [r7, #4]
- 8002aa6: 4619 mov r1, r3
- 8002aa8: 68f8 ldr r0, [r7, #12]
- 8002aaa: f7ff ff51 bl 8002950 <decode_callback_field>
- 8002aae: 4603 mov r3, r0
- 8002ab0: e00a b.n 8002ac8 <decode_field+0x68>
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- 8002ab2: 68fb ldr r3, [r7, #12]
- 8002ab4: 68db ldr r3, [r3, #12]
- 8002ab6: 2b00 cmp r3, #0
- 8002ab8: d002 beq.n 8002ac0 <decode_field+0x60>
- 8002aba: 68fb ldr r3, [r7, #12]
- 8002abc: 68db ldr r3, [r3, #12]
- 8002abe: e000 b.n 8002ac2 <decode_field+0x62>
- 8002ac0: 4b03 ldr r3, [pc, #12] ; (8002ad0 <decode_field+0x70>)
- 8002ac2: 68fa ldr r2, [r7, #12]
- 8002ac4: 60d3 str r3, [r2, #12]
- 8002ac6: 2300 movs r3, #0
- }
-}
- 8002ac8: 4618 mov r0, r3
- 8002aca: 3710 adds r7, #16
- 8002acc: 46bd mov sp, r7
- 8002ace: bd80 pop {r7, pc}
- 8002ad0: 08008a3c .word 0x08008a3c
-
-08002ad4 <default_extension_decoder>:
-/* Default handler for extension fields. Expects to have a pb_msgdesc_t
- * pointer in the extension->type->arg field, pointing to a message with
- * only one field in it. */
-static bool checkreturn default_extension_decoder(pb_istream_t *stream,
- pb_extension_t *extension, uint32_t tag, pb_wire_type_t wire_type)
-{
- 8002ad4: b580 push {r7, lr}
- 8002ad6: b08e sub sp, #56 ; 0x38
- 8002ad8: af00 add r7, sp, #0
- 8002ada: 60f8 str r0, [r7, #12]
- 8002adc: 60b9 str r1, [r7, #8]
- 8002ade: 607a str r2, [r7, #4]
- 8002ae0: 70fb strb r3, [r7, #3]
- pb_field_iter_t iter;
-
- if (!pb_field_iter_begin_extension(&iter, extension))
- 8002ae2: f107 0310 add.w r3, r7, #16
- 8002ae6: 68b9 ldr r1, [r7, #8]
- 8002ae8: 4618 mov r0, r3
- 8002aea: f7ff f8f7 bl 8001cdc <pb_field_iter_begin_extension>
- 8002aee: 4603 mov r3, r0
- 8002af0: f083 0301 eor.w r3, r3, #1
- 8002af4: b2db uxtb r3, r3
- 8002af6: 2b00 cmp r3, #0
- 8002af8: d00b beq.n 8002b12 <default_extension_decoder+0x3e>
- PB_RETURN_ERROR(stream, "invalid extension");
- 8002afa: 68fb ldr r3, [r7, #12]
- 8002afc: 68db ldr r3, [r3, #12]
- 8002afe: 2b00 cmp r3, #0
- 8002b00: d002 beq.n 8002b08 <default_extension_decoder+0x34>
- 8002b02: 68fb ldr r3, [r7, #12]
- 8002b04: 68db ldr r3, [r3, #12]
- 8002b06: e000 b.n 8002b0a <default_extension_decoder+0x36>
- 8002b08: 4b0d ldr r3, [pc, #52] ; (8002b40 <default_extension_decoder+0x6c>)
- 8002b0a: 68fa ldr r2, [r7, #12]
- 8002b0c: 60d3 str r3, [r2, #12]
- 8002b0e: 2300 movs r3, #0
- 8002b10: e011 b.n 8002b36 <default_extension_decoder+0x62>
-
- if (iter.tag != tag)
- 8002b12: 8c3b ldrh r3, [r7, #32]
- 8002b14: 461a mov r2, r3
- 8002b16: 687b ldr r3, [r7, #4]
- 8002b18: 4293 cmp r3, r2
- 8002b1a: d001 beq.n 8002b20 <default_extension_decoder+0x4c>
- return true;
- 8002b1c: 2301 movs r3, #1
- 8002b1e: e00a b.n 8002b36 <default_extension_decoder+0x62>
-
- extension->found = true;
- 8002b20: 68bb ldr r3, [r7, #8]
- 8002b22: 2201 movs r2, #1
- 8002b24: 731a strb r2, [r3, #12]
- return decode_field(stream, wire_type, &iter);
- 8002b26: f107 0210 add.w r2, r7, #16
- 8002b2a: 78fb ldrb r3, [r7, #3]
- 8002b2c: 4619 mov r1, r3
- 8002b2e: 68f8 ldr r0, [r7, #12]
- 8002b30: f7ff ff96 bl 8002a60 <decode_field>
- 8002b34: 4603 mov r3, r0
-}
- 8002b36: 4618 mov r0, r3
- 8002b38: 3738 adds r7, #56 ; 0x38
- 8002b3a: 46bd mov sp, r7
- 8002b3c: bd80 pop {r7, pc}
- 8002b3e: bf00 nop
- 8002b40: 08008a94 .word 0x08008a94
-
-08002b44 <decode_extension>:
-
-/* Try to decode an unknown field as an extension field. Tries each extension
- * decoder in turn, until one of them handles the field or loop ends. */
-static bool checkreturn decode_extension(pb_istream_t *stream,
- uint32_t tag, pb_wire_type_t wire_type, pb_field_iter_t *iter)
-{
- 8002b44: b590 push {r4, r7, lr}
- 8002b46: b089 sub sp, #36 ; 0x24
- 8002b48: af00 add r7, sp, #0
- 8002b4a: 60f8 str r0, [r7, #12]
- 8002b4c: 60b9 str r1, [r7, #8]
- 8002b4e: 603b str r3, [r7, #0]
- 8002b50: 4613 mov r3, r2
- 8002b52: 71fb strb r3, [r7, #7]
- pb_extension_t *extension = *(pb_extension_t* const *)iter->pData;
- 8002b54: 683b ldr r3, [r7, #0]
- 8002b56: 69db ldr r3, [r3, #28]
- 8002b58: 681b ldr r3, [r3, #0]
- 8002b5a: 61fb str r3, [r7, #28]
- size_t pos = stream->bytes_left;
- 8002b5c: 68fb ldr r3, [r7, #12]
- 8002b5e: 689b ldr r3, [r3, #8]
- 8002b60: 617b str r3, [r7, #20]
-
- while (extension != NULL && pos == stream->bytes_left)
- 8002b62: e022 b.n 8002baa <decode_extension+0x66>
- {
- bool status;
- if (extension->type->decode)
- 8002b64: 69fb ldr r3, [r7, #28]
- 8002b66: 681b ldr r3, [r3, #0]
- 8002b68: 681b ldr r3, [r3, #0]
- 8002b6a: 2b00 cmp r3, #0
- 8002b6c: d00a beq.n 8002b84 <decode_extension+0x40>
- status = extension->type->decode(stream, extension, tag, wire_type);
- 8002b6e: 69fb ldr r3, [r7, #28]
- 8002b70: 681b ldr r3, [r3, #0]
- 8002b72: 681c ldr r4, [r3, #0]
- 8002b74: 79fb ldrb r3, [r7, #7]
- 8002b76: 68ba ldr r2, [r7, #8]
- 8002b78: 69f9 ldr r1, [r7, #28]
- 8002b7a: 68f8 ldr r0, [r7, #12]
- 8002b7c: 47a0 blx r4
- 8002b7e: 4603 mov r3, r0
- 8002b80: 76fb strb r3, [r7, #27]
- 8002b82: e007 b.n 8002b94 <decode_extension+0x50>
- else
- status = default_extension_decoder(stream, extension, tag, wire_type);
- 8002b84: 79fb ldrb r3, [r7, #7]
- 8002b86: 68ba ldr r2, [r7, #8]
- 8002b88: 69f9 ldr r1, [r7, #28]
- 8002b8a: 68f8 ldr r0, [r7, #12]
- 8002b8c: f7ff ffa2 bl 8002ad4 <default_extension_decoder>
- 8002b90: 4603 mov r3, r0
- 8002b92: 76fb strb r3, [r7, #27]
-
- if (!status)
- 8002b94: 7efb ldrb r3, [r7, #27]
- 8002b96: f083 0301 eor.w r3, r3, #1
- 8002b9a: b2db uxtb r3, r3
- 8002b9c: 2b00 cmp r3, #0
- 8002b9e: d001 beq.n 8002ba4 <decode_extension+0x60>
- return false;
- 8002ba0: 2300 movs r3, #0
- 8002ba2: e00b b.n 8002bbc <decode_extension+0x78>
-
- extension = extension->next;
- 8002ba4: 69fb ldr r3, [r7, #28]
- 8002ba6: 689b ldr r3, [r3, #8]
- 8002ba8: 61fb str r3, [r7, #28]
- while (extension != NULL && pos == stream->bytes_left)
- 8002baa: 69fb ldr r3, [r7, #28]
- 8002bac: 2b00 cmp r3, #0
- 8002bae: d004 beq.n 8002bba <decode_extension+0x76>
- 8002bb0: 68fb ldr r3, [r7, #12]
- 8002bb2: 689b ldr r3, [r3, #8]
- 8002bb4: 697a ldr r2, [r7, #20]
- 8002bb6: 429a cmp r2, r3
- 8002bb8: d0d4 beq.n 8002b64 <decode_extension+0x20>
- }
-
- return true;
- 8002bba: 2301 movs r3, #1
-}
- 8002bbc: 4618 mov r0, r3
- 8002bbe: 3724 adds r7, #36 ; 0x24
- 8002bc0: 46bd mov sp, r7
- 8002bc2: bd90 pop {r4, r7, pc}
-
-08002bc4 <find_extension_field>:
-
-/* Step through the iterator until an extension field is found or until all
- * entries have been checked. There can be only one extension field per
- * message. Returns false if no extension field is found. */
-static bool checkreturn find_extension_field(pb_field_iter_t *iter)
-{
- 8002bc4: b580 push {r7, lr}
- 8002bc6: b084 sub sp, #16
- 8002bc8: af00 add r7, sp, #0
- 8002bca: 6078 str r0, [r7, #4]
- pb_size_t start = iter->index;
- 8002bcc: 687b ldr r3, [r7, #4]
- 8002bce: 891b ldrh r3, [r3, #8]
- 8002bd0: 81fb strh r3, [r7, #14]
-
- do {
- if (PB_LTYPE(iter->type) == PB_LTYPE_EXTENSION)
- 8002bd2: 687b ldr r3, [r7, #4]
- 8002bd4: 7d9b ldrb r3, [r3, #22]
- 8002bd6: f003 030f and.w r3, r3, #15
- 8002bda: 2b0a cmp r3, #10
- 8002bdc: d101 bne.n 8002be2 <find_extension_field+0x1e>
- return true;
- 8002bde: 2301 movs r3, #1
- 8002be0: e008 b.n 8002bf4 <find_extension_field+0x30>
- (void)pb_field_iter_next(iter);
- 8002be2: 6878 ldr r0, [r7, #4]
- 8002be4: f7ff f8ab bl 8001d3e <pb_field_iter_next>
- } while (iter->index != start);
- 8002be8: 687b ldr r3, [r7, #4]
- 8002bea: 891b ldrh r3, [r3, #8]
- 8002bec: 89fa ldrh r2, [r7, #14]
- 8002bee: 429a cmp r2, r3
- 8002bf0: d1ef bne.n 8002bd2 <find_extension_field+0xe>
-
- return false;
- 8002bf2: 2300 movs r3, #0
-}
- 8002bf4: 4618 mov r0, r3
- 8002bf6: 3710 adds r7, #16
- 8002bf8: 46bd mov sp, r7
- 8002bfa: bd80 pop {r7, pc}
-
-08002bfc <pb_field_set_to_default>:
-
-/* Initialize message fields to default values, recursively */
-static bool pb_field_set_to_default(pb_field_iter_t *field)
-{
- 8002bfc: b580 push {r7, lr}
- 8002bfe: b08e sub sp, #56 ; 0x38
- 8002c00: af00 add r7, sp, #0
- 8002c02: 6078 str r0, [r7, #4]
- pb_type_t type;
- type = field->type;
- 8002c04: 687b ldr r3, [r7, #4]
- 8002c06: 7d9b ldrb r3, [r3, #22]
- 8002c08: f887 3032 strb.w r3, [r7, #50] ; 0x32
-
- if (PB_LTYPE(type) == PB_LTYPE_EXTENSION)
- 8002c0c: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002c10: f003 030f and.w r3, r3, #15
- 8002c14: 2b0a cmp r3, #10
- 8002c16: d124 bne.n 8002c62 <pb_field_set_to_default+0x66>
- {
- pb_extension_t *ext = *(pb_extension_t* const *)field->pData;
- 8002c18: 687b ldr r3, [r7, #4]
- 8002c1a: 69db ldr r3, [r3, #28]
- 8002c1c: 681b ldr r3, [r3, #0]
- 8002c1e: 637b str r3, [r7, #52] ; 0x34
- while (ext != NULL)
- 8002c20: e01b b.n 8002c5a <pb_field_set_to_default+0x5e>
- {
- pb_field_iter_t ext_iter;
- if (pb_field_iter_begin_extension(&ext_iter, ext))
- 8002c22: f107 0308 add.w r3, r7, #8
- 8002c26: 6b79 ldr r1, [r7, #52] ; 0x34
- 8002c28: 4618 mov r0, r3
- 8002c2a: f7ff f857 bl 8001cdc <pb_field_iter_begin_extension>
- 8002c2e: 4603 mov r3, r0
- 8002c30: 2b00 cmp r3, #0
- 8002c32: d00f beq.n 8002c54 <pb_field_set_to_default+0x58>
- {
- ext->found = false;
- 8002c34: 6b7b ldr r3, [r7, #52] ; 0x34
- 8002c36: 2200 movs r2, #0
- 8002c38: 731a strb r2, [r3, #12]
- if (!pb_message_set_to_defaults(&ext_iter))
- 8002c3a: f107 0308 add.w r3, r7, #8
- 8002c3e: 4618 mov r0, r3
- 8002c40: f000 f88d bl 8002d5e <pb_message_set_to_defaults>
- 8002c44: 4603 mov r3, r0
- 8002c46: f083 0301 eor.w r3, r3, #1
- 8002c4a: b2db uxtb r3, r3
- 8002c4c: 2b00 cmp r3, #0
- 8002c4e: d001 beq.n 8002c54 <pb_field_set_to_default+0x58>
- return false;
- 8002c50: 2300 movs r3, #0
- 8002c52: e080 b.n 8002d56 <pb_field_set_to_default+0x15a>
- }
- ext = ext->next;
- 8002c54: 6b7b ldr r3, [r7, #52] ; 0x34
- 8002c56: 689b ldr r3, [r3, #8]
- 8002c58: 637b str r3, [r7, #52] ; 0x34
- while (ext != NULL)
- 8002c5a: 6b7b ldr r3, [r7, #52] ; 0x34
- 8002c5c: 2b00 cmp r3, #0
- 8002c5e: d1e0 bne.n 8002c22 <pb_field_set_to_default+0x26>
- 8002c60: e078 b.n 8002d54 <pb_field_set_to_default+0x158>
- }
- }
- else if (PB_ATYPE(type) == PB_ATYPE_STATIC)
- 8002c62: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002c66: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8002c6a: 2b00 cmp r3, #0
- 8002c6c: d156 bne.n 8002d1c <pb_field_set_to_default+0x120>
- {
- bool init_data = true;
- 8002c6e: 2301 movs r3, #1
- 8002c70: f887 3033 strb.w r3, [r7, #51] ; 0x33
- if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && field->pSize != NULL)
- 8002c74: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002c78: f003 0330 and.w r3, r3, #48 ; 0x30
- 8002c7c: 2b10 cmp r3, #16
- 8002c7e: d108 bne.n 8002c92 <pb_field_set_to_default+0x96>
- 8002c80: 687b ldr r3, [r7, #4]
- 8002c82: 6a1b ldr r3, [r3, #32]
- 8002c84: 2b00 cmp r3, #0
- 8002c86: d004 beq.n 8002c92 <pb_field_set_to_default+0x96>
- {
- /* Set has_field to false. Still initialize the optional field
- * itself also. */
- *(bool*)field->pSize = false;
- 8002c88: 687b ldr r3, [r7, #4]
- 8002c8a: 6a1b ldr r3, [r3, #32]
- 8002c8c: 2200 movs r2, #0
- 8002c8e: 701a strb r2, [r3, #0]
- 8002c90: e012 b.n 8002cb8 <pb_field_set_to_default+0xbc>
- }
- else if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
- 8002c92: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002c96: f003 0330 and.w r3, r3, #48 ; 0x30
- 8002c9a: 2b20 cmp r3, #32
- 8002c9c: d005 beq.n 8002caa <pb_field_set_to_default+0xae>
- PB_HTYPE(type) == PB_HTYPE_ONEOF)
- 8002c9e: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002ca2: f003 0330 and.w r3, r3, #48 ; 0x30
- else if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
- 8002ca6: 2b30 cmp r3, #48 ; 0x30
- 8002ca8: d106 bne.n 8002cb8 <pb_field_set_to_default+0xbc>
- {
- /* REPEATED: Set array count to 0, no need to initialize contents.
- ONEOF: Set which_field to 0. */
- *(pb_size_t*)field->pSize = 0;
- 8002caa: 687b ldr r3, [r7, #4]
- 8002cac: 6a1b ldr r3, [r3, #32]
- 8002cae: 2200 movs r2, #0
- 8002cb0: 801a strh r2, [r3, #0]
- init_data = false;
- 8002cb2: 2300 movs r3, #0
- 8002cb4: f887 3033 strb.w r3, [r7, #51] ; 0x33
- }
-
- if (init_data)
- 8002cb8: f897 3033 ldrb.w r3, [r7, #51] ; 0x33
- 8002cbc: 2b00 cmp r3, #0
- 8002cbe: d049 beq.n 8002d54 <pb_field_set_to_default+0x158>
- {
- if (PB_LTYPE_IS_SUBMSG(field->type))
- 8002cc0: 687b ldr r3, [r7, #4]
- 8002cc2: 7d9b ldrb r3, [r3, #22]
- 8002cc4: f003 030f and.w r3, r3, #15
- 8002cc8: 2b08 cmp r3, #8
- 8002cca: d005 beq.n 8002cd8 <pb_field_set_to_default+0xdc>
- 8002ccc: 687b ldr r3, [r7, #4]
- 8002cce: 7d9b ldrb r3, [r3, #22]
- 8002cd0: f003 030f and.w r3, r3, #15
- 8002cd4: 2b09 cmp r3, #9
- 8002cd6: d118 bne.n 8002d0a <pb_field_set_to_default+0x10e>
- {
- /* Initialize submessage to defaults */
- pb_field_iter_t submsg_iter;
- if (pb_field_iter_begin(&submsg_iter, field->submsg_desc, field->pData))
- 8002cd8: 687b ldr r3, [r7, #4]
- 8002cda: 6a59 ldr r1, [r3, #36] ; 0x24
- 8002cdc: 687b ldr r3, [r7, #4]
- 8002cde: 69da ldr r2, [r3, #28]
- 8002ce0: f107 0308 add.w r3, r7, #8
- 8002ce4: 4618 mov r0, r3
- 8002ce6: f7fe ffe0 bl 8001caa <pb_field_iter_begin>
- 8002cea: 4603 mov r3, r0
- 8002cec: 2b00 cmp r3, #0
- 8002cee: d030 beq.n 8002d52 <pb_field_set_to_default+0x156>
- {
- if (!pb_message_set_to_defaults(&submsg_iter))
- 8002cf0: f107 0308 add.w r3, r7, #8
- 8002cf4: 4618 mov r0, r3
- 8002cf6: f000 f832 bl 8002d5e <pb_message_set_to_defaults>
- 8002cfa: 4603 mov r3, r0
- 8002cfc: f083 0301 eor.w r3, r3, #1
- 8002d00: b2db uxtb r3, r3
- 8002d02: 2b00 cmp r3, #0
- 8002d04: d025 beq.n 8002d52 <pb_field_set_to_default+0x156>
- return false;
- 8002d06: 2300 movs r3, #0
- 8002d08: e025 b.n 8002d56 <pb_field_set_to_default+0x15a>
- }
- }
- else
- {
- /* Initialize to zeros */
- memset(field->pData, 0, (size_t)field->data_size);
- 8002d0a: 687b ldr r3, [r7, #4]
- 8002d0c: 69d8 ldr r0, [r3, #28]
- 8002d0e: 687b ldr r3, [r7, #4]
- 8002d10: 8a5b ldrh r3, [r3, #18]
- 8002d12: 461a mov r2, r3
- 8002d14: 2100 movs r1, #0
- 8002d16: f005 fe51 bl 80089bc <memset>
- 8002d1a: e01b b.n 8002d54 <pb_field_set_to_default+0x158>
- }
- }
- }
- else if (PB_ATYPE(type) == PB_ATYPE_POINTER)
- 8002d1c: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002d20: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8002d24: 2b80 cmp r3, #128 ; 0x80
- 8002d26: d115 bne.n 8002d54 <pb_field_set_to_default+0x158>
- {
- /* Initialize the pointer to NULL. */
- *(void**)field->pField = NULL;
- 8002d28: 687b ldr r3, [r7, #4]
- 8002d2a: 699b ldr r3, [r3, #24]
- 8002d2c: 2200 movs r2, #0
- 8002d2e: 601a str r2, [r3, #0]
-
- /* Initialize array count to 0. */
- if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
- 8002d30: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002d34: f003 0330 and.w r3, r3, #48 ; 0x30
- 8002d38: 2b20 cmp r3, #32
- 8002d3a: d005 beq.n 8002d48 <pb_field_set_to_default+0x14c>
- PB_HTYPE(type) == PB_HTYPE_ONEOF)
- 8002d3c: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002d40: f003 0330 and.w r3, r3, #48 ; 0x30
- if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
- 8002d44: 2b30 cmp r3, #48 ; 0x30
- 8002d46: d105 bne.n 8002d54 <pb_field_set_to_default+0x158>
- {
- *(pb_size_t*)field->pSize = 0;
- 8002d48: 687b ldr r3, [r7, #4]
- 8002d4a: 6a1b ldr r3, [r3, #32]
- 8002d4c: 2200 movs r2, #0
- 8002d4e: 801a strh r2, [r3, #0]
- 8002d50: e000 b.n 8002d54 <pb_field_set_to_default+0x158>
- {
- 8002d52: bf00 nop
- else if (PB_ATYPE(type) == PB_ATYPE_CALLBACK)
- {
- /* Don't overwrite callback */
- }
-
- return true;
- 8002d54: 2301 movs r3, #1
-}
- 8002d56: 4618 mov r0, r3
- 8002d58: 3738 adds r7, #56 ; 0x38
- 8002d5a: 46bd mov sp, r7
- 8002d5c: bd80 pop {r7, pc}
-
-08002d5e <pb_message_set_to_defaults>:
-
-static bool pb_message_set_to_defaults(pb_field_iter_t *iter)
-{
- 8002d5e: b590 push {r4, r7, lr}
- 8002d60: b08d sub sp, #52 ; 0x34
- 8002d62: af00 add r7, sp, #0
- 8002d64: 6178 str r0, [r7, #20]
- pb_istream_t defstream = PB_ISTREAM_EMPTY;
- 8002d66: f107 0320 add.w r3, r7, #32
- 8002d6a: 2200 movs r2, #0
- 8002d6c: 601a str r2, [r3, #0]
- 8002d6e: 605a str r2, [r3, #4]
- 8002d70: 609a str r2, [r3, #8]
- 8002d72: 60da str r2, [r3, #12]
- uint32_t tag = 0;
- 8002d74: 2300 movs r3, #0
- 8002d76: 61fb str r3, [r7, #28]
- pb_wire_type_t wire_type = PB_WT_VARINT;
- 8002d78: 2300 movs r3, #0
- 8002d7a: 76fb strb r3, [r7, #27]
- bool eof;
-
- if (iter->descriptor->default_value)
- 8002d7c: 697b ldr r3, [r7, #20]
- 8002d7e: 681b ldr r3, [r3, #0]
- 8002d80: f8d3 300a ldr.w r3, [r3, #10]
- 8002d84: 2b00 cmp r3, #0
- 8002d86: d021 beq.n 8002dcc <pb_message_set_to_defaults+0x6e>
- {
- defstream = pb_istream_from_buffer(iter->descriptor->default_value, (size_t)-1);
- 8002d88: 697b ldr r3, [r7, #20]
- 8002d8a: 681b ldr r3, [r3, #0]
- 8002d8c: f8d3 100a ldr.w r1, [r3, #10]
- 8002d90: 463b mov r3, r7
- 8002d92: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff
- 8002d96: 4618 mov r0, r3
- 8002d98: f7ff f930 bl 8001ffc <pb_istream_from_buffer>
- 8002d9c: f107 0420 add.w r4, r7, #32
- 8002da0: 463b mov r3, r7
- 8002da2: cb0f ldmia r3, {r0, r1, r2, r3}
- 8002da4: e884 000f stmia.w r4, {r0, r1, r2, r3}
- if (!pb_decode_tag(&defstream, &wire_type, &tag, &eof))
- 8002da8: f107 031a add.w r3, r7, #26
- 8002dac: f107 021c add.w r2, r7, #28
- 8002db0: f107 011b add.w r1, r7, #27
- 8002db4: f107 0020 add.w r0, r7, #32
- 8002db8: f7ff fa73 bl 80022a2 <pb_decode_tag>
- 8002dbc: 4603 mov r3, r0
- 8002dbe: f083 0301 eor.w r3, r3, #1
- 8002dc2: b2db uxtb r3, r3
- 8002dc4: 2b00 cmp r3, #0
- 8002dc6: d001 beq.n 8002dcc <pb_message_set_to_defaults+0x6e>
- return false;
- 8002dc8: 2300 movs r3, #0
- 8002dca: e043 b.n 8002e54 <pb_message_set_to_defaults+0xf6>
- }
-
- do
- {
- if (!pb_field_set_to_default(iter))
- 8002dcc: 6978 ldr r0, [r7, #20]
- 8002dce: f7ff ff15 bl 8002bfc <pb_field_set_to_default>
- 8002dd2: 4603 mov r3, r0
- 8002dd4: f083 0301 eor.w r3, r3, #1
- 8002dd8: b2db uxtb r3, r3
- 8002dda: 2b00 cmp r3, #0
- 8002ddc: d001 beq.n 8002de2 <pb_message_set_to_defaults+0x84>
- return false;
- 8002dde: 2300 movs r3, #0
- 8002de0: e038 b.n 8002e54 <pb_message_set_to_defaults+0xf6>
-
- if (tag != 0 && iter->tag == tag)
- 8002de2: 69fb ldr r3, [r7, #28]
- 8002de4: 2b00 cmp r3, #0
- 8002de6: d02e beq.n 8002e46 <pb_message_set_to_defaults+0xe8>
- 8002de8: 697b ldr r3, [r7, #20]
- 8002dea: 8a1b ldrh r3, [r3, #16]
- 8002dec: 461a mov r2, r3
- 8002dee: 69fb ldr r3, [r7, #28]
- 8002df0: 429a cmp r2, r3
- 8002df2: d128 bne.n 8002e46 <pb_message_set_to_defaults+0xe8>
- {
- /* We have a default value for this field in the defstream */
- if (!decode_field(&defstream, wire_type, iter))
- 8002df4: 7ef9 ldrb r1, [r7, #27]
- 8002df6: f107 0320 add.w r3, r7, #32
- 8002dfa: 697a ldr r2, [r7, #20]
- 8002dfc: 4618 mov r0, r3
- 8002dfe: f7ff fe2f bl 8002a60 <decode_field>
- 8002e02: 4603 mov r3, r0
- 8002e04: f083 0301 eor.w r3, r3, #1
- 8002e08: b2db uxtb r3, r3
- 8002e0a: 2b00 cmp r3, #0
- 8002e0c: d001 beq.n 8002e12 <pb_message_set_to_defaults+0xb4>
- return false;
- 8002e0e: 2300 movs r3, #0
- 8002e10: e020 b.n 8002e54 <pb_message_set_to_defaults+0xf6>
- if (!pb_decode_tag(&defstream, &wire_type, &tag, &eof))
- 8002e12: f107 031a add.w r3, r7, #26
- 8002e16: f107 021c add.w r2, r7, #28
- 8002e1a: f107 011b add.w r1, r7, #27
- 8002e1e: f107 0020 add.w r0, r7, #32
- 8002e22: f7ff fa3e bl 80022a2 <pb_decode_tag>
- 8002e26: 4603 mov r3, r0
- 8002e28: f083 0301 eor.w r3, r3, #1
- 8002e2c: b2db uxtb r3, r3
- 8002e2e: 2b00 cmp r3, #0
- 8002e30: d001 beq.n 8002e36 <pb_message_set_to_defaults+0xd8>
- return false;
- 8002e32: 2300 movs r3, #0
- 8002e34: e00e b.n 8002e54 <pb_message_set_to_defaults+0xf6>
-
- if (iter->pSize)
- 8002e36: 697b ldr r3, [r7, #20]
- 8002e38: 6a1b ldr r3, [r3, #32]
- 8002e3a: 2b00 cmp r3, #0
- 8002e3c: d003 beq.n 8002e46 <pb_message_set_to_defaults+0xe8>
- *(bool*)iter->pSize = false;
- 8002e3e: 697b ldr r3, [r7, #20]
- 8002e40: 6a1b ldr r3, [r3, #32]
- 8002e42: 2200 movs r2, #0
- 8002e44: 701a strb r2, [r3, #0]
- }
- } while (pb_field_iter_next(iter));
- 8002e46: 6978 ldr r0, [r7, #20]
- 8002e48: f7fe ff79 bl 8001d3e <pb_field_iter_next>
- 8002e4c: 4603 mov r3, r0
- 8002e4e: 2b00 cmp r3, #0
- 8002e50: d1bc bne.n 8002dcc <pb_message_set_to_defaults+0x6e>
-
- return true;
- 8002e52: 2301 movs r3, #1
-}
- 8002e54: 4618 mov r0, r3
- 8002e56: 3734 adds r7, #52 ; 0x34
- 8002e58: 46bd mov sp, r7
- 8002e5a: bd90 pop {r4, r7, pc}
-
-08002e5c <pb_decode_inner>:
-/*********************
- * Decode all fields *
- *********************/
-
-static bool checkreturn pb_decode_inner(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct, unsigned int flags)
-{
- 8002e5c: b580 push {r7, lr}
- 8002e5e: b09a sub sp, #104 ; 0x68
- 8002e60: af00 add r7, sp, #0
- 8002e62: 60f8 str r0, [r7, #12]
- 8002e64: 60b9 str r1, [r7, #8]
- 8002e66: 607a str r2, [r7, #4]
- 8002e68: 603b str r3, [r7, #0]
- uint32_t extension_range_start = 0;
- 8002e6a: 2300 movs r3, #0
- 8002e6c: 667b str r3, [r7, #100] ; 0x64
-
- /* 'fixed_count_field' and 'fixed_count_size' track position of a repeated fixed
- * count field. This can only handle _one_ repeated fixed count field that
- * is unpacked and unordered among other (non repeated fixed count) fields.
- */
- pb_size_t fixed_count_field = PB_SIZE_MAX;
- 8002e6e: f64f 73ff movw r3, #65535 ; 0xffff
- 8002e72: f8a7 3062 strh.w r3, [r7, #98] ; 0x62
- pb_size_t fixed_count_size = 0;
- 8002e76: 2300 movs r3, #0
- 8002e78: f8a7 304c strh.w r3, [r7, #76] ; 0x4c
- pb_size_t fixed_count_total_size = 0;
- 8002e7c: 2300 movs r3, #0
- 8002e7e: f8a7 3060 strh.w r3, [r7, #96] ; 0x60
-
- pb_fields_seen_t fields_seen = {{0, 0}};
- 8002e82: 2300 movs r3, #0
- 8002e84: 647b str r3, [r7, #68] ; 0x44
- 8002e86: 2300 movs r3, #0
- 8002e88: 64bb str r3, [r7, #72] ; 0x48
- const uint32_t allbits = ~(uint32_t)0;
- 8002e8a: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff
- 8002e8e: 65bb str r3, [r7, #88] ; 0x58
- pb_field_iter_t iter;
-
- /* Return value ignored, as empty message types will be correctly handled by
- * pb_field_iter_find() anyway. */
- (void)pb_field_iter_begin(&iter, fields, dest_struct);
- 8002e90: f107 031c add.w r3, r7, #28
- 8002e94: 687a ldr r2, [r7, #4]
- 8002e96: 68b9 ldr r1, [r7, #8]
- 8002e98: 4618 mov r0, r3
- 8002e9a: f7fe ff06 bl 8001caa <pb_field_iter_begin>
-
- while (stream->bytes_left)
- 8002e9e: e0e5 b.n 800306c <pb_decode_inner+0x210>
- {
- uint32_t tag;
- pb_wire_type_t wire_type;
- bool eof;
-
- if (!pb_decode_tag(stream, &wire_type, &tag, &eof))
- 8002ea0: f107 0316 add.w r3, r7, #22
- 8002ea4: f107 0218 add.w r2, r7, #24
- 8002ea8: f107 0117 add.w r1, r7, #23
- 8002eac: 68f8 ldr r0, [r7, #12]
- 8002eae: f7ff f9f8 bl 80022a2 <pb_decode_tag>
- 8002eb2: 4603 mov r3, r0
- 8002eb4: f083 0301 eor.w r3, r3, #1
- 8002eb8: b2db uxtb r3, r3
- 8002eba: 2b00 cmp r3, #0
- 8002ebc: d005 beq.n 8002eca <pb_decode_inner+0x6e>
- {
- if (eof)
- 8002ebe: 7dbb ldrb r3, [r7, #22]
- 8002ec0: 2b00 cmp r3, #0
- 8002ec2: f040 80d9 bne.w 8003078 <pb_decode_inner+0x21c>
- break;
- else
- return false;
- 8002ec6: 2300 movs r3, #0
- 8002ec8: e16c b.n 80031a4 <pb_decode_inner+0x348>
- }
-
- if (tag == 0)
- 8002eca: 69bb ldr r3, [r7, #24]
- 8002ecc: 2b00 cmp r3, #0
- 8002ece: d111 bne.n 8002ef4 <pb_decode_inner+0x98>
- {
- if (flags & PB_DECODE_NULLTERMINATED)
- 8002ed0: 683b ldr r3, [r7, #0]
- 8002ed2: f003 0304 and.w r3, r3, #4
- 8002ed6: 2b00 cmp r3, #0
- 8002ed8: f040 80d0 bne.w 800307c <pb_decode_inner+0x220>
- {
- break;
- }
- else
- {
- PB_RETURN_ERROR(stream, "zero tag");
- 8002edc: 68fb ldr r3, [r7, #12]
- 8002ede: 68db ldr r3, [r3, #12]
- 8002ee0: 2b00 cmp r3, #0
- 8002ee2: d002 beq.n 8002eea <pb_decode_inner+0x8e>
- 8002ee4: 68fb ldr r3, [r7, #12]
- 8002ee6: 68db ldr r3, [r3, #12]
- 8002ee8: e000 b.n 8002eec <pb_decode_inner+0x90>
- 8002eea: 4bb0 ldr r3, [pc, #704] ; (80031ac <pb_decode_inner+0x350>)
- 8002eec: 68fa ldr r2, [r7, #12]
- 8002eee: 60d3 str r3, [r2, #12]
- 8002ef0: 2300 movs r3, #0
- 8002ef2: e157 b.n 80031a4 <pb_decode_inner+0x348>
- }
- }
-
- if (!pb_field_iter_find(&iter, tag) || PB_LTYPE(iter.type) == PB_LTYPE_EXTENSION)
- 8002ef4: 69ba ldr r2, [r7, #24]
- 8002ef6: f107 031c add.w r3, r7, #28
- 8002efa: 4611 mov r1, r2
- 8002efc: 4618 mov r0, r3
- 8002efe: f7fe ff33 bl 8001d68 <pb_field_iter_find>
- 8002f02: 4603 mov r3, r0
- 8002f04: f083 0301 eor.w r3, r3, #1
- 8002f08: b2db uxtb r3, r3
- 8002f0a: 2b00 cmp r3, #0
- 8002f0c: d105 bne.n 8002f1a <pb_decode_inner+0xbe>
- 8002f0e: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002f12: f003 030f and.w r3, r3, #15
- 8002f16: 2b0a cmp r3, #10
- 8002f18: d13c bne.n 8002f94 <pb_decode_inner+0x138>
- {
- /* No match found, check if it matches an extension. */
- if (tag >= extension_range_start)
- 8002f1a: 69bb ldr r3, [r7, #24]
- 8002f1c: 6e7a ldr r2, [r7, #100] ; 0x64
- 8002f1e: 429a cmp r2, r3
- 8002f20: d82b bhi.n 8002f7a <pb_decode_inner+0x11e>
- {
- if (!find_extension_field(&iter))
- 8002f22: f107 031c add.w r3, r7, #28
- 8002f26: 4618 mov r0, r3
- 8002f28: f7ff fe4c bl 8002bc4 <find_extension_field>
- 8002f2c: 4603 mov r3, r0
- 8002f2e: f083 0301 eor.w r3, r3, #1
- 8002f32: b2db uxtb r3, r3
- 8002f34: 2b00 cmp r3, #0
- 8002f36: d003 beq.n 8002f40 <pb_decode_inner+0xe4>
- extension_range_start = (uint32_t)-1;
- 8002f38: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff
- 8002f3c: 667b str r3, [r7, #100] ; 0x64
- 8002f3e: e001 b.n 8002f44 <pb_decode_inner+0xe8>
- else
- extension_range_start = iter.tag;
- 8002f40: 8dbb ldrh r3, [r7, #44] ; 0x2c
- 8002f42: 667b str r3, [r7, #100] ; 0x64
-
- if (tag >= extension_range_start)
- 8002f44: 69bb ldr r3, [r7, #24]
- 8002f46: 6e7a ldr r2, [r7, #100] ; 0x64
- 8002f48: 429a cmp r2, r3
- 8002f4a: d816 bhi.n 8002f7a <pb_decode_inner+0x11e>
- {
- size_t pos = stream->bytes_left;
- 8002f4c: 68fb ldr r3, [r7, #12]
- 8002f4e: 689b ldr r3, [r3, #8]
- 8002f50: 653b str r3, [r7, #80] ; 0x50
-
- if (!decode_extension(stream, tag, wire_type, &iter))
- 8002f52: 69b9 ldr r1, [r7, #24]
- 8002f54: 7dfa ldrb r2, [r7, #23]
- 8002f56: f107 031c add.w r3, r7, #28
- 8002f5a: 68f8 ldr r0, [r7, #12]
- 8002f5c: f7ff fdf2 bl 8002b44 <decode_extension>
- 8002f60: 4603 mov r3, r0
- 8002f62: f083 0301 eor.w r3, r3, #1
- 8002f66: b2db uxtb r3, r3
- 8002f68: 2b00 cmp r3, #0
- 8002f6a: d001 beq.n 8002f70 <pb_decode_inner+0x114>
- return false;
- 8002f6c: 2300 movs r3, #0
- 8002f6e: e119 b.n 80031a4 <pb_decode_inner+0x348>
-
- if (pos != stream->bytes_left)
- 8002f70: 68fb ldr r3, [r7, #12]
- 8002f72: 689b ldr r3, [r3, #8]
- 8002f74: 6d3a ldr r2, [r7, #80] ; 0x50
- 8002f76: 429a cmp r2, r3
- 8002f78: d175 bne.n 8003066 <pb_decode_inner+0x20a>
- }
- }
- }
-
- /* No match found, skip data */
- if (!pb_skip_field(stream, wire_type))
- 8002f7a: 7dfb ldrb r3, [r7, #23]
- 8002f7c: 4619 mov r1, r3
- 8002f7e: 68f8 ldr r0, [r7, #12]
- 8002f80: f7ff f9be bl 8002300 <pb_skip_field>
- 8002f84: 4603 mov r3, r0
- 8002f86: f083 0301 eor.w r3, r3, #1
- 8002f8a: b2db uxtb r3, r3
- 8002f8c: 2b00 cmp r3, #0
- 8002f8e: d06c beq.n 800306a <pb_decode_inner+0x20e>
- return false;
- 8002f90: 2300 movs r3, #0
- 8002f92: e107 b.n 80031a4 <pb_decode_inner+0x348>
- }
-
- /* If a repeated fixed count field was found, get size from
- * 'fixed_count_field' as there is no counter contained in the struct.
- */
- if (PB_HTYPE(iter.type) == PB_HTYPE_REPEATED && iter.pSize == &iter.array_size)
- 8002f94: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8002f98: f003 0330 and.w r3, r3, #48 ; 0x30
- 8002f9c: 2b20 cmp r3, #32
- 8002f9e: d12e bne.n 8002ffe <pb_decode_inner+0x1a2>
- 8002fa0: 6bfa ldr r2, [r7, #60] ; 0x3c
- 8002fa2: f107 031c add.w r3, r7, #28
- 8002fa6: 3314 adds r3, #20
- 8002fa8: 429a cmp r2, r3
- 8002faa: d128 bne.n 8002ffe <pb_decode_inner+0x1a2>
- {
- if (fixed_count_field != iter.index) {
- 8002fac: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8002fae: f8b7 2062 ldrh.w r2, [r7, #98] ; 0x62
- 8002fb2: 429a cmp r2, r3
- 8002fb4: d020 beq.n 8002ff8 <pb_decode_inner+0x19c>
- /* If the new fixed count field does not match the previous one,
- * check that the previous one is NULL or that it finished
- * receiving all the expected data.
- */
- if (fixed_count_field != PB_SIZE_MAX &&
- 8002fb6: f8b7 3062 ldrh.w r3, [r7, #98] ; 0x62
- 8002fba: f64f 72ff movw r2, #65535 ; 0xffff
- 8002fbe: 4293 cmp r3, r2
- 8002fc0: d011 beq.n 8002fe6 <pb_decode_inner+0x18a>
- fixed_count_size != fixed_count_total_size)
- 8002fc2: f8b7 304c ldrh.w r3, [r7, #76] ; 0x4c
- if (fixed_count_field != PB_SIZE_MAX &&
- 8002fc6: f8b7 2060 ldrh.w r2, [r7, #96] ; 0x60
- 8002fca: 429a cmp r2, r3
- 8002fcc: d00b beq.n 8002fe6 <pb_decode_inner+0x18a>
- {
- PB_RETURN_ERROR(stream, "wrong size for fixed count field");
- 8002fce: 68fb ldr r3, [r7, #12]
- 8002fd0: 68db ldr r3, [r3, #12]
- 8002fd2: 2b00 cmp r3, #0
- 8002fd4: d002 beq.n 8002fdc <pb_decode_inner+0x180>
- 8002fd6: 68fb ldr r3, [r7, #12]
- 8002fd8: 68db ldr r3, [r3, #12]
- 8002fda: e000 b.n 8002fde <pb_decode_inner+0x182>
- 8002fdc: 4b74 ldr r3, [pc, #464] ; (80031b0 <pb_decode_inner+0x354>)
- 8002fde: 68fa ldr r2, [r7, #12]
- 8002fe0: 60d3 str r3, [r2, #12]
- 8002fe2: 2300 movs r3, #0
- 8002fe4: e0de b.n 80031a4 <pb_decode_inner+0x348>
- }
-
- fixed_count_field = iter.index;
- 8002fe6: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8002fe8: f8a7 3062 strh.w r3, [r7, #98] ; 0x62
- fixed_count_size = 0;
- 8002fec: 2300 movs r3, #0
- 8002fee: f8a7 304c strh.w r3, [r7, #76] ; 0x4c
- fixed_count_total_size = iter.array_size;
- 8002ff2: 8e3b ldrh r3, [r7, #48] ; 0x30
- 8002ff4: f8a7 3060 strh.w r3, [r7, #96] ; 0x60
- }
-
- iter.pSize = &fixed_count_size;
- 8002ff8: f107 034c add.w r3, r7, #76 ; 0x4c
- 8002ffc: 63fb str r3, [r7, #60] ; 0x3c
- }
-
- if (PB_HTYPE(iter.type) == PB_HTYPE_REQUIRED
- 8002ffe: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 8003002: f003 0330 and.w r3, r3, #48 ; 0x30
- 8003006: 2b00 cmp r3, #0
- 8003008: d11e bne.n 8003048 <pb_decode_inner+0x1ec>
- && iter.required_field_index < PB_MAX_REQUIRED_FIELDS)
- 800300a: 8d3b ldrh r3, [r7, #40] ; 0x28
- 800300c: 2b3f cmp r3, #63 ; 0x3f
- 800300e: d81b bhi.n 8003048 <pb_decode_inner+0x1ec>
- {
- uint32_t tmp = ((uint32_t)1 << (iter.required_field_index & 31));
- 8003010: 8d3b ldrh r3, [r7, #40] ; 0x28
- 8003012: f003 031f and.w r3, r3, #31
- 8003016: 2201 movs r2, #1
- 8003018: fa02 f303 lsl.w r3, r2, r3
- 800301c: 657b str r3, [r7, #84] ; 0x54
- fields_seen.bitfield[iter.required_field_index >> 5] |= tmp;
- 800301e: 8d3b ldrh r3, [r7, #40] ; 0x28
- 8003020: 095b lsrs r3, r3, #5
- 8003022: b29b uxth r3, r3
- 8003024: 009b lsls r3, r3, #2
- 8003026: f107 0268 add.w r2, r7, #104 ; 0x68
- 800302a: 4413 add r3, r2
- 800302c: f853 2c24 ldr.w r2, [r3, #-36]
- 8003030: 8d3b ldrh r3, [r7, #40] ; 0x28
- 8003032: 095b lsrs r3, r3, #5
- 8003034: b29b uxth r3, r3
- 8003036: 4619 mov r1, r3
- 8003038: 6d7b ldr r3, [r7, #84] ; 0x54
- 800303a: 431a orrs r2, r3
- 800303c: 008b lsls r3, r1, #2
- 800303e: f107 0168 add.w r1, r7, #104 ; 0x68
- 8003042: 440b add r3, r1
- 8003044: f843 2c24 str.w r2, [r3, #-36]
- }
-
- if (!decode_field(stream, wire_type, &iter))
- 8003048: 7dfb ldrb r3, [r7, #23]
- 800304a: f107 021c add.w r2, r7, #28
- 800304e: 4619 mov r1, r3
- 8003050: 68f8 ldr r0, [r7, #12]
- 8003052: f7ff fd05 bl 8002a60 <decode_field>
- 8003056: 4603 mov r3, r0
- 8003058: f083 0301 eor.w r3, r3, #1
- 800305c: b2db uxtb r3, r3
- 800305e: 2b00 cmp r3, #0
- 8003060: d004 beq.n 800306c <pb_decode_inner+0x210>
- return false;
- 8003062: 2300 movs r3, #0
- 8003064: e09e b.n 80031a4 <pb_decode_inner+0x348>
- continue;
- 8003066: bf00 nop
- 8003068: e000 b.n 800306c <pb_decode_inner+0x210>
- continue;
- 800306a: bf00 nop
- while (stream->bytes_left)
- 800306c: 68fb ldr r3, [r7, #12]
- 800306e: 689b ldr r3, [r3, #8]
- 8003070: 2b00 cmp r3, #0
- 8003072: f47f af15 bne.w 8002ea0 <pb_decode_inner+0x44>
- 8003076: e002 b.n 800307e <pb_decode_inner+0x222>
- break;
- 8003078: bf00 nop
- 800307a: e000 b.n 800307e <pb_decode_inner+0x222>
- break;
- 800307c: bf00 nop
- }
-
- /* Check that all elements of the last decoded fixed count field were present. */
- if (fixed_count_field != PB_SIZE_MAX &&
- 800307e: f8b7 3062 ldrh.w r3, [r7, #98] ; 0x62
- 8003082: f64f 72ff movw r2, #65535 ; 0xffff
- 8003086: 4293 cmp r3, r2
- 8003088: d011 beq.n 80030ae <pb_decode_inner+0x252>
- fixed_count_size != fixed_count_total_size)
- 800308a: f8b7 304c ldrh.w r3, [r7, #76] ; 0x4c
- if (fixed_count_field != PB_SIZE_MAX &&
- 800308e: f8b7 2060 ldrh.w r2, [r7, #96] ; 0x60
- 8003092: 429a cmp r2, r3
- 8003094: d00b beq.n 80030ae <pb_decode_inner+0x252>
- {
- PB_RETURN_ERROR(stream, "wrong size for fixed count field");
- 8003096: 68fb ldr r3, [r7, #12]
- 8003098: 68db ldr r3, [r3, #12]
- 800309a: 2b00 cmp r3, #0
- 800309c: d002 beq.n 80030a4 <pb_decode_inner+0x248>
- 800309e: 68fb ldr r3, [r7, #12]
- 80030a0: 68db ldr r3, [r3, #12]
- 80030a2: e000 b.n 80030a6 <pb_decode_inner+0x24a>
- 80030a4: 4b42 ldr r3, [pc, #264] ; (80031b0 <pb_decode_inner+0x354>)
- 80030a6: 68fa ldr r2, [r7, #12]
- 80030a8: 60d3 str r3, [r2, #12]
- 80030aa: 2300 movs r3, #0
- 80030ac: e07a b.n 80031a4 <pb_decode_inner+0x348>
- */
- pb_size_t req_field_count;
- pb_type_t last_type;
- pb_size_t i;
- do {
- req_field_count = iter.required_field_index;
- 80030ae: 8d3b ldrh r3, [r7, #40] ; 0x28
- 80030b0: f8a7 305e strh.w r3, [r7, #94] ; 0x5e
- last_type = iter.type;
- 80030b4: f897 3032 ldrb.w r3, [r7, #50] ; 0x32
- 80030b8: f887 304f strb.w r3, [r7, #79] ; 0x4f
- } while (pb_field_iter_next(&iter));
- 80030bc: f107 031c add.w r3, r7, #28
- 80030c0: 4618 mov r0, r3
- 80030c2: f7fe fe3c bl 8001d3e <pb_field_iter_next>
- 80030c6: 4603 mov r3, r0
- 80030c8: 2b00 cmp r3, #0
- 80030ca: d1f0 bne.n 80030ae <pb_decode_inner+0x252>
-
- /* Fixup if last field was also required. */
- if (PB_HTYPE(last_type) == PB_HTYPE_REQUIRED && iter.tag != 0)
- 80030cc: f897 304f ldrb.w r3, [r7, #79] ; 0x4f
- 80030d0: f003 0330 and.w r3, r3, #48 ; 0x30
- 80030d4: 2b00 cmp r3, #0
- 80030d6: d107 bne.n 80030e8 <pb_decode_inner+0x28c>
- 80030d8: 8dbb ldrh r3, [r7, #44] ; 0x2c
- 80030da: 2b00 cmp r3, #0
- 80030dc: d004 beq.n 80030e8 <pb_decode_inner+0x28c>
- req_field_count++;
- 80030de: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e
- 80030e2: 3301 adds r3, #1
- 80030e4: f8a7 305e strh.w r3, [r7, #94] ; 0x5e
-
- if (req_field_count > PB_MAX_REQUIRED_FIELDS)
- 80030e8: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e
- 80030ec: 2b40 cmp r3, #64 ; 0x40
- 80030ee: d902 bls.n 80030f6 <pb_decode_inner+0x29a>
- req_field_count = PB_MAX_REQUIRED_FIELDS;
- 80030f0: 2340 movs r3, #64 ; 0x40
- 80030f2: f8a7 305e strh.w r3, [r7, #94] ; 0x5e
-
- if (req_field_count > 0)
- 80030f6: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e
- 80030fa: 2b00 cmp r3, #0
- 80030fc: d051 beq.n 80031a2 <pb_decode_inner+0x346>
- {
- /* Check the whole words */
- for (i = 0; i < (req_field_count >> 5); i++)
- 80030fe: 2300 movs r3, #0
- 8003100: f8a7 305c strh.w r3, [r7, #92] ; 0x5c
- 8003104: e01b b.n 800313e <pb_decode_inner+0x2e2>
- {
- if (fields_seen.bitfield[i] != allbits)
- 8003106: f8b7 305c ldrh.w r3, [r7, #92] ; 0x5c
- 800310a: 009b lsls r3, r3, #2
- 800310c: f107 0268 add.w r2, r7, #104 ; 0x68
- 8003110: 4413 add r3, r2
- 8003112: f853 3c24 ldr.w r3, [r3, #-36]
- 8003116: 6dba ldr r2, [r7, #88] ; 0x58
- 8003118: 429a cmp r2, r3
- 800311a: d00b beq.n 8003134 <pb_decode_inner+0x2d8>
- PB_RETURN_ERROR(stream, "missing required field");
- 800311c: 68fb ldr r3, [r7, #12]
- 800311e: 68db ldr r3, [r3, #12]
- 8003120: 2b00 cmp r3, #0
- 8003122: d002 beq.n 800312a <pb_decode_inner+0x2ce>
- 8003124: 68fb ldr r3, [r7, #12]
- 8003126: 68db ldr r3, [r3, #12]
- 8003128: e000 b.n 800312c <pb_decode_inner+0x2d0>
- 800312a: 4b22 ldr r3, [pc, #136] ; (80031b4 <pb_decode_inner+0x358>)
- 800312c: 68fa ldr r2, [r7, #12]
- 800312e: 60d3 str r3, [r2, #12]
- 8003130: 2300 movs r3, #0
- 8003132: e037 b.n 80031a4 <pb_decode_inner+0x348>
- for (i = 0; i < (req_field_count >> 5); i++)
- 8003134: f8b7 305c ldrh.w r3, [r7, #92] ; 0x5c
- 8003138: 3301 adds r3, #1
- 800313a: f8a7 305c strh.w r3, [r7, #92] ; 0x5c
- 800313e: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e
- 8003142: 095b lsrs r3, r3, #5
- 8003144: b29b uxth r3, r3
- 8003146: f8b7 205c ldrh.w r2, [r7, #92] ; 0x5c
- 800314a: 429a cmp r2, r3
- 800314c: d3db bcc.n 8003106 <pb_decode_inner+0x2aa>
- }
-
- /* Check the remaining bits (if any) */
- if ((req_field_count & 31) != 0)
- 800314e: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e
- 8003152: f003 031f and.w r3, r3, #31
- 8003156: 2b00 cmp r3, #0
- 8003158: d023 beq.n 80031a2 <pb_decode_inner+0x346>
- {
- if (fields_seen.bitfield[req_field_count >> 5] !=
- 800315a: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e
- 800315e: 095b lsrs r3, r3, #5
- 8003160: b29b uxth r3, r3
- 8003162: 009b lsls r3, r3, #2
- 8003164: f107 0268 add.w r2, r7, #104 ; 0x68
- 8003168: 4413 add r3, r2
- 800316a: f853 2c24 ldr.w r2, [r3, #-36]
- (allbits >> (uint8_t)(32 - (req_field_count & 31))))
- 800316e: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e
- 8003172: b2db uxtb r3, r3
- 8003174: f003 031f and.w r3, r3, #31
- 8003178: b2db uxtb r3, r3
- 800317a: f1c3 0320 rsb r3, r3, #32
- 800317e: b2db uxtb r3, r3
- 8003180: 4619 mov r1, r3
- 8003182: 6dbb ldr r3, [r7, #88] ; 0x58
- 8003184: 40cb lsrs r3, r1
- if (fields_seen.bitfield[req_field_count >> 5] !=
- 8003186: 429a cmp r2, r3
- 8003188: d00b beq.n 80031a2 <pb_decode_inner+0x346>
- {
- PB_RETURN_ERROR(stream, "missing required field");
- 800318a: 68fb ldr r3, [r7, #12]
- 800318c: 68db ldr r3, [r3, #12]
- 800318e: 2b00 cmp r3, #0
- 8003190: d002 beq.n 8003198 <pb_decode_inner+0x33c>
- 8003192: 68fb ldr r3, [r7, #12]
- 8003194: 68db ldr r3, [r3, #12]
- 8003196: e000 b.n 800319a <pb_decode_inner+0x33e>
- 8003198: 4b06 ldr r3, [pc, #24] ; (80031b4 <pb_decode_inner+0x358>)
- 800319a: 68fa ldr r2, [r7, #12]
- 800319c: 60d3 str r3, [r2, #12]
- 800319e: 2300 movs r3, #0
- 80031a0: e000 b.n 80031a4 <pb_decode_inner+0x348>
- }
- }
- }
- }
-
- return true;
- 80031a2: 2301 movs r3, #1
-}
- 80031a4: 4618 mov r0, r3
- 80031a6: 3768 adds r7, #104 ; 0x68
- 80031a8: 46bd mov sp, r7
- 80031aa: bd80 pop {r7, pc}
- 80031ac: 08008aa8 .word 0x08008aa8
- 80031b0: 08008ab4 .word 0x08008ab4
- 80031b4: 08008ad8 .word 0x08008ad8
-
-080031b8 <pb_decode_ex>:
-
-bool checkreturn pb_decode_ex(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct, unsigned int flags)
-{
- 80031b8: b580 push {r7, lr}
- 80031ba: b094 sub sp, #80 ; 0x50
- 80031bc: af00 add r7, sp, #0
- 80031be: 60f8 str r0, [r7, #12]
- 80031c0: 60b9 str r1, [r7, #8]
- 80031c2: 607a str r2, [r7, #4]
- 80031c4: 603b str r3, [r7, #0]
- bool status;
-
- if ((flags & PB_DECODE_NOINIT) == 0)
- 80031c6: 683b ldr r3, [r7, #0]
- 80031c8: f003 0301 and.w r3, r3, #1
- 80031cc: 2b00 cmp r3, #0
- 80031ce: d120 bne.n 8003212 <pb_decode_ex+0x5a>
- {
- pb_field_iter_t iter;
-
- if (pb_field_iter_begin(&iter, fields, dest_struct))
- 80031d0: f107 0314 add.w r3, r7, #20
- 80031d4: 687a ldr r2, [r7, #4]
- 80031d6: 68b9 ldr r1, [r7, #8]
- 80031d8: 4618 mov r0, r3
- 80031da: f7fe fd66 bl 8001caa <pb_field_iter_begin>
- 80031de: 4603 mov r3, r0
- 80031e0: 2b00 cmp r3, #0
- 80031e2: d016 beq.n 8003212 <pb_decode_ex+0x5a>
- {
- if (!pb_message_set_to_defaults(&iter))
- 80031e4: f107 0314 add.w r3, r7, #20
- 80031e8: 4618 mov r0, r3
- 80031ea: f7ff fdb8 bl 8002d5e <pb_message_set_to_defaults>
- 80031ee: 4603 mov r3, r0
- 80031f0: f083 0301 eor.w r3, r3, #1
- 80031f4: b2db uxtb r3, r3
- 80031f6: 2b00 cmp r3, #0
- 80031f8: d00b beq.n 8003212 <pb_decode_ex+0x5a>
- PB_RETURN_ERROR(stream, "failed to set defaults");
- 80031fa: 68fb ldr r3, [r7, #12]
- 80031fc: 68db ldr r3, [r3, #12]
- 80031fe: 2b00 cmp r3, #0
- 8003200: d002 beq.n 8003208 <pb_decode_ex+0x50>
- 8003202: 68fb ldr r3, [r7, #12]
- 8003204: 68db ldr r3, [r3, #12]
- 8003206: e000 b.n 800320a <pb_decode_ex+0x52>
- 8003208: 4b1f ldr r3, [pc, #124] ; (8003288 <pb_decode_ex+0xd0>)
- 800320a: 68fa ldr r2, [r7, #12]
- 800320c: 60d3 str r3, [r2, #12]
- 800320e: 2300 movs r3, #0
- 8003210: e036 b.n 8003280 <pb_decode_ex+0xc8>
- }
- }
-
- if ((flags & PB_DECODE_DELIMITED) == 0)
- 8003212: 683b ldr r3, [r7, #0]
- 8003214: f003 0302 and.w r3, r3, #2
- 8003218: 2b00 cmp r3, #0
- 800321a: d109 bne.n 8003230 <pb_decode_ex+0x78>
- {
- status = pb_decode_inner(stream, fields, dest_struct, flags);
- 800321c: 683b ldr r3, [r7, #0]
- 800321e: 687a ldr r2, [r7, #4]
- 8003220: 68b9 ldr r1, [r7, #8]
- 8003222: 68f8 ldr r0, [r7, #12]
- 8003224: f7ff fe1a bl 8002e5c <pb_decode_inner>
- 8003228: 4603 mov r3, r0
- 800322a: f887 304f strb.w r3, [r7, #79] ; 0x4f
- 800322e: e025 b.n 800327c <pb_decode_ex+0xc4>
- }
- else
- {
- pb_istream_t substream;
- if (!pb_make_string_substream(stream, &substream))
- 8003230: f107 033c add.w r3, r7, #60 ; 0x3c
- 8003234: 4619 mov r1, r3
- 8003236: 68f8 ldr r0, [r7, #12]
- 8003238: f7ff f90c bl 8002454 <pb_make_string_substream>
- 800323c: 4603 mov r3, r0
- 800323e: f083 0301 eor.w r3, r3, #1
- 8003242: b2db uxtb r3, r3
- 8003244: 2b00 cmp r3, #0
- 8003246: d001 beq.n 800324c <pb_decode_ex+0x94>
- return false;
- 8003248: 2300 movs r3, #0
- 800324a: e019 b.n 8003280 <pb_decode_ex+0xc8>
-
- status = pb_decode_inner(&substream, fields, dest_struct, flags);
- 800324c: f107 003c add.w r0, r7, #60 ; 0x3c
- 8003250: 683b ldr r3, [r7, #0]
- 8003252: 687a ldr r2, [r7, #4]
- 8003254: 68b9 ldr r1, [r7, #8]
- 8003256: f7ff fe01 bl 8002e5c <pb_decode_inner>
- 800325a: 4603 mov r3, r0
- 800325c: f887 304f strb.w r3, [r7, #79] ; 0x4f
-
- if (!pb_close_string_substream(stream, &substream))
- 8003260: f107 033c add.w r3, r7, #60 ; 0x3c
- 8003264: 4619 mov r1, r3
- 8003266: 68f8 ldr r0, [r7, #12]
- 8003268: f7ff f92e bl 80024c8 <pb_close_string_substream>
- 800326c: 4603 mov r3, r0
- 800326e: f083 0301 eor.w r3, r3, #1
- 8003272: b2db uxtb r3, r3
- 8003274: 2b00 cmp r3, #0
- 8003276: d001 beq.n 800327c <pb_decode_ex+0xc4>
- return false;
- 8003278: 2300 movs r3, #0
- 800327a: e001 b.n 8003280 <pb_decode_ex+0xc8>
-#ifdef PB_ENABLE_MALLOC
- if (!status)
- pb_release(fields, dest_struct);
-#endif
-
- return status;
- 800327c: f897 304f ldrb.w r3, [r7, #79] ; 0x4f
-}
- 8003280: 4618 mov r0, r3
- 8003282: 3750 adds r7, #80 ; 0x50
- 8003284: 46bd mov sp, r7
- 8003286: bd80 pop {r7, pc}
- 8003288: 08008af0 .word 0x08008af0
-
-0800328c <pb_decode>:
-
-bool checkreturn pb_decode(pb_istream_t *stream, const pb_msgdesc_t *fields, void *dest_struct)
-{
- 800328c: b580 push {r7, lr}
- 800328e: b084 sub sp, #16
- 8003290: af00 add r7, sp, #0
- 8003292: 60f8 str r0, [r7, #12]
- 8003294: 60b9 str r1, [r7, #8]
- 8003296: 607a str r2, [r7, #4]
- return pb_decode_ex(stream, fields, dest_struct, 0);
- 8003298: 2300 movs r3, #0
- 800329a: 687a ldr r2, [r7, #4]
- 800329c: 68b9 ldr r1, [r7, #8]
- 800329e: 68f8 ldr r0, [r7, #12]
- 80032a0: f7ff ff8a bl 80031b8 <pb_decode_ex>
- 80032a4: 4603 mov r3, r0
-}
- 80032a6: 4618 mov r0, r3
- 80032a8: 3710 adds r7, #16
- 80032aa: 46bd mov sp, r7
- 80032ac: bd80 pop {r7, pc}
-
-080032ae <pb_decode_bool>:
-#endif
-
-/* Field decoders */
-
-bool pb_decode_bool(pb_istream_t *stream, bool *dest)
-{
- 80032ae: b580 push {r7, lr}
- 80032b0: b084 sub sp, #16
- 80032b2: af00 add r7, sp, #0
- 80032b4: 6078 str r0, [r7, #4]
- 80032b6: 6039 str r1, [r7, #0]
- uint32_t value;
- if (!pb_decode_varint32(stream, &value))
- 80032b8: f107 030c add.w r3, r7, #12
- 80032bc: 4619 mov r1, r3
- 80032be: 6878 ldr r0, [r7, #4]
- 80032c0: f7fe ff44 bl 800214c <pb_decode_varint32>
- 80032c4: 4603 mov r3, r0
- 80032c6: f083 0301 eor.w r3, r3, #1
- 80032ca: b2db uxtb r3, r3
- 80032cc: 2b00 cmp r3, #0
- 80032ce: d001 beq.n 80032d4 <pb_decode_bool+0x26>
- return false;
- 80032d0: 2300 movs r3, #0
- 80032d2: e008 b.n 80032e6 <pb_decode_bool+0x38>
-
- *(bool*)dest = (value != 0);
- 80032d4: 68fb ldr r3, [r7, #12]
- 80032d6: 2b00 cmp r3, #0
- 80032d8: bf14 ite ne
- 80032da: 2301 movne r3, #1
- 80032dc: 2300 moveq r3, #0
- 80032de: b2da uxtb r2, r3
- 80032e0: 683b ldr r3, [r7, #0]
- 80032e2: 701a strb r2, [r3, #0]
- return true;
- 80032e4: 2301 movs r3, #1
-}
- 80032e6: 4618 mov r0, r3
- 80032e8: 3710 adds r7, #16
- 80032ea: 46bd mov sp, r7
- 80032ec: bd80 pop {r7, pc}
-
-080032ee <pb_decode_svarint>:
-
-bool pb_decode_svarint(pb_istream_t *stream, pb_int64_t *dest)
-{
- 80032ee: e92d 4890 stmdb sp!, {r4, r7, fp, lr}
- 80032f2: b084 sub sp, #16
- 80032f4: af00 add r7, sp, #0
- 80032f6: 6078 str r0, [r7, #4]
- 80032f8: 6039 str r1, [r7, #0]
- pb_uint64_t value;
- if (!pb_decode_varint(stream, &value))
- 80032fa: f107 0308 add.w r3, r7, #8
- 80032fe: 4619 mov r1, r3
- 8003300: 6878 ldr r0, [r7, #4]
- 8003302: f7fe ff33 bl 800216c <pb_decode_varint>
- 8003306: 4603 mov r3, r0
- 8003308: f083 0301 eor.w r3, r3, #1
- 800330c: b2db uxtb r3, r3
- 800330e: 2b00 cmp r3, #0
- 8003310: d001 beq.n 8003316 <pb_decode_svarint+0x28>
- return false;
- 8003312: 2300 movs r3, #0
- 8003314: e021 b.n 800335a <pb_decode_svarint+0x6c>
-
- if (value & 1)
- 8003316: e9d7 bc02 ldrd fp, ip, [r7, #8]
- 800331a: f04f 0101 mov.w r1, #1
- 800331e: f04f 0200 mov.w r2, #0
- 8003322: ea0b 0301 and.w r3, fp, r1
- 8003326: ea0c 0402 and.w r4, ip, r2
- 800332a: 4323 orrs r3, r4
- 800332c: d00c beq.n 8003348 <pb_decode_svarint+0x5a>
- *dest = (pb_int64_t)(~(value >> 1));
- 800332e: e9d7 3402 ldrd r3, r4, [r7, #8]
- 8003332: 0862 lsrs r2, r4, #1
- 8003334: ea4f 0133 mov.w r1, r3, rrx
- 8003338: ea6f 0301 mvn.w r3, r1
- 800333c: ea6f 0402 mvn.w r4, r2
- 8003340: 683a ldr r2, [r7, #0]
- 8003342: e9c2 3400 strd r3, r4, [r2]
- 8003346: e007 b.n 8003358 <pb_decode_svarint+0x6a>
- else
- *dest = (pb_int64_t)(value >> 1);
- 8003348: e9d7 3402 ldrd r3, r4, [r7, #8]
- 800334c: 0864 lsrs r4, r4, #1
- 800334e: ea4f 0333 mov.w r3, r3, rrx
- 8003352: 683a ldr r2, [r7, #0]
- 8003354: e9c2 3400 strd r3, r4, [r2]
-
- return true;
- 8003358: 2301 movs r3, #1
-}
- 800335a: 4618 mov r0, r3
- 800335c: 3710 adds r7, #16
- 800335e: 46bd mov sp, r7
- 8003360: e8bd 8890 ldmia.w sp!, {r4, r7, fp, pc}
-
-08003364 <pb_decode_fixed32>:
-
-bool pb_decode_fixed32(pb_istream_t *stream, void *dest)
-{
- 8003364: b580 push {r7, lr}
- 8003366: b084 sub sp, #16
- 8003368: af00 add r7, sp, #0
- 800336a: 6078 str r0, [r7, #4]
- 800336c: 6039 str r1, [r7, #0]
- union {
- uint32_t fixed32;
- pb_byte_t bytes[4];
- } u;
-
- if (!pb_read(stream, u.bytes, 4))
- 800336e: f107 030c add.w r3, r7, #12
- 8003372: 2204 movs r2, #4
- 8003374: 4619 mov r1, r3
- 8003376: 6878 ldr r0, [r7, #4]
- 8003378: f7fe fd98 bl 8001eac <pb_read>
- 800337c: 4603 mov r3, r0
- 800337e: f083 0301 eor.w r3, r3, #1
- 8003382: b2db uxtb r3, r3
- 8003384: 2b00 cmp r3, #0
- 8003386: d001 beq.n 800338c <pb_decode_fixed32+0x28>
- return false;
- 8003388: 2300 movs r3, #0
- 800338a: e00d b.n 80033a8 <pb_decode_fixed32+0x44>
-
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN && CHAR_BIT == 8
- /* fast path - if we know that we're on little endian, assign directly */
- *(uint32_t*)dest = u.fixed32;
-#else
- *(uint32_t*)dest = ((uint32_t)u.bytes[0] << 0) |
- 800338c: 7b3b ldrb r3, [r7, #12]
- 800338e: 461a mov r2, r3
- ((uint32_t)u.bytes[1] << 8) |
- 8003390: 7b7b ldrb r3, [r7, #13]
- 8003392: 021b lsls r3, r3, #8
- *(uint32_t*)dest = ((uint32_t)u.bytes[0] << 0) |
- 8003394: 431a orrs r2, r3
- ((uint32_t)u.bytes[2] << 16) |
- 8003396: 7bbb ldrb r3, [r7, #14]
- 8003398: 041b lsls r3, r3, #16
- ((uint32_t)u.bytes[1] << 8) |
- 800339a: 431a orrs r2, r3
- ((uint32_t)u.bytes[3] << 24);
- 800339c: 7bfb ldrb r3, [r7, #15]
- 800339e: 061b lsls r3, r3, #24
- ((uint32_t)u.bytes[2] << 16) |
- 80033a0: 431a orrs r2, r3
- *(uint32_t*)dest = ((uint32_t)u.bytes[0] << 0) |
- 80033a2: 683b ldr r3, [r7, #0]
- 80033a4: 601a str r2, [r3, #0]
-#endif
- return true;
- 80033a6: 2301 movs r3, #1
-}
- 80033a8: 4618 mov r0, r3
- 80033aa: 3710 adds r7, #16
- 80033ac: 46bd mov sp, r7
- 80033ae: bd80 pop {r7, pc}
-
-080033b0 <pb_decode_fixed64>:
-
-#ifndef PB_WITHOUT_64BIT
-bool pb_decode_fixed64(pb_istream_t *stream, void *dest)
-{
- 80033b0: e92d 4bf0 stmdb sp!, {r4, r5, r6, r7, r8, r9, fp, lr}
- 80033b4: b084 sub sp, #16
- 80033b6: af00 add r7, sp, #0
- 80033b8: 6078 str r0, [r7, #4]
- 80033ba: 6039 str r1, [r7, #0]
- union {
- uint64_t fixed64;
- pb_byte_t bytes[8];
- } u;
-
- if (!pb_read(stream, u.bytes, 8))
- 80033bc: f107 0308 add.w r3, r7, #8
- 80033c0: 2208 movs r2, #8
- 80033c2: 4619 mov r1, r3
- 80033c4: 6878 ldr r0, [r7, #4]
- 80033c6: f7fe fd71 bl 8001eac <pb_read>
- 80033ca: 4603 mov r3, r0
- 80033cc: f083 0301 eor.w r3, r3, #1
- 80033d0: b2db uxtb r3, r3
- 80033d2: 2b00 cmp r3, #0
- 80033d4: d001 beq.n 80033da <pb_decode_fixed64+0x2a>
- return false;
- 80033d6: 2300 movs r3, #0
- 80033d8: e06c b.n 80034b4 <pb_decode_fixed64+0x104>
-
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN && CHAR_BIT == 8
- /* fast path - if we know that we're on little endian, assign directly */
- *(uint64_t*)dest = u.fixed64;
-#else
- *(uint64_t*)dest = ((uint64_t)u.bytes[0] << 0) |
- 80033da: 7a3b ldrb r3, [r7, #8]
- 80033dc: fa5f fb83 uxtb.w fp, r3
- 80033e0: f04f 0c00 mov.w ip, #0
- ((uint64_t)u.bytes[1] << 8) |
- 80033e4: 7a7b ldrb r3, [r7, #9]
- 80033e6: b2d9 uxtb r1, r3
- 80033e8: f04f 0200 mov.w r2, #0
- 80033ec: f04f 0300 mov.w r3, #0
- 80033f0: f04f 0400 mov.w r4, #0
- 80033f4: 0214 lsls r4, r2, #8
- 80033f6: ea44 6411 orr.w r4, r4, r1, lsr #24
- 80033fa: 020b lsls r3, r1, #8
- *(uint64_t*)dest = ((uint64_t)u.bytes[0] << 0) |
- 80033fc: ea4b 0803 orr.w r8, fp, r3
- 8003400: ea4c 0904 orr.w r9, ip, r4
- ((uint64_t)u.bytes[2] << 16) |
- 8003404: 7abb ldrb r3, [r7, #10]
- 8003406: b2d9 uxtb r1, r3
- 8003408: f04f 0200 mov.w r2, #0
- 800340c: f04f 0300 mov.w r3, #0
- 8003410: f04f 0400 mov.w r4, #0
- 8003414: 0414 lsls r4, r2, #16
- 8003416: ea44 4411 orr.w r4, r4, r1, lsr #16
- 800341a: 040b lsls r3, r1, #16
- ((uint64_t)u.bytes[1] << 8) |
- 800341c: ea48 0103 orr.w r1, r8, r3
- 8003420: ea49 0204 orr.w r2, r9, r4
- ((uint64_t)u.bytes[3] << 24) |
- 8003424: 7afb ldrb r3, [r7, #11]
- 8003426: b2db uxtb r3, r3
- 8003428: f04f 0400 mov.w r4, #0
- 800342c: 0a1e lsrs r6, r3, #8
- 800342e: 061d lsls r5, r3, #24
- ((uint64_t)u.bytes[2] << 16) |
- 8003430: ea41 0805 orr.w r8, r1, r5
- 8003434: ea42 0906 orr.w r9, r2, r6
- ((uint64_t)u.bytes[4] << 32) |
- 8003438: 7b3b ldrb r3, [r7, #12]
- 800343a: b2dd uxtb r5, r3
- 800343c: f04f 0600 mov.w r6, #0
- 8003440: f04f 0300 mov.w r3, #0
- 8003444: f04f 0400 mov.w r4, #0
- 8003448: 002c movs r4, r5
- 800344a: 2300 movs r3, #0
- ((uint64_t)u.bytes[3] << 24) |
- 800344c: ea48 0103 orr.w r1, r8, r3
- 8003450: ea49 0204 orr.w r2, r9, r4
- ((uint64_t)u.bytes[5] << 40) |
- 8003454: 7b7b ldrb r3, [r7, #13]
- 8003456: b2dd uxtb r5, r3
- 8003458: f04f 0600 mov.w r6, #0
- 800345c: f04f 0300 mov.w r3, #0
- 8003460: f04f 0400 mov.w r4, #0
- 8003464: 022c lsls r4, r5, #8
- 8003466: 2300 movs r3, #0
- ((uint64_t)u.bytes[4] << 32) |
- 8003468: ea41 0803 orr.w r8, r1, r3
- 800346c: ea42 0904 orr.w r9, r2, r4
- ((uint64_t)u.bytes[6] << 48) |
- 8003470: 7bbb ldrb r3, [r7, #14]
- 8003472: b2dd uxtb r5, r3
- 8003474: f04f 0600 mov.w r6, #0
- 8003478: f04f 0300 mov.w r3, #0
- 800347c: f04f 0400 mov.w r4, #0
- 8003480: 042c lsls r4, r5, #16
- 8003482: 2300 movs r3, #0
- ((uint64_t)u.bytes[5] << 40) |
- 8003484: ea48 0103 orr.w r1, r8, r3
- 8003488: ea49 0204 orr.w r2, r9, r4
- ((uint64_t)u.bytes[7] << 56);
- 800348c: 7bfb ldrb r3, [r7, #15]
- 800348e: b2dd uxtb r5, r3
- 8003490: f04f 0600 mov.w r6, #0
- 8003494: f04f 0800 mov.w r8, #0
- 8003498: f04f 0900 mov.w r9, #0
- 800349c: ea4f 6905 mov.w r9, r5, lsl #24
- 80034a0: f04f 0800 mov.w r8, #0
- ((uint64_t)u.bytes[6] << 48) |
- 80034a4: ea48 0301 orr.w r3, r8, r1
- 80034a8: ea49 0402 orr.w r4, r9, r2
- *(uint64_t*)dest = ((uint64_t)u.bytes[0] << 0) |
- 80034ac: 683a ldr r2, [r7, #0]
- 80034ae: e9c2 3400 strd r3, r4, [r2]
-#endif
- return true;
- 80034b2: 2301 movs r3, #1
-}
- 80034b4: 4618 mov r0, r3
- 80034b6: 3710 adds r7, #16
- 80034b8: 46bd mov sp, r7
- 80034ba: e8bd 8bf0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
-
-080034be <pb_dec_bool>:
-#endif
-
-static bool checkreturn pb_dec_bool(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- 80034be: b580 push {r7, lr}
- 80034c0: b082 sub sp, #8
- 80034c2: af00 add r7, sp, #0
- 80034c4: 6078 str r0, [r7, #4]
- 80034c6: 6039 str r1, [r7, #0]
- return pb_decode_bool(stream, (bool*)field->pData);
- 80034c8: 683b ldr r3, [r7, #0]
- 80034ca: 69db ldr r3, [r3, #28]
- 80034cc: 4619 mov r1, r3
- 80034ce: 6878 ldr r0, [r7, #4]
- 80034d0: f7ff feed bl 80032ae <pb_decode_bool>
- 80034d4: 4603 mov r3, r0
-}
- 80034d6: 4618 mov r0, r3
- 80034d8: 3708 adds r7, #8
- 80034da: 46bd mov sp, r7
- 80034dc: bd80 pop {r7, pc}
- ...
-
-080034e0 <pb_dec_varint>:
-
-static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- 80034e0: b590 push {r4, r7, lr}
- 80034e2: b08d sub sp, #52 ; 0x34
- 80034e4: af00 add r7, sp, #0
- 80034e6: 6078 str r0, [r7, #4]
- 80034e8: 6039 str r1, [r7, #0]
- if (PB_LTYPE(field->type) == PB_LTYPE_UVARINT)
- 80034ea: 683b ldr r3, [r7, #0]
- 80034ec: 7d9b ldrb r3, [r3, #22]
- 80034ee: f003 030f and.w r3, r3, #15
- 80034f2: 2b02 cmp r3, #2
- 80034f4: d170 bne.n 80035d8 <pb_dec_varint+0xf8>
- {
- pb_uint64_t value, clamped;
- if (!pb_decode_varint(stream, &value))
- 80034f6: f107 0318 add.w r3, r7, #24
- 80034fa: 4619 mov r1, r3
- 80034fc: 6878 ldr r0, [r7, #4]
- 80034fe: f7fe fe35 bl 800216c <pb_decode_varint>
- 8003502: 4603 mov r3, r0
- 8003504: f083 0301 eor.w r3, r3, #1
- 8003508: b2db uxtb r3, r3
- 800350a: 2b00 cmp r3, #0
- 800350c: d001 beq.n 8003512 <pb_dec_varint+0x32>
- return false;
- 800350e: 2300 movs r3, #0
- 8003510: e0f7 b.n 8003702 <pb_dec_varint+0x222>
-
- /* Cast to the proper field size, while checking for overflows */
- if (field->data_size == sizeof(pb_uint64_t))
- 8003512: 683b ldr r3, [r7, #0]
- 8003514: 8a5b ldrh r3, [r3, #18]
- 8003516: 2b08 cmp r3, #8
- 8003518: d10a bne.n 8003530 <pb_dec_varint+0x50>
- clamped = *(pb_uint64_t*)field->pData = value;
- 800351a: 683b ldr r3, [r7, #0]
- 800351c: 69da ldr r2, [r3, #28]
- 800351e: e9d7 3406 ldrd r3, r4, [r7, #24]
- 8003522: e9c2 3400 strd r3, r4, [r2]
- 8003526: e9d2 3400 ldrd r3, r4, [r2]
- 800352a: e9c7 340a strd r3, r4, [r7, #40] ; 0x28
- 800352e: e03d b.n 80035ac <pb_dec_varint+0xcc>
- else if (field->data_size == sizeof(uint32_t))
- 8003530: 683b ldr r3, [r7, #0]
- 8003532: 8a5b ldrh r3, [r3, #18]
- 8003534: 2b04 cmp r3, #4
- 8003536: d10b bne.n 8003550 <pb_dec_varint+0x70>
- clamped = *(uint32_t*)field->pData = (uint32_t)value;
- 8003538: e9d7 1206 ldrd r1, r2, [r7, #24]
- 800353c: 683b ldr r3, [r7, #0]
- 800353e: 69db ldr r3, [r3, #28]
- 8003540: 460a mov r2, r1
- 8003542: 601a str r2, [r3, #0]
- 8003544: 681b ldr r3, [r3, #0]
- 8003546: f04f 0400 mov.w r4, #0
- 800354a: e9c7 340a strd r3, r4, [r7, #40] ; 0x28
- 800354e: e02d b.n 80035ac <pb_dec_varint+0xcc>
- else if (field->data_size == sizeof(uint_least16_t))
- 8003550: 683b ldr r3, [r7, #0]
- 8003552: 8a5b ldrh r3, [r3, #18]
- 8003554: 2b02 cmp r3, #2
- 8003556: d10c bne.n 8003572 <pb_dec_varint+0x92>
- clamped = *(uint_least16_t*)field->pData = (uint_least16_t)value;
- 8003558: e9d7 1206 ldrd r1, r2, [r7, #24]
- 800355c: 683b ldr r3, [r7, #0]
- 800355e: 69db ldr r3, [r3, #28]
- 8003560: b28a uxth r2, r1
- 8003562: 801a strh r2, [r3, #0]
- 8003564: 881b ldrh r3, [r3, #0]
- 8003566: b29b uxth r3, r3
- 8003568: f04f 0400 mov.w r4, #0
- 800356c: e9c7 340a strd r3, r4, [r7, #40] ; 0x28
- 8003570: e01c b.n 80035ac <pb_dec_varint+0xcc>
- else if (field->data_size == sizeof(uint_least8_t))
- 8003572: 683b ldr r3, [r7, #0]
- 8003574: 8a5b ldrh r3, [r3, #18]
- 8003576: 2b01 cmp r3, #1
- 8003578: d10c bne.n 8003594 <pb_dec_varint+0xb4>
- clamped = *(uint_least8_t*)field->pData = (uint_least8_t)value;
- 800357a: e9d7 1206 ldrd r1, r2, [r7, #24]
- 800357e: 683b ldr r3, [r7, #0]
- 8003580: 69db ldr r3, [r3, #28]
- 8003582: b2ca uxtb r2, r1
- 8003584: 701a strb r2, [r3, #0]
- 8003586: 781b ldrb r3, [r3, #0]
- 8003588: b2db uxtb r3, r3
- 800358a: f04f 0400 mov.w r4, #0
- 800358e: e9c7 340a strd r3, r4, [r7, #40] ; 0x28
- 8003592: e00b b.n 80035ac <pb_dec_varint+0xcc>
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
- 8003594: 687b ldr r3, [r7, #4]
- 8003596: 68db ldr r3, [r3, #12]
- 8003598: 2b00 cmp r3, #0
- 800359a: d002 beq.n 80035a2 <pb_dec_varint+0xc2>
- 800359c: 687b ldr r3, [r7, #4]
- 800359e: 68db ldr r3, [r3, #12]
- 80035a0: e000 b.n 80035a4 <pb_dec_varint+0xc4>
- 80035a2: 4b5a ldr r3, [pc, #360] ; (800370c <pb_dec_varint+0x22c>)
- 80035a4: 687a ldr r2, [r7, #4]
- 80035a6: 60d3 str r3, [r2, #12]
- 80035a8: 2300 movs r3, #0
- 80035aa: e0aa b.n 8003702 <pb_dec_varint+0x222>
-
- if (clamped != value)
- 80035ac: e9d7 3406 ldrd r3, r4, [r7, #24]
- 80035b0: e9d7 120a ldrd r1, r2, [r7, #40] ; 0x28
- 80035b4: 42a2 cmp r2, r4
- 80035b6: bf08 it eq
- 80035b8: 4299 cmpeq r1, r3
- 80035ba: d00b beq.n 80035d4 <pb_dec_varint+0xf4>
- PB_RETURN_ERROR(stream, "integer too large");
- 80035bc: 687b ldr r3, [r7, #4]
- 80035be: 68db ldr r3, [r3, #12]
- 80035c0: 2b00 cmp r3, #0
- 80035c2: d002 beq.n 80035ca <pb_dec_varint+0xea>
- 80035c4: 687b ldr r3, [r7, #4]
- 80035c6: 68db ldr r3, [r3, #12]
- 80035c8: e000 b.n 80035cc <pb_dec_varint+0xec>
- 80035ca: 4b51 ldr r3, [pc, #324] ; (8003710 <pb_dec_varint+0x230>)
- 80035cc: 687a ldr r2, [r7, #4]
- 80035ce: 60d3 str r3, [r2, #12]
- 80035d0: 2300 movs r3, #0
- 80035d2: e096 b.n 8003702 <pb_dec_varint+0x222>
-
- return true;
- 80035d4: 2301 movs r3, #1
- 80035d6: e094 b.n 8003702 <pb_dec_varint+0x222>
- {
- pb_uint64_t value;
- pb_int64_t svalue;
- pb_int64_t clamped;
-
- if (PB_LTYPE(field->type) == PB_LTYPE_SVARINT)
- 80035d8: 683b ldr r3, [r7, #0]
- 80035da: 7d9b ldrb r3, [r3, #22]
- 80035dc: f003 030f and.w r3, r3, #15
- 80035e0: 2b03 cmp r3, #3
- 80035e2: d10d bne.n 8003600 <pb_dec_varint+0x120>
- {
- if (!pb_decode_svarint(stream, &svalue))
- 80035e4: f107 0308 add.w r3, r7, #8
- 80035e8: 4619 mov r1, r3
- 80035ea: 6878 ldr r0, [r7, #4]
- 80035ec: f7ff fe7f bl 80032ee <pb_decode_svarint>
- 80035f0: 4603 mov r3, r0
- 80035f2: f083 0301 eor.w r3, r3, #1
- 80035f6: b2db uxtb r3, r3
- 80035f8: 2b00 cmp r3, #0
- 80035fa: d01e beq.n 800363a <pb_dec_varint+0x15a>
- return false;
- 80035fc: 2300 movs r3, #0
- 80035fe: e080 b.n 8003702 <pb_dec_varint+0x222>
- }
- else
- {
- if (!pb_decode_varint(stream, &value))
- 8003600: f107 0310 add.w r3, r7, #16
- 8003604: 4619 mov r1, r3
- 8003606: 6878 ldr r0, [r7, #4]
- 8003608: f7fe fdb0 bl 800216c <pb_decode_varint>
- 800360c: 4603 mov r3, r0
- 800360e: f083 0301 eor.w r3, r3, #1
- 8003612: b2db uxtb r3, r3
- 8003614: 2b00 cmp r3, #0
- 8003616: d001 beq.n 800361c <pb_dec_varint+0x13c>
- return false;
- 8003618: 2300 movs r3, #0
- 800361a: e072 b.n 8003702 <pb_dec_varint+0x222>
- * be cast as int32_t, instead of the int64_t that should be used when
- * encoding. Previous nanopb versions had a bug in encoding. In order to
- * not break decoding of such messages, we cast <=32 bit fields to
- * int32_t first to get the sign correct.
- */
- if (field->data_size == sizeof(pb_int64_t))
- 800361c: 683b ldr r3, [r7, #0]
- 800361e: 8a5b ldrh r3, [r3, #18]
- 8003620: 2b08 cmp r3, #8
- 8003622: d104 bne.n 800362e <pb_dec_varint+0x14e>
- svalue = (pb_int64_t)value;
- 8003624: e9d7 3404 ldrd r3, r4, [r7, #16]
- 8003628: e9c7 3402 strd r3, r4, [r7, #8]
- 800362c: e005 b.n 800363a <pb_dec_varint+0x15a>
- else
- svalue = (int32_t)value;
- 800362e: e9d7 3404 ldrd r3, r4, [r7, #16]
- 8003632: ea4f 74e3 mov.w r4, r3, asr #31
- 8003636: e9c7 3402 strd r3, r4, [r7, #8]
- }
-
- /* Cast to the proper field size, while checking for overflows */
- if (field->data_size == sizeof(pb_int64_t))
- 800363a: 683b ldr r3, [r7, #0]
- 800363c: 8a5b ldrh r3, [r3, #18]
- 800363e: 2b08 cmp r3, #8
- 8003640: d10a bne.n 8003658 <pb_dec_varint+0x178>
- clamped = *(pb_int64_t*)field->pData = svalue;
- 8003642: 683b ldr r3, [r7, #0]
- 8003644: 69da ldr r2, [r3, #28]
- 8003646: e9d7 3402 ldrd r3, r4, [r7, #8]
- 800364a: e9c2 3400 strd r3, r4, [r2]
- 800364e: e9d2 3400 ldrd r3, r4, [r2]
- 8003652: e9c7 3408 strd r3, r4, [r7, #32]
- 8003656: e03f b.n 80036d8 <pb_dec_varint+0x1f8>
- else if (field->data_size == sizeof(int32_t))
- 8003658: 683b ldr r3, [r7, #0]
- 800365a: 8a5b ldrh r3, [r3, #18]
- 800365c: 2b04 cmp r3, #4
- 800365e: d10b bne.n 8003678 <pb_dec_varint+0x198>
- clamped = *(int32_t*)field->pData = (int32_t)svalue;
- 8003660: e9d7 1202 ldrd r1, r2, [r7, #8]
- 8003664: 683b ldr r3, [r7, #0]
- 8003666: 69db ldr r3, [r3, #28]
- 8003668: 460a mov r2, r1
- 800366a: 601a str r2, [r3, #0]
- 800366c: 681b ldr r3, [r3, #0]
- 800366e: ea4f 74e3 mov.w r4, r3, asr #31
- 8003672: e9c7 3408 strd r3, r4, [r7, #32]
- 8003676: e02f b.n 80036d8 <pb_dec_varint+0x1f8>
- else if (field->data_size == sizeof(int_least16_t))
- 8003678: 683b ldr r3, [r7, #0]
- 800367a: 8a5b ldrh r3, [r3, #18]
- 800367c: 2b02 cmp r3, #2
- 800367e: d10d bne.n 800369c <pb_dec_varint+0x1bc>
- clamped = *(int_least16_t*)field->pData = (int_least16_t)svalue;
- 8003680: e9d7 1202 ldrd r1, r2, [r7, #8]
- 8003684: 683b ldr r3, [r7, #0]
- 8003686: 69db ldr r3, [r3, #28]
- 8003688: b20a sxth r2, r1
- 800368a: 801a strh r2, [r3, #0]
- 800368c: f9b3 3000 ldrsh.w r3, [r3]
- 8003690: b21b sxth r3, r3
- 8003692: ea4f 74e3 mov.w r4, r3, asr #31
- 8003696: e9c7 3408 strd r3, r4, [r7, #32]
- 800369a: e01d b.n 80036d8 <pb_dec_varint+0x1f8>
- else if (field->data_size == sizeof(int_least8_t))
- 800369c: 683b ldr r3, [r7, #0]
- 800369e: 8a5b ldrh r3, [r3, #18]
- 80036a0: 2b01 cmp r3, #1
- 80036a2: d10d bne.n 80036c0 <pb_dec_varint+0x1e0>
- clamped = *(int_least8_t*)field->pData = (int_least8_t)svalue;
- 80036a4: e9d7 1202 ldrd r1, r2, [r7, #8]
- 80036a8: 683b ldr r3, [r7, #0]
- 80036aa: 69db ldr r3, [r3, #28]
- 80036ac: b24a sxtb r2, r1
- 80036ae: 701a strb r2, [r3, #0]
- 80036b0: f993 3000 ldrsb.w r3, [r3]
- 80036b4: b25b sxtb r3, r3
- 80036b6: ea4f 74e3 mov.w r4, r3, asr #31
- 80036ba: e9c7 3408 strd r3, r4, [r7, #32]
- 80036be: e00b b.n 80036d8 <pb_dec_varint+0x1f8>
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
- 80036c0: 687b ldr r3, [r7, #4]
- 80036c2: 68db ldr r3, [r3, #12]
- 80036c4: 2b00 cmp r3, #0
- 80036c6: d002 beq.n 80036ce <pb_dec_varint+0x1ee>
- 80036c8: 687b ldr r3, [r7, #4]
- 80036ca: 68db ldr r3, [r3, #12]
- 80036cc: e000 b.n 80036d0 <pb_dec_varint+0x1f0>
- 80036ce: 4b0f ldr r3, [pc, #60] ; (800370c <pb_dec_varint+0x22c>)
- 80036d0: 687a ldr r2, [r7, #4]
- 80036d2: 60d3 str r3, [r2, #12]
- 80036d4: 2300 movs r3, #0
- 80036d6: e014 b.n 8003702 <pb_dec_varint+0x222>
-
- if (clamped != svalue)
- 80036d8: e9d7 3402 ldrd r3, r4, [r7, #8]
- 80036dc: e9d7 1208 ldrd r1, r2, [r7, #32]
- 80036e0: 42a2 cmp r2, r4
- 80036e2: bf08 it eq
- 80036e4: 4299 cmpeq r1, r3
- 80036e6: d00b beq.n 8003700 <pb_dec_varint+0x220>
- PB_RETURN_ERROR(stream, "integer too large");
- 80036e8: 687b ldr r3, [r7, #4]
- 80036ea: 68db ldr r3, [r3, #12]
- 80036ec: 2b00 cmp r3, #0
- 80036ee: d002 beq.n 80036f6 <pb_dec_varint+0x216>
- 80036f0: 687b ldr r3, [r7, #4]
- 80036f2: 68db ldr r3, [r3, #12]
- 80036f4: e000 b.n 80036f8 <pb_dec_varint+0x218>
- 80036f6: 4b06 ldr r3, [pc, #24] ; (8003710 <pb_dec_varint+0x230>)
- 80036f8: 687a ldr r2, [r7, #4]
- 80036fa: 60d3 str r3, [r2, #12]
- 80036fc: 2300 movs r3, #0
- 80036fe: e000 b.n 8003702 <pb_dec_varint+0x222>
-
- return true;
- 8003700: 2301 movs r3, #1
- }
-}
- 8003702: 4618 mov r0, r3
- 8003704: 3734 adds r7, #52 ; 0x34
- 8003706: 46bd mov sp, r7
- 8003708: bd90 pop {r4, r7, pc}
- 800370a: bf00 nop
- 800370c: 08008b08 .word 0x08008b08
- 8003710: 08008b1c .word 0x08008b1c
-
-08003714 <pb_dec_fixed>:
-
-static bool checkreturn pb_dec_fixed(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- 8003714: b580 push {r7, lr}
- 8003716: b082 sub sp, #8
- 8003718: af00 add r7, sp, #0
- 800371a: 6078 str r0, [r7, #4]
- 800371c: 6039 str r1, [r7, #0]
- {
- return pb_decode_double_as_float(stream, (float*)field->pData);
- }
-#endif
-
- if (field->data_size == sizeof(uint32_t))
- 800371e: 683b ldr r3, [r7, #0]
- 8003720: 8a5b ldrh r3, [r3, #18]
- 8003722: 2b04 cmp r3, #4
- 8003724: d107 bne.n 8003736 <pb_dec_fixed+0x22>
- {
- return pb_decode_fixed32(stream, field->pData);
- 8003726: 683b ldr r3, [r7, #0]
- 8003728: 69db ldr r3, [r3, #28]
- 800372a: 4619 mov r1, r3
- 800372c: 6878 ldr r0, [r7, #4]
- 800372e: f7ff fe19 bl 8003364 <pb_decode_fixed32>
- 8003732: 4603 mov r3, r0
- 8003734: e016 b.n 8003764 <pb_dec_fixed+0x50>
- }
-#ifndef PB_WITHOUT_64BIT
- else if (field->data_size == sizeof(uint64_t))
- 8003736: 683b ldr r3, [r7, #0]
- 8003738: 8a5b ldrh r3, [r3, #18]
- 800373a: 2b08 cmp r3, #8
- 800373c: d107 bne.n 800374e <pb_dec_fixed+0x3a>
- {
- return pb_decode_fixed64(stream, field->pData);
- 800373e: 683b ldr r3, [r7, #0]
- 8003740: 69db ldr r3, [r3, #28]
- 8003742: 4619 mov r1, r3
- 8003744: 6878 ldr r0, [r7, #4]
- 8003746: f7ff fe33 bl 80033b0 <pb_decode_fixed64>
- 800374a: 4603 mov r3, r0
- 800374c: e00a b.n 8003764 <pb_dec_fixed+0x50>
- }
-#endif
- else
- {
- PB_RETURN_ERROR(stream, "invalid data_size");
- 800374e: 687b ldr r3, [r7, #4]
- 8003750: 68db ldr r3, [r3, #12]
- 8003752: 2b00 cmp r3, #0
- 8003754: d002 beq.n 800375c <pb_dec_fixed+0x48>
- 8003756: 687b ldr r3, [r7, #4]
- 8003758: 68db ldr r3, [r3, #12]
- 800375a: e000 b.n 800375e <pb_dec_fixed+0x4a>
- 800375c: 4b03 ldr r3, [pc, #12] ; (800376c <pb_dec_fixed+0x58>)
- 800375e: 687a ldr r2, [r7, #4]
- 8003760: 60d3 str r3, [r2, #12]
- 8003762: 2300 movs r3, #0
- }
-}
- 8003764: 4618 mov r0, r3
- 8003766: 3708 adds r7, #8
- 8003768: 46bd mov sp, r7
- 800376a: bd80 pop {r7, pc}
- 800376c: 08008b08 .word 0x08008b08
-
-08003770 <pb_dec_bytes>:
-
-static bool checkreturn pb_dec_bytes(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- 8003770: b580 push {r7, lr}
- 8003772: b086 sub sp, #24
- 8003774: af00 add r7, sp, #0
- 8003776: 6078 str r0, [r7, #4]
- 8003778: 6039 str r1, [r7, #0]
- uint32_t size;
- size_t alloc_size;
- pb_bytes_array_t *dest;
-
- if (!pb_decode_varint32(stream, &size))
- 800377a: f107 030c add.w r3, r7, #12
- 800377e: 4619 mov r1, r3
- 8003780: 6878 ldr r0, [r7, #4]
- 8003782: f7fe fce3 bl 800214c <pb_decode_varint32>
- 8003786: 4603 mov r3, r0
- 8003788: f083 0301 eor.w r3, r3, #1
- 800378c: b2db uxtb r3, r3
- 800378e: 2b00 cmp r3, #0
- 8003790: d001 beq.n 8003796 <pb_dec_bytes+0x26>
- return false;
- 8003792: 2300 movs r3, #0
- 8003794: e055 b.n 8003842 <pb_dec_bytes+0xd2>
-
- if (size > PB_SIZE_MAX)
- 8003796: 68fb ldr r3, [r7, #12]
- 8003798: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
- 800379c: d30b bcc.n 80037b6 <pb_dec_bytes+0x46>
- PB_RETURN_ERROR(stream, "bytes overflow");
- 800379e: 687b ldr r3, [r7, #4]
- 80037a0: 68db ldr r3, [r3, #12]
- 80037a2: 2b00 cmp r3, #0
- 80037a4: d002 beq.n 80037ac <pb_dec_bytes+0x3c>
- 80037a6: 687b ldr r3, [r7, #4]
- 80037a8: 68db ldr r3, [r3, #12]
- 80037aa: e000 b.n 80037ae <pb_dec_bytes+0x3e>
- 80037ac: 4b27 ldr r3, [pc, #156] ; (800384c <pb_dec_bytes+0xdc>)
- 80037ae: 687a ldr r2, [r7, #4]
- 80037b0: 60d3 str r3, [r2, #12]
- 80037b2: 2300 movs r3, #0
- 80037b4: e045 b.n 8003842 <pb_dec_bytes+0xd2>
-
- alloc_size = PB_BYTES_ARRAY_T_ALLOCSIZE(size);
- 80037b6: 68fb ldr r3, [r7, #12]
- 80037b8: 3302 adds r3, #2
- 80037ba: 617b str r3, [r7, #20]
- if (size > alloc_size)
- 80037bc: 68fb ldr r3, [r7, #12]
- 80037be: 697a ldr r2, [r7, #20]
- 80037c0: 429a cmp r2, r3
- 80037c2: d20b bcs.n 80037dc <pb_dec_bytes+0x6c>
- PB_RETURN_ERROR(stream, "size too large");
- 80037c4: 687b ldr r3, [r7, #4]
- 80037c6: 68db ldr r3, [r3, #12]
- 80037c8: 2b00 cmp r3, #0
- 80037ca: d002 beq.n 80037d2 <pb_dec_bytes+0x62>
- 80037cc: 687b ldr r3, [r7, #4]
- 80037ce: 68db ldr r3, [r3, #12]
- 80037d0: e000 b.n 80037d4 <pb_dec_bytes+0x64>
- 80037d2: 4b1f ldr r3, [pc, #124] ; (8003850 <pb_dec_bytes+0xe0>)
- 80037d4: 687a ldr r2, [r7, #4]
- 80037d6: 60d3 str r3, [r2, #12]
- 80037d8: 2300 movs r3, #0
- 80037da: e032 b.n 8003842 <pb_dec_bytes+0xd2>
-
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
- 80037dc: 683b ldr r3, [r7, #0]
- 80037de: 7d9b ldrb r3, [r3, #22]
- 80037e0: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 80037e4: 2b80 cmp r3, #128 ; 0x80
- 80037e6: d10b bne.n 8003800 <pb_dec_bytes+0x90>
- {
-#ifndef PB_ENABLE_MALLOC
- PB_RETURN_ERROR(stream, "no malloc support");
- 80037e8: 687b ldr r3, [r7, #4]
- 80037ea: 68db ldr r3, [r3, #12]
- 80037ec: 2b00 cmp r3, #0
- 80037ee: d002 beq.n 80037f6 <pb_dec_bytes+0x86>
- 80037f0: 687b ldr r3, [r7, #4]
- 80037f2: 68db ldr r3, [r3, #12]
- 80037f4: e000 b.n 80037f8 <pb_dec_bytes+0x88>
- 80037f6: 4b17 ldr r3, [pc, #92] ; (8003854 <pb_dec_bytes+0xe4>)
- 80037f8: 687a ldr r2, [r7, #4]
- 80037fa: 60d3 str r3, [r2, #12]
- 80037fc: 2300 movs r3, #0
- 80037fe: e020 b.n 8003842 <pb_dec_bytes+0xd2>
- dest = *(pb_bytes_array_t**)field->pData;
-#endif
- }
- else
- {
- if (alloc_size > field->data_size)
- 8003800: 683b ldr r3, [r7, #0]
- 8003802: 8a5b ldrh r3, [r3, #18]
- 8003804: 461a mov r2, r3
- 8003806: 697b ldr r3, [r7, #20]
- 8003808: 4293 cmp r3, r2
- 800380a: d90b bls.n 8003824 <pb_dec_bytes+0xb4>
- PB_RETURN_ERROR(stream, "bytes overflow");
- 800380c: 687b ldr r3, [r7, #4]
- 800380e: 68db ldr r3, [r3, #12]
- 8003810: 2b00 cmp r3, #0
- 8003812: d002 beq.n 800381a <pb_dec_bytes+0xaa>
- 8003814: 687b ldr r3, [r7, #4]
- 8003816: 68db ldr r3, [r3, #12]
- 8003818: e000 b.n 800381c <pb_dec_bytes+0xac>
- 800381a: 4b0c ldr r3, [pc, #48] ; (800384c <pb_dec_bytes+0xdc>)
- 800381c: 687a ldr r2, [r7, #4]
- 800381e: 60d3 str r3, [r2, #12]
- 8003820: 2300 movs r3, #0
- 8003822: e00e b.n 8003842 <pb_dec_bytes+0xd2>
- dest = (pb_bytes_array_t*)field->pData;
- 8003824: 683b ldr r3, [r7, #0]
- 8003826: 69db ldr r3, [r3, #28]
- 8003828: 613b str r3, [r7, #16]
- }
-
- dest->size = (pb_size_t)size;
- 800382a: 68fb ldr r3, [r7, #12]
- 800382c: b29a uxth r2, r3
- 800382e: 693b ldr r3, [r7, #16]
- 8003830: 801a strh r2, [r3, #0]
- return pb_read(stream, dest->bytes, (size_t)size);
- 8003832: 693b ldr r3, [r7, #16]
- 8003834: 3302 adds r3, #2
- 8003836: 68fa ldr r2, [r7, #12]
- 8003838: 4619 mov r1, r3
- 800383a: 6878 ldr r0, [r7, #4]
- 800383c: f7fe fb36 bl 8001eac <pb_read>
- 8003840: 4603 mov r3, r0
-}
- 8003842: 4618 mov r0, r3
- 8003844: 3718 adds r7, #24
- 8003846: 46bd mov sp, r7
- 8003848: bd80 pop {r7, pc}
- 800384a: bf00 nop
- 800384c: 08008b30 .word 0x08008b30
- 8003850: 08008b40 .word 0x08008b40
- 8003854: 08008a70 .word 0x08008a70
-
-08003858 <pb_dec_string>:
-
-static bool checkreturn pb_dec_string(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- 8003858: b580 push {r7, lr}
- 800385a: b086 sub sp, #24
- 800385c: af00 add r7, sp, #0
- 800385e: 6078 str r0, [r7, #4]
- 8003860: 6039 str r1, [r7, #0]
- uint32_t size;
- size_t alloc_size;
- pb_byte_t *dest = (pb_byte_t*)field->pData;
- 8003862: 683b ldr r3, [r7, #0]
- 8003864: 69db ldr r3, [r3, #28]
- 8003866: 617b str r3, [r7, #20]
-
- if (!pb_decode_varint32(stream, &size))
- 8003868: f107 030c add.w r3, r7, #12
- 800386c: 4619 mov r1, r3
- 800386e: 6878 ldr r0, [r7, #4]
- 8003870: f7fe fc6c bl 800214c <pb_decode_varint32>
- 8003874: 4603 mov r3, r0
- 8003876: f083 0301 eor.w r3, r3, #1
- 800387a: b2db uxtb r3, r3
- 800387c: 2b00 cmp r3, #0
- 800387e: d001 beq.n 8003884 <pb_dec_string+0x2c>
- return false;
- 8003880: 2300 movs r3, #0
- 8003882: e05a b.n 800393a <pb_dec_string+0xe2>
-
- if (size == (uint32_t)-1)
- 8003884: 68fb ldr r3, [r7, #12]
- 8003886: f1b3 3fff cmp.w r3, #4294967295 ; 0xffffffff
- 800388a: d10b bne.n 80038a4 <pb_dec_string+0x4c>
- PB_RETURN_ERROR(stream, "size too large");
- 800388c: 687b ldr r3, [r7, #4]
- 800388e: 68db ldr r3, [r3, #12]
- 8003890: 2b00 cmp r3, #0
- 8003892: d002 beq.n 800389a <pb_dec_string+0x42>
- 8003894: 687b ldr r3, [r7, #4]
- 8003896: 68db ldr r3, [r3, #12]
- 8003898: e000 b.n 800389c <pb_dec_string+0x44>
- 800389a: 4b2a ldr r3, [pc, #168] ; (8003944 <pb_dec_string+0xec>)
- 800389c: 687a ldr r2, [r7, #4]
- 800389e: 60d3 str r3, [r2, #12]
- 80038a0: 2300 movs r3, #0
- 80038a2: e04a b.n 800393a <pb_dec_string+0xe2>
-
- /* Space for null terminator */
- alloc_size = (size_t)(size + 1);
- 80038a4: 68fb ldr r3, [r7, #12]
- 80038a6: 3301 adds r3, #1
- 80038a8: 613b str r3, [r7, #16]
-
- if (alloc_size < size)
- 80038aa: 68fb ldr r3, [r7, #12]
- 80038ac: 693a ldr r2, [r7, #16]
- 80038ae: 429a cmp r2, r3
- 80038b0: d20b bcs.n 80038ca <pb_dec_string+0x72>
- PB_RETURN_ERROR(stream, "size too large");
- 80038b2: 687b ldr r3, [r7, #4]
- 80038b4: 68db ldr r3, [r3, #12]
- 80038b6: 2b00 cmp r3, #0
- 80038b8: d002 beq.n 80038c0 <pb_dec_string+0x68>
- 80038ba: 687b ldr r3, [r7, #4]
- 80038bc: 68db ldr r3, [r3, #12]
- 80038be: e000 b.n 80038c2 <pb_dec_string+0x6a>
- 80038c0: 4b20 ldr r3, [pc, #128] ; (8003944 <pb_dec_string+0xec>)
- 80038c2: 687a ldr r2, [r7, #4]
- 80038c4: 60d3 str r3, [r2, #12]
- 80038c6: 2300 movs r3, #0
- 80038c8: e037 b.n 800393a <pb_dec_string+0xe2>
-
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
- 80038ca: 683b ldr r3, [r7, #0]
- 80038cc: 7d9b ldrb r3, [r3, #22]
- 80038ce: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 80038d2: 2b80 cmp r3, #128 ; 0x80
- 80038d4: d10b bne.n 80038ee <pb_dec_string+0x96>
- {
-#ifndef PB_ENABLE_MALLOC
- PB_RETURN_ERROR(stream, "no malloc support");
- 80038d6: 687b ldr r3, [r7, #4]
- 80038d8: 68db ldr r3, [r3, #12]
- 80038da: 2b00 cmp r3, #0
- 80038dc: d002 beq.n 80038e4 <pb_dec_string+0x8c>
- 80038de: 687b ldr r3, [r7, #4]
- 80038e0: 68db ldr r3, [r3, #12]
- 80038e2: e000 b.n 80038e6 <pb_dec_string+0x8e>
- 80038e4: 4b18 ldr r3, [pc, #96] ; (8003948 <pb_dec_string+0xf0>)
- 80038e6: 687a ldr r2, [r7, #4]
- 80038e8: 60d3 str r3, [r2, #12]
- 80038ea: 2300 movs r3, #0
- 80038ec: e025 b.n 800393a <pb_dec_string+0xe2>
- dest = *(pb_byte_t**)field->pData;
-#endif
- }
- else
- {
- if (alloc_size > field->data_size)
- 80038ee: 683b ldr r3, [r7, #0]
- 80038f0: 8a5b ldrh r3, [r3, #18]
- 80038f2: 461a mov r2, r3
- 80038f4: 693b ldr r3, [r7, #16]
- 80038f6: 4293 cmp r3, r2
- 80038f8: d90b bls.n 8003912 <pb_dec_string+0xba>
- PB_RETURN_ERROR(stream, "string overflow");
- 80038fa: 687b ldr r3, [r7, #4]
- 80038fc: 68db ldr r3, [r3, #12]
- 80038fe: 2b00 cmp r3, #0
- 8003900: d002 beq.n 8003908 <pb_dec_string+0xb0>
- 8003902: 687b ldr r3, [r7, #4]
- 8003904: 68db ldr r3, [r3, #12]
- 8003906: e000 b.n 800390a <pb_dec_string+0xb2>
- 8003908: 4b10 ldr r3, [pc, #64] ; (800394c <pb_dec_string+0xf4>)
- 800390a: 687a ldr r2, [r7, #4]
- 800390c: 60d3 str r3, [r2, #12]
- 800390e: 2300 movs r3, #0
- 8003910: e013 b.n 800393a <pb_dec_string+0xe2>
- }
-
- dest[size] = 0;
- 8003912: 68fb ldr r3, [r7, #12]
- 8003914: 697a ldr r2, [r7, #20]
- 8003916: 4413 add r3, r2
- 8003918: 2200 movs r2, #0
- 800391a: 701a strb r2, [r3, #0]
-
- if (!pb_read(stream, dest, (size_t)size))
- 800391c: 68fb ldr r3, [r7, #12]
- 800391e: 461a mov r2, r3
- 8003920: 6979 ldr r1, [r7, #20]
- 8003922: 6878 ldr r0, [r7, #4]
- 8003924: f7fe fac2 bl 8001eac <pb_read>
- 8003928: 4603 mov r3, r0
- 800392a: f083 0301 eor.w r3, r3, #1
- 800392e: b2db uxtb r3, r3
- 8003930: 2b00 cmp r3, #0
- 8003932: d001 beq.n 8003938 <pb_dec_string+0xe0>
- return false;
- 8003934: 2300 movs r3, #0
- 8003936: e000 b.n 800393a <pb_dec_string+0xe2>
-#ifdef PB_VALIDATE_UTF8
- if (!pb_validate_utf8((const char*)dest))
- PB_RETURN_ERROR(stream, "invalid utf8");
-#endif
-
- return true;
- 8003938: 2301 movs r3, #1
-}
- 800393a: 4618 mov r0, r3
- 800393c: 3718 adds r7, #24
- 800393e: 46bd mov sp, r7
- 8003940: bd80 pop {r7, pc}
- 8003942: bf00 nop
- 8003944: 08008b40 .word 0x08008b40
- 8003948: 08008a70 .word 0x08008a70
- 800394c: 08008b50 .word 0x08008b50
-
-08003950 <pb_dec_submessage>:
-
-static bool checkreturn pb_dec_submessage(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- 8003950: b580 push {r7, lr}
- 8003952: b092 sub sp, #72 ; 0x48
- 8003954: af00 add r7, sp, #0
- 8003956: 6078 str r0, [r7, #4]
- 8003958: 6039 str r1, [r7, #0]
- bool status = true;
- 800395a: 2301 movs r3, #1
- 800395c: f887 3047 strb.w r3, [r7, #71] ; 0x47
- pb_istream_t substream;
-
- if (!pb_make_string_substream(stream, &substream))
- 8003960: f107 0330 add.w r3, r7, #48 ; 0x30
- 8003964: 4619 mov r1, r3
- 8003966: 6878 ldr r0, [r7, #4]
- 8003968: f7fe fd74 bl 8002454 <pb_make_string_substream>
- 800396c: 4603 mov r3, r0
- 800396e: f083 0301 eor.w r3, r3, #1
- 8003972: b2db uxtb r3, r3
- 8003974: 2b00 cmp r3, #0
- 8003976: d001 beq.n 800397c <pb_dec_submessage+0x2c>
- return false;
- 8003978: 2300 movs r3, #0
- 800397a: e07b b.n 8003a74 <pb_dec_submessage+0x124>
-
- if (field->submsg_desc == NULL)
- 800397c: 683b ldr r3, [r7, #0]
- 800397e: 6a5b ldr r3, [r3, #36] ; 0x24
- 8003980: 2b00 cmp r3, #0
- 8003982: d10b bne.n 800399c <pb_dec_submessage+0x4c>
- PB_RETURN_ERROR(stream, "invalid field descriptor");
- 8003984: 687b ldr r3, [r7, #4]
- 8003986: 68db ldr r3, [r3, #12]
- 8003988: 2b00 cmp r3, #0
- 800398a: d002 beq.n 8003992 <pb_dec_submessage+0x42>
- 800398c: 687b ldr r3, [r7, #4]
- 800398e: 68db ldr r3, [r3, #12]
- 8003990: e000 b.n 8003994 <pb_dec_submessage+0x44>
- 8003992: 4b3a ldr r3, [pc, #232] ; (8003a7c <pb_dec_submessage+0x12c>)
- 8003994: 687a ldr r2, [r7, #4]
- 8003996: 60d3 str r3, [r2, #12]
- 8003998: 2300 movs r3, #0
- 800399a: e06b b.n 8003a74 <pb_dec_submessage+0x124>
-
- /* New array entries need to be initialized, while required and optional
- * submessages have already been initialized in the top-level pb_decode. */
- if (PB_HTYPE(field->type) == PB_HTYPE_REPEATED ||
- 800399c: 683b ldr r3, [r7, #0]
- 800399e: 7d9b ldrb r3, [r3, #22]
- 80039a0: f003 0330 and.w r3, r3, #48 ; 0x30
- 80039a4: 2b20 cmp r3, #32
- 80039a6: d005 beq.n 80039b4 <pb_dec_submessage+0x64>
- PB_HTYPE(field->type) == PB_HTYPE_ONEOF)
- 80039a8: 683b ldr r3, [r7, #0]
- 80039aa: 7d9b ldrb r3, [r3, #22]
- 80039ac: f003 0330 and.w r3, r3, #48 ; 0x30
- if (PB_HTYPE(field->type) == PB_HTYPE_REPEATED ||
- 80039b0: 2b30 cmp r3, #48 ; 0x30
- 80039b2: d122 bne.n 80039fa <pb_dec_submessage+0xaa>
- {
- pb_field_iter_t submsg_iter;
- if (pb_field_iter_begin(&submsg_iter, field->submsg_desc, field->pData))
- 80039b4: 683b ldr r3, [r7, #0]
- 80039b6: 6a59 ldr r1, [r3, #36] ; 0x24
- 80039b8: 683b ldr r3, [r7, #0]
- 80039ba: 69da ldr r2, [r3, #28]
- 80039bc: f107 0308 add.w r3, r7, #8
- 80039c0: 4618 mov r0, r3
- 80039c2: f7fe f972 bl 8001caa <pb_field_iter_begin>
- 80039c6: 4603 mov r3, r0
- 80039c8: 2b00 cmp r3, #0
- 80039ca: d016 beq.n 80039fa <pb_dec_submessage+0xaa>
- {
- if (!pb_message_set_to_defaults(&submsg_iter))
- 80039cc: f107 0308 add.w r3, r7, #8
- 80039d0: 4618 mov r0, r3
- 80039d2: f7ff f9c4 bl 8002d5e <pb_message_set_to_defaults>
- 80039d6: 4603 mov r3, r0
- 80039d8: f083 0301 eor.w r3, r3, #1
- 80039dc: b2db uxtb r3, r3
- 80039de: 2b00 cmp r3, #0
- 80039e0: d00b beq.n 80039fa <pb_dec_submessage+0xaa>
- PB_RETURN_ERROR(stream, "failed to set defaults");
- 80039e2: 687b ldr r3, [r7, #4]
- 80039e4: 68db ldr r3, [r3, #12]
- 80039e6: 2b00 cmp r3, #0
- 80039e8: d002 beq.n 80039f0 <pb_dec_submessage+0xa0>
- 80039ea: 687b ldr r3, [r7, #4]
- 80039ec: 68db ldr r3, [r3, #12]
- 80039ee: e000 b.n 80039f2 <pb_dec_submessage+0xa2>
- 80039f0: 4b23 ldr r3, [pc, #140] ; (8003a80 <pb_dec_submessage+0x130>)
- 80039f2: 687a ldr r2, [r7, #4]
- 80039f4: 60d3 str r3, [r2, #12]
- 80039f6: 2300 movs r3, #0
- 80039f8: e03c b.n 8003a74 <pb_dec_submessage+0x124>
- }
-
- /* Submessages can have a separate message-level callback that is called
- * before decoding the message. Typically it is used to set callback fields
- * inside oneofs. */
- if (PB_LTYPE(field->type) == PB_LTYPE_SUBMSG_W_CB && field->pSize != NULL)
- 80039fa: 683b ldr r3, [r7, #0]
- 80039fc: 7d9b ldrb r3, [r3, #22]
- 80039fe: f003 030f and.w r3, r3, #15
- 8003a02: 2b09 cmp r3, #9
- 8003a04: d116 bne.n 8003a34 <pb_dec_submessage+0xe4>
- 8003a06: 683b ldr r3, [r7, #0]
- 8003a08: 6a1b ldr r3, [r3, #32]
- 8003a0a: 2b00 cmp r3, #0
- 8003a0c: d012 beq.n 8003a34 <pb_dec_submessage+0xe4>
- {
- /* Message callback is stored right before pSize. */
- pb_callback_t *callback = (pb_callback_t*)field->pSize - 1;
- 8003a0e: 683b ldr r3, [r7, #0]
- 8003a10: 6a1b ldr r3, [r3, #32]
- 8003a12: 3b08 subs r3, #8
- 8003a14: 643b str r3, [r7, #64] ; 0x40
- if (callback->funcs.decode)
- 8003a16: 6c3b ldr r3, [r7, #64] ; 0x40
- 8003a18: 681b ldr r3, [r3, #0]
- 8003a1a: 2b00 cmp r3, #0
- 8003a1c: d00a beq.n 8003a34 <pb_dec_submessage+0xe4>
- {
- status = callback->funcs.decode(&substream, field, &callback->arg);
- 8003a1e: 6c3b ldr r3, [r7, #64] ; 0x40
- 8003a20: 681b ldr r3, [r3, #0]
- 8003a22: 6c3a ldr r2, [r7, #64] ; 0x40
- 8003a24: 3204 adds r2, #4
- 8003a26: f107 0030 add.w r0, r7, #48 ; 0x30
- 8003a2a: 6839 ldr r1, [r7, #0]
- 8003a2c: 4798 blx r3
- 8003a2e: 4603 mov r3, r0
- 8003a30: f887 3047 strb.w r3, [r7, #71] ; 0x47
- }
- }
-
- /* Now decode the submessage contents */
- if (status)
- 8003a34: f897 3047 ldrb.w r3, [r7, #71] ; 0x47
- 8003a38: 2b00 cmp r3, #0
- 8003a3a: d00b beq.n 8003a54 <pb_dec_submessage+0x104>
- {
- status = pb_decode_noinit(&substream, field->submsg_desc, field->pData);
- 8003a3c: 683b ldr r3, [r7, #0]
- 8003a3e: 6a59 ldr r1, [r3, #36] ; 0x24
- 8003a40: 683b ldr r3, [r7, #0]
- 8003a42: 69da ldr r2, [r3, #28]
- 8003a44: f107 0030 add.w r0, r7, #48 ; 0x30
- 8003a48: 2301 movs r3, #1
- 8003a4a: f7ff fbb5 bl 80031b8 <pb_decode_ex>
- 8003a4e: 4603 mov r3, r0
- 8003a50: f887 3047 strb.w r3, [r7, #71] ; 0x47
- }
-
- if (!pb_close_string_substream(stream, &substream))
- 8003a54: f107 0330 add.w r3, r7, #48 ; 0x30
- 8003a58: 4619 mov r1, r3
- 8003a5a: 6878 ldr r0, [r7, #4]
- 8003a5c: f7fe fd34 bl 80024c8 <pb_close_string_substream>
- 8003a60: 4603 mov r3, r0
- 8003a62: f083 0301 eor.w r3, r3, #1
- 8003a66: b2db uxtb r3, r3
- 8003a68: 2b00 cmp r3, #0
- 8003a6a: d001 beq.n 8003a70 <pb_dec_submessage+0x120>
- return false;
- 8003a6c: 2300 movs r3, #0
- 8003a6e: e001 b.n 8003a74 <pb_dec_submessage+0x124>
-
- return status;
- 8003a70: f897 3047 ldrb.w r3, [r7, #71] ; 0x47
-}
- 8003a74: 4618 mov r0, r3
- 8003a76: 3748 adds r7, #72 ; 0x48
- 8003a78: 46bd mov sp, r7
- 8003a7a: bd80 pop {r7, pc}
- 8003a7c: 08008b60 .word 0x08008b60
- 8003a80: 08008af0 .word 0x08008af0
-
-08003a84 <pb_dec_fixed_length_bytes>:
-
-static bool checkreturn pb_dec_fixed_length_bytes(pb_istream_t *stream, const pb_field_iter_t *field)
-{
- 8003a84: b580 push {r7, lr}
- 8003a86: b084 sub sp, #16
- 8003a88: af00 add r7, sp, #0
- 8003a8a: 6078 str r0, [r7, #4]
- 8003a8c: 6039 str r1, [r7, #0]
- uint32_t size;
-
- if (!pb_decode_varint32(stream, &size))
- 8003a8e: f107 030c add.w r3, r7, #12
- 8003a92: 4619 mov r1, r3
- 8003a94: 6878 ldr r0, [r7, #4]
- 8003a96: f7fe fb59 bl 800214c <pb_decode_varint32>
- 8003a9a: 4603 mov r3, r0
- 8003a9c: f083 0301 eor.w r3, r3, #1
- 8003aa0: b2db uxtb r3, r3
- 8003aa2: 2b00 cmp r3, #0
- 8003aa4: d001 beq.n 8003aaa <pb_dec_fixed_length_bytes+0x26>
- return false;
- 8003aa6: 2300 movs r3, #0
- 8003aa8: e037 b.n 8003b1a <pb_dec_fixed_length_bytes+0x96>
-
- if (size > PB_SIZE_MAX)
- 8003aaa: 68fb ldr r3, [r7, #12]
- 8003aac: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
- 8003ab0: d30b bcc.n 8003aca <pb_dec_fixed_length_bytes+0x46>
- PB_RETURN_ERROR(stream, "bytes overflow");
- 8003ab2: 687b ldr r3, [r7, #4]
- 8003ab4: 68db ldr r3, [r3, #12]
- 8003ab6: 2b00 cmp r3, #0
- 8003ab8: d002 beq.n 8003ac0 <pb_dec_fixed_length_bytes+0x3c>
- 8003aba: 687b ldr r3, [r7, #4]
- 8003abc: 68db ldr r3, [r3, #12]
- 8003abe: e000 b.n 8003ac2 <pb_dec_fixed_length_bytes+0x3e>
- 8003ac0: 4b18 ldr r3, [pc, #96] ; (8003b24 <pb_dec_fixed_length_bytes+0xa0>)
- 8003ac2: 687a ldr r2, [r7, #4]
- 8003ac4: 60d3 str r3, [r2, #12]
- 8003ac6: 2300 movs r3, #0
- 8003ac8: e027 b.n 8003b1a <pb_dec_fixed_length_bytes+0x96>
-
- if (size == 0)
- 8003aca: 68fb ldr r3, [r7, #12]
- 8003acc: 2b00 cmp r3, #0
- 8003ace: d109 bne.n 8003ae4 <pb_dec_fixed_length_bytes+0x60>
- {
- /* As a special case, treat empty bytes string as all zeros for fixed_length_bytes. */
- memset(field->pData, 0, (size_t)field->data_size);
- 8003ad0: 683b ldr r3, [r7, #0]
- 8003ad2: 69d8 ldr r0, [r3, #28]
- 8003ad4: 683b ldr r3, [r7, #0]
- 8003ad6: 8a5b ldrh r3, [r3, #18]
- 8003ad8: 461a mov r2, r3
- 8003ada: 2100 movs r1, #0
- 8003adc: f004 ff6e bl 80089bc <memset>
- return true;
- 8003ae0: 2301 movs r3, #1
- 8003ae2: e01a b.n 8003b1a <pb_dec_fixed_length_bytes+0x96>
- }
-
- if (size != field->data_size)
- 8003ae4: 683b ldr r3, [r7, #0]
- 8003ae6: 8a5b ldrh r3, [r3, #18]
- 8003ae8: 461a mov r2, r3
- 8003aea: 68fb ldr r3, [r7, #12]
- 8003aec: 429a cmp r2, r3
- 8003aee: d00b beq.n 8003b08 <pb_dec_fixed_length_bytes+0x84>
- PB_RETURN_ERROR(stream, "incorrect fixed length bytes size");
- 8003af0: 687b ldr r3, [r7, #4]
- 8003af2: 68db ldr r3, [r3, #12]
- 8003af4: 2b00 cmp r3, #0
- 8003af6: d002 beq.n 8003afe <pb_dec_fixed_length_bytes+0x7a>
- 8003af8: 687b ldr r3, [r7, #4]
- 8003afa: 68db ldr r3, [r3, #12]
- 8003afc: e000 b.n 8003b00 <pb_dec_fixed_length_bytes+0x7c>
- 8003afe: 4b0a ldr r3, [pc, #40] ; (8003b28 <pb_dec_fixed_length_bytes+0xa4>)
- 8003b00: 687a ldr r2, [r7, #4]
- 8003b02: 60d3 str r3, [r2, #12]
- 8003b04: 2300 movs r3, #0
- 8003b06: e008 b.n 8003b1a <pb_dec_fixed_length_bytes+0x96>
-
- return pb_read(stream, (pb_byte_t*)field->pData, (size_t)field->data_size);
- 8003b08: 683b ldr r3, [r7, #0]
- 8003b0a: 69d9 ldr r1, [r3, #28]
- 8003b0c: 683b ldr r3, [r7, #0]
- 8003b0e: 8a5b ldrh r3, [r3, #18]
- 8003b10: 461a mov r2, r3
- 8003b12: 6878 ldr r0, [r7, #4]
- 8003b14: f7fe f9ca bl 8001eac <pb_read>
- 8003b18: 4603 mov r3, r0
-}
- 8003b1a: 4618 mov r0, r3
- 8003b1c: 3710 adds r7, #16
- 8003b1e: 46bd mov sp, r7
- 8003b20: bd80 pop {r7, pc}
- 8003b22: bf00 nop
- 8003b24: 08008b30 .word 0x08008b30
- 8003b28: 08008b7c .word 0x08008b7c
-
-08003b2c <buf_write>:
-/*******************************
- * pb_ostream_t implementation *
- *******************************/
-
-static bool checkreturn buf_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count)
-{
- 8003b2c: b480 push {r7}
- 8003b2e: b087 sub sp, #28
- 8003b30: af00 add r7, sp, #0
- 8003b32: 60f8 str r0, [r7, #12]
- 8003b34: 60b9 str r1, [r7, #8]
- 8003b36: 607a str r2, [r7, #4]
- size_t i;
- pb_byte_t *dest = (pb_byte_t*)stream->state;
- 8003b38: 68fb ldr r3, [r7, #12]
- 8003b3a: 685b ldr r3, [r3, #4]
- 8003b3c: 613b str r3, [r7, #16]
- stream->state = dest + count;
- 8003b3e: 693a ldr r2, [r7, #16]
- 8003b40: 687b ldr r3, [r7, #4]
- 8003b42: 441a add r2, r3
- 8003b44: 68fb ldr r3, [r7, #12]
- 8003b46: 605a str r2, [r3, #4]
-
- for (i = 0; i < count; i++)
- 8003b48: 2300 movs r3, #0
- 8003b4a: 617b str r3, [r7, #20]
- 8003b4c: e00a b.n 8003b64 <buf_write+0x38>
- dest[i] = buf[i];
- 8003b4e: 68ba ldr r2, [r7, #8]
- 8003b50: 697b ldr r3, [r7, #20]
- 8003b52: 441a add r2, r3
- 8003b54: 6939 ldr r1, [r7, #16]
- 8003b56: 697b ldr r3, [r7, #20]
- 8003b58: 440b add r3, r1
- 8003b5a: 7812 ldrb r2, [r2, #0]
- 8003b5c: 701a strb r2, [r3, #0]
- for (i = 0; i < count; i++)
- 8003b5e: 697b ldr r3, [r7, #20]
- 8003b60: 3301 adds r3, #1
- 8003b62: 617b str r3, [r7, #20]
- 8003b64: 697a ldr r2, [r7, #20]
- 8003b66: 687b ldr r3, [r7, #4]
- 8003b68: 429a cmp r2, r3
- 8003b6a: d3f0 bcc.n 8003b4e <buf_write+0x22>
-
- return true;
- 8003b6c: 2301 movs r3, #1
-}
- 8003b6e: 4618 mov r0, r3
- 8003b70: 371c adds r7, #28
- 8003b72: 46bd mov sp, r7
- 8003b74: f85d 7b04 ldr.w r7, [sp], #4
- 8003b78: 4770 bx lr
- ...
-
-08003b7c <pb_ostream_from_buffer>:
-
-pb_ostream_t pb_ostream_from_buffer(pb_byte_t *buf, size_t bufsize)
-{
- 8003b7c: b4b0 push {r4, r5, r7}
- 8003b7e: b08b sub sp, #44 ; 0x2c
- 8003b80: af00 add r7, sp, #0
- 8003b82: 60f8 str r0, [r7, #12]
- 8003b84: 60b9 str r1, [r7, #8]
- 8003b86: 607a str r2, [r7, #4]
- pb_ostream_t stream;
-#ifdef PB_BUFFER_ONLY
- stream.callback = (void*)1; /* Just a marker value */
-#else
- stream.callback = &buf_write;
- 8003b88: 4b0b ldr r3, [pc, #44] ; (8003bb8 <pb_ostream_from_buffer+0x3c>)
- 8003b8a: 617b str r3, [r7, #20]
-#endif
- stream.state = buf;
- 8003b8c: 68bb ldr r3, [r7, #8]
- 8003b8e: 61bb str r3, [r7, #24]
- stream.max_size = bufsize;
- 8003b90: 687b ldr r3, [r7, #4]
- 8003b92: 61fb str r3, [r7, #28]
- stream.bytes_written = 0;
- 8003b94: 2300 movs r3, #0
- 8003b96: 623b str r3, [r7, #32]
-#ifndef PB_NO_ERRMSG
- stream.errmsg = NULL;
- 8003b98: 2300 movs r3, #0
- 8003b9a: 627b str r3, [r7, #36] ; 0x24
-#endif
- return stream;
- 8003b9c: 68fb ldr r3, [r7, #12]
- 8003b9e: 461d mov r5, r3
- 8003ba0: f107 0414 add.w r4, r7, #20
- 8003ba4: cc0f ldmia r4!, {r0, r1, r2, r3}
- 8003ba6: c50f stmia r5!, {r0, r1, r2, r3}
- 8003ba8: 6823 ldr r3, [r4, #0]
- 8003baa: 602b str r3, [r5, #0]
-}
- 8003bac: 68f8 ldr r0, [r7, #12]
- 8003bae: 372c adds r7, #44 ; 0x2c
- 8003bb0: 46bd mov sp, r7
- 8003bb2: bcb0 pop {r4, r5, r7}
- 8003bb4: 4770 bx lr
- 8003bb6: bf00 nop
- 8003bb8: 08003b2d .word 0x08003b2d
-
-08003bbc <pb_write>:
-
-bool checkreturn pb_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count)
-{
- 8003bbc: b580 push {r7, lr}
- 8003bbe: b084 sub sp, #16
- 8003bc0: af00 add r7, sp, #0
- 8003bc2: 60f8 str r0, [r7, #12]
- 8003bc4: 60b9 str r1, [r7, #8]
- 8003bc6: 607a str r2, [r7, #4]
- if (count > 0 && stream->callback != NULL)
- 8003bc8: 687b ldr r3, [r7, #4]
- 8003bca: 2b00 cmp r3, #0
- 8003bcc: d02f beq.n 8003c2e <pb_write+0x72>
- 8003bce: 68fb ldr r3, [r7, #12]
- 8003bd0: 681b ldr r3, [r3, #0]
- 8003bd2: 2b00 cmp r3, #0
- 8003bd4: d02b beq.n 8003c2e <pb_write+0x72>
- {
- if (stream->bytes_written + count > stream->max_size)
- 8003bd6: 68fb ldr r3, [r7, #12]
- 8003bd8: 68da ldr r2, [r3, #12]
- 8003bda: 687b ldr r3, [r7, #4]
- 8003bdc: 441a add r2, r3
- 8003bde: 68fb ldr r3, [r7, #12]
- 8003be0: 689b ldr r3, [r3, #8]
- 8003be2: 429a cmp r2, r3
- 8003be4: d90b bls.n 8003bfe <pb_write+0x42>
- PB_RETURN_ERROR(stream, "stream full");
- 8003be6: 68fb ldr r3, [r7, #12]
- 8003be8: 691b ldr r3, [r3, #16]
- 8003bea: 2b00 cmp r3, #0
- 8003bec: d002 beq.n 8003bf4 <pb_write+0x38>
- 8003bee: 68fb ldr r3, [r7, #12]
- 8003bf0: 691b ldr r3, [r3, #16]
- 8003bf2: e000 b.n 8003bf6 <pb_write+0x3a>
- 8003bf4: 4b13 ldr r3, [pc, #76] ; (8003c44 <pb_write+0x88>)
- 8003bf6: 68fa ldr r2, [r7, #12]
- 8003bf8: 6113 str r3, [r2, #16]
- 8003bfa: 2300 movs r3, #0
- 8003bfc: e01e b.n 8003c3c <pb_write+0x80>
-
-#ifdef PB_BUFFER_ONLY
- if (!buf_write(stream, buf, count))
- PB_RETURN_ERROR(stream, "io error");
-#else
- if (!stream->callback(stream, buf, count))
- 8003bfe: 68fb ldr r3, [r7, #12]
- 8003c00: 681b ldr r3, [r3, #0]
- 8003c02: 687a ldr r2, [r7, #4]
- 8003c04: 68b9 ldr r1, [r7, #8]
- 8003c06: 68f8 ldr r0, [r7, #12]
- 8003c08: 4798 blx r3
- 8003c0a: 4603 mov r3, r0
- 8003c0c: f083 0301 eor.w r3, r3, #1
- 8003c10: b2db uxtb r3, r3
- 8003c12: 2b00 cmp r3, #0
- 8003c14: d00b beq.n 8003c2e <pb_write+0x72>
- PB_RETURN_ERROR(stream, "io error");
- 8003c16: 68fb ldr r3, [r7, #12]
- 8003c18: 691b ldr r3, [r3, #16]
- 8003c1a: 2b00 cmp r3, #0
- 8003c1c: d002 beq.n 8003c24 <pb_write+0x68>
- 8003c1e: 68fb ldr r3, [r7, #12]
- 8003c20: 691b ldr r3, [r3, #16]
- 8003c22: e000 b.n 8003c26 <pb_write+0x6a>
- 8003c24: 4b08 ldr r3, [pc, #32] ; (8003c48 <pb_write+0x8c>)
- 8003c26: 68fa ldr r2, [r7, #12]
- 8003c28: 6113 str r3, [r2, #16]
- 8003c2a: 2300 movs r3, #0
- 8003c2c: e006 b.n 8003c3c <pb_write+0x80>
-#endif
- }
-
- stream->bytes_written += count;
- 8003c2e: 68fb ldr r3, [r7, #12]
- 8003c30: 68da ldr r2, [r3, #12]
- 8003c32: 687b ldr r3, [r7, #4]
- 8003c34: 441a add r2, r3
- 8003c36: 68fb ldr r3, [r7, #12]
- 8003c38: 60da str r2, [r3, #12]
- return true;
- 8003c3a: 2301 movs r3, #1
-}
- 8003c3c: 4618 mov r0, r3
- 8003c3e: 3710 adds r7, #16
- 8003c40: 46bd mov sp, r7
- 8003c42: bd80 pop {r7, pc}
- 8003c44: 08008ba0 .word 0x08008ba0
- 8003c48: 08008bac .word 0x08008bac
-
-08003c4c <safe_read_bool>:
-/* Read a bool value without causing undefined behavior even if the value
- * is invalid. See issue #434 and
- * https://stackoverflow.com/questions/27661768/weird-results-for-conditional
- */
-static bool safe_read_bool(const void *pSize)
-{
- 8003c4c: b480 push {r7}
- 8003c4e: b085 sub sp, #20
- 8003c50: af00 add r7, sp, #0
- 8003c52: 6078 str r0, [r7, #4]
- const char *p = (const char *)pSize;
- 8003c54: 687b ldr r3, [r7, #4]
- 8003c56: 60bb str r3, [r7, #8]
- size_t i;
- for (i = 0; i < sizeof(bool); i++)
- 8003c58: 2300 movs r3, #0
- 8003c5a: 60fb str r3, [r7, #12]
- 8003c5c: e00a b.n 8003c74 <safe_read_bool+0x28>
- {
- if (p[i] != 0)
- 8003c5e: 68ba ldr r2, [r7, #8]
- 8003c60: 68fb ldr r3, [r7, #12]
- 8003c62: 4413 add r3, r2
- 8003c64: 781b ldrb r3, [r3, #0]
- 8003c66: 2b00 cmp r3, #0
- 8003c68: d001 beq.n 8003c6e <safe_read_bool+0x22>
- return true;
- 8003c6a: 2301 movs r3, #1
- 8003c6c: e006 b.n 8003c7c <safe_read_bool+0x30>
- for (i = 0; i < sizeof(bool); i++)
- 8003c6e: 68fb ldr r3, [r7, #12]
- 8003c70: 3301 adds r3, #1
- 8003c72: 60fb str r3, [r7, #12]
- 8003c74: 68fb ldr r3, [r7, #12]
- 8003c76: 2b00 cmp r3, #0
- 8003c78: d0f1 beq.n 8003c5e <safe_read_bool+0x12>
- }
- return false;
- 8003c7a: 2300 movs r3, #0
-}
- 8003c7c: 4618 mov r0, r3
- 8003c7e: 3714 adds r7, #20
- 8003c80: 46bd mov sp, r7
- 8003c82: f85d 7b04 ldr.w r7, [sp], #4
- 8003c86: 4770 bx lr
-
-08003c88 <encode_array>:
-
-/* Encode a static array. Handles the size calculations and possible packing. */
-static bool checkreturn encode_array(pb_ostream_t *stream, pb_field_iter_t *field)
-{
- 8003c88: b590 push {r4, r7, lr}
- 8003c8a: b08d sub sp, #52 ; 0x34
- 8003c8c: af00 add r7, sp, #0
- 8003c8e: 6078 str r0, [r7, #4]
- 8003c90: 6039 str r1, [r7, #0]
- pb_size_t count;
-#ifndef PB_ENCODE_ARRAYS_UNPACKED
- size_t size;
-#endif
-
- count = *(pb_size_t*)field->pSize;
- 8003c92: 683b ldr r3, [r7, #0]
- 8003c94: 6a1b ldr r3, [r3, #32]
- 8003c96: 881b ldrh r3, [r3, #0]
- 8003c98: 84bb strh r3, [r7, #36] ; 0x24
-
- if (count == 0)
- 8003c9a: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8003c9c: 2b00 cmp r3, #0
- 8003c9e: d101 bne.n 8003ca4 <encode_array+0x1c>
- return true;
- 8003ca0: 2301 movs r3, #1
- 8003ca2: e13c b.n 8003f1e <encode_array+0x296>
-
- if (PB_ATYPE(field->type) != PB_ATYPE_POINTER && count > field->array_size)
- 8003ca4: 683b ldr r3, [r7, #0]
- 8003ca6: 7d9b ldrb r3, [r3, #22]
- 8003ca8: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8003cac: 2b80 cmp r3, #128 ; 0x80
- 8003cae: d010 beq.n 8003cd2 <encode_array+0x4a>
- 8003cb0: 683b ldr r3, [r7, #0]
- 8003cb2: 8a9b ldrh r3, [r3, #20]
- 8003cb4: 8cba ldrh r2, [r7, #36] ; 0x24
- 8003cb6: 429a cmp r2, r3
- 8003cb8: d90b bls.n 8003cd2 <encode_array+0x4a>
- PB_RETURN_ERROR(stream, "array max size exceeded");
- 8003cba: 687b ldr r3, [r7, #4]
- 8003cbc: 691b ldr r3, [r3, #16]
- 8003cbe: 2b00 cmp r3, #0
- 8003cc0: d002 beq.n 8003cc8 <encode_array+0x40>
- 8003cc2: 687b ldr r3, [r7, #4]
- 8003cc4: 691b ldr r3, [r3, #16]
- 8003cc6: e000 b.n 8003cca <encode_array+0x42>
- 8003cc8: 4b97 ldr r3, [pc, #604] ; (8003f28 <encode_array+0x2a0>)
- 8003cca: 687a ldr r2, [r7, #4]
- 8003ccc: 6113 str r3, [r2, #16]
- 8003cce: 2300 movs r3, #0
- 8003cd0: e125 b.n 8003f1e <encode_array+0x296>
-
-#ifndef PB_ENCODE_ARRAYS_UNPACKED
- /* We always pack arrays if the datatype allows it. */
- if (PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
- 8003cd2: 683b ldr r3, [r7, #0]
- 8003cd4: 7d9b ldrb r3, [r3, #22]
- 8003cd6: f003 030f and.w r3, r3, #15
- 8003cda: 2b05 cmp r3, #5
- 8003cdc: f200 80b2 bhi.w 8003e44 <encode_array+0x1bc>
- {
- if (!pb_encode_tag(stream, PB_WT_STRING, field->tag))
- 8003ce0: 683b ldr r3, [r7, #0]
- 8003ce2: 8a1b ldrh r3, [r3, #16]
- 8003ce4: 461a mov r2, r3
- 8003ce6: 2102 movs r1, #2
- 8003ce8: 6878 ldr r0, [r7, #4]
- 8003cea: f000 fce7 bl 80046bc <pb_encode_tag>
- 8003cee: 4603 mov r3, r0
- 8003cf0: f083 0301 eor.w r3, r3, #1
- 8003cf4: b2db uxtb r3, r3
- 8003cf6: 2b00 cmp r3, #0
- 8003cf8: d001 beq.n 8003cfe <encode_array+0x76>
- return false;
- 8003cfa: 2300 movs r3, #0
- 8003cfc: e10f b.n 8003f1e <encode_array+0x296>
-
- /* Determine the total size of packed array. */
- if (PB_LTYPE(field->type) == PB_LTYPE_FIXED32)
- 8003cfe: 683b ldr r3, [r7, #0]
- 8003d00: 7d9b ldrb r3, [r3, #22]
- 8003d02: f003 030f and.w r3, r3, #15
- 8003d06: 2b04 cmp r3, #4
- 8003d08: d103 bne.n 8003d12 <encode_array+0x8a>
- {
- size = 4 * (size_t)count;
- 8003d0a: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8003d0c: 009b lsls r3, r3, #2
- 8003d0e: 62bb str r3, [r7, #40] ; 0x28
- 8003d10: e047 b.n 8003da2 <encode_array+0x11a>
- }
- else if (PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
- 8003d12: 683b ldr r3, [r7, #0]
- 8003d14: 7d9b ldrb r3, [r3, #22]
- 8003d16: f003 030f and.w r3, r3, #15
- 8003d1a: 2b05 cmp r3, #5
- 8003d1c: d103 bne.n 8003d26 <encode_array+0x9e>
- {
- size = 8 * (size_t)count;
- 8003d1e: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8003d20: 00db lsls r3, r3, #3
- 8003d22: 62bb str r3, [r7, #40] ; 0x28
- 8003d24: e03d b.n 8003da2 <encode_array+0x11a>
- }
- else
- {
- pb_ostream_t sizestream = PB_OSTREAM_SIZING;
- 8003d26: f107 0308 add.w r3, r7, #8
- 8003d2a: 2200 movs r2, #0
- 8003d2c: 601a str r2, [r3, #0]
- 8003d2e: 605a str r2, [r3, #4]
- 8003d30: 609a str r2, [r3, #8]
- 8003d32: 60da str r2, [r3, #12]
- 8003d34: 611a str r2, [r3, #16]
- void *pData_orig = field->pData;
- 8003d36: 683b ldr r3, [r7, #0]
- 8003d38: 69db ldr r3, [r3, #28]
- 8003d3a: 61fb str r3, [r7, #28]
- for (i = 0; i < count; i++)
- 8003d3c: 2300 movs r3, #0
- 8003d3e: 85fb strh r3, [r7, #46] ; 0x2e
- 8003d40: e026 b.n 8003d90 <encode_array+0x108>
- {
- if (!pb_enc_varint(&sizestream, field))
- 8003d42: f107 0308 add.w r3, r7, #8
- 8003d46: 6839 ldr r1, [r7, #0]
- 8003d48: 4618 mov r0, r3
- 8003d4a: f000 fdf1 bl 8004930 <pb_enc_varint>
- 8003d4e: 4603 mov r3, r0
- 8003d50: f083 0301 eor.w r3, r3, #1
- 8003d54: b2db uxtb r3, r3
- 8003d56: 2b00 cmp r3, #0
- 8003d58: d010 beq.n 8003d7c <encode_array+0xf4>
- PB_RETURN_ERROR(stream, PB_GET_ERROR(&sizestream));
- 8003d5a: 687b ldr r3, [r7, #4]
- 8003d5c: 691b ldr r3, [r3, #16]
- 8003d5e: 2b00 cmp r3, #0
- 8003d60: d002 beq.n 8003d68 <encode_array+0xe0>
- 8003d62: 687b ldr r3, [r7, #4]
- 8003d64: 691b ldr r3, [r3, #16]
- 8003d66: e005 b.n 8003d74 <encode_array+0xec>
- 8003d68: 69bb ldr r3, [r7, #24]
- 8003d6a: 2b00 cmp r3, #0
- 8003d6c: d001 beq.n 8003d72 <encode_array+0xea>
- 8003d6e: 69bb ldr r3, [r7, #24]
- 8003d70: e000 b.n 8003d74 <encode_array+0xec>
- 8003d72: 4b6e ldr r3, [pc, #440] ; (8003f2c <encode_array+0x2a4>)
- 8003d74: 687a ldr r2, [r7, #4]
- 8003d76: 6113 str r3, [r2, #16]
- 8003d78: 2300 movs r3, #0
- 8003d7a: e0d0 b.n 8003f1e <encode_array+0x296>
- field->pData = (char*)field->pData + field->data_size;
- 8003d7c: 683b ldr r3, [r7, #0]
- 8003d7e: 69db ldr r3, [r3, #28]
- 8003d80: 683a ldr r2, [r7, #0]
- 8003d82: 8a52 ldrh r2, [r2, #18]
- 8003d84: 441a add r2, r3
- 8003d86: 683b ldr r3, [r7, #0]
- 8003d88: 61da str r2, [r3, #28]
- for (i = 0; i < count; i++)
- 8003d8a: 8dfb ldrh r3, [r7, #46] ; 0x2e
- 8003d8c: 3301 adds r3, #1
- 8003d8e: 85fb strh r3, [r7, #46] ; 0x2e
- 8003d90: 8dfa ldrh r2, [r7, #46] ; 0x2e
- 8003d92: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8003d94: 429a cmp r2, r3
- 8003d96: d3d4 bcc.n 8003d42 <encode_array+0xba>
- }
- field->pData = pData_orig;
- 8003d98: 683b ldr r3, [r7, #0]
- 8003d9a: 69fa ldr r2, [r7, #28]
- 8003d9c: 61da str r2, [r3, #28]
- size = sizestream.bytes_written;
- 8003d9e: 697b ldr r3, [r7, #20]
- 8003da0: 62bb str r3, [r7, #40] ; 0x28
- }
-
- if (!pb_encode_varint(stream, (pb_uint64_t)size))
- 8003da2: 6abb ldr r3, [r7, #40] ; 0x28
- 8003da4: f04f 0400 mov.w r4, #0
- 8003da8: 461a mov r2, r3
- 8003daa: 4623 mov r3, r4
- 8003dac: 6878 ldr r0, [r7, #4]
- 8003dae: f000 fba9 bl 8004504 <pb_encode_varint>
- 8003db2: 4603 mov r3, r0
- 8003db4: f083 0301 eor.w r3, r3, #1
- 8003db8: b2db uxtb r3, r3
- 8003dba: 2b00 cmp r3, #0
- 8003dbc: d001 beq.n 8003dc2 <encode_array+0x13a>
- return false;
- 8003dbe: 2300 movs r3, #0
- 8003dc0: e0ad b.n 8003f1e <encode_array+0x296>
-
- if (stream->callback == NULL)
- 8003dc2: 687b ldr r3, [r7, #4]
- 8003dc4: 681b ldr r3, [r3, #0]
- 8003dc6: 2b00 cmp r3, #0
- 8003dc8: d106 bne.n 8003dd8 <encode_array+0x150>
- return pb_write(stream, NULL, size); /* Just sizing.. */
- 8003dca: 6aba ldr r2, [r7, #40] ; 0x28
- 8003dcc: 2100 movs r1, #0
- 8003dce: 6878 ldr r0, [r7, #4]
- 8003dd0: f7ff fef4 bl 8003bbc <pb_write>
- 8003dd4: 4603 mov r3, r0
- 8003dd6: e0a2 b.n 8003f1e <encode_array+0x296>
-
- /* Write the data */
- for (i = 0; i < count; i++)
- 8003dd8: 2300 movs r3, #0
- 8003dda: 85fb strh r3, [r7, #46] ; 0x2e
- 8003ddc: e02d b.n 8003e3a <encode_array+0x1b2>
- {
- if (PB_LTYPE(field->type) == PB_LTYPE_FIXED32 || PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
- 8003dde: 683b ldr r3, [r7, #0]
- 8003de0: 7d9b ldrb r3, [r3, #22]
- 8003de2: f003 030f and.w r3, r3, #15
- 8003de6: 2b04 cmp r3, #4
- 8003de8: d005 beq.n 8003df6 <encode_array+0x16e>
- 8003dea: 683b ldr r3, [r7, #0]
- 8003dec: 7d9b ldrb r3, [r3, #22]
- 8003dee: f003 030f and.w r3, r3, #15
- 8003df2: 2b05 cmp r3, #5
- 8003df4: d10b bne.n 8003e0e <encode_array+0x186>
- {
- if (!pb_enc_fixed(stream, field))
- 8003df6: 6839 ldr r1, [r7, #0]
- 8003df8: 6878 ldr r0, [r7, #4]
- 8003dfa: f000 fe4f bl 8004a9c <pb_enc_fixed>
- 8003dfe: 4603 mov r3, r0
- 8003e00: f083 0301 eor.w r3, r3, #1
- 8003e04: b2db uxtb r3, r3
- 8003e06: 2b00 cmp r3, #0
- 8003e08: d00d beq.n 8003e26 <encode_array+0x19e>
- return false;
- 8003e0a: 2300 movs r3, #0
- 8003e0c: e087 b.n 8003f1e <encode_array+0x296>
- }
- else
- {
- if (!pb_enc_varint(stream, field))
- 8003e0e: 6839 ldr r1, [r7, #0]
- 8003e10: 6878 ldr r0, [r7, #4]
- 8003e12: f000 fd8d bl 8004930 <pb_enc_varint>
- 8003e16: 4603 mov r3, r0
- 8003e18: f083 0301 eor.w r3, r3, #1
- 8003e1c: b2db uxtb r3, r3
- 8003e1e: 2b00 cmp r3, #0
- 8003e20: d001 beq.n 8003e26 <encode_array+0x19e>
- return false;
- 8003e22: 2300 movs r3, #0
- 8003e24: e07b b.n 8003f1e <encode_array+0x296>
- }
-
- field->pData = (char*)field->pData + field->data_size;
- 8003e26: 683b ldr r3, [r7, #0]
- 8003e28: 69db ldr r3, [r3, #28]
- 8003e2a: 683a ldr r2, [r7, #0]
- 8003e2c: 8a52 ldrh r2, [r2, #18]
- 8003e2e: 441a add r2, r3
- 8003e30: 683b ldr r3, [r7, #0]
- 8003e32: 61da str r2, [r3, #28]
- for (i = 0; i < count; i++)
- 8003e34: 8dfb ldrh r3, [r7, #46] ; 0x2e
- 8003e36: 3301 adds r3, #1
- 8003e38: 85fb strh r3, [r7, #46] ; 0x2e
- 8003e3a: 8dfa ldrh r2, [r7, #46] ; 0x2e
- 8003e3c: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8003e3e: 429a cmp r2, r3
- 8003e40: d3cd bcc.n 8003dde <encode_array+0x156>
- 8003e42: e06b b.n 8003f1c <encode_array+0x294>
- }
- }
- else /* Unpacked fields */
-#endif
- {
- for (i = 0; i < count; i++)
- 8003e44: 2300 movs r3, #0
- 8003e46: 85fb strh r3, [r7, #46] ; 0x2e
- 8003e48: e064 b.n 8003f14 <encode_array+0x28c>
- {
- /* Normally the data is stored directly in the array entries, but
- * for pointer-type string and bytes fields, the array entries are
- * actually pointers themselves also. So we have to dereference once
- * more to get to the actual data. */
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER &&
- 8003e4a: 683b ldr r3, [r7, #0]
- 8003e4c: 7d9b ldrb r3, [r3, #22]
- 8003e4e: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8003e52: 2b80 cmp r3, #128 ; 0x80
- 8003e54: d147 bne.n 8003ee6 <encode_array+0x25e>
- (PB_LTYPE(field->type) == PB_LTYPE_STRING ||
- 8003e56: 683b ldr r3, [r7, #0]
- 8003e58: 7d9b ldrb r3, [r3, #22]
- 8003e5a: f003 030f and.w r3, r3, #15
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER &&
- 8003e5e: 2b07 cmp r3, #7
- 8003e60: d005 beq.n 8003e6e <encode_array+0x1e6>
- PB_LTYPE(field->type) == PB_LTYPE_BYTES))
- 8003e62: 683b ldr r3, [r7, #0]
- 8003e64: 7d9b ldrb r3, [r3, #22]
- 8003e66: f003 030f and.w r3, r3, #15
- (PB_LTYPE(field->type) == PB_LTYPE_STRING ||
- 8003e6a: 2b06 cmp r3, #6
- 8003e6c: d13b bne.n 8003ee6 <encode_array+0x25e>
- {
- bool status;
- void *pData_orig = field->pData;
- 8003e6e: 683b ldr r3, [r7, #0]
- 8003e70: 69db ldr r3, [r3, #28]
- 8003e72: 623b str r3, [r7, #32]
- field->pData = *(void* const*)field->pData;
- 8003e74: 683b ldr r3, [r7, #0]
- 8003e76: 69db ldr r3, [r3, #28]
- 8003e78: 681a ldr r2, [r3, #0]
- 8003e7a: 683b ldr r3, [r7, #0]
- 8003e7c: 61da str r2, [r3, #28]
-
- if (!field->pData)
- 8003e7e: 683b ldr r3, [r7, #0]
- 8003e80: 69db ldr r3, [r3, #28]
- 8003e82: 2b00 cmp r3, #0
- 8003e84: d11c bne.n 8003ec0 <encode_array+0x238>
- {
- /* Null pointer in array is treated as empty string / bytes */
- status = pb_encode_tag_for_field(stream, field) &&
- 8003e86: 6839 ldr r1, [r7, #0]
- 8003e88: 6878 ldr r0, [r7, #4]
- 8003e8a: f000 fc3b bl 8004704 <pb_encode_tag_for_field>
- 8003e8e: 4603 mov r3, r0
- 8003e90: 2b00 cmp r3, #0
- 8003e92: d00b beq.n 8003eac <encode_array+0x224>
- pb_encode_varint(stream, 0);
- 8003e94: f04f 0200 mov.w r2, #0
- 8003e98: f04f 0300 mov.w r3, #0
- 8003e9c: 6878 ldr r0, [r7, #4]
- 8003e9e: f000 fb31 bl 8004504 <pb_encode_varint>
- 8003ea2: 4603 mov r3, r0
- status = pb_encode_tag_for_field(stream, field) &&
- 8003ea4: 2b00 cmp r3, #0
- 8003ea6: d001 beq.n 8003eac <encode_array+0x224>
- 8003ea8: 2301 movs r3, #1
- 8003eaa: e000 b.n 8003eae <encode_array+0x226>
- 8003eac: 2300 movs r3, #0
- 8003eae: f887 3027 strb.w r3, [r7, #39] ; 0x27
- 8003eb2: f897 3027 ldrb.w r3, [r7, #39] ; 0x27
- 8003eb6: f003 0301 and.w r3, r3, #1
- 8003eba: f887 3027 strb.w r3, [r7, #39] ; 0x27
- 8003ebe: e006 b.n 8003ece <encode_array+0x246>
- }
- else
- {
- status = encode_basic_field(stream, field);
- 8003ec0: 6839 ldr r1, [r7, #0]
- 8003ec2: 6878 ldr r0, [r7, #4]
- 8003ec4: f000 f8fe bl 80040c4 <encode_basic_field>
- 8003ec8: 4603 mov r3, r0
- 8003eca: f887 3027 strb.w r3, [r7, #39] ; 0x27
- }
-
- field->pData = pData_orig;
- 8003ece: 683b ldr r3, [r7, #0]
- 8003ed0: 6a3a ldr r2, [r7, #32]
- 8003ed2: 61da str r2, [r3, #28]
-
- if (!status)
- 8003ed4: f897 3027 ldrb.w r3, [r7, #39] ; 0x27
- 8003ed8: f083 0301 eor.w r3, r3, #1
- 8003edc: b2db uxtb r3, r3
- 8003ede: 2b00 cmp r3, #0
- 8003ee0: d00d beq.n 8003efe <encode_array+0x276>
- return false;
- 8003ee2: 2300 movs r3, #0
- 8003ee4: e01b b.n 8003f1e <encode_array+0x296>
- }
- else
- {
- if (!encode_basic_field(stream, field))
- 8003ee6: 6839 ldr r1, [r7, #0]
- 8003ee8: 6878 ldr r0, [r7, #4]
- 8003eea: f000 f8eb bl 80040c4 <encode_basic_field>
- 8003eee: 4603 mov r3, r0
- 8003ef0: f083 0301 eor.w r3, r3, #1
- 8003ef4: b2db uxtb r3, r3
- 8003ef6: 2b00 cmp r3, #0
- 8003ef8: d002 beq.n 8003f00 <encode_array+0x278>
- return false;
- 8003efa: 2300 movs r3, #0
- 8003efc: e00f b.n 8003f1e <encode_array+0x296>
- {
- 8003efe: bf00 nop
- }
- field->pData = (char*)field->pData + field->data_size;
- 8003f00: 683b ldr r3, [r7, #0]
- 8003f02: 69db ldr r3, [r3, #28]
- 8003f04: 683a ldr r2, [r7, #0]
- 8003f06: 8a52 ldrh r2, [r2, #18]
- 8003f08: 441a add r2, r3
- 8003f0a: 683b ldr r3, [r7, #0]
- 8003f0c: 61da str r2, [r3, #28]
- for (i = 0; i < count; i++)
- 8003f0e: 8dfb ldrh r3, [r7, #46] ; 0x2e
- 8003f10: 3301 adds r3, #1
- 8003f12: 85fb strh r3, [r7, #46] ; 0x2e
- 8003f14: 8dfa ldrh r2, [r7, #46] ; 0x2e
- 8003f16: 8cbb ldrh r3, [r7, #36] ; 0x24
- 8003f18: 429a cmp r2, r3
- 8003f1a: d396 bcc.n 8003e4a <encode_array+0x1c2>
- }
- }
-
- return true;
- 8003f1c: 2301 movs r3, #1
-}
- 8003f1e: 4618 mov r0, r3
- 8003f20: 3734 adds r7, #52 ; 0x34
- 8003f22: 46bd mov sp, r7
- 8003f24: bd90 pop {r4, r7, pc}
- 8003f26: bf00 nop
- 8003f28: 08008bb8 .word 0x08008bb8
- 8003f2c: 08008bd0 .word 0x08008bd0
-
-08003f30 <pb_check_proto3_default_value>:
-
-/* In proto3, all fields are optional and are only encoded if their value is "non-zero".
- * This function implements the check for the zero value. */
-static bool checkreturn pb_check_proto3_default_value(const pb_field_iter_t *field)
-{
- 8003f30: b580 push {r7, lr}
- 8003f32: b090 sub sp, #64 ; 0x40
- 8003f34: af00 add r7, sp, #0
- 8003f36: 6078 str r0, [r7, #4]
- pb_type_t type = field->type;
- 8003f38: 687b ldr r3, [r7, #4]
- 8003f3a: 7d9b ldrb r3, [r3, #22]
- 8003f3c: f887 303d strb.w r3, [r7, #61] ; 0x3d
-
- if (PB_ATYPE(type) == PB_ATYPE_STATIC)
- 8003f40: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8003f44: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8003f48: 2b00 cmp r3, #0
- 8003f4a: f040 809f bne.w 800408c <pb_check_proto3_default_value+0x15c>
- {
- if (PB_HTYPE(type) == PB_HTYPE_REQUIRED)
- 8003f4e: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8003f52: f003 0330 and.w r3, r3, #48 ; 0x30
- 8003f56: 2b00 cmp r3, #0
- 8003f58: d101 bne.n 8003f5e <pb_check_proto3_default_value+0x2e>
- {
- /* Required proto2 fields inside proto3 submessage, pretty rare case */
- return false;
- 8003f5a: 2300 movs r3, #0
- 8003f5c: e0ad b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
- else if (PB_HTYPE(type) == PB_HTYPE_REPEATED)
- 8003f5e: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8003f62: f003 0330 and.w r3, r3, #48 ; 0x30
- 8003f66: 2b20 cmp r3, #32
- 8003f68: d108 bne.n 8003f7c <pb_check_proto3_default_value+0x4c>
- {
- /* Repeated fields inside proto3 submessage: present if count != 0 */
- return *(const pb_size_t*)field->pSize == 0;
- 8003f6a: 687b ldr r3, [r7, #4]
- 8003f6c: 6a1b ldr r3, [r3, #32]
- 8003f6e: 881b ldrh r3, [r3, #0]
- 8003f70: 2b00 cmp r3, #0
- 8003f72: bf0c ite eq
- 8003f74: 2301 moveq r3, #1
- 8003f76: 2300 movne r3, #0
- 8003f78: b2db uxtb r3, r3
- 8003f7a: e09e b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
- else if (PB_HTYPE(type) == PB_HTYPE_ONEOF)
- 8003f7c: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8003f80: f003 0330 and.w r3, r3, #48 ; 0x30
- 8003f84: 2b30 cmp r3, #48 ; 0x30
- 8003f86: d108 bne.n 8003f9a <pb_check_proto3_default_value+0x6a>
- {
- /* Oneof fields */
- return *(const pb_size_t*)field->pSize == 0;
- 8003f88: 687b ldr r3, [r7, #4]
- 8003f8a: 6a1b ldr r3, [r3, #32]
- 8003f8c: 881b ldrh r3, [r3, #0]
- 8003f8e: 2b00 cmp r3, #0
- 8003f90: bf0c ite eq
- 8003f92: 2301 moveq r3, #1
- 8003f94: 2300 movne r3, #0
- 8003f96: b2db uxtb r3, r3
- 8003f98: e08f b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
- else if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && field->pSize != NULL)
- 8003f9a: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8003f9e: f003 0330 and.w r3, r3, #48 ; 0x30
- 8003fa2: 2b10 cmp r3, #16
- 8003fa4: d115 bne.n 8003fd2 <pb_check_proto3_default_value+0xa2>
- 8003fa6: 687b ldr r3, [r7, #4]
- 8003fa8: 6a1b ldr r3, [r3, #32]
- 8003faa: 2b00 cmp r3, #0
- 8003fac: d011 beq.n 8003fd2 <pb_check_proto3_default_value+0xa2>
- {
- /* Proto2 optional fields inside proto3 message, or proto3
- * submessage fields. */
- return safe_read_bool(field->pSize) == false;
- 8003fae: 687b ldr r3, [r7, #4]
- 8003fb0: 6a1b ldr r3, [r3, #32]
- 8003fb2: 4618 mov r0, r3
- 8003fb4: f7ff fe4a bl 8003c4c <safe_read_bool>
- 8003fb8: 4603 mov r3, r0
- 8003fba: 2b00 cmp r3, #0
- 8003fbc: bf14 ite ne
- 8003fbe: 2301 movne r3, #1
- 8003fc0: 2300 moveq r3, #0
- 8003fc2: b2db uxtb r3, r3
- 8003fc4: f083 0301 eor.w r3, r3, #1
- 8003fc8: b2db uxtb r3, r3
- 8003fca: f003 0301 and.w r3, r3, #1
- 8003fce: b2db uxtb r3, r3
- 8003fd0: e073 b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
-
- /* Rest is proto3 singular fields */
- if (PB_LTYPE(type) == PB_LTYPE_BYTES)
- 8003fd2: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8003fd6: f003 030f and.w r3, r3, #15
- 8003fda: 2b06 cmp r3, #6
- 8003fdc: d10a bne.n 8003ff4 <pb_check_proto3_default_value+0xc4>
- {
- const pb_bytes_array_t *bytes = (const pb_bytes_array_t*)field->pData;
- 8003fde: 687b ldr r3, [r7, #4]
- 8003fe0: 69db ldr r3, [r3, #28]
- 8003fe2: 63bb str r3, [r7, #56] ; 0x38
- return bytes->size == 0;
- 8003fe4: 6bbb ldr r3, [r7, #56] ; 0x38
- 8003fe6: 881b ldrh r3, [r3, #0]
- 8003fe8: 2b00 cmp r3, #0
- 8003fea: bf0c ite eq
- 8003fec: 2301 moveq r3, #1
- 8003fee: 2300 movne r3, #0
- 8003ff0: b2db uxtb r3, r3
- 8003ff2: e062 b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
- else if (PB_LTYPE(type) == PB_LTYPE_STRING)
- 8003ff4: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8003ff8: f003 030f and.w r3, r3, #15
- 8003ffc: 2b07 cmp r3, #7
- 8003ffe: d108 bne.n 8004012 <pb_check_proto3_default_value+0xe2>
- {
- return *(const char*)field->pData == '\0';
- 8004000: 687b ldr r3, [r7, #4]
- 8004002: 69db ldr r3, [r3, #28]
- 8004004: 781b ldrb r3, [r3, #0]
- 8004006: 2b00 cmp r3, #0
- 8004008: bf0c ite eq
- 800400a: 2301 moveq r3, #1
- 800400c: 2300 movne r3, #0
- 800400e: b2db uxtb r3, r3
- 8004010: e053 b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
- else if (PB_LTYPE(type) == PB_LTYPE_FIXED_LENGTH_BYTES)
- 8004012: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8004016: f003 030f and.w r3, r3, #15
- 800401a: 2b0b cmp r3, #11
- 800401c: d107 bne.n 800402e <pb_check_proto3_default_value+0xfe>
- {
- /* Fixed length bytes is only empty if its length is fixed
- * as 0. Which would be pretty strange, but we can check
- * it anyway. */
- return field->data_size == 0;
- 800401e: 687b ldr r3, [r7, #4]
- 8004020: 8a5b ldrh r3, [r3, #18]
- 8004022: 2b00 cmp r3, #0
- 8004024: bf0c ite eq
- 8004026: 2301 moveq r3, #1
- 8004028: 2300 movne r3, #0
- 800402a: b2db uxtb r3, r3
- 800402c: e045 b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
- else if (PB_LTYPE_IS_SUBMSG(type))
- 800402e: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 8004032: f003 030f and.w r3, r3, #15
- 8004036: 2b08 cmp r3, #8
- 8004038: d005 beq.n 8004046 <pb_check_proto3_default_value+0x116>
- 800403a: f897 303d ldrb.w r3, [r7, #61] ; 0x3d
- 800403e: f003 030f and.w r3, r3, #15
- 8004042: 2b09 cmp r3, #9
- 8004044: d122 bne.n 800408c <pb_check_proto3_default_value+0x15c>
- * because the C struct may contain padding bytes that must
- * be skipped. Note that usually proto3 submessages have
- * a separate has_field that is checked earlier in this if.
- */
- pb_field_iter_t iter;
- if (pb_field_iter_begin(&iter, field->submsg_desc, field->pData))
- 8004046: 687b ldr r3, [r7, #4]
- 8004048: 6a59 ldr r1, [r3, #36] ; 0x24
- 800404a: 687b ldr r3, [r7, #4]
- 800404c: 69da ldr r2, [r3, #28]
- 800404e: f107 030c add.w r3, r7, #12
- 8004052: 4618 mov r0, r3
- 8004054: f7fd fe29 bl 8001caa <pb_field_iter_begin>
- 8004058: 4603 mov r3, r0
- 800405a: 2b00 cmp r3, #0
- 800405c: d014 beq.n 8004088 <pb_check_proto3_default_value+0x158>
- {
- do
- {
- if (!pb_check_proto3_default_value(&iter))
- 800405e: f107 030c add.w r3, r7, #12
- 8004062: 4618 mov r0, r3
- 8004064: f7ff ff64 bl 8003f30 <pb_check_proto3_default_value>
- 8004068: 4603 mov r3, r0
- 800406a: f083 0301 eor.w r3, r3, #1
- 800406e: b2db uxtb r3, r3
- 8004070: 2b00 cmp r3, #0
- 8004072: d001 beq.n 8004078 <pb_check_proto3_default_value+0x148>
- {
- return false;
- 8004074: 2300 movs r3, #0
- 8004076: e020 b.n 80040ba <pb_check_proto3_default_value+0x18a>
- }
- } while (pb_field_iter_next(&iter));
- 8004078: f107 030c add.w r3, r7, #12
- 800407c: 4618 mov r0, r3
- 800407e: f7fd fe5e bl 8001d3e <pb_field_iter_next>
- 8004082: 4603 mov r3, r0
- 8004084: 2b00 cmp r3, #0
- 8004086: d1ea bne.n 800405e <pb_check_proto3_default_value+0x12e>
- }
- return true;
- 8004088: 2301 movs r3, #1
- 800408a: e016 b.n 80040ba <pb_check_proto3_default_value+0x18a>
- * UVARINT, SVARINT, FIXED32, FIXED64, EXTENSION fields, and also
- * callback fields. These all have integer or pointer value which
- * can be compared with 0.
- */
- pb_size_t i;
- const char *p = (const char*)field->pData;
- 800408c: 687b ldr r3, [r7, #4]
- 800408e: 69db ldr r3, [r3, #28]
- 8004090: 637b str r3, [r7, #52] ; 0x34
- for (i = 0; i < field->data_size; i++)
- 8004092: 2300 movs r3, #0
- 8004094: 87fb strh r3, [r7, #62] ; 0x3e
- 8004096: e00a b.n 80040ae <pb_check_proto3_default_value+0x17e>
- {
- if (p[i] != 0)
- 8004098: 8ffb ldrh r3, [r7, #62] ; 0x3e
- 800409a: 6b7a ldr r2, [r7, #52] ; 0x34
- 800409c: 4413 add r3, r2
- 800409e: 781b ldrb r3, [r3, #0]
- 80040a0: 2b00 cmp r3, #0
- 80040a2: d001 beq.n 80040a8 <pb_check_proto3_default_value+0x178>
- {
- return false;
- 80040a4: 2300 movs r3, #0
- 80040a6: e008 b.n 80040ba <pb_check_proto3_default_value+0x18a>
- for (i = 0; i < field->data_size; i++)
- 80040a8: 8ffb ldrh r3, [r7, #62] ; 0x3e
- 80040aa: 3301 adds r3, #1
- 80040ac: 87fb strh r3, [r7, #62] ; 0x3e
- 80040ae: 687b ldr r3, [r7, #4]
- 80040b0: 8a5b ldrh r3, [r3, #18]
- 80040b2: 8ffa ldrh r2, [r7, #62] ; 0x3e
- 80040b4: 429a cmp r2, r3
- 80040b6: d3ef bcc.n 8004098 <pb_check_proto3_default_value+0x168>
- }
- }
-
- return true;
- 80040b8: 2301 movs r3, #1
- }
-}
- 80040ba: 4618 mov r0, r3
- 80040bc: 3740 adds r7, #64 ; 0x40
- 80040be: 46bd mov sp, r7
- 80040c0: bd80 pop {r7, pc}
- ...
-
-080040c4 <encode_basic_field>:
-
-/* Encode a field with static or pointer allocation, i.e. one whose data
- * is available to the encoder directly. */
-static bool checkreturn encode_basic_field(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 80040c4: b580 push {r7, lr}
- 80040c6: b082 sub sp, #8
- 80040c8: af00 add r7, sp, #0
- 80040ca: 6078 str r0, [r7, #4]
- 80040cc: 6039 str r1, [r7, #0]
- if (!field->pData)
- 80040ce: 683b ldr r3, [r7, #0]
- 80040d0: 69db ldr r3, [r3, #28]
- 80040d2: 2b00 cmp r3, #0
- 80040d4: d101 bne.n 80040da <encode_basic_field+0x16>
- {
- /* Missing pointer field */
- return true;
- 80040d6: 2301 movs r3, #1
- 80040d8: e061 b.n 800419e <encode_basic_field+0xda>
- }
-
- if (!pb_encode_tag_for_field(stream, field))
- 80040da: 6839 ldr r1, [r7, #0]
- 80040dc: 6878 ldr r0, [r7, #4]
- 80040de: f000 fb11 bl 8004704 <pb_encode_tag_for_field>
- 80040e2: 4603 mov r3, r0
- 80040e4: f083 0301 eor.w r3, r3, #1
- 80040e8: b2db uxtb r3, r3
- 80040ea: 2b00 cmp r3, #0
- 80040ec: d001 beq.n 80040f2 <encode_basic_field+0x2e>
- return false;
- 80040ee: 2300 movs r3, #0
- 80040f0: e055 b.n 800419e <encode_basic_field+0xda>
-
- switch (PB_LTYPE(field->type))
- 80040f2: 683b ldr r3, [r7, #0]
- 80040f4: 7d9b ldrb r3, [r3, #22]
- 80040f6: f003 030f and.w r3, r3, #15
- 80040fa: 2b0b cmp r3, #11
- 80040fc: d844 bhi.n 8004188 <encode_basic_field+0xc4>
- 80040fe: a201 add r2, pc, #4 ; (adr r2, 8004104 <encode_basic_field+0x40>)
- 8004100: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 8004104: 08004135 .word 0x08004135
- 8004108: 08004141 .word 0x08004141
- 800410c: 08004141 .word 0x08004141
- 8004110: 08004141 .word 0x08004141
- 8004114: 0800414d .word 0x0800414d
- 8004118: 0800414d .word 0x0800414d
- 800411c: 08004159 .word 0x08004159
- 8004120: 08004165 .word 0x08004165
- 8004124: 08004171 .word 0x08004171
- 8004128: 08004171 .word 0x08004171
- 800412c: 08004189 .word 0x08004189
- 8004130: 0800417d .word 0x0800417d
- {
- case PB_LTYPE_BOOL:
- return pb_enc_bool(stream, field);
- 8004134: 6839 ldr r1, [r7, #0]
- 8004136: 6878 ldr r0, [r7, #4]
- 8004138: f000 fbe0 bl 80048fc <pb_enc_bool>
- 800413c: 4603 mov r3, r0
- 800413e: e02e b.n 800419e <encode_basic_field+0xda>
-
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- return pb_enc_varint(stream, field);
- 8004140: 6839 ldr r1, [r7, #0]
- 8004142: 6878 ldr r0, [r7, #4]
- 8004144: f000 fbf4 bl 8004930 <pb_enc_varint>
- 8004148: 4603 mov r3, r0
- 800414a: e028 b.n 800419e <encode_basic_field+0xda>
-
- case PB_LTYPE_FIXED32:
- case PB_LTYPE_FIXED64:
- return pb_enc_fixed(stream, field);
- 800414c: 6839 ldr r1, [r7, #0]
- 800414e: 6878 ldr r0, [r7, #4]
- 8004150: f000 fca4 bl 8004a9c <pb_enc_fixed>
- 8004154: 4603 mov r3, r0
- 8004156: e022 b.n 800419e <encode_basic_field+0xda>
-
- case PB_LTYPE_BYTES:
- return pb_enc_bytes(stream, field);
- 8004158: 6839 ldr r1, [r7, #0]
- 800415a: 6878 ldr r0, [r7, #4]
- 800415c: f000 fccc bl 8004af8 <pb_enc_bytes>
- 8004160: 4603 mov r3, r0
- 8004162: e01c b.n 800419e <encode_basic_field+0xda>
-
- case PB_LTYPE_STRING:
- return pb_enc_string(stream, field);
- 8004164: 6839 ldr r1, [r7, #0]
- 8004166: 6878 ldr r0, [r7, #4]
- 8004168: f000 fd02 bl 8004b70 <pb_enc_string>
- 800416c: 4603 mov r3, r0
- 800416e: e016 b.n 800419e <encode_basic_field+0xda>
-
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- return pb_enc_submessage(stream, field);
- 8004170: 6839 ldr r1, [r7, #0]
- 8004172: 6878 ldr r0, [r7, #4]
- 8004174: f000 fd5a bl 8004c2c <pb_enc_submessage>
- 8004178: 4603 mov r3, r0
- 800417a: e010 b.n 800419e <encode_basic_field+0xda>
-
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- return pb_enc_fixed_length_bytes(stream, field);
- 800417c: 6839 ldr r1, [r7, #0]
- 800417e: 6878 ldr r0, [r7, #4]
- 8004180: f000 fd9a bl 8004cb8 <pb_enc_fixed_length_bytes>
- 8004184: 4603 mov r3, r0
- 8004186: e00a b.n 800419e <encode_basic_field+0xda>
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- 8004188: 687b ldr r3, [r7, #4]
- 800418a: 691b ldr r3, [r3, #16]
- 800418c: 2b00 cmp r3, #0
- 800418e: d002 beq.n 8004196 <encode_basic_field+0xd2>
- 8004190: 687b ldr r3, [r7, #4]
- 8004192: 691b ldr r3, [r3, #16]
- 8004194: e000 b.n 8004198 <encode_basic_field+0xd4>
- 8004196: 4b04 ldr r3, [pc, #16] ; (80041a8 <encode_basic_field+0xe4>)
- 8004198: 687a ldr r2, [r7, #4]
- 800419a: 6113 str r3, [r2, #16]
- 800419c: 2300 movs r3, #0
- }
-}
- 800419e: 4618 mov r0, r3
- 80041a0: 3708 adds r7, #8
- 80041a2: 46bd mov sp, r7
- 80041a4: bd80 pop {r7, pc}
- 80041a6: bf00 nop
- 80041a8: 08008bd8 .word 0x08008bd8
-
-080041ac <encode_callback_field>:
-
-/* Encode a field with callback semantics. This means that a user function is
- * called to provide and encode the actual data. */
-static bool checkreturn encode_callback_field(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 80041ac: b580 push {r7, lr}
- 80041ae: b082 sub sp, #8
- 80041b0: af00 add r7, sp, #0
- 80041b2: 6078 str r0, [r7, #4]
- 80041b4: 6039 str r1, [r7, #0]
- if (field->descriptor->field_callback != NULL)
- 80041b6: 683b ldr r3, [r7, #0]
- 80041b8: 681b ldr r3, [r3, #0]
- 80041ba: f8d3 300e ldr.w r3, [r3, #14]
- 80041be: 2b00 cmp r3, #0
- 80041c0: d019 beq.n 80041f6 <encode_callback_field+0x4a>
- {
- if (!field->descriptor->field_callback(NULL, stream, field))
- 80041c2: 683b ldr r3, [r7, #0]
- 80041c4: 681b ldr r3, [r3, #0]
- 80041c6: f8d3 300e ldr.w r3, [r3, #14]
- 80041ca: 683a ldr r2, [r7, #0]
- 80041cc: 6879 ldr r1, [r7, #4]
- 80041ce: 2000 movs r0, #0
- 80041d0: 4798 blx r3
- 80041d2: 4603 mov r3, r0
- 80041d4: f083 0301 eor.w r3, r3, #1
- 80041d8: b2db uxtb r3, r3
- 80041da: 2b00 cmp r3, #0
- 80041dc: d00b beq.n 80041f6 <encode_callback_field+0x4a>
- PB_RETURN_ERROR(stream, "callback error");
- 80041de: 687b ldr r3, [r7, #4]
- 80041e0: 691b ldr r3, [r3, #16]
- 80041e2: 2b00 cmp r3, #0
- 80041e4: d002 beq.n 80041ec <encode_callback_field+0x40>
- 80041e6: 687b ldr r3, [r7, #4]
- 80041e8: 691b ldr r3, [r3, #16]
- 80041ea: e000 b.n 80041ee <encode_callback_field+0x42>
- 80041ec: 4b04 ldr r3, [pc, #16] ; (8004200 <encode_callback_field+0x54>)
- 80041ee: 687a ldr r2, [r7, #4]
- 80041f0: 6113 str r3, [r2, #16]
- 80041f2: 2300 movs r3, #0
- 80041f4: e000 b.n 80041f8 <encode_callback_field+0x4c>
- }
- return true;
- 80041f6: 2301 movs r3, #1
-}
- 80041f8: 4618 mov r0, r3
- 80041fa: 3708 adds r7, #8
- 80041fc: 46bd mov sp, r7
- 80041fe: bd80 pop {r7, pc}
- 8004200: 08008bec .word 0x08008bec
-
-08004204 <encode_field>:
-
-/* Encode a single field of any callback, pointer or static type. */
-static bool checkreturn encode_field(pb_ostream_t *stream, pb_field_iter_t *field)
-{
- 8004204: b580 push {r7, lr}
- 8004206: b082 sub sp, #8
- 8004208: af00 add r7, sp, #0
- 800420a: 6078 str r0, [r7, #4]
- 800420c: 6039 str r1, [r7, #0]
- /* Check field presence */
- if (PB_HTYPE(field->type) == PB_HTYPE_ONEOF)
- 800420e: 683b ldr r3, [r7, #0]
- 8004210: 7d9b ldrb r3, [r3, #22]
- 8004212: f003 0330 and.w r3, r3, #48 ; 0x30
- 8004216: 2b30 cmp r3, #48 ; 0x30
- 8004218: d108 bne.n 800422c <encode_field+0x28>
- {
- if (*(const pb_size_t*)field->pSize != field->tag)
- 800421a: 683b ldr r3, [r7, #0]
- 800421c: 6a1b ldr r3, [r3, #32]
- 800421e: 881a ldrh r2, [r3, #0]
- 8004220: 683b ldr r3, [r7, #0]
- 8004222: 8a1b ldrh r3, [r3, #16]
- 8004224: 429a cmp r2, r3
- 8004226: d026 beq.n 8004276 <encode_field+0x72>
- {
- /* Different type oneof field */
- return true;
- 8004228: 2301 movs r3, #1
- 800422a: e059 b.n 80042e0 <encode_field+0xdc>
- }
- }
- else if (PB_HTYPE(field->type) == PB_HTYPE_OPTIONAL)
- 800422c: 683b ldr r3, [r7, #0]
- 800422e: 7d9b ldrb r3, [r3, #22]
- 8004230: f003 0330 and.w r3, r3, #48 ; 0x30
- 8004234: 2b10 cmp r3, #16
- 8004236: d11e bne.n 8004276 <encode_field+0x72>
- {
- if (field->pSize)
- 8004238: 683b ldr r3, [r7, #0]
- 800423a: 6a1b ldr r3, [r3, #32]
- 800423c: 2b00 cmp r3, #0
- 800423e: d00c beq.n 800425a <encode_field+0x56>
- {
- if (safe_read_bool(field->pSize) == false)
- 8004240: 683b ldr r3, [r7, #0]
- 8004242: 6a1b ldr r3, [r3, #32]
- 8004244: 4618 mov r0, r3
- 8004246: f7ff fd01 bl 8003c4c <safe_read_bool>
- 800424a: 4603 mov r3, r0
- 800424c: f083 0301 eor.w r3, r3, #1
- 8004250: b2db uxtb r3, r3
- 8004252: 2b00 cmp r3, #0
- 8004254: d00f beq.n 8004276 <encode_field+0x72>
- {
- /* Missing optional field */
- return true;
- 8004256: 2301 movs r3, #1
- 8004258: e042 b.n 80042e0 <encode_field+0xdc>
- }
- }
- else if (PB_ATYPE(field->type) == PB_ATYPE_STATIC)
- 800425a: 683b ldr r3, [r7, #0]
- 800425c: 7d9b ldrb r3, [r3, #22]
- 800425e: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8004262: 2b00 cmp r3, #0
- 8004264: d107 bne.n 8004276 <encode_field+0x72>
- {
- /* Proto3 singular field */
- if (pb_check_proto3_default_value(field))
- 8004266: 6838 ldr r0, [r7, #0]
- 8004268: f7ff fe62 bl 8003f30 <pb_check_proto3_default_value>
- 800426c: 4603 mov r3, r0
- 800426e: 2b00 cmp r3, #0
- 8004270: d001 beq.n 8004276 <encode_field+0x72>
- return true;
- 8004272: 2301 movs r3, #1
- 8004274: e034 b.n 80042e0 <encode_field+0xdc>
- }
- }
-
- if (!field->pData)
- 8004276: 683b ldr r3, [r7, #0]
- 8004278: 69db ldr r3, [r3, #28]
- 800427a: 2b00 cmp r3, #0
- 800427c: d113 bne.n 80042a6 <encode_field+0xa2>
- {
- if (PB_HTYPE(field->type) == PB_HTYPE_REQUIRED)
- 800427e: 683b ldr r3, [r7, #0]
- 8004280: 7d9b ldrb r3, [r3, #22]
- 8004282: f003 0330 and.w r3, r3, #48 ; 0x30
- 8004286: 2b00 cmp r3, #0
- 8004288: d10b bne.n 80042a2 <encode_field+0x9e>
- PB_RETURN_ERROR(stream, "missing required field");
- 800428a: 687b ldr r3, [r7, #4]
- 800428c: 691b ldr r3, [r3, #16]
- 800428e: 2b00 cmp r3, #0
- 8004290: d002 beq.n 8004298 <encode_field+0x94>
- 8004292: 687b ldr r3, [r7, #4]
- 8004294: 691b ldr r3, [r3, #16]
- 8004296: e000 b.n 800429a <encode_field+0x96>
- 8004298: 4b13 ldr r3, [pc, #76] ; (80042e8 <encode_field+0xe4>)
- 800429a: 687a ldr r2, [r7, #4]
- 800429c: 6113 str r3, [r2, #16]
- 800429e: 2300 movs r3, #0
- 80042a0: e01e b.n 80042e0 <encode_field+0xdc>
-
- /* Pointer field set to NULL */
- return true;
- 80042a2: 2301 movs r3, #1
- 80042a4: e01c b.n 80042e0 <encode_field+0xdc>
- }
-
- /* Then encode field contents */
- if (PB_ATYPE(field->type) == PB_ATYPE_CALLBACK)
- 80042a6: 683b ldr r3, [r7, #0]
- 80042a8: 7d9b ldrb r3, [r3, #22]
- 80042aa: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 80042ae: 2b40 cmp r3, #64 ; 0x40
- 80042b0: d105 bne.n 80042be <encode_field+0xba>
- {
- return encode_callback_field(stream, field);
- 80042b2: 6839 ldr r1, [r7, #0]
- 80042b4: 6878 ldr r0, [r7, #4]
- 80042b6: f7ff ff79 bl 80041ac <encode_callback_field>
- 80042ba: 4603 mov r3, r0
- 80042bc: e010 b.n 80042e0 <encode_field+0xdc>
- }
- else if (PB_HTYPE(field->type) == PB_HTYPE_REPEATED)
- 80042be: 683b ldr r3, [r7, #0]
- 80042c0: 7d9b ldrb r3, [r3, #22]
- 80042c2: f003 0330 and.w r3, r3, #48 ; 0x30
- 80042c6: 2b20 cmp r3, #32
- 80042c8: d105 bne.n 80042d6 <encode_field+0xd2>
- {
- return encode_array(stream, field);
- 80042ca: 6839 ldr r1, [r7, #0]
- 80042cc: 6878 ldr r0, [r7, #4]
- 80042ce: f7ff fcdb bl 8003c88 <encode_array>
- 80042d2: 4603 mov r3, r0
- 80042d4: e004 b.n 80042e0 <encode_field+0xdc>
- }
- else
- {
- return encode_basic_field(stream, field);
- 80042d6: 6839 ldr r1, [r7, #0]
- 80042d8: 6878 ldr r0, [r7, #4]
- 80042da: f7ff fef3 bl 80040c4 <encode_basic_field>
- 80042de: 4603 mov r3, r0
- }
-}
- 80042e0: 4618 mov r0, r3
- 80042e2: 3708 adds r7, #8
- 80042e4: 46bd mov sp, r7
- 80042e6: bd80 pop {r7, pc}
- 80042e8: 08008bfc .word 0x08008bfc
-
-080042ec <default_extension_encoder>:
-
-/* Default handler for extension fields. Expects to have a pb_msgdesc_t
- * pointer in the extension->type->arg field, pointing to a message with
- * only one field in it. */
-static bool checkreturn default_extension_encoder(pb_ostream_t *stream, const pb_extension_t *extension)
-{
- 80042ec: b580 push {r7, lr}
- 80042ee: b08c sub sp, #48 ; 0x30
- 80042f0: af00 add r7, sp, #0
- 80042f2: 6078 str r0, [r7, #4]
- 80042f4: 6039 str r1, [r7, #0]
- pb_field_iter_t iter;
-
- if (!pb_field_iter_begin_extension_const(&iter, extension))
- 80042f6: f107 0308 add.w r3, r7, #8
- 80042fa: 6839 ldr r1, [r7, #0]
- 80042fc: 4618 mov r0, r3
- 80042fe: f7fd fd97 bl 8001e30 <pb_field_iter_begin_extension_const>
- 8004302: 4603 mov r3, r0
- 8004304: f083 0301 eor.w r3, r3, #1
- 8004308: b2db uxtb r3, r3
- 800430a: 2b00 cmp r3, #0
- 800430c: d00b beq.n 8004326 <default_extension_encoder+0x3a>
- PB_RETURN_ERROR(stream, "invalid extension");
- 800430e: 687b ldr r3, [r7, #4]
- 8004310: 691b ldr r3, [r3, #16]
- 8004312: 2b00 cmp r3, #0
- 8004314: d002 beq.n 800431c <default_extension_encoder+0x30>
- 8004316: 687b ldr r3, [r7, #4]
- 8004318: 691b ldr r3, [r3, #16]
- 800431a: e000 b.n 800431e <default_extension_encoder+0x32>
- 800431c: 4b07 ldr r3, [pc, #28] ; (800433c <default_extension_encoder+0x50>)
- 800431e: 687a ldr r2, [r7, #4]
- 8004320: 6113 str r3, [r2, #16]
- 8004322: 2300 movs r3, #0
- 8004324: e006 b.n 8004334 <default_extension_encoder+0x48>
-
- return encode_field(stream, &iter);
- 8004326: f107 0308 add.w r3, r7, #8
- 800432a: 4619 mov r1, r3
- 800432c: 6878 ldr r0, [r7, #4]
- 800432e: f7ff ff69 bl 8004204 <encode_field>
- 8004332: 4603 mov r3, r0
-}
- 8004334: 4618 mov r0, r3
- 8004336: 3730 adds r7, #48 ; 0x30
- 8004338: 46bd mov sp, r7
- 800433a: bd80 pop {r7, pc}
- 800433c: 08008c14 .word 0x08008c14
-
-08004340 <encode_extension_field>:
-
-
-/* Walk through all the registered extensions and give them a chance
- * to encode themselves. */
-static bool checkreturn encode_extension_field(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 8004340: b580 push {r7, lr}
- 8004342: b084 sub sp, #16
- 8004344: af00 add r7, sp, #0
- 8004346: 6078 str r0, [r7, #4]
- 8004348: 6039 str r1, [r7, #0]
- const pb_extension_t *extension = *(const pb_extension_t* const *)field->pData;
- 800434a: 683b ldr r3, [r7, #0]
- 800434c: 69db ldr r3, [r3, #28]
- 800434e: 681b ldr r3, [r3, #0]
- 8004350: 60fb str r3, [r7, #12]
-
- while (extension)
- 8004352: e01e b.n 8004392 <encode_extension_field+0x52>
- {
- bool status;
- if (extension->type->encode)
- 8004354: 68fb ldr r3, [r7, #12]
- 8004356: 681b ldr r3, [r3, #0]
- 8004358: 685b ldr r3, [r3, #4]
- 800435a: 2b00 cmp r3, #0
- 800435c: d008 beq.n 8004370 <encode_extension_field+0x30>
- status = extension->type->encode(stream, extension);
- 800435e: 68fb ldr r3, [r7, #12]
- 8004360: 681b ldr r3, [r3, #0]
- 8004362: 685b ldr r3, [r3, #4]
- 8004364: 68f9 ldr r1, [r7, #12]
- 8004366: 6878 ldr r0, [r7, #4]
- 8004368: 4798 blx r3
- 800436a: 4603 mov r3, r0
- 800436c: 72fb strb r3, [r7, #11]
- 800436e: e005 b.n 800437c <encode_extension_field+0x3c>
- else
- status = default_extension_encoder(stream, extension);
- 8004370: 68f9 ldr r1, [r7, #12]
- 8004372: 6878 ldr r0, [r7, #4]
- 8004374: f7ff ffba bl 80042ec <default_extension_encoder>
- 8004378: 4603 mov r3, r0
- 800437a: 72fb strb r3, [r7, #11]
-
- if (!status)
- 800437c: 7afb ldrb r3, [r7, #11]
- 800437e: f083 0301 eor.w r3, r3, #1
- 8004382: b2db uxtb r3, r3
- 8004384: 2b00 cmp r3, #0
- 8004386: d001 beq.n 800438c <encode_extension_field+0x4c>
- return false;
- 8004388: 2300 movs r3, #0
- 800438a: e006 b.n 800439a <encode_extension_field+0x5a>
-
- extension = extension->next;
- 800438c: 68fb ldr r3, [r7, #12]
- 800438e: 689b ldr r3, [r3, #8]
- 8004390: 60fb str r3, [r7, #12]
- while (extension)
- 8004392: 68fb ldr r3, [r7, #12]
- 8004394: 2b00 cmp r3, #0
- 8004396: d1dd bne.n 8004354 <encode_extension_field+0x14>
- }
-
- return true;
- 8004398: 2301 movs r3, #1
-}
- 800439a: 4618 mov r0, r3
- 800439c: 3710 adds r7, #16
- 800439e: 46bd mov sp, r7
- 80043a0: bd80 pop {r7, pc}
-
-080043a2 <pb_encode>:
-/*********************
- * Encode all fields *
- *********************/
-
-bool checkreturn pb_encode(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct)
-{
- 80043a2: b580 push {r7, lr}
- 80043a4: b08e sub sp, #56 ; 0x38
- 80043a6: af00 add r7, sp, #0
- 80043a8: 60f8 str r0, [r7, #12]
- 80043aa: 60b9 str r1, [r7, #8]
- 80043ac: 607a str r2, [r7, #4]
- pb_field_iter_t iter;
- if (!pb_field_iter_begin_const(&iter, fields, src_struct))
- 80043ae: f107 0310 add.w r3, r7, #16
- 80043b2: 687a ldr r2, [r7, #4]
- 80043b4: 68b9 ldr r1, [r7, #8]
- 80043b6: 4618 mov r0, r3
- 80043b8: f7fd fd26 bl 8001e08 <pb_field_iter_begin_const>
- 80043bc: 4603 mov r3, r0
- 80043be: f083 0301 eor.w r3, r3, #1
- 80043c2: b2db uxtb r3, r3
- 80043c4: 2b00 cmp r3, #0
- 80043c6: d001 beq.n 80043cc <pb_encode+0x2a>
- return true; /* Empty message type */
- 80043c8: 2301 movs r3, #1
- 80043ca: e02a b.n 8004422 <pb_encode+0x80>
-
- do {
- if (PB_LTYPE(iter.type) == PB_LTYPE_EXTENSION)
- 80043cc: f897 3026 ldrb.w r3, [r7, #38] ; 0x26
- 80043d0: f003 030f and.w r3, r3, #15
- 80043d4: 2b0a cmp r3, #10
- 80043d6: d10d bne.n 80043f4 <pb_encode+0x52>
- {
- /* Special case for the extension field placeholder */
- if (!encode_extension_field(stream, &iter))
- 80043d8: f107 0310 add.w r3, r7, #16
- 80043dc: 4619 mov r1, r3
- 80043de: 68f8 ldr r0, [r7, #12]
- 80043e0: f7ff ffae bl 8004340 <encode_extension_field>
- 80043e4: 4603 mov r3, r0
- 80043e6: f083 0301 eor.w r3, r3, #1
- 80043ea: b2db uxtb r3, r3
- 80043ec: 2b00 cmp r3, #0
- 80043ee: d00f beq.n 8004410 <pb_encode+0x6e>
- return false;
- 80043f0: 2300 movs r3, #0
- 80043f2: e016 b.n 8004422 <pb_encode+0x80>
- }
- else
- {
- /* Regular field */
- if (!encode_field(stream, &iter))
- 80043f4: f107 0310 add.w r3, r7, #16
- 80043f8: 4619 mov r1, r3
- 80043fa: 68f8 ldr r0, [r7, #12]
- 80043fc: f7ff ff02 bl 8004204 <encode_field>
- 8004400: 4603 mov r3, r0
- 8004402: f083 0301 eor.w r3, r3, #1
- 8004406: b2db uxtb r3, r3
- 8004408: 2b00 cmp r3, #0
- 800440a: d001 beq.n 8004410 <pb_encode+0x6e>
- return false;
- 800440c: 2300 movs r3, #0
- 800440e: e008 b.n 8004422 <pb_encode+0x80>
- }
- } while (pb_field_iter_next(&iter));
- 8004410: f107 0310 add.w r3, r7, #16
- 8004414: 4618 mov r0, r3
- 8004416: f7fd fc92 bl 8001d3e <pb_field_iter_next>
- 800441a: 4603 mov r3, r0
- 800441c: 2b00 cmp r3, #0
- 800441e: d1d5 bne.n 80043cc <pb_encode+0x2a>
-
- return true;
- 8004420: 2301 movs r3, #1
-}
- 8004422: 4618 mov r0, r3
- 8004424: 3738 adds r7, #56 ; 0x38
- 8004426: 46bd mov sp, r7
- 8004428: bd80 pop {r7, pc}
-
-0800442a <pb_encode_varint_32>:
- * Helper functions *
- ********************/
-
-/* This function avoids 64-bit shifts as they are quite slow on many platforms. */
-static bool checkreturn pb_encode_varint_32(pb_ostream_t *stream, uint32_t low, uint32_t high)
-{
- 800442a: b580 push {r7, lr}
- 800442c: b088 sub sp, #32
- 800442e: af00 add r7, sp, #0
- 8004430: 60f8 str r0, [r7, #12]
- 8004432: 60b9 str r1, [r7, #8]
- 8004434: 607a str r2, [r7, #4]
- size_t i = 0;
- 8004436: 2300 movs r3, #0
- 8004438: 61fb str r3, [r7, #28]
- pb_byte_t buffer[10];
- pb_byte_t byte = (pb_byte_t)(low & 0x7F);
- 800443a: 68bb ldr r3, [r7, #8]
- 800443c: b2db uxtb r3, r3
- 800443e: f003 037f and.w r3, r3, #127 ; 0x7f
- 8004442: 76fb strb r3, [r7, #27]
- low >>= 7;
- 8004444: 68bb ldr r3, [r7, #8]
- 8004446: 09db lsrs r3, r3, #7
- 8004448: 60bb str r3, [r7, #8]
-
- while (i < 4 && (low != 0 || high != 0))
- 800444a: e014 b.n 8004476 <pb_encode_varint_32+0x4c>
- {
- byte |= 0x80;
- 800444c: 7efb ldrb r3, [r7, #27]
- 800444e: f063 037f orn r3, r3, #127 ; 0x7f
- 8004452: 76fb strb r3, [r7, #27]
- buffer[i++] = byte;
- 8004454: 69fb ldr r3, [r7, #28]
- 8004456: 1c5a adds r2, r3, #1
- 8004458: 61fa str r2, [r7, #28]
- 800445a: f107 0220 add.w r2, r7, #32
- 800445e: 4413 add r3, r2
- 8004460: 7efa ldrb r2, [r7, #27]
- 8004462: f803 2c10 strb.w r2, [r3, #-16]
- byte = (pb_byte_t)(low & 0x7F);
- 8004466: 68bb ldr r3, [r7, #8]
- 8004468: b2db uxtb r3, r3
- 800446a: f003 037f and.w r3, r3, #127 ; 0x7f
- 800446e: 76fb strb r3, [r7, #27]
- low >>= 7;
- 8004470: 68bb ldr r3, [r7, #8]
- 8004472: 09db lsrs r3, r3, #7
- 8004474: 60bb str r3, [r7, #8]
- while (i < 4 && (low != 0 || high != 0))
- 8004476: 69fb ldr r3, [r7, #28]
- 8004478: 2b03 cmp r3, #3
- 800447a: d805 bhi.n 8004488 <pb_encode_varint_32+0x5e>
- 800447c: 68bb ldr r3, [r7, #8]
- 800447e: 2b00 cmp r3, #0
- 8004480: d1e4 bne.n 800444c <pb_encode_varint_32+0x22>
- 8004482: 687b ldr r3, [r7, #4]
- 8004484: 2b00 cmp r3, #0
- 8004486: d1e1 bne.n 800444c <pb_encode_varint_32+0x22>
- }
-
- if (high)
- 8004488: 687b ldr r3, [r7, #4]
- 800448a: 2b00 cmp r3, #0
- 800448c: d025 beq.n 80044da <pb_encode_varint_32+0xb0>
- {
- byte = (pb_byte_t)(byte | ((high & 0x07) << 4));
- 800448e: 687b ldr r3, [r7, #4]
- 8004490: b2db uxtb r3, r3
- 8004492: 011b lsls r3, r3, #4
- 8004494: b2db uxtb r3, r3
- 8004496: f003 0370 and.w r3, r3, #112 ; 0x70
- 800449a: b2da uxtb r2, r3
- 800449c: 7efb ldrb r3, [r7, #27]
- 800449e: 4313 orrs r3, r2
- 80044a0: 76fb strb r3, [r7, #27]
- high >>= 3;
- 80044a2: 687b ldr r3, [r7, #4]
- 80044a4: 08db lsrs r3, r3, #3
- 80044a6: 607b str r3, [r7, #4]
-
- while (high)
- 80044a8: e014 b.n 80044d4 <pb_encode_varint_32+0xaa>
- {
- byte |= 0x80;
- 80044aa: 7efb ldrb r3, [r7, #27]
- 80044ac: f063 037f orn r3, r3, #127 ; 0x7f
- 80044b0: 76fb strb r3, [r7, #27]
- buffer[i++] = byte;
- 80044b2: 69fb ldr r3, [r7, #28]
- 80044b4: 1c5a adds r2, r3, #1
- 80044b6: 61fa str r2, [r7, #28]
- 80044b8: f107 0220 add.w r2, r7, #32
- 80044bc: 4413 add r3, r2
- 80044be: 7efa ldrb r2, [r7, #27]
- 80044c0: f803 2c10 strb.w r2, [r3, #-16]
- byte = (pb_byte_t)(high & 0x7F);
- 80044c4: 687b ldr r3, [r7, #4]
- 80044c6: b2db uxtb r3, r3
- 80044c8: f003 037f and.w r3, r3, #127 ; 0x7f
- 80044cc: 76fb strb r3, [r7, #27]
- high >>= 7;
- 80044ce: 687b ldr r3, [r7, #4]
- 80044d0: 09db lsrs r3, r3, #7
- 80044d2: 607b str r3, [r7, #4]
- while (high)
- 80044d4: 687b ldr r3, [r7, #4]
- 80044d6: 2b00 cmp r3, #0
- 80044d8: d1e7 bne.n 80044aa <pb_encode_varint_32+0x80>
- }
- }
-
- buffer[i++] = byte;
- 80044da: 69fb ldr r3, [r7, #28]
- 80044dc: 1c5a adds r2, r3, #1
- 80044de: 61fa str r2, [r7, #28]
- 80044e0: f107 0220 add.w r2, r7, #32
- 80044e4: 4413 add r3, r2
- 80044e6: 7efa ldrb r2, [r7, #27]
- 80044e8: f803 2c10 strb.w r2, [r3, #-16]
-
- return pb_write(stream, buffer, i);
- 80044ec: f107 0310 add.w r3, r7, #16
- 80044f0: 69fa ldr r2, [r7, #28]
- 80044f2: 4619 mov r1, r3
- 80044f4: 68f8 ldr r0, [r7, #12]
- 80044f6: f7ff fb61 bl 8003bbc <pb_write>
- 80044fa: 4603 mov r3, r0
-}
- 80044fc: 4618 mov r0, r3
- 80044fe: 3720 adds r7, #32
- 8004500: 46bd mov sp, r7
- 8004502: bd80 pop {r7, pc}
-
-08004504 <pb_encode_varint>:
-
-bool checkreturn pb_encode_varint(pb_ostream_t *stream, pb_uint64_t value)
-{
- 8004504: b590 push {r4, r7, lr}
- 8004506: b087 sub sp, #28
- 8004508: af00 add r7, sp, #0
- 800450a: 60f8 str r0, [r7, #12]
- 800450c: e9c7 2300 strd r2, r3, [r7]
- if (value <= 0x7F)
- 8004510: e9d7 3400 ldrd r3, r4, [r7]
- 8004514: 2c00 cmp r4, #0
- 8004516: bf08 it eq
- 8004518: 2b80 cmpeq r3, #128 ; 0x80
- 800451a: d20a bcs.n 8004532 <pb_encode_varint+0x2e>
- {
- /* Fast path: single byte */
- pb_byte_t byte = (pb_byte_t)value;
- 800451c: 783b ldrb r3, [r7, #0]
- 800451e: 75fb strb r3, [r7, #23]
- return pb_write(stream, &byte, 1);
- 8004520: f107 0317 add.w r3, r7, #23
- 8004524: 2201 movs r2, #1
- 8004526: 4619 mov r1, r3
- 8004528: 68f8 ldr r0, [r7, #12]
- 800452a: f7ff fb47 bl 8003bbc <pb_write>
- 800452e: 4603 mov r3, r0
- 8004530: e00e b.n 8004550 <pb_encode_varint+0x4c>
- else
- {
-#ifdef PB_WITHOUT_64BIT
- return pb_encode_varint_32(stream, value, 0);
-#else
- return pb_encode_varint_32(stream, (uint32_t)value, (uint32_t)(value >> 32));
- 8004532: 6838 ldr r0, [r7, #0]
- 8004534: e9d7 1200 ldrd r1, r2, [r7]
- 8004538: f04f 0300 mov.w r3, #0
- 800453c: f04f 0400 mov.w r4, #0
- 8004540: 0013 movs r3, r2
- 8004542: 2400 movs r4, #0
- 8004544: 461a mov r2, r3
- 8004546: 4601 mov r1, r0
- 8004548: 68f8 ldr r0, [r7, #12]
- 800454a: f7ff ff6e bl 800442a <pb_encode_varint_32>
- 800454e: 4603 mov r3, r0
-#endif
- }
-}
- 8004550: 4618 mov r0, r3
- 8004552: 371c adds r7, #28
- 8004554: 46bd mov sp, r7
- 8004556: bd90 pop {r4, r7, pc}
-
-08004558 <pb_encode_svarint>:
-
-bool checkreturn pb_encode_svarint(pb_ostream_t *stream, pb_int64_t value)
-{
- 8004558: b590 push {r4, r7, lr}
- 800455a: b087 sub sp, #28
- 800455c: af00 add r7, sp, #0
- 800455e: 60f8 str r0, [r7, #12]
- 8004560: e9c7 2300 strd r2, r3, [r7]
- pb_uint64_t zigzagged;
- if (value < 0)
- 8004564: e9d7 3400 ldrd r3, r4, [r7]
- 8004568: 2b00 cmp r3, #0
- 800456a: f174 0300 sbcs.w r3, r4, #0
- 800456e: da0d bge.n 800458c <pb_encode_svarint+0x34>
- zigzagged = ~((pb_uint64_t)value << 1);
- 8004570: e9d7 1200 ldrd r1, r2, [r7]
- 8004574: 184b adds r3, r1, r1
- 8004576: eb42 0402 adc.w r4, r2, r2
- 800457a: 4619 mov r1, r3
- 800457c: 4622 mov r2, r4
- 800457e: ea6f 0301 mvn.w r3, r1
- 8004582: ea6f 0402 mvn.w r4, r2
- 8004586: e9c7 3404 strd r3, r4, [r7, #16]
- 800458a: e006 b.n 800459a <pb_encode_svarint+0x42>
- else
- zigzagged = (pb_uint64_t)value << 1;
- 800458c: e9d7 1200 ldrd r1, r2, [r7]
- 8004590: 184b adds r3, r1, r1
- 8004592: eb42 0402 adc.w r4, r2, r2
- 8004596: e9c7 3404 strd r3, r4, [r7, #16]
-
- return pb_encode_varint(stream, zigzagged);
- 800459a: e9d7 2304 ldrd r2, r3, [r7, #16]
- 800459e: 68f8 ldr r0, [r7, #12]
- 80045a0: f7ff ffb0 bl 8004504 <pb_encode_varint>
- 80045a4: 4603 mov r3, r0
-}
- 80045a6: 4618 mov r0, r3
- 80045a8: 371c adds r7, #28
- 80045aa: 46bd mov sp, r7
- 80045ac: bd90 pop {r4, r7, pc}
-
-080045ae <pb_encode_fixed32>:
-
-bool checkreturn pb_encode_fixed32(pb_ostream_t *stream, const void *value)
-{
- 80045ae: b580 push {r7, lr}
- 80045b0: b084 sub sp, #16
- 80045b2: af00 add r7, sp, #0
- 80045b4: 6078 str r0, [r7, #4]
- 80045b6: 6039 str r1, [r7, #0]
- uint32_t val = *(const uint32_t*)value;
- 80045b8: 683b ldr r3, [r7, #0]
- 80045ba: 681b ldr r3, [r3, #0]
- 80045bc: 60fb str r3, [r7, #12]
- pb_byte_t bytes[4];
- bytes[0] = (pb_byte_t)(val & 0xFF);
- 80045be: 68fb ldr r3, [r7, #12]
- 80045c0: b2db uxtb r3, r3
- 80045c2: 723b strb r3, [r7, #8]
- bytes[1] = (pb_byte_t)((val >> 8) & 0xFF);
- 80045c4: 68fb ldr r3, [r7, #12]
- 80045c6: 0a1b lsrs r3, r3, #8
- 80045c8: b2db uxtb r3, r3
- 80045ca: 727b strb r3, [r7, #9]
- bytes[2] = (pb_byte_t)((val >> 16) & 0xFF);
- 80045cc: 68fb ldr r3, [r7, #12]
- 80045ce: 0c1b lsrs r3, r3, #16
- 80045d0: b2db uxtb r3, r3
- 80045d2: 72bb strb r3, [r7, #10]
- bytes[3] = (pb_byte_t)((val >> 24) & 0xFF);
- 80045d4: 68fb ldr r3, [r7, #12]
- 80045d6: 0e1b lsrs r3, r3, #24
- 80045d8: b2db uxtb r3, r3
- 80045da: 72fb strb r3, [r7, #11]
- return pb_write(stream, bytes, 4);
- 80045dc: f107 0308 add.w r3, r7, #8
- 80045e0: 2204 movs r2, #4
- 80045e2: 4619 mov r1, r3
- 80045e4: 6878 ldr r0, [r7, #4]
- 80045e6: f7ff fae9 bl 8003bbc <pb_write>
- 80045ea: 4603 mov r3, r0
-}
- 80045ec: 4618 mov r0, r3
- 80045ee: 3710 adds r7, #16
- 80045f0: 46bd mov sp, r7
- 80045f2: bd80 pop {r7, pc}
-
-080045f4 <pb_encode_fixed64>:
-
-#ifndef PB_WITHOUT_64BIT
-bool checkreturn pb_encode_fixed64(pb_ostream_t *stream, const void *value)
-{
- 80045f4: b590 push {r4, r7, lr}
- 80045f6: b087 sub sp, #28
- 80045f8: af00 add r7, sp, #0
- 80045fa: 6078 str r0, [r7, #4]
- 80045fc: 6039 str r1, [r7, #0]
- uint64_t val = *(const uint64_t*)value;
- 80045fe: 683b ldr r3, [r7, #0]
- 8004600: e9d3 3400 ldrd r3, r4, [r3]
- 8004604: e9c7 3404 strd r3, r4, [r7, #16]
- pb_byte_t bytes[8];
- bytes[0] = (pb_byte_t)(val & 0xFF);
- 8004608: 7c3b ldrb r3, [r7, #16]
- 800460a: 723b strb r3, [r7, #8]
- bytes[1] = (pb_byte_t)((val >> 8) & 0xFF);
- 800460c: e9d7 1204 ldrd r1, r2, [r7, #16]
- 8004610: f04f 0300 mov.w r3, #0
- 8004614: f04f 0400 mov.w r4, #0
- 8004618: 0a0b lsrs r3, r1, #8
- 800461a: ea43 6302 orr.w r3, r3, r2, lsl #24
- 800461e: 0a14 lsrs r4, r2, #8
- 8004620: b2db uxtb r3, r3
- 8004622: 727b strb r3, [r7, #9]
- bytes[2] = (pb_byte_t)((val >> 16) & 0xFF);
- 8004624: e9d7 1204 ldrd r1, r2, [r7, #16]
- 8004628: f04f 0300 mov.w r3, #0
- 800462c: f04f 0400 mov.w r4, #0
- 8004630: 0c0b lsrs r3, r1, #16
- 8004632: ea43 4302 orr.w r3, r3, r2, lsl #16
- 8004636: 0c14 lsrs r4, r2, #16
- 8004638: b2db uxtb r3, r3
- 800463a: 72bb strb r3, [r7, #10]
- bytes[3] = (pb_byte_t)((val >> 24) & 0xFF);
- 800463c: e9d7 1204 ldrd r1, r2, [r7, #16]
- 8004640: f04f 0300 mov.w r3, #0
- 8004644: f04f 0400 mov.w r4, #0
- 8004648: 0e0b lsrs r3, r1, #24
- 800464a: ea43 2302 orr.w r3, r3, r2, lsl #8
- 800464e: 0e14 lsrs r4, r2, #24
- 8004650: b2db uxtb r3, r3
- 8004652: 72fb strb r3, [r7, #11]
- bytes[4] = (pb_byte_t)((val >> 32) & 0xFF);
- 8004654: e9d7 1204 ldrd r1, r2, [r7, #16]
- 8004658: f04f 0300 mov.w r3, #0
- 800465c: f04f 0400 mov.w r4, #0
- 8004660: 0013 movs r3, r2
- 8004662: 2400 movs r4, #0
- 8004664: b2db uxtb r3, r3
- 8004666: 733b strb r3, [r7, #12]
- bytes[5] = (pb_byte_t)((val >> 40) & 0xFF);
- 8004668: e9d7 1204 ldrd r1, r2, [r7, #16]
- 800466c: f04f 0300 mov.w r3, #0
- 8004670: f04f 0400 mov.w r4, #0
- 8004674: 0a13 lsrs r3, r2, #8
- 8004676: 2400 movs r4, #0
- 8004678: b2db uxtb r3, r3
- 800467a: 737b strb r3, [r7, #13]
- bytes[6] = (pb_byte_t)((val >> 48) & 0xFF);
- 800467c: e9d7 1204 ldrd r1, r2, [r7, #16]
- 8004680: f04f 0300 mov.w r3, #0
- 8004684: f04f 0400 mov.w r4, #0
- 8004688: 0c13 lsrs r3, r2, #16
- 800468a: 2400 movs r4, #0
- 800468c: b2db uxtb r3, r3
- 800468e: 73bb strb r3, [r7, #14]
- bytes[7] = (pb_byte_t)((val >> 56) & 0xFF);
- 8004690: e9d7 1204 ldrd r1, r2, [r7, #16]
- 8004694: f04f 0300 mov.w r3, #0
- 8004698: f04f 0400 mov.w r4, #0
- 800469c: 0e13 lsrs r3, r2, #24
- 800469e: 2400 movs r4, #0
- 80046a0: b2db uxtb r3, r3
- 80046a2: 73fb strb r3, [r7, #15]
- return pb_write(stream, bytes, 8);
- 80046a4: f107 0308 add.w r3, r7, #8
- 80046a8: 2208 movs r2, #8
- 80046aa: 4619 mov r1, r3
- 80046ac: 6878 ldr r0, [r7, #4]
- 80046ae: f7ff fa85 bl 8003bbc <pb_write>
- 80046b2: 4603 mov r3, r0
-}
- 80046b4: 4618 mov r0, r3
- 80046b6: 371c adds r7, #28
- 80046b8: 46bd mov sp, r7
- 80046ba: bd90 pop {r4, r7, pc}
-
-080046bc <pb_encode_tag>:
-#endif
-
-bool checkreturn pb_encode_tag(pb_ostream_t *stream, pb_wire_type_t wiretype, uint32_t field_number)
-{
- 80046bc: e92d 4890 stmdb sp!, {r4, r7, fp, lr}
- 80046c0: b086 sub sp, #24
- 80046c2: af00 add r7, sp, #0
- 80046c4: 60f8 str r0, [r7, #12]
- 80046c6: 607a str r2, [r7, #4]
- 80046c8: 460a mov r2, r1
- 80046ca: 72fa strb r2, [r7, #11]
- pb_uint64_t tag = ((pb_uint64_t)field_number << 3) | wiretype;
- 80046cc: 687a ldr r2, [r7, #4]
- 80046ce: 4611 mov r1, r2
- 80046d0: f04f 0200 mov.w r2, #0
- 80046d4: ea4f 7c51 mov.w ip, r1, lsr #29
- 80046d8: ea4f 0bc1 mov.w fp, r1, lsl #3
- 80046dc: 7af9 ldrb r1, [r7, #11]
- 80046de: f04f 0200 mov.w r2, #0
- 80046e2: ea4b 0301 orr.w r3, fp, r1
- 80046e6: ea4c 0402 orr.w r4, ip, r2
- 80046ea: e9c7 3404 strd r3, r4, [r7, #16]
- return pb_encode_varint(stream, tag);
- 80046ee: e9d7 2304 ldrd r2, r3, [r7, #16]
- 80046f2: 68f8 ldr r0, [r7, #12]
- 80046f4: f7ff ff06 bl 8004504 <pb_encode_varint>
- 80046f8: 4603 mov r3, r0
-}
- 80046fa: 4618 mov r0, r3
- 80046fc: 3718 adds r7, #24
- 80046fe: 46bd mov sp, r7
- 8004700: e8bd 8890 ldmia.w sp!, {r4, r7, fp, pc}
-
-08004704 <pb_encode_tag_for_field>:
-
-bool pb_encode_tag_for_field ( pb_ostream_t* stream, const pb_field_iter_t* field )
-{
- 8004704: b580 push {r7, lr}
- 8004706: b084 sub sp, #16
- 8004708: af00 add r7, sp, #0
- 800470a: 6078 str r0, [r7, #4]
- 800470c: 6039 str r1, [r7, #0]
- pb_wire_type_t wiretype;
- switch (PB_LTYPE(field->type))
- 800470e: 683b ldr r3, [r7, #0]
- 8004710: 7d9b ldrb r3, [r3, #22]
- 8004712: f003 030f and.w r3, r3, #15
- 8004716: 2b0b cmp r3, #11
- 8004718: d826 bhi.n 8004768 <pb_encode_tag_for_field+0x64>
- 800471a: a201 add r2, pc, #4 ; (adr r2, 8004720 <pb_encode_tag_for_field+0x1c>)
- 800471c: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 8004720: 08004751 .word 0x08004751
- 8004724: 08004751 .word 0x08004751
- 8004728: 08004751 .word 0x08004751
- 800472c: 08004751 .word 0x08004751
- 8004730: 08004757 .word 0x08004757
- 8004734: 0800475d .word 0x0800475d
- 8004738: 08004763 .word 0x08004763
- 800473c: 08004763 .word 0x08004763
- 8004740: 08004763 .word 0x08004763
- 8004744: 08004763 .word 0x08004763
- 8004748: 08004769 .word 0x08004769
- 800474c: 08004763 .word 0x08004763
- {
- case PB_LTYPE_BOOL:
- case PB_LTYPE_VARINT:
- case PB_LTYPE_UVARINT:
- case PB_LTYPE_SVARINT:
- wiretype = PB_WT_VARINT;
- 8004750: 2300 movs r3, #0
- 8004752: 73fb strb r3, [r7, #15]
- break;
- 8004754: e014 b.n 8004780 <pb_encode_tag_for_field+0x7c>
-
- case PB_LTYPE_FIXED32:
- wiretype = PB_WT_32BIT;
- 8004756: 2305 movs r3, #5
- 8004758: 73fb strb r3, [r7, #15]
- break;
- 800475a: e011 b.n 8004780 <pb_encode_tag_for_field+0x7c>
-
- case PB_LTYPE_FIXED64:
- wiretype = PB_WT_64BIT;
- 800475c: 2301 movs r3, #1
- 800475e: 73fb strb r3, [r7, #15]
- break;
- 8004760: e00e b.n 8004780 <pb_encode_tag_for_field+0x7c>
- case PB_LTYPE_BYTES:
- case PB_LTYPE_STRING:
- case PB_LTYPE_SUBMESSAGE:
- case PB_LTYPE_SUBMSG_W_CB:
- case PB_LTYPE_FIXED_LENGTH_BYTES:
- wiretype = PB_WT_STRING;
- 8004762: 2302 movs r3, #2
- 8004764: 73fb strb r3, [r7, #15]
- break;
- 8004766: e00b b.n 8004780 <pb_encode_tag_for_field+0x7c>
-
- default:
- PB_RETURN_ERROR(stream, "invalid field type");
- 8004768: 687b ldr r3, [r7, #4]
- 800476a: 691b ldr r3, [r3, #16]
- 800476c: 2b00 cmp r3, #0
- 800476e: d002 beq.n 8004776 <pb_encode_tag_for_field+0x72>
- 8004770: 687b ldr r3, [r7, #4]
- 8004772: 691b ldr r3, [r3, #16]
- 8004774: e000 b.n 8004778 <pb_encode_tag_for_field+0x74>
- 8004776: 4b09 ldr r3, [pc, #36] ; (800479c <pb_encode_tag_for_field+0x98>)
- 8004778: 687a ldr r2, [r7, #4]
- 800477a: 6113 str r3, [r2, #16]
- 800477c: 2300 movs r3, #0
- 800477e: e008 b.n 8004792 <pb_encode_tag_for_field+0x8e>
- }
-
- return pb_encode_tag(stream, wiretype, field->tag);
- 8004780: 683b ldr r3, [r7, #0]
- 8004782: 8a1b ldrh r3, [r3, #16]
- 8004784: 461a mov r2, r3
- 8004786: 7bfb ldrb r3, [r7, #15]
- 8004788: 4619 mov r1, r3
- 800478a: 6878 ldr r0, [r7, #4]
- 800478c: f7ff ff96 bl 80046bc <pb_encode_tag>
- 8004790: 4603 mov r3, r0
-}
- 8004792: 4618 mov r0, r3
- 8004794: 3710 adds r7, #16
- 8004796: 46bd mov sp, r7
- 8004798: bd80 pop {r7, pc}
- 800479a: bf00 nop
- 800479c: 08008bd8 .word 0x08008bd8
-
-080047a0 <pb_encode_string>:
-
-bool checkreturn pb_encode_string(pb_ostream_t *stream, const pb_byte_t *buffer, size_t size)
-{
- 80047a0: b590 push {r4, r7, lr}
- 80047a2: b085 sub sp, #20
- 80047a4: af00 add r7, sp, #0
- 80047a6: 60f8 str r0, [r7, #12]
- 80047a8: 60b9 str r1, [r7, #8]
- 80047aa: 607a str r2, [r7, #4]
- if (!pb_encode_varint(stream, (pb_uint64_t)size))
- 80047ac: 687b ldr r3, [r7, #4]
- 80047ae: f04f 0400 mov.w r4, #0
- 80047b2: 461a mov r2, r3
- 80047b4: 4623 mov r3, r4
- 80047b6: 68f8 ldr r0, [r7, #12]
- 80047b8: f7ff fea4 bl 8004504 <pb_encode_varint>
- 80047bc: 4603 mov r3, r0
- 80047be: f083 0301 eor.w r3, r3, #1
- 80047c2: b2db uxtb r3, r3
- 80047c4: 2b00 cmp r3, #0
- 80047c6: d001 beq.n 80047cc <pb_encode_string+0x2c>
- return false;
- 80047c8: 2300 movs r3, #0
- 80047ca: e005 b.n 80047d8 <pb_encode_string+0x38>
-
- return pb_write(stream, buffer, size);
- 80047cc: 687a ldr r2, [r7, #4]
- 80047ce: 68b9 ldr r1, [r7, #8]
- 80047d0: 68f8 ldr r0, [r7, #12]
- 80047d2: f7ff f9f3 bl 8003bbc <pb_write>
- 80047d6: 4603 mov r3, r0
-}
- 80047d8: 4618 mov r0, r3
- 80047da: 3714 adds r7, #20
- 80047dc: 46bd mov sp, r7
- 80047de: bd90 pop {r4, r7, pc}
-
-080047e0 <pb_encode_submessage>:
-
-bool checkreturn pb_encode_submessage(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct)
-{
- 80047e0: b590 push {r4, r7, lr}
- 80047e2: b08d sub sp, #52 ; 0x34
- 80047e4: af00 add r7, sp, #0
- 80047e6: 60f8 str r0, [r7, #12]
- 80047e8: 60b9 str r1, [r7, #8]
- 80047ea: 607a str r2, [r7, #4]
- /* First calculate the message size using a non-writing substream. */
- pb_ostream_t substream = PB_OSTREAM_SIZING;
- 80047ec: f107 0314 add.w r3, r7, #20
- 80047f0: 2200 movs r2, #0
- 80047f2: 601a str r2, [r3, #0]
- 80047f4: 605a str r2, [r3, #4]
- 80047f6: 609a str r2, [r3, #8]
- 80047f8: 60da str r2, [r3, #12]
- 80047fa: 611a str r2, [r3, #16]
- size_t size;
- bool status;
-
- if (!pb_encode(&substream, fields, src_struct))
- 80047fc: f107 0314 add.w r3, r7, #20
- 8004800: 687a ldr r2, [r7, #4]
- 8004802: 68b9 ldr r1, [r7, #8]
- 8004804: 4618 mov r0, r3
- 8004806: f7ff fdcc bl 80043a2 <pb_encode>
- 800480a: 4603 mov r3, r0
- 800480c: f083 0301 eor.w r3, r3, #1
- 8004810: b2db uxtb r3, r3
- 8004812: 2b00 cmp r3, #0
- 8004814: d004 beq.n 8004820 <pb_encode_submessage+0x40>
- {
-#ifndef PB_NO_ERRMSG
- stream->errmsg = substream.errmsg;
- 8004816: 6a7a ldr r2, [r7, #36] ; 0x24
- 8004818: 68fb ldr r3, [r7, #12]
- 800481a: 611a str r2, [r3, #16]
-#endif
- return false;
- 800481c: 2300 movs r3, #0
- 800481e: e064 b.n 80048ea <pb_encode_submessage+0x10a>
- }
-
- size = substream.bytes_written;
- 8004820: 6a3b ldr r3, [r7, #32]
- 8004822: 62fb str r3, [r7, #44] ; 0x2c
-
- if (!pb_encode_varint(stream, (pb_uint64_t)size))
- 8004824: 6afb ldr r3, [r7, #44] ; 0x2c
- 8004826: f04f 0400 mov.w r4, #0
- 800482a: 461a mov r2, r3
- 800482c: 4623 mov r3, r4
- 800482e: 68f8 ldr r0, [r7, #12]
- 8004830: f7ff fe68 bl 8004504 <pb_encode_varint>
- 8004834: 4603 mov r3, r0
- 8004836: f083 0301 eor.w r3, r3, #1
- 800483a: b2db uxtb r3, r3
- 800483c: 2b00 cmp r3, #0
- 800483e: d001 beq.n 8004844 <pb_encode_submessage+0x64>
- return false;
- 8004840: 2300 movs r3, #0
- 8004842: e052 b.n 80048ea <pb_encode_submessage+0x10a>
-
- if (stream->callback == NULL)
- 8004844: 68fb ldr r3, [r7, #12]
- 8004846: 681b ldr r3, [r3, #0]
- 8004848: 2b00 cmp r3, #0
- 800484a: d106 bne.n 800485a <pb_encode_submessage+0x7a>
- return pb_write(stream, NULL, size); /* Just sizing */
- 800484c: 6afa ldr r2, [r7, #44] ; 0x2c
- 800484e: 2100 movs r1, #0
- 8004850: 68f8 ldr r0, [r7, #12]
- 8004852: f7ff f9b3 bl 8003bbc <pb_write>
- 8004856: 4603 mov r3, r0
- 8004858: e047 b.n 80048ea <pb_encode_submessage+0x10a>
-
- if (stream->bytes_written + size > stream->max_size)
- 800485a: 68fb ldr r3, [r7, #12]
- 800485c: 68da ldr r2, [r3, #12]
- 800485e: 6afb ldr r3, [r7, #44] ; 0x2c
- 8004860: 441a add r2, r3
- 8004862: 68fb ldr r3, [r7, #12]
- 8004864: 689b ldr r3, [r3, #8]
- 8004866: 429a cmp r2, r3
- 8004868: d90b bls.n 8004882 <pb_encode_submessage+0xa2>
- PB_RETURN_ERROR(stream, "stream full");
- 800486a: 68fb ldr r3, [r7, #12]
- 800486c: 691b ldr r3, [r3, #16]
- 800486e: 2b00 cmp r3, #0
- 8004870: d002 beq.n 8004878 <pb_encode_submessage+0x98>
- 8004872: 68fb ldr r3, [r7, #12]
- 8004874: 691b ldr r3, [r3, #16]
- 8004876: e000 b.n 800487a <pb_encode_submessage+0x9a>
- 8004878: 4b1e ldr r3, [pc, #120] ; (80048f4 <pb_encode_submessage+0x114>)
- 800487a: 68fa ldr r2, [r7, #12]
- 800487c: 6113 str r3, [r2, #16]
- 800487e: 2300 movs r3, #0
- 8004880: e033 b.n 80048ea <pb_encode_submessage+0x10a>
-
- /* Use a substream to verify that a callback doesn't write more than
- * what it did the first time. */
- substream.callback = stream->callback;
- 8004882: 68fb ldr r3, [r7, #12]
- 8004884: 681b ldr r3, [r3, #0]
- 8004886: 617b str r3, [r7, #20]
- substream.state = stream->state;
- 8004888: 68fb ldr r3, [r7, #12]
- 800488a: 685b ldr r3, [r3, #4]
- 800488c: 61bb str r3, [r7, #24]
- substream.max_size = size;
- 800488e: 6afb ldr r3, [r7, #44] ; 0x2c
- 8004890: 61fb str r3, [r7, #28]
- substream.bytes_written = 0;
- 8004892: 2300 movs r3, #0
- 8004894: 623b str r3, [r7, #32]
-#ifndef PB_NO_ERRMSG
- substream.errmsg = NULL;
- 8004896: 2300 movs r3, #0
- 8004898: 627b str r3, [r7, #36] ; 0x24
-#endif
-
- status = pb_encode(&substream, fields, src_struct);
- 800489a: f107 0314 add.w r3, r7, #20
- 800489e: 687a ldr r2, [r7, #4]
- 80048a0: 68b9 ldr r1, [r7, #8]
- 80048a2: 4618 mov r0, r3
- 80048a4: f7ff fd7d bl 80043a2 <pb_encode>
- 80048a8: 4603 mov r3, r0
- 80048aa: f887 302b strb.w r3, [r7, #43] ; 0x2b
-
- stream->bytes_written += substream.bytes_written;
- 80048ae: 68fb ldr r3, [r7, #12]
- 80048b0: 68da ldr r2, [r3, #12]
- 80048b2: 6a3b ldr r3, [r7, #32]
- 80048b4: 441a add r2, r3
- 80048b6: 68fb ldr r3, [r7, #12]
- 80048b8: 60da str r2, [r3, #12]
- stream->state = substream.state;
- 80048ba: 69ba ldr r2, [r7, #24]
- 80048bc: 68fb ldr r3, [r7, #12]
- 80048be: 605a str r2, [r3, #4]
-#ifndef PB_NO_ERRMSG
- stream->errmsg = substream.errmsg;
- 80048c0: 6a7a ldr r2, [r7, #36] ; 0x24
- 80048c2: 68fb ldr r3, [r7, #12]
- 80048c4: 611a str r2, [r3, #16]
-#endif
-
- if (substream.bytes_written != size)
- 80048c6: 6a3b ldr r3, [r7, #32]
- 80048c8: 6afa ldr r2, [r7, #44] ; 0x2c
- 80048ca: 429a cmp r2, r3
- 80048cc: d00b beq.n 80048e6 <pb_encode_submessage+0x106>
- PB_RETURN_ERROR(stream, "submsg size changed");
- 80048ce: 68fb ldr r3, [r7, #12]
- 80048d0: 691b ldr r3, [r3, #16]
- 80048d2: 2b00 cmp r3, #0
- 80048d4: d002 beq.n 80048dc <pb_encode_submessage+0xfc>
- 80048d6: 68fb ldr r3, [r7, #12]
- 80048d8: 691b ldr r3, [r3, #16]
- 80048da: e000 b.n 80048de <pb_encode_submessage+0xfe>
- 80048dc: 4b06 ldr r3, [pc, #24] ; (80048f8 <pb_encode_submessage+0x118>)
- 80048de: 68fa ldr r2, [r7, #12]
- 80048e0: 6113 str r3, [r2, #16]
- 80048e2: 2300 movs r3, #0
- 80048e4: e001 b.n 80048ea <pb_encode_submessage+0x10a>
-
- return status;
- 80048e6: f897 302b ldrb.w r3, [r7, #43] ; 0x2b
-}
- 80048ea: 4618 mov r0, r3
- 80048ec: 3734 adds r7, #52 ; 0x34
- 80048ee: 46bd mov sp, r7
- 80048f0: bd90 pop {r4, r7, pc}
- 80048f2: bf00 nop
- 80048f4: 08008ba0 .word 0x08008ba0
- 80048f8: 08008c28 .word 0x08008c28
-
-080048fc <pb_enc_bool>:
-
-/* Field encoders */
-
-static bool checkreturn pb_enc_bool(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 80048fc: b590 push {r4, r7, lr}
- 80048fe: b085 sub sp, #20
- 8004900: af00 add r7, sp, #0
- 8004902: 6078 str r0, [r7, #4]
- 8004904: 6039 str r1, [r7, #0]
- uint32_t value = safe_read_bool(field->pData) ? 1 : 0;
- 8004906: 683b ldr r3, [r7, #0]
- 8004908: 69db ldr r3, [r3, #28]
- 800490a: 4618 mov r0, r3
- 800490c: f7ff f99e bl 8003c4c <safe_read_bool>
- 8004910: 4603 mov r3, r0
- 8004912: 60fb str r3, [r7, #12]
- PB_UNUSED(field);
- return pb_encode_varint(stream, value);
- 8004914: 68fb ldr r3, [r7, #12]
- 8004916: f04f 0400 mov.w r4, #0
- 800491a: 461a mov r2, r3
- 800491c: 4623 mov r3, r4
- 800491e: 6878 ldr r0, [r7, #4]
- 8004920: f7ff fdf0 bl 8004504 <pb_encode_varint>
- 8004924: 4603 mov r3, r0
-}
- 8004926: 4618 mov r0, r3
- 8004928: 3714 adds r7, #20
- 800492a: 46bd mov sp, r7
- 800492c: bd90 pop {r4, r7, pc}
- ...
-
-08004930 <pb_enc_varint>:
-
-static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 8004930: b590 push {r4, r7, lr}
- 8004932: b087 sub sp, #28
- 8004934: af00 add r7, sp, #0
- 8004936: 6078 str r0, [r7, #4]
- 8004938: 6039 str r1, [r7, #0]
- if (PB_LTYPE(field->type) == PB_LTYPE_UVARINT)
- 800493a: 683b ldr r3, [r7, #0]
- 800493c: 7d9b ldrb r3, [r3, #22]
- 800493e: f003 030f and.w r3, r3, #15
- 8004942: 2b02 cmp r3, #2
- 8004944: d149 bne.n 80049da <pb_enc_varint+0xaa>
- {
- /* Perform unsigned integer extension */
- pb_uint64_t value = 0;
- 8004946: f04f 0300 mov.w r3, #0
- 800494a: f04f 0400 mov.w r4, #0
- 800494e: e9c7 3404 strd r3, r4, [r7, #16]
-
- if (field->data_size == sizeof(uint_least8_t))
- 8004952: 683b ldr r3, [r7, #0]
- 8004954: 8a5b ldrh r3, [r3, #18]
- 8004956: 2b01 cmp r3, #1
- 8004958: d108 bne.n 800496c <pb_enc_varint+0x3c>
- value = *(const uint_least8_t*)field->pData;
- 800495a: 683b ldr r3, [r7, #0]
- 800495c: 69db ldr r3, [r3, #28]
- 800495e: 781b ldrb r3, [r3, #0]
- 8004960: b2db uxtb r3, r3
- 8004962: f04f 0400 mov.w r4, #0
- 8004966: e9c7 3404 strd r3, r4, [r7, #16]
- 800496a: e02f b.n 80049cc <pb_enc_varint+0x9c>
- else if (field->data_size == sizeof(uint_least16_t))
- 800496c: 683b ldr r3, [r7, #0]
- 800496e: 8a5b ldrh r3, [r3, #18]
- 8004970: 2b02 cmp r3, #2
- 8004972: d108 bne.n 8004986 <pb_enc_varint+0x56>
- value = *(const uint_least16_t*)field->pData;
- 8004974: 683b ldr r3, [r7, #0]
- 8004976: 69db ldr r3, [r3, #28]
- 8004978: 881b ldrh r3, [r3, #0]
- 800497a: b29b uxth r3, r3
- 800497c: f04f 0400 mov.w r4, #0
- 8004980: e9c7 3404 strd r3, r4, [r7, #16]
- 8004984: e022 b.n 80049cc <pb_enc_varint+0x9c>
- else if (field->data_size == sizeof(uint32_t))
- 8004986: 683b ldr r3, [r7, #0]
- 8004988: 8a5b ldrh r3, [r3, #18]
- 800498a: 2b04 cmp r3, #4
- 800498c: d107 bne.n 800499e <pb_enc_varint+0x6e>
- value = *(const uint32_t*)field->pData;
- 800498e: 683b ldr r3, [r7, #0]
- 8004990: 69db ldr r3, [r3, #28]
- 8004992: 681b ldr r3, [r3, #0]
- 8004994: f04f 0400 mov.w r4, #0
- 8004998: e9c7 3404 strd r3, r4, [r7, #16]
- 800499c: e016 b.n 80049cc <pb_enc_varint+0x9c>
- else if (field->data_size == sizeof(pb_uint64_t))
- 800499e: 683b ldr r3, [r7, #0]
- 80049a0: 8a5b ldrh r3, [r3, #18]
- 80049a2: 2b08 cmp r3, #8
- 80049a4: d106 bne.n 80049b4 <pb_enc_varint+0x84>
- value = *(const pb_uint64_t*)field->pData;
- 80049a6: 683b ldr r3, [r7, #0]
- 80049a8: 69db ldr r3, [r3, #28]
- 80049aa: e9d3 3400 ldrd r3, r4, [r3]
- 80049ae: e9c7 3404 strd r3, r4, [r7, #16]
- 80049b2: e00b b.n 80049cc <pb_enc_varint+0x9c>
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
- 80049b4: 687b ldr r3, [r7, #4]
- 80049b6: 691b ldr r3, [r3, #16]
- 80049b8: 2b00 cmp r3, #0
- 80049ba: d002 beq.n 80049c2 <pb_enc_varint+0x92>
- 80049bc: 687b ldr r3, [r7, #4]
- 80049be: 691b ldr r3, [r3, #16]
- 80049c0: e000 b.n 80049c4 <pb_enc_varint+0x94>
- 80049c2: 4b35 ldr r3, [pc, #212] ; (8004a98 <pb_enc_varint+0x168>)
- 80049c4: 687a ldr r2, [r7, #4]
- 80049c6: 6113 str r3, [r2, #16]
- 80049c8: 2300 movs r3, #0
- 80049ca: e060 b.n 8004a8e <pb_enc_varint+0x15e>
-
- return pb_encode_varint(stream, value);
- 80049cc: e9d7 2304 ldrd r2, r3, [r7, #16]
- 80049d0: 6878 ldr r0, [r7, #4]
- 80049d2: f7ff fd97 bl 8004504 <pb_encode_varint>
- 80049d6: 4603 mov r3, r0
- 80049d8: e059 b.n 8004a8e <pb_enc_varint+0x15e>
- }
- else
- {
- /* Perform signed integer extension */
- pb_int64_t value = 0;
- 80049da: f04f 0300 mov.w r3, #0
- 80049de: f04f 0400 mov.w r4, #0
- 80049e2: e9c7 3402 strd r3, r4, [r7, #8]
-
- if (field->data_size == sizeof(int_least8_t))
- 80049e6: 683b ldr r3, [r7, #0]
- 80049e8: 8a5b ldrh r3, [r3, #18]
- 80049ea: 2b01 cmp r3, #1
- 80049ec: d109 bne.n 8004a02 <pb_enc_varint+0xd2>
- value = *(const int_least8_t*)field->pData;
- 80049ee: 683b ldr r3, [r7, #0]
- 80049f0: 69db ldr r3, [r3, #28]
- 80049f2: f993 3000 ldrsb.w r3, [r3]
- 80049f6: b25b sxtb r3, r3
- 80049f8: ea4f 74e3 mov.w r4, r3, asr #31
- 80049fc: e9c7 3402 strd r3, r4, [r7, #8]
- 8004a00: e030 b.n 8004a64 <pb_enc_varint+0x134>
- else if (field->data_size == sizeof(int_least16_t))
- 8004a02: 683b ldr r3, [r7, #0]
- 8004a04: 8a5b ldrh r3, [r3, #18]
- 8004a06: 2b02 cmp r3, #2
- 8004a08: d109 bne.n 8004a1e <pb_enc_varint+0xee>
- value = *(const int_least16_t*)field->pData;
- 8004a0a: 683b ldr r3, [r7, #0]
- 8004a0c: 69db ldr r3, [r3, #28]
- 8004a0e: f9b3 3000 ldrsh.w r3, [r3]
- 8004a12: b21b sxth r3, r3
- 8004a14: ea4f 74e3 mov.w r4, r3, asr #31
- 8004a18: e9c7 3402 strd r3, r4, [r7, #8]
- 8004a1c: e022 b.n 8004a64 <pb_enc_varint+0x134>
- else if (field->data_size == sizeof(int32_t))
- 8004a1e: 683b ldr r3, [r7, #0]
- 8004a20: 8a5b ldrh r3, [r3, #18]
- 8004a22: 2b04 cmp r3, #4
- 8004a24: d107 bne.n 8004a36 <pb_enc_varint+0x106>
- value = *(const int32_t*)field->pData;
- 8004a26: 683b ldr r3, [r7, #0]
- 8004a28: 69db ldr r3, [r3, #28]
- 8004a2a: 681b ldr r3, [r3, #0]
- 8004a2c: ea4f 74e3 mov.w r4, r3, asr #31
- 8004a30: e9c7 3402 strd r3, r4, [r7, #8]
- 8004a34: e016 b.n 8004a64 <pb_enc_varint+0x134>
- else if (field->data_size == sizeof(pb_int64_t))
- 8004a36: 683b ldr r3, [r7, #0]
- 8004a38: 8a5b ldrh r3, [r3, #18]
- 8004a3a: 2b08 cmp r3, #8
- 8004a3c: d106 bne.n 8004a4c <pb_enc_varint+0x11c>
- value = *(const pb_int64_t*)field->pData;
- 8004a3e: 683b ldr r3, [r7, #0]
- 8004a40: 69db ldr r3, [r3, #28]
- 8004a42: e9d3 3400 ldrd r3, r4, [r3]
- 8004a46: e9c7 3402 strd r3, r4, [r7, #8]
- 8004a4a: e00b b.n 8004a64 <pb_enc_varint+0x134>
- else
- PB_RETURN_ERROR(stream, "invalid data_size");
- 8004a4c: 687b ldr r3, [r7, #4]
- 8004a4e: 691b ldr r3, [r3, #16]
- 8004a50: 2b00 cmp r3, #0
- 8004a52: d002 beq.n 8004a5a <pb_enc_varint+0x12a>
- 8004a54: 687b ldr r3, [r7, #4]
- 8004a56: 691b ldr r3, [r3, #16]
- 8004a58: e000 b.n 8004a5c <pb_enc_varint+0x12c>
- 8004a5a: 4b0f ldr r3, [pc, #60] ; (8004a98 <pb_enc_varint+0x168>)
- 8004a5c: 687a ldr r2, [r7, #4]
- 8004a5e: 6113 str r3, [r2, #16]
- 8004a60: 2300 movs r3, #0
- 8004a62: e014 b.n 8004a8e <pb_enc_varint+0x15e>
-
- if (PB_LTYPE(field->type) == PB_LTYPE_SVARINT)
- 8004a64: 683b ldr r3, [r7, #0]
- 8004a66: 7d9b ldrb r3, [r3, #22]
- 8004a68: f003 030f and.w r3, r3, #15
- 8004a6c: 2b03 cmp r3, #3
- 8004a6e: d106 bne.n 8004a7e <pb_enc_varint+0x14e>
- return pb_encode_svarint(stream, value);
- 8004a70: e9d7 2302 ldrd r2, r3, [r7, #8]
- 8004a74: 6878 ldr r0, [r7, #4]
- 8004a76: f7ff fd6f bl 8004558 <pb_encode_svarint>
- 8004a7a: 4603 mov r3, r0
- 8004a7c: e007 b.n 8004a8e <pb_enc_varint+0x15e>
-#ifdef PB_WITHOUT_64BIT
- else if (value < 0)
- return pb_encode_varint_32(stream, (uint32_t)value, (uint32_t)-1);
-#endif
- else
- return pb_encode_varint(stream, (pb_uint64_t)value);
- 8004a7e: e9d7 3402 ldrd r3, r4, [r7, #8]
- 8004a82: 461a mov r2, r3
- 8004a84: 4623 mov r3, r4
- 8004a86: 6878 ldr r0, [r7, #4]
- 8004a88: f7ff fd3c bl 8004504 <pb_encode_varint>
- 8004a8c: 4603 mov r3, r0
-
- }
-}
- 8004a8e: 4618 mov r0, r3
- 8004a90: 371c adds r7, #28
- 8004a92: 46bd mov sp, r7
- 8004a94: bd90 pop {r4, r7, pc}
- 8004a96: bf00 nop
- 8004a98: 08008c3c .word 0x08008c3c
-
-08004a9c <pb_enc_fixed>:
-
-static bool checkreturn pb_enc_fixed(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 8004a9c: b580 push {r7, lr}
- 8004a9e: b082 sub sp, #8
- 8004aa0: af00 add r7, sp, #0
- 8004aa2: 6078 str r0, [r7, #4]
- 8004aa4: 6039 str r1, [r7, #0]
- {
- return pb_encode_float_as_double(stream, *(float*)field->pData);
- }
-#endif
-
- if (field->data_size == sizeof(uint32_t))
- 8004aa6: 683b ldr r3, [r7, #0]
- 8004aa8: 8a5b ldrh r3, [r3, #18]
- 8004aaa: 2b04 cmp r3, #4
- 8004aac: d107 bne.n 8004abe <pb_enc_fixed+0x22>
- {
- return pb_encode_fixed32(stream, field->pData);
- 8004aae: 683b ldr r3, [r7, #0]
- 8004ab0: 69db ldr r3, [r3, #28]
- 8004ab2: 4619 mov r1, r3
- 8004ab4: 6878 ldr r0, [r7, #4]
- 8004ab6: f7ff fd7a bl 80045ae <pb_encode_fixed32>
- 8004aba: 4603 mov r3, r0
- 8004abc: e016 b.n 8004aec <pb_enc_fixed+0x50>
- }
-#ifndef PB_WITHOUT_64BIT
- else if (field->data_size == sizeof(uint64_t))
- 8004abe: 683b ldr r3, [r7, #0]
- 8004ac0: 8a5b ldrh r3, [r3, #18]
- 8004ac2: 2b08 cmp r3, #8
- 8004ac4: d107 bne.n 8004ad6 <pb_enc_fixed+0x3a>
- {
- return pb_encode_fixed64(stream, field->pData);
- 8004ac6: 683b ldr r3, [r7, #0]
- 8004ac8: 69db ldr r3, [r3, #28]
- 8004aca: 4619 mov r1, r3
- 8004acc: 6878 ldr r0, [r7, #4]
- 8004ace: f7ff fd91 bl 80045f4 <pb_encode_fixed64>
- 8004ad2: 4603 mov r3, r0
- 8004ad4: e00a b.n 8004aec <pb_enc_fixed+0x50>
- }
-#endif
- else
- {
- PB_RETURN_ERROR(stream, "invalid data_size");
- 8004ad6: 687b ldr r3, [r7, #4]
- 8004ad8: 691b ldr r3, [r3, #16]
- 8004ada: 2b00 cmp r3, #0
- 8004adc: d002 beq.n 8004ae4 <pb_enc_fixed+0x48>
- 8004ade: 687b ldr r3, [r7, #4]
- 8004ae0: 691b ldr r3, [r3, #16]
- 8004ae2: e000 b.n 8004ae6 <pb_enc_fixed+0x4a>
- 8004ae4: 4b03 ldr r3, [pc, #12] ; (8004af4 <pb_enc_fixed+0x58>)
- 8004ae6: 687a ldr r2, [r7, #4]
- 8004ae8: 6113 str r3, [r2, #16]
- 8004aea: 2300 movs r3, #0
- }
-}
- 8004aec: 4618 mov r0, r3
- 8004aee: 3708 adds r7, #8
- 8004af0: 46bd mov sp, r7
- 8004af2: bd80 pop {r7, pc}
- 8004af4: 08008c3c .word 0x08008c3c
-
-08004af8 <pb_enc_bytes>:
-
-static bool checkreturn pb_enc_bytes(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 8004af8: b580 push {r7, lr}
- 8004afa: b084 sub sp, #16
- 8004afc: af00 add r7, sp, #0
- 8004afe: 6078 str r0, [r7, #4]
- 8004b00: 6039 str r1, [r7, #0]
- const pb_bytes_array_t *bytes = NULL;
- 8004b02: 2300 movs r3, #0
- 8004b04: 60fb str r3, [r7, #12]
-
- bytes = (const pb_bytes_array_t*)field->pData;
- 8004b06: 683b ldr r3, [r7, #0]
- 8004b08: 69db ldr r3, [r3, #28]
- 8004b0a: 60fb str r3, [r7, #12]
-
- if (bytes == NULL)
- 8004b0c: 68fb ldr r3, [r7, #12]
- 8004b0e: 2b00 cmp r3, #0
- 8004b10: d106 bne.n 8004b20 <pb_enc_bytes+0x28>
- {
- /* Treat null pointer as an empty bytes field */
- return pb_encode_string(stream, NULL, 0);
- 8004b12: 2200 movs r2, #0
- 8004b14: 2100 movs r1, #0
- 8004b16: 6878 ldr r0, [r7, #4]
- 8004b18: f7ff fe42 bl 80047a0 <pb_encode_string>
- 8004b1c: 4603 mov r3, r0
- 8004b1e: e021 b.n 8004b64 <pb_enc_bytes+0x6c>
- }
-
- if (PB_ATYPE(field->type) == PB_ATYPE_STATIC &&
- 8004b20: 683b ldr r3, [r7, #0]
- 8004b22: 7d9b ldrb r3, [r3, #22]
- 8004b24: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8004b28: 2b00 cmp r3, #0
- 8004b2a: d112 bne.n 8004b52 <pb_enc_bytes+0x5a>
- PB_BYTES_ARRAY_T_ALLOCSIZE(bytes->size) > field->data_size)
- 8004b2c: 68fb ldr r3, [r7, #12]
- 8004b2e: 881b ldrh r3, [r3, #0]
- 8004b30: 3302 adds r3, #2
- 8004b32: 683a ldr r2, [r7, #0]
- 8004b34: 8a52 ldrh r2, [r2, #18]
- if (PB_ATYPE(field->type) == PB_ATYPE_STATIC &&
- 8004b36: 4293 cmp r3, r2
- 8004b38: d90b bls.n 8004b52 <pb_enc_bytes+0x5a>
- {
- PB_RETURN_ERROR(stream, "bytes size exceeded");
- 8004b3a: 687b ldr r3, [r7, #4]
- 8004b3c: 691b ldr r3, [r3, #16]
- 8004b3e: 2b00 cmp r3, #0
- 8004b40: d002 beq.n 8004b48 <pb_enc_bytes+0x50>
- 8004b42: 687b ldr r3, [r7, #4]
- 8004b44: 691b ldr r3, [r3, #16]
- 8004b46: e000 b.n 8004b4a <pb_enc_bytes+0x52>
- 8004b48: 4b08 ldr r3, [pc, #32] ; (8004b6c <pb_enc_bytes+0x74>)
- 8004b4a: 687a ldr r2, [r7, #4]
- 8004b4c: 6113 str r3, [r2, #16]
- 8004b4e: 2300 movs r3, #0
- 8004b50: e008 b.n 8004b64 <pb_enc_bytes+0x6c>
- }
-
- return pb_encode_string(stream, bytes->bytes, (size_t)bytes->size);
- 8004b52: 68fb ldr r3, [r7, #12]
- 8004b54: 1c99 adds r1, r3, #2
- 8004b56: 68fb ldr r3, [r7, #12]
- 8004b58: 881b ldrh r3, [r3, #0]
- 8004b5a: 461a mov r2, r3
- 8004b5c: 6878 ldr r0, [r7, #4]
- 8004b5e: f7ff fe1f bl 80047a0 <pb_encode_string>
- 8004b62: 4603 mov r3, r0
-}
- 8004b64: 4618 mov r0, r3
- 8004b66: 3710 adds r7, #16
- 8004b68: 46bd mov sp, r7
- 8004b6a: bd80 pop {r7, pc}
- 8004b6c: 08008c50 .word 0x08008c50
-
-08004b70 <pb_enc_string>:
-
-static bool checkreturn pb_enc_string(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 8004b70: b580 push {r7, lr}
- 8004b72: b086 sub sp, #24
- 8004b74: af00 add r7, sp, #0
- 8004b76: 6078 str r0, [r7, #4]
- 8004b78: 6039 str r1, [r7, #0]
- size_t size = 0;
- 8004b7a: 2300 movs r3, #0
- 8004b7c: 617b str r3, [r7, #20]
- size_t max_size = (size_t)field->data_size;
- 8004b7e: 683b ldr r3, [r7, #0]
- 8004b80: 8a5b ldrh r3, [r3, #18]
- 8004b82: 613b str r3, [r7, #16]
- const char *str = (const char*)field->pData;
- 8004b84: 683b ldr r3, [r7, #0]
- 8004b86: 69db ldr r3, [r3, #28]
- 8004b88: 60bb str r3, [r7, #8]
-
- if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
- 8004b8a: 683b ldr r3, [r7, #0]
- 8004b8c: 7d9b ldrb r3, [r3, #22]
- 8004b8e: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 8004b92: 2b80 cmp r3, #128 ; 0x80
- 8004b94: d103 bne.n 8004b9e <pb_enc_string+0x2e>
- {
- max_size = (size_t)-1;
- 8004b96: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff
- 8004b9a: 613b str r3, [r7, #16]
- 8004b9c: e011 b.n 8004bc2 <pb_enc_string+0x52>
- /* pb_dec_string() assumes string fields end with a null
- * terminator when the type isn't PB_ATYPE_POINTER, so we
- * shouldn't allow more than max-1 bytes to be written to
- * allow space for the null terminator.
- */
- if (max_size == 0)
- 8004b9e: 693b ldr r3, [r7, #16]
- 8004ba0: 2b00 cmp r3, #0
- 8004ba2: d10b bne.n 8004bbc <pb_enc_string+0x4c>
- PB_RETURN_ERROR(stream, "zero-length string");
- 8004ba4: 687b ldr r3, [r7, #4]
- 8004ba6: 691b ldr r3, [r3, #16]
- 8004ba8: 2b00 cmp r3, #0
- 8004baa: d002 beq.n 8004bb2 <pb_enc_string+0x42>
- 8004bac: 687b ldr r3, [r7, #4]
- 8004bae: 691b ldr r3, [r3, #16]
- 8004bb0: e000 b.n 8004bb4 <pb_enc_string+0x44>
- 8004bb2: 4b1c ldr r3, [pc, #112] ; (8004c24 <pb_enc_string+0xb4>)
- 8004bb4: 687a ldr r2, [r7, #4]
- 8004bb6: 6113 str r3, [r2, #16]
- 8004bb8: 2300 movs r3, #0
- 8004bba: e02f b.n 8004c1c <pb_enc_string+0xac>
-
- max_size -= 1;
- 8004bbc: 693b ldr r3, [r7, #16]
- 8004bbe: 3b01 subs r3, #1
- 8004bc0: 613b str r3, [r7, #16]
- }
-
-
- if (str == NULL)
- 8004bc2: 68bb ldr r3, [r7, #8]
- 8004bc4: 2b00 cmp r3, #0
- 8004bc6: d102 bne.n 8004bce <pb_enc_string+0x5e>
- {
- size = 0; /* Treat null pointer as an empty string */
- 8004bc8: 2300 movs r3, #0
- 8004bca: 617b str r3, [r7, #20]
- 8004bcc: e020 b.n 8004c10 <pb_enc_string+0xa0>
- }
- else
- {
- const char *p = str;
- 8004bce: 68bb ldr r3, [r7, #8]
- 8004bd0: 60fb str r3, [r7, #12]
-
- /* strnlen() is not always available, so just use a loop */
- while (size < max_size && *p != '\0')
- 8004bd2: e005 b.n 8004be0 <pb_enc_string+0x70>
- {
- size++;
- 8004bd4: 697b ldr r3, [r7, #20]
- 8004bd6: 3301 adds r3, #1
- 8004bd8: 617b str r3, [r7, #20]
- p++;
- 8004bda: 68fb ldr r3, [r7, #12]
- 8004bdc: 3301 adds r3, #1
- 8004bde: 60fb str r3, [r7, #12]
- while (size < max_size && *p != '\0')
- 8004be0: 697a ldr r2, [r7, #20]
- 8004be2: 693b ldr r3, [r7, #16]
- 8004be4: 429a cmp r2, r3
- 8004be6: d203 bcs.n 8004bf0 <pb_enc_string+0x80>
- 8004be8: 68fb ldr r3, [r7, #12]
- 8004bea: 781b ldrb r3, [r3, #0]
- 8004bec: 2b00 cmp r3, #0
- 8004bee: d1f1 bne.n 8004bd4 <pb_enc_string+0x64>
- }
-
- if (*p != '\0')
- 8004bf0: 68fb ldr r3, [r7, #12]
- 8004bf2: 781b ldrb r3, [r3, #0]
- 8004bf4: 2b00 cmp r3, #0
- 8004bf6: d00b beq.n 8004c10 <pb_enc_string+0xa0>
- {
- PB_RETURN_ERROR(stream, "unterminated string");
- 8004bf8: 687b ldr r3, [r7, #4]
- 8004bfa: 691b ldr r3, [r3, #16]
- 8004bfc: 2b00 cmp r3, #0
- 8004bfe: d002 beq.n 8004c06 <pb_enc_string+0x96>
- 8004c00: 687b ldr r3, [r7, #4]
- 8004c02: 691b ldr r3, [r3, #16]
- 8004c04: e000 b.n 8004c08 <pb_enc_string+0x98>
- 8004c06: 4b08 ldr r3, [pc, #32] ; (8004c28 <pb_enc_string+0xb8>)
- 8004c08: 687a ldr r2, [r7, #4]
- 8004c0a: 6113 str r3, [r2, #16]
- 8004c0c: 2300 movs r3, #0
- 8004c0e: e005 b.n 8004c1c <pb_enc_string+0xac>
-#ifdef PB_VALIDATE_UTF8
- if (!pb_validate_utf8(str))
- PB_RETURN_ERROR(stream, "invalid utf8");
-#endif
-
- return pb_encode_string(stream, (const pb_byte_t*)str, size);
- 8004c10: 697a ldr r2, [r7, #20]
- 8004c12: 68b9 ldr r1, [r7, #8]
- 8004c14: 6878 ldr r0, [r7, #4]
- 8004c16: f7ff fdc3 bl 80047a0 <pb_encode_string>
- 8004c1a: 4603 mov r3, r0
-}
- 8004c1c: 4618 mov r0, r3
- 8004c1e: 3718 adds r7, #24
- 8004c20: 46bd mov sp, r7
- 8004c22: bd80 pop {r7, pc}
- 8004c24: 08008c64 .word 0x08008c64
- 8004c28: 08008c78 .word 0x08008c78
-
-08004c2c <pb_enc_submessage>:
-
-static bool checkreturn pb_enc_submessage(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 8004c2c: b580 push {r7, lr}
- 8004c2e: b084 sub sp, #16
- 8004c30: af00 add r7, sp, #0
- 8004c32: 6078 str r0, [r7, #4]
- 8004c34: 6039 str r1, [r7, #0]
- if (field->submsg_desc == NULL)
- 8004c36: 683b ldr r3, [r7, #0]
- 8004c38: 6a5b ldr r3, [r3, #36] ; 0x24
- 8004c3a: 2b00 cmp r3, #0
- 8004c3c: d10b bne.n 8004c56 <pb_enc_submessage+0x2a>
- PB_RETURN_ERROR(stream, "invalid field descriptor");
- 8004c3e: 687b ldr r3, [r7, #4]
- 8004c40: 691b ldr r3, [r3, #16]
- 8004c42: 2b00 cmp r3, #0
- 8004c44: d002 beq.n 8004c4c <pb_enc_submessage+0x20>
- 8004c46: 687b ldr r3, [r7, #4]
- 8004c48: 691b ldr r3, [r3, #16]
- 8004c4a: e000 b.n 8004c4e <pb_enc_submessage+0x22>
- 8004c4c: 4b19 ldr r3, [pc, #100] ; (8004cb4 <pb_enc_submessage+0x88>)
- 8004c4e: 687a ldr r2, [r7, #4]
- 8004c50: 6113 str r3, [r2, #16]
- 8004c52: 2300 movs r3, #0
- 8004c54: e029 b.n 8004caa <pb_enc_submessage+0x7e>
-
- if (PB_LTYPE(field->type) == PB_LTYPE_SUBMSG_W_CB && field->pSize != NULL)
- 8004c56: 683b ldr r3, [r7, #0]
- 8004c58: 7d9b ldrb r3, [r3, #22]
- 8004c5a: f003 030f and.w r3, r3, #15
- 8004c5e: 2b09 cmp r3, #9
- 8004c60: d11a bne.n 8004c98 <pb_enc_submessage+0x6c>
- 8004c62: 683b ldr r3, [r7, #0]
- 8004c64: 6a1b ldr r3, [r3, #32]
- 8004c66: 2b00 cmp r3, #0
- 8004c68: d016 beq.n 8004c98 <pb_enc_submessage+0x6c>
- {
- /* Message callback is stored right before pSize. */
- pb_callback_t *callback = (pb_callback_t*)field->pSize - 1;
- 8004c6a: 683b ldr r3, [r7, #0]
- 8004c6c: 6a1b ldr r3, [r3, #32]
- 8004c6e: 3b08 subs r3, #8
- 8004c70: 60fb str r3, [r7, #12]
- if (callback->funcs.encode)
- 8004c72: 68fb ldr r3, [r7, #12]
- 8004c74: 681b ldr r3, [r3, #0]
- 8004c76: 2b00 cmp r3, #0
- 8004c78: d00e beq.n 8004c98 <pb_enc_submessage+0x6c>
- {
- if (!callback->funcs.encode(stream, field, &callback->arg))
- 8004c7a: 68fb ldr r3, [r7, #12]
- 8004c7c: 681b ldr r3, [r3, #0]
- 8004c7e: 68fa ldr r2, [r7, #12]
- 8004c80: 3204 adds r2, #4
- 8004c82: 6839 ldr r1, [r7, #0]
- 8004c84: 6878 ldr r0, [r7, #4]
- 8004c86: 4798 blx r3
- 8004c88: 4603 mov r3, r0
- 8004c8a: f083 0301 eor.w r3, r3, #1
- 8004c8e: b2db uxtb r3, r3
- 8004c90: 2b00 cmp r3, #0
- 8004c92: d001 beq.n 8004c98 <pb_enc_submessage+0x6c>
- return false;
- 8004c94: 2300 movs r3, #0
- 8004c96: e008 b.n 8004caa <pb_enc_submessage+0x7e>
- }
- }
-
- return pb_encode_submessage(stream, field->submsg_desc, field->pData);
- 8004c98: 683b ldr r3, [r7, #0]
- 8004c9a: 6a59 ldr r1, [r3, #36] ; 0x24
- 8004c9c: 683b ldr r3, [r7, #0]
- 8004c9e: 69db ldr r3, [r3, #28]
- 8004ca0: 461a mov r2, r3
- 8004ca2: 6878 ldr r0, [r7, #4]
- 8004ca4: f7ff fd9c bl 80047e0 <pb_encode_submessage>
- 8004ca8: 4603 mov r3, r0
-}
- 8004caa: 4618 mov r0, r3
- 8004cac: 3710 adds r7, #16
- 8004cae: 46bd mov sp, r7
- 8004cb0: bd80 pop {r7, pc}
- 8004cb2: bf00 nop
- 8004cb4: 08008c8c .word 0x08008c8c
-
-08004cb8 <pb_enc_fixed_length_bytes>:
-
-static bool checkreturn pb_enc_fixed_length_bytes(pb_ostream_t *stream, const pb_field_iter_t *field)
-{
- 8004cb8: b580 push {r7, lr}
- 8004cba: b082 sub sp, #8
- 8004cbc: af00 add r7, sp, #0
- 8004cbe: 6078 str r0, [r7, #4]
- 8004cc0: 6039 str r1, [r7, #0]
- return pb_encode_string(stream, (const pb_byte_t*)field->pData, (size_t)field->data_size);
- 8004cc2: 683b ldr r3, [r7, #0]
- 8004cc4: 69d9 ldr r1, [r3, #28]
- 8004cc6: 683b ldr r3, [r7, #0]
- 8004cc8: 8a5b ldrh r3, [r3, #18]
- 8004cca: 461a mov r2, r3
- 8004ccc: 6878 ldr r0, [r7, #4]
- 8004cce: f7ff fd67 bl 80047a0 <pb_encode_string>
- 8004cd2: 4603 mov r3, r0
-}
- 8004cd4: 4618 mov r0, r3
- 8004cd6: 3708 adds r7, #8
- 8004cd8: 46bd mov sp, r7
- 8004cda: bd80 pop {r7, pc}
-
-08004cdc <HAL_MspInit>:
-void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
- /**
- * Initializes the Global MSP.
- */
-void HAL_MspInit(void)
-{
- 8004cdc: b480 push {r7}
- 8004cde: b083 sub sp, #12
- 8004ce0: af00 add r7, sp, #0
- /* USER CODE BEGIN MspInit 0 */
-
- /* USER CODE END MspInit 0 */
-
- __HAL_RCC_PWR_CLK_ENABLE();
- 8004ce2: 4b0f ldr r3, [pc, #60] ; (8004d20 <HAL_MspInit+0x44>)
- 8004ce4: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004ce6: 4a0e ldr r2, [pc, #56] ; (8004d20 <HAL_MspInit+0x44>)
- 8004ce8: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
- 8004cec: 6413 str r3, [r2, #64] ; 0x40
- 8004cee: 4b0c ldr r3, [pc, #48] ; (8004d20 <HAL_MspInit+0x44>)
- 8004cf0: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004cf2: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
- 8004cf6: 607b str r3, [r7, #4]
- 8004cf8: 687b ldr r3, [r7, #4]
- __HAL_RCC_SYSCFG_CLK_ENABLE();
- 8004cfa: 4b09 ldr r3, [pc, #36] ; (8004d20 <HAL_MspInit+0x44>)
- 8004cfc: 6c5b ldr r3, [r3, #68] ; 0x44
- 8004cfe: 4a08 ldr r2, [pc, #32] ; (8004d20 <HAL_MspInit+0x44>)
- 8004d00: f443 4380 orr.w r3, r3, #16384 ; 0x4000
- 8004d04: 6453 str r3, [r2, #68] ; 0x44
- 8004d06: 4b06 ldr r3, [pc, #24] ; (8004d20 <HAL_MspInit+0x44>)
- 8004d08: 6c5b ldr r3, [r3, #68] ; 0x44
- 8004d0a: f403 4380 and.w r3, r3, #16384 ; 0x4000
- 8004d0e: 603b str r3, [r7, #0]
- 8004d10: 683b ldr r3, [r7, #0]
- /* System interrupt init*/
-
- /* USER CODE BEGIN MspInit 1 */
-
- /* USER CODE END MspInit 1 */
-}
- 8004d12: bf00 nop
- 8004d14: 370c adds r7, #12
- 8004d16: 46bd mov sp, r7
- 8004d18: f85d 7b04 ldr.w r7, [sp], #4
- 8004d1c: 4770 bx lr
- 8004d1e: bf00 nop
- 8004d20: 40023800 .word 0x40023800
-
-08004d24 <HAL_TIM_Encoder_MspInit>:
-* This function configures the hardware resources used in this example
-* @param htim_encoder: TIM_Encoder handle pointer
-* @retval None
-*/
-void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* htim_encoder)
-{
- 8004d24: b580 push {r7, lr}
- 8004d26: b08c sub sp, #48 ; 0x30
- 8004d28: af00 add r7, sp, #0
- 8004d2a: 6078 str r0, [r7, #4]
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- 8004d2c: f107 031c add.w r3, r7, #28
- 8004d30: 2200 movs r2, #0
- 8004d32: 601a str r2, [r3, #0]
- 8004d34: 605a str r2, [r3, #4]
- 8004d36: 609a str r2, [r3, #8]
- 8004d38: 60da str r2, [r3, #12]
- 8004d3a: 611a str r2, [r3, #16]
- if(htim_encoder->Instance==TIM2)
- 8004d3c: 687b ldr r3, [r7, #4]
- 8004d3e: 681b ldr r3, [r3, #0]
- 8004d40: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
- 8004d44: d144 bne.n 8004dd0 <HAL_TIM_Encoder_MspInit+0xac>
- {
- /* USER CODE BEGIN TIM2_MspInit 0 */
-
- /* USER CODE END TIM2_MspInit 0 */
- /* Peripheral clock enable */
- __HAL_RCC_TIM2_CLK_ENABLE();
- 8004d46: 4b3b ldr r3, [pc, #236] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d48: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004d4a: 4a3a ldr r2, [pc, #232] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d4c: f043 0301 orr.w r3, r3, #1
- 8004d50: 6413 str r3, [r2, #64] ; 0x40
- 8004d52: 4b38 ldr r3, [pc, #224] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d54: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004d56: f003 0301 and.w r3, r3, #1
- 8004d5a: 61bb str r3, [r7, #24]
- 8004d5c: 69bb ldr r3, [r7, #24]
-
- __HAL_RCC_GPIOA_CLK_ENABLE();
- 8004d5e: 4b35 ldr r3, [pc, #212] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d60: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004d62: 4a34 ldr r2, [pc, #208] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d64: f043 0301 orr.w r3, r3, #1
- 8004d68: 6313 str r3, [r2, #48] ; 0x30
- 8004d6a: 4b32 ldr r3, [pc, #200] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d6c: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004d6e: f003 0301 and.w r3, r3, #1
- 8004d72: 617b str r3, [r7, #20]
- 8004d74: 697b ldr r3, [r7, #20]
- __HAL_RCC_GPIOB_CLK_ENABLE();
- 8004d76: 4b2f ldr r3, [pc, #188] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d78: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004d7a: 4a2e ldr r2, [pc, #184] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d7c: f043 0302 orr.w r3, r3, #2
- 8004d80: 6313 str r3, [r2, #48] ; 0x30
- 8004d82: 4b2c ldr r3, [pc, #176] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004d84: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004d86: f003 0302 and.w r3, r3, #2
- 8004d8a: 613b str r3, [r7, #16]
- 8004d8c: 693b ldr r3, [r7, #16]
- /**TIM2 GPIO Configuration
- PA5 ------> TIM2_CH1
- PB3 ------> TIM2_CH2
- */
- GPIO_InitStruct.Pin = encoder_sx1_Pin;
- 8004d8e: 2320 movs r3, #32
- 8004d90: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- 8004d92: 2302 movs r3, #2
- 8004d94: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 8004d96: 2300 movs r3, #0
- 8004d98: 627b str r3, [r7, #36] ; 0x24
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- 8004d9a: 2300 movs r3, #0
- 8004d9c: 62bb str r3, [r7, #40] ; 0x28
- GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
- 8004d9e: 2301 movs r3, #1
- 8004da0: 62fb str r3, [r7, #44] ; 0x2c
- HAL_GPIO_Init(encoder_sx1_GPIO_Port, &GPIO_InitStruct);
- 8004da2: f107 031c add.w r3, r7, #28
- 8004da6: 4619 mov r1, r3
- 8004da8: 4823 ldr r0, [pc, #140] ; (8004e38 <HAL_TIM_Encoder_MspInit+0x114>)
- 8004daa: f000 fb53 bl 8005454 <HAL_GPIO_Init>
-
- GPIO_InitStruct.Pin = encoder_sx2_Pin;
- 8004dae: 2308 movs r3, #8
- 8004db0: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- 8004db2: 2302 movs r3, #2
- 8004db4: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 8004db6: 2300 movs r3, #0
- 8004db8: 627b str r3, [r7, #36] ; 0x24
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- 8004dba: 2300 movs r3, #0
- 8004dbc: 62bb str r3, [r7, #40] ; 0x28
- GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
- 8004dbe: 2301 movs r3, #1
- 8004dc0: 62fb str r3, [r7, #44] ; 0x2c
- HAL_GPIO_Init(encoder_sx2_GPIO_Port, &GPIO_InitStruct);
- 8004dc2: f107 031c add.w r3, r7, #28
- 8004dc6: 4619 mov r1, r3
- 8004dc8: 481c ldr r0, [pc, #112] ; (8004e3c <HAL_TIM_Encoder_MspInit+0x118>)
- 8004dca: f000 fb43 bl 8005454 <HAL_GPIO_Init>
- /* USER CODE BEGIN TIM5_MspInit 1 */
-
- /* USER CODE END TIM5_MspInit 1 */
- }
-
-}
- 8004dce: e02c b.n 8004e2a <HAL_TIM_Encoder_MspInit+0x106>
- else if(htim_encoder->Instance==TIM5)
- 8004dd0: 687b ldr r3, [r7, #4]
- 8004dd2: 681b ldr r3, [r3, #0]
- 8004dd4: 4a1a ldr r2, [pc, #104] ; (8004e40 <HAL_TIM_Encoder_MspInit+0x11c>)
- 8004dd6: 4293 cmp r3, r2
- 8004dd8: d127 bne.n 8004e2a <HAL_TIM_Encoder_MspInit+0x106>
- __HAL_RCC_TIM5_CLK_ENABLE();
- 8004dda: 4b16 ldr r3, [pc, #88] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004ddc: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004dde: 4a15 ldr r2, [pc, #84] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004de0: f043 0308 orr.w r3, r3, #8
- 8004de4: 6413 str r3, [r2, #64] ; 0x40
- 8004de6: 4b13 ldr r3, [pc, #76] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004de8: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004dea: f003 0308 and.w r3, r3, #8
- 8004dee: 60fb str r3, [r7, #12]
- 8004df0: 68fb ldr r3, [r7, #12]
- __HAL_RCC_GPIOA_CLK_ENABLE();
- 8004df2: 4b10 ldr r3, [pc, #64] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004df4: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004df6: 4a0f ldr r2, [pc, #60] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004df8: f043 0301 orr.w r3, r3, #1
- 8004dfc: 6313 str r3, [r2, #48] ; 0x30
- 8004dfe: 4b0d ldr r3, [pc, #52] ; (8004e34 <HAL_TIM_Encoder_MspInit+0x110>)
- 8004e00: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004e02: f003 0301 and.w r3, r3, #1
- 8004e06: 60bb str r3, [r7, #8]
- 8004e08: 68bb ldr r3, [r7, #8]
- GPIO_InitStruct.Pin = encoder_dx1_Pin|encoder_dx2_Pin;
- 8004e0a: 2303 movs r3, #3
- 8004e0c: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- 8004e0e: 2302 movs r3, #2
- 8004e10: 623b str r3, [r7, #32]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 8004e12: 2300 movs r3, #0
- 8004e14: 627b str r3, [r7, #36] ; 0x24
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- 8004e16: 2300 movs r3, #0
- 8004e18: 62bb str r3, [r7, #40] ; 0x28
- GPIO_InitStruct.Alternate = GPIO_AF2_TIM5;
- 8004e1a: 2302 movs r3, #2
- 8004e1c: 62fb str r3, [r7, #44] ; 0x2c
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- 8004e1e: f107 031c add.w r3, r7, #28
- 8004e22: 4619 mov r1, r3
- 8004e24: 4804 ldr r0, [pc, #16] ; (8004e38 <HAL_TIM_Encoder_MspInit+0x114>)
- 8004e26: f000 fb15 bl 8005454 <HAL_GPIO_Init>
-}
- 8004e2a: bf00 nop
- 8004e2c: 3730 adds r7, #48 ; 0x30
- 8004e2e: 46bd mov sp, r7
- 8004e30: bd80 pop {r7, pc}
- 8004e32: bf00 nop
- 8004e34: 40023800 .word 0x40023800
- 8004e38: 40020000 .word 0x40020000
- 8004e3c: 40020400 .word 0x40020400
- 8004e40: 40000c00 .word 0x40000c00
-
-08004e44 <HAL_TIM_Base_MspInit>:
-* This function configures the hardware resources used in this example
-* @param htim_base: TIM_Base handle pointer
-* @retval None
-*/
-void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
-{
- 8004e44: b480 push {r7}
- 8004e46: b087 sub sp, #28
- 8004e48: af00 add r7, sp, #0
- 8004e4a: 6078 str r0, [r7, #4]
- if(htim_base->Instance==TIM3)
- 8004e4c: 687b ldr r3, [r7, #4]
- 8004e4e: 681b ldr r3, [r3, #0]
- 8004e50: 4a1c ldr r2, [pc, #112] ; (8004ec4 <HAL_TIM_Base_MspInit+0x80>)
- 8004e52: 4293 cmp r3, r2
- 8004e54: d10c bne.n 8004e70 <HAL_TIM_Base_MspInit+0x2c>
- {
- /* USER CODE BEGIN TIM3_MspInit 0 */
-
- /* USER CODE END TIM3_MspInit 0 */
- /* Peripheral clock enable */
- __HAL_RCC_TIM3_CLK_ENABLE();
- 8004e56: 4b1c ldr r3, [pc, #112] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004e58: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004e5a: 4a1b ldr r2, [pc, #108] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004e5c: f043 0302 orr.w r3, r3, #2
- 8004e60: 6413 str r3, [r2, #64] ; 0x40
- 8004e62: 4b19 ldr r3, [pc, #100] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004e64: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004e66: f003 0302 and.w r3, r3, #2
- 8004e6a: 617b str r3, [r7, #20]
- 8004e6c: 697b ldr r3, [r7, #20]
- /* USER CODE BEGIN TIM6_MspInit 1 */
-
- /* USER CODE END TIM6_MspInit 1 */
- }
-
-}
- 8004e6e: e022 b.n 8004eb6 <HAL_TIM_Base_MspInit+0x72>
- else if(htim_base->Instance==TIM4)
- 8004e70: 687b ldr r3, [r7, #4]
- 8004e72: 681b ldr r3, [r3, #0]
- 8004e74: 4a15 ldr r2, [pc, #84] ; (8004ecc <HAL_TIM_Base_MspInit+0x88>)
- 8004e76: 4293 cmp r3, r2
- 8004e78: d10c bne.n 8004e94 <HAL_TIM_Base_MspInit+0x50>
- __HAL_RCC_TIM4_CLK_ENABLE();
- 8004e7a: 4b13 ldr r3, [pc, #76] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004e7c: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004e7e: 4a12 ldr r2, [pc, #72] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004e80: f043 0304 orr.w r3, r3, #4
- 8004e84: 6413 str r3, [r2, #64] ; 0x40
- 8004e86: 4b10 ldr r3, [pc, #64] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004e88: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004e8a: f003 0304 and.w r3, r3, #4
- 8004e8e: 613b str r3, [r7, #16]
- 8004e90: 693b ldr r3, [r7, #16]
-}
- 8004e92: e010 b.n 8004eb6 <HAL_TIM_Base_MspInit+0x72>
- else if(htim_base->Instance==TIM6)
- 8004e94: 687b ldr r3, [r7, #4]
- 8004e96: 681b ldr r3, [r3, #0]
- 8004e98: 4a0d ldr r2, [pc, #52] ; (8004ed0 <HAL_TIM_Base_MspInit+0x8c>)
- 8004e9a: 4293 cmp r3, r2
- 8004e9c: d10b bne.n 8004eb6 <HAL_TIM_Base_MspInit+0x72>
- __HAL_RCC_TIM6_CLK_ENABLE();
- 8004e9e: 4b0a ldr r3, [pc, #40] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004ea0: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004ea2: 4a09 ldr r2, [pc, #36] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004ea4: f043 0310 orr.w r3, r3, #16
- 8004ea8: 6413 str r3, [r2, #64] ; 0x40
- 8004eaa: 4b07 ldr r3, [pc, #28] ; (8004ec8 <HAL_TIM_Base_MspInit+0x84>)
- 8004eac: 6c1b ldr r3, [r3, #64] ; 0x40
- 8004eae: f003 0310 and.w r3, r3, #16
- 8004eb2: 60fb str r3, [r7, #12]
- 8004eb4: 68fb ldr r3, [r7, #12]
-}
- 8004eb6: bf00 nop
- 8004eb8: 371c adds r7, #28
- 8004eba: 46bd mov sp, r7
- 8004ebc: f85d 7b04 ldr.w r7, [sp], #4
- 8004ec0: 4770 bx lr
- 8004ec2: bf00 nop
- 8004ec4: 40000400 .word 0x40000400
- 8004ec8: 40023800 .word 0x40023800
- 8004ecc: 40000800 .word 0x40000800
- 8004ed0: 40001000 .word 0x40001000
-
-08004ed4 <HAL_TIM_MspPostInit>:
-
-void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
-{
- 8004ed4: b580 push {r7, lr}
- 8004ed6: b088 sub sp, #32
- 8004ed8: af00 add r7, sp, #0
- 8004eda: 6078 str r0, [r7, #4]
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- 8004edc: f107 030c add.w r3, r7, #12
- 8004ee0: 2200 movs r2, #0
- 8004ee2: 601a str r2, [r3, #0]
- 8004ee4: 605a str r2, [r3, #4]
- 8004ee6: 609a str r2, [r3, #8]
- 8004ee8: 60da str r2, [r3, #12]
- 8004eea: 611a str r2, [r3, #16]
- if(htim->Instance==TIM4)
- 8004eec: 687b ldr r3, [r7, #4]
- 8004eee: 681b ldr r3, [r3, #0]
- 8004ef0: 4a11 ldr r2, [pc, #68] ; (8004f38 <HAL_TIM_MspPostInit+0x64>)
- 8004ef2: 4293 cmp r3, r2
- 8004ef4: d11c bne.n 8004f30 <HAL_TIM_MspPostInit+0x5c>
- {
- /* USER CODE BEGIN TIM4_MspPostInit 0 */
-
- /* USER CODE END TIM4_MspPostInit 0 */
-
- __HAL_RCC_GPIOD_CLK_ENABLE();
- 8004ef6: 4b11 ldr r3, [pc, #68] ; (8004f3c <HAL_TIM_MspPostInit+0x68>)
- 8004ef8: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004efa: 4a10 ldr r2, [pc, #64] ; (8004f3c <HAL_TIM_MspPostInit+0x68>)
- 8004efc: f043 0308 orr.w r3, r3, #8
- 8004f00: 6313 str r3, [r2, #48] ; 0x30
- 8004f02: 4b0e ldr r3, [pc, #56] ; (8004f3c <HAL_TIM_MspPostInit+0x68>)
- 8004f04: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004f06: f003 0308 and.w r3, r3, #8
- 8004f0a: 60bb str r3, [r7, #8]
- 8004f0c: 68bb ldr r3, [r7, #8]
- /**TIM4 GPIO Configuration
- PD14 ------> TIM4_CH3
- PD15 ------> TIM4_CH4
- */
- GPIO_InitStruct.Pin = pwm2_Pin|pwm1_Pin;
- 8004f0e: f44f 4340 mov.w r3, #49152 ; 0xc000
- 8004f12: 60fb str r3, [r7, #12]
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- 8004f14: 2302 movs r3, #2
- 8004f16: 613b str r3, [r7, #16]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 8004f18: 2300 movs r3, #0
- 8004f1a: 617b str r3, [r7, #20]
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- 8004f1c: 2300 movs r3, #0
- 8004f1e: 61bb str r3, [r7, #24]
- GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
- 8004f20: 2302 movs r3, #2
- 8004f22: 61fb str r3, [r7, #28]
- HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
- 8004f24: f107 030c add.w r3, r7, #12
- 8004f28: 4619 mov r1, r3
- 8004f2a: 4805 ldr r0, [pc, #20] ; (8004f40 <HAL_TIM_MspPostInit+0x6c>)
- 8004f2c: f000 fa92 bl 8005454 <HAL_GPIO_Init>
- /* USER CODE BEGIN TIM4_MspPostInit 1 */
-
- /* USER CODE END TIM4_MspPostInit 1 */
- }
-
-}
- 8004f30: bf00 nop
- 8004f32: 3720 adds r7, #32
- 8004f34: 46bd mov sp, r7
- 8004f36: bd80 pop {r7, pc}
- 8004f38: 40000800 .word 0x40000800
- 8004f3c: 40023800 .word 0x40023800
- 8004f40: 40020c00 .word 0x40020c00
-
-08004f44 <HAL_UART_MspInit>:
-* This function configures the hardware resources used in this example
-* @param huart: UART handle pointer
-* @retval None
-*/
-void HAL_UART_MspInit(UART_HandleTypeDef* huart)
-{
- 8004f44: b580 push {r7, lr}
- 8004f46: b08a sub sp, #40 ; 0x28
- 8004f48: af00 add r7, sp, #0
- 8004f4a: 6078 str r0, [r7, #4]
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- 8004f4c: f107 0314 add.w r3, r7, #20
- 8004f50: 2200 movs r2, #0
- 8004f52: 601a str r2, [r3, #0]
- 8004f54: 605a str r2, [r3, #4]
- 8004f56: 609a str r2, [r3, #8]
- 8004f58: 60da str r2, [r3, #12]
- 8004f5a: 611a str r2, [r3, #16]
- if(huart->Instance==USART6)
- 8004f5c: 687b ldr r3, [r7, #4]
- 8004f5e: 681b ldr r3, [r3, #0]
- 8004f60: 4a17 ldr r2, [pc, #92] ; (8004fc0 <HAL_UART_MspInit+0x7c>)
- 8004f62: 4293 cmp r3, r2
- 8004f64: d127 bne.n 8004fb6 <HAL_UART_MspInit+0x72>
- {
- /* USER CODE BEGIN USART6_MspInit 0 */
-
- /* USER CODE END USART6_MspInit 0 */
- /* Peripheral clock enable */
- __HAL_RCC_USART6_CLK_ENABLE();
- 8004f66: 4b17 ldr r3, [pc, #92] ; (8004fc4 <HAL_UART_MspInit+0x80>)
- 8004f68: 6c5b ldr r3, [r3, #68] ; 0x44
- 8004f6a: 4a16 ldr r2, [pc, #88] ; (8004fc4 <HAL_UART_MspInit+0x80>)
- 8004f6c: f043 0320 orr.w r3, r3, #32
- 8004f70: 6453 str r3, [r2, #68] ; 0x44
- 8004f72: 4b14 ldr r3, [pc, #80] ; (8004fc4 <HAL_UART_MspInit+0x80>)
- 8004f74: 6c5b ldr r3, [r3, #68] ; 0x44
- 8004f76: f003 0320 and.w r3, r3, #32
- 8004f7a: 613b str r3, [r7, #16]
- 8004f7c: 693b ldr r3, [r7, #16]
-
- __HAL_RCC_GPIOC_CLK_ENABLE();
- 8004f7e: 4b11 ldr r3, [pc, #68] ; (8004fc4 <HAL_UART_MspInit+0x80>)
- 8004f80: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004f82: 4a10 ldr r2, [pc, #64] ; (8004fc4 <HAL_UART_MspInit+0x80>)
- 8004f84: f043 0304 orr.w r3, r3, #4
- 8004f88: 6313 str r3, [r2, #48] ; 0x30
- 8004f8a: 4b0e ldr r3, [pc, #56] ; (8004fc4 <HAL_UART_MspInit+0x80>)
- 8004f8c: 6b1b ldr r3, [r3, #48] ; 0x30
- 8004f8e: f003 0304 and.w r3, r3, #4
- 8004f92: 60fb str r3, [r7, #12]
- 8004f94: 68fb ldr r3, [r7, #12]
- /**USART6 GPIO Configuration
- PC6 ------> USART6_TX
- PC7 ------> USART6_RX
- */
- GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
- 8004f96: 23c0 movs r3, #192 ; 0xc0
- 8004f98: 617b str r3, [r7, #20]
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- 8004f9a: 2302 movs r3, #2
- 8004f9c: 61bb str r3, [r7, #24]
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- 8004f9e: 2300 movs r3, #0
- 8004fa0: 61fb str r3, [r7, #28]
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- 8004fa2: 2303 movs r3, #3
- 8004fa4: 623b str r3, [r7, #32]
- GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
- 8004fa6: 2308 movs r3, #8
- 8004fa8: 627b str r3, [r7, #36] ; 0x24
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- 8004faa: f107 0314 add.w r3, r7, #20
- 8004fae: 4619 mov r1, r3
- 8004fb0: 4805 ldr r0, [pc, #20] ; (8004fc8 <HAL_UART_MspInit+0x84>)
- 8004fb2: f000 fa4f bl 8005454 <HAL_GPIO_Init>
- /* USER CODE BEGIN USART6_MspInit 1 */
-
- /* USER CODE END USART6_MspInit 1 */
- }
-
-}
- 8004fb6: bf00 nop
- 8004fb8: 3728 adds r7, #40 ; 0x28
- 8004fba: 46bd mov sp, r7
- 8004fbc: bd80 pop {r7, pc}
- 8004fbe: bf00 nop
- 8004fc0: 40011400 .word 0x40011400
- 8004fc4: 40023800 .word 0x40023800
- 8004fc8: 40020800 .word 0x40020800
-
-08004fcc <NMI_Handler>:
-/******************************************************************************/
-/**
- * @brief This function handles Non maskable interrupt.
- */
-void NMI_Handler(void)
-{
- 8004fcc: b480 push {r7}
- 8004fce: af00 add r7, sp, #0
-
- /* USER CODE END NonMaskableInt_IRQn 0 */
- /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
-
- /* USER CODE END NonMaskableInt_IRQn 1 */
-}
- 8004fd0: bf00 nop
- 8004fd2: 46bd mov sp, r7
- 8004fd4: f85d 7b04 ldr.w r7, [sp], #4
- 8004fd8: 4770 bx lr
-
-08004fda <HardFault_Handler>:
-
-/**
- * @brief This function handles Hard fault interrupt.
- */
-void HardFault_Handler(void)
-{
- 8004fda: b480 push {r7}
- 8004fdc: af00 add r7, sp, #0
- /* USER CODE BEGIN HardFault_IRQn 0 */
-
- /* USER CODE END HardFault_IRQn 0 */
- while (1)
- 8004fde: e7fe b.n 8004fde <HardFault_Handler+0x4>
-
-08004fe0 <MemManage_Handler>:
-
-/**
- * @brief This function handles Memory management fault.
- */
-void MemManage_Handler(void)
-{
- 8004fe0: b480 push {r7}
- 8004fe2: af00 add r7, sp, #0
- /* USER CODE BEGIN MemoryManagement_IRQn 0 */
-
- /* USER CODE END MemoryManagement_IRQn 0 */
- while (1)
- 8004fe4: e7fe b.n 8004fe4 <MemManage_Handler+0x4>
-
-08004fe6 <BusFault_Handler>:
-
-/**
- * @brief This function handles Pre-fetch fault, memory access fault.
- */
-void BusFault_Handler(void)
-{
- 8004fe6: b480 push {r7}
- 8004fe8: af00 add r7, sp, #0
- /* USER CODE BEGIN BusFault_IRQn 0 */
-
- /* USER CODE END BusFault_IRQn 0 */
- while (1)
- 8004fea: e7fe b.n 8004fea <BusFault_Handler+0x4>
-
-08004fec <UsageFault_Handler>:
-
-/**
- * @brief This function handles Undefined instruction or illegal state.
- */
-void UsageFault_Handler(void)
-{
- 8004fec: b480 push {r7}
- 8004fee: af00 add r7, sp, #0
- /* USER CODE BEGIN UsageFault_IRQn 0 */
-
- /* USER CODE END UsageFault_IRQn 0 */
- while (1)
- 8004ff0: e7fe b.n 8004ff0 <UsageFault_Handler+0x4>
-
-08004ff2 <SVC_Handler>:
-
-/**
- * @brief This function handles System service call via SWI instruction.
- */
-void SVC_Handler(void)
-{
- 8004ff2: b480 push {r7}
- 8004ff4: af00 add r7, sp, #0
-
- /* USER CODE END SVCall_IRQn 0 */
- /* USER CODE BEGIN SVCall_IRQn 1 */
-
- /* USER CODE END SVCall_IRQn 1 */
-}
- 8004ff6: bf00 nop
- 8004ff8: 46bd mov sp, r7
- 8004ffa: f85d 7b04 ldr.w r7, [sp], #4
- 8004ffe: 4770 bx lr
-
-08005000 <DebugMon_Handler>:
-
-/**
- * @brief This function handles Debug monitor.
- */
-void DebugMon_Handler(void)
-{
- 8005000: b480 push {r7}
- 8005002: af00 add r7, sp, #0
-
- /* USER CODE END DebugMonitor_IRQn 0 */
- /* USER CODE BEGIN DebugMonitor_IRQn 1 */
-
- /* USER CODE END DebugMonitor_IRQn 1 */
-}
- 8005004: bf00 nop
- 8005006: 46bd mov sp, r7
- 8005008: f85d 7b04 ldr.w r7, [sp], #4
- 800500c: 4770 bx lr
-
-0800500e <PendSV_Handler>:
-
-/**
- * @brief This function handles Pendable request for system service.
- */
-void PendSV_Handler(void)
-{
- 800500e: b480 push {r7}
- 8005010: af00 add r7, sp, #0
-
- /* USER CODE END PendSV_IRQn 0 */
- /* USER CODE BEGIN PendSV_IRQn 1 */
-
- /* USER CODE END PendSV_IRQn 1 */
-}
- 8005012: bf00 nop
- 8005014: 46bd mov sp, r7
- 8005016: f85d 7b04 ldr.w r7, [sp], #4
- 800501a: 4770 bx lr
-
-0800501c <SysTick_Handler>:
-
-/**
- * @brief This function handles System tick timer.
- */
-void SysTick_Handler(void)
-{
- 800501c: b580 push {r7, lr}
- 800501e: af00 add r7, sp, #0
- /* USER CODE BEGIN SysTick_IRQn 0 */
-
- /* USER CODE END SysTick_IRQn 0 */
- HAL_IncTick();
- 8005020: f000 f8c4 bl 80051ac <HAL_IncTick>
- /* USER CODE BEGIN SysTick_IRQn 1 */
-
- /* USER CODE END SysTick_IRQn 1 */
-}
- 8005024: bf00 nop
- 8005026: bd80 pop {r7, pc}
-
-08005028 <TIM3_IRQHandler>:
-
-/**
- * @brief This function handles TIM3 global interrupt.
- */
-void TIM3_IRQHandler(void)
-{
- 8005028: b580 push {r7, lr}
- 800502a: af00 add r7, sp, #0
- /* USER CODE BEGIN TIM3_IRQn 0 */
-
- /* USER CODE END TIM3_IRQn 0 */
- HAL_TIM_IRQHandler(&htim3);
- 800502c: 4802 ldr r0, [pc, #8] ; (8005038 <TIM3_IRQHandler+0x10>)
- 800502e: f001 fdec bl 8006c0a <HAL_TIM_IRQHandler>
- /* USER CODE BEGIN TIM3_IRQn 1 */
-
- /* USER CODE END TIM3_IRQn 1 */
-}
- 8005032: bf00 nop
- 8005034: bd80 pop {r7, pc}
- 8005036: bf00 nop
- 8005038: 2000006c .word 0x2000006c
-
-0800503c <EXTI15_10_IRQHandler>:
-
-/**
- * @brief This function handles EXTI line[15:10] interrupts.
- */
-void EXTI15_10_IRQHandler(void)
-{
- 800503c: b580 push {r7, lr}
- 800503e: af00 add r7, sp, #0
- /* USER CODE BEGIN EXTI15_10_IRQn 0 */
-
- /* USER CODE END EXTI15_10_IRQn 0 */
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
- 8005040: f44f 5000 mov.w r0, #8192 ; 0x2000
- 8005044: f000 fbca bl 80057dc <HAL_GPIO_EXTI_IRQHandler>
- /* USER CODE BEGIN EXTI15_10_IRQn 1 */
-
- /* USER CODE END EXTI15_10_IRQn 1 */
-}
- 8005048: bf00 nop
- 800504a: bd80 pop {r7, pc}
-
-0800504c <TIM6_DAC_IRQHandler>:
-
-/**
- * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
- */
-void TIM6_DAC_IRQHandler(void)
-{
- 800504c: b580 push {r7, lr}
- 800504e: af00 add r7, sp, #0
- /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
-
- /* USER CODE END TIM6_DAC_IRQn 0 */
- HAL_TIM_IRQHandler(&htim6);
- 8005050: 4802 ldr r0, [pc, #8] ; (800505c <TIM6_DAC_IRQHandler+0x10>)
- 8005052: f001 fdda bl 8006c0a <HAL_TIM_IRQHandler>
- /* USER CODE BEGIN TIM6_DAC_IRQn 1 */
-
- /* USER CODE END TIM6_DAC_IRQn 1 */
-}
- 8005056: bf00 nop
- 8005058: bd80 pop {r7, pc}
- 800505a: bf00 nop
- 800505c: 2000012c .word 0x2000012c
-
-08005060 <USART6_IRQHandler>:
-
-/**
- * @brief This function handles USART6 global interrupt.
- */
-void USART6_IRQHandler(void)
-{
- 8005060: b580 push {r7, lr}
- 8005062: af00 add r7, sp, #0
- /* USER CODE BEGIN USART6_IRQn 0 */
-
- /* USER CODE END USART6_IRQn 0 */
- HAL_UART_IRQHandler(&huart6);
- 8005064: 4802 ldr r0, [pc, #8] ; (8005070 <USART6_IRQHandler+0x10>)
- 8005066: f002 fea3 bl 8007db0 <HAL_UART_IRQHandler>
- /* USER CODE BEGIN USART6_IRQn 1 */
-
- /* USER CODE END USART6_IRQn 1 */
-}
- 800506a: bf00 nop
- 800506c: bd80 pop {r7, pc}
- 800506e: bf00 nop
- 8005070: 2000016c .word 0x2000016c
-
-08005074 <SystemInit>:
- * SystemFrequency variable.
- * @param None
- * @retval None
- */
-void SystemInit(void)
-{
- 8005074: b480 push {r7}
- 8005076: af00 add r7, sp, #0
- /* FPU settings ------------------------------------------------------------*/
- #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
- SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
- 8005078: 4b15 ldr r3, [pc, #84] ; (80050d0 <SystemInit+0x5c>)
- 800507a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 800507e: 4a14 ldr r2, [pc, #80] ; (80050d0 <SystemInit+0x5c>)
- 8005080: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000
- 8005084: f8c2 3088 str.w r3, [r2, #136] ; 0x88
- #endif
- /* Reset the RCC clock configuration to the default reset state ------------*/
- /* Set HSION bit */
- RCC->CR |= (uint32_t)0x00000001;
- 8005088: 4b12 ldr r3, [pc, #72] ; (80050d4 <SystemInit+0x60>)
- 800508a: 681b ldr r3, [r3, #0]
- 800508c: 4a11 ldr r2, [pc, #68] ; (80050d4 <SystemInit+0x60>)
- 800508e: f043 0301 orr.w r3, r3, #1
- 8005092: 6013 str r3, [r2, #0]
-
- /* Reset CFGR register */
- RCC->CFGR = 0x00000000;
- 8005094: 4b0f ldr r3, [pc, #60] ; (80050d4 <SystemInit+0x60>)
- 8005096: 2200 movs r2, #0
- 8005098: 609a str r2, [r3, #8]
-
- /* Reset HSEON, CSSON and PLLON bits */
- RCC->CR &= (uint32_t)0xFEF6FFFF;
- 800509a: 4b0e ldr r3, [pc, #56] ; (80050d4 <SystemInit+0x60>)
- 800509c: 681a ldr r2, [r3, #0]
- 800509e: 490d ldr r1, [pc, #52] ; (80050d4 <SystemInit+0x60>)
- 80050a0: 4b0d ldr r3, [pc, #52] ; (80050d8 <SystemInit+0x64>)
- 80050a2: 4013 ands r3, r2
- 80050a4: 600b str r3, [r1, #0]
-
- /* Reset PLLCFGR register */
- RCC->PLLCFGR = 0x24003010;
- 80050a6: 4b0b ldr r3, [pc, #44] ; (80050d4 <SystemInit+0x60>)
- 80050a8: 4a0c ldr r2, [pc, #48] ; (80050dc <SystemInit+0x68>)
- 80050aa: 605a str r2, [r3, #4]
-
- /* Reset HSEBYP bit */
- RCC->CR &= (uint32_t)0xFFFBFFFF;
- 80050ac: 4b09 ldr r3, [pc, #36] ; (80050d4 <SystemInit+0x60>)
- 80050ae: 681b ldr r3, [r3, #0]
- 80050b0: 4a08 ldr r2, [pc, #32] ; (80050d4 <SystemInit+0x60>)
- 80050b2: f423 2380 bic.w r3, r3, #262144 ; 0x40000
- 80050b6: 6013 str r3, [r2, #0]
-
- /* Disable all interrupts */
- RCC->CIR = 0x00000000;
- 80050b8: 4b06 ldr r3, [pc, #24] ; (80050d4 <SystemInit+0x60>)
- 80050ba: 2200 movs r2, #0
- 80050bc: 60da str r2, [r3, #12]
-
- /* Configure the Vector Table location add offset address ------------------*/
-#ifdef VECT_TAB_SRAM
- SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
-#else
- SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
- 80050be: 4b04 ldr r3, [pc, #16] ; (80050d0 <SystemInit+0x5c>)
- 80050c0: f04f 6200 mov.w r2, #134217728 ; 0x8000000
- 80050c4: 609a str r2, [r3, #8]
-#endif
-}
- 80050c6: bf00 nop
- 80050c8: 46bd mov sp, r7
- 80050ca: f85d 7b04 ldr.w r7, [sp], #4
- 80050ce: 4770 bx lr
- 80050d0: e000ed00 .word 0xe000ed00
- 80050d4: 40023800 .word 0x40023800
- 80050d8: fef6ffff .word 0xfef6ffff
- 80050dc: 24003010 .word 0x24003010
-
-080050e0 <Reset_Handler>:
-
- .section .text.Reset_Handler
- .weak Reset_Handler
- .type Reset_Handler, %function
-Reset_Handler:
- ldr sp, =_estack /* set stack pointer */
- 80050e0: f8df d034 ldr.w sp, [pc, #52] ; 8005118 <LoopFillZerobss+0x14>
-
-/* Copy the data segment initializers from flash to SRAM */
- movs r1, #0
- 80050e4: 2100 movs r1, #0
- b LoopCopyDataInit
- 80050e6: e003 b.n 80050f0 <LoopCopyDataInit>
-
-080050e8 <CopyDataInit>:
-
-CopyDataInit:
- ldr r3, =_sidata
- 80050e8: 4b0c ldr r3, [pc, #48] ; (800511c <LoopFillZerobss+0x18>)
- ldr r3, [r3, r1]
- 80050ea: 585b ldr r3, [r3, r1]
- str r3, [r0, r1]
- 80050ec: 5043 str r3, [r0, r1]
- adds r1, r1, #4
- 80050ee: 3104 adds r1, #4
-
-080050f0 <LoopCopyDataInit>:
-
-LoopCopyDataInit:
- ldr r0, =_sdata
- 80050f0: 480b ldr r0, [pc, #44] ; (8005120 <LoopFillZerobss+0x1c>)
- ldr r3, =_edata
- 80050f2: 4b0c ldr r3, [pc, #48] ; (8005124 <LoopFillZerobss+0x20>)
- adds r2, r0, r1
- 80050f4: 1842 adds r2, r0, r1
- cmp r2, r3
- 80050f6: 429a cmp r2, r3
- bcc CopyDataInit
- 80050f8: d3f6 bcc.n 80050e8 <CopyDataInit>
- ldr r2, =_sbss
- 80050fa: 4a0b ldr r2, [pc, #44] ; (8005128 <LoopFillZerobss+0x24>)
- b LoopFillZerobss
- 80050fc: e002 b.n 8005104 <LoopFillZerobss>
-
-080050fe <FillZerobss>:
-/* Zero fill the bss segment. */
-FillZerobss:
- movs r3, #0
- 80050fe: 2300 movs r3, #0
- str r3, [r2], #4
- 8005100: f842 3b04 str.w r3, [r2], #4
-
-08005104 <LoopFillZerobss>:
-
-LoopFillZerobss:
- ldr r3, = _ebss
- 8005104: 4b09 ldr r3, [pc, #36] ; (800512c <LoopFillZerobss+0x28>)
- cmp r2, r3
- 8005106: 429a cmp r2, r3
- bcc FillZerobss
- 8005108: d3f9 bcc.n 80050fe <FillZerobss>
-
-/* Call the clock system initialization function.*/
- bl SystemInit
- 800510a: f7ff ffb3 bl 8005074 <SystemInit>
-/* Call static constructors */
- bl __libc_init_array
- 800510e: f003 fc31 bl 8008974 <__libc_init_array>
-/* Call the application's entry point.*/
- bl main
- 8005112: f7fb fdc9 bl 8000ca8 <main>
- bx lr
- 8005116: 4770 bx lr
- ldr sp, =_estack /* set stack pointer */
- 8005118: 20080000 .word 0x20080000
- ldr r3, =_sidata
- 800511c: 08008cf8 .word 0x08008cf8
- ldr r0, =_sdata
- 8005120: 20000000 .word 0x20000000
- ldr r3, =_edata
- 8005124: 20000010 .word 0x20000010
- ldr r2, =_sbss
- 8005128: 20000010 .word 0x20000010
- ldr r3, = _ebss
- 800512c: 20000348 .word 0x20000348
-
-08005130 <ADC_IRQHandler>:
- * @retval None
-*/
- .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
- b Infinite_Loop
- 8005130: e7fe b.n 8005130 <ADC_IRQHandler>
-
-08005132 <HAL_Init>:
- * need to ensure that the SysTick time base is always set to 1 millisecond
- * to have correct HAL operation.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_Init(void)
-{
- 8005132: b580 push {r7, lr}
- 8005134: af00 add r7, sp, #0
-#if (PREFETCH_ENABLE != 0U)
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
-#endif /* PREFETCH_ENABLE */
-
- /* Set Interrupt Group Priority */
- HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
- 8005136: 2003 movs r0, #3
- 8005138: f000 f928 bl 800538c <HAL_NVIC_SetPriorityGrouping>
-
- /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
- HAL_InitTick(TICK_INT_PRIORITY);
- 800513c: 2000 movs r0, #0
- 800513e: f000 f805 bl 800514c <HAL_InitTick>
-
- /* Init the low level hardware */
- HAL_MspInit();
- 8005142: f7ff fdcb bl 8004cdc <HAL_MspInit>
-
- /* Return function status */
- return HAL_OK;
- 8005146: 2300 movs r3, #0
-}
- 8005148: 4618 mov r0, r3
- 800514a: bd80 pop {r7, pc}
-
-0800514c <HAL_InitTick>:
- * implementation in user file.
- * @param TickPriority Tick interrupt priority.
- * @retval HAL status
- */
-__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
-{
- 800514c: b580 push {r7, lr}
- 800514e: b082 sub sp, #8
- 8005150: af00 add r7, sp, #0
- 8005152: 6078 str r0, [r7, #4]
- /* Configure the SysTick to have interrupt in 1ms time basis*/
- if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
- 8005154: 4b12 ldr r3, [pc, #72] ; (80051a0 <HAL_InitTick+0x54>)
- 8005156: 681a ldr r2, [r3, #0]
- 8005158: 4b12 ldr r3, [pc, #72] ; (80051a4 <HAL_InitTick+0x58>)
- 800515a: 781b ldrb r3, [r3, #0]
- 800515c: 4619 mov r1, r3
- 800515e: f44f 737a mov.w r3, #1000 ; 0x3e8
- 8005162: fbb3 f3f1 udiv r3, r3, r1
- 8005166: fbb2 f3f3 udiv r3, r2, r3
- 800516a: 4618 mov r0, r3
- 800516c: f000 f943 bl 80053f6 <HAL_SYSTICK_Config>
- 8005170: 4603 mov r3, r0
- 8005172: 2b00 cmp r3, #0
- 8005174: d001 beq.n 800517a <HAL_InitTick+0x2e>
- {
- return HAL_ERROR;
- 8005176: 2301 movs r3, #1
- 8005178: e00e b.n 8005198 <HAL_InitTick+0x4c>
- }
-
- /* Configure the SysTick IRQ priority */
- if (TickPriority < (1UL << __NVIC_PRIO_BITS))
- 800517a: 687b ldr r3, [r7, #4]
- 800517c: 2b0f cmp r3, #15
- 800517e: d80a bhi.n 8005196 <HAL_InitTick+0x4a>
- {
- HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
- 8005180: 2200 movs r2, #0
- 8005182: 6879 ldr r1, [r7, #4]
- 8005184: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff
- 8005188: f000 f90b bl 80053a2 <HAL_NVIC_SetPriority>
- uwTickPrio = TickPriority;
- 800518c: 4a06 ldr r2, [pc, #24] ; (80051a8 <HAL_InitTick+0x5c>)
- 800518e: 687b ldr r3, [r7, #4]
- 8005190: 6013 str r3, [r2, #0]
- {
- return HAL_ERROR;
- }
-
- /* Return function status */
- return HAL_OK;
- 8005192: 2300 movs r3, #0
- 8005194: e000 b.n 8005198 <HAL_InitTick+0x4c>
- return HAL_ERROR;
- 8005196: 2301 movs r3, #1
-}
- 8005198: 4618 mov r0, r3
- 800519a: 3708 adds r7, #8
- 800519c: 46bd mov sp, r7
- 800519e: bd80 pop {r7, pc}
- 80051a0: 20000004 .word 0x20000004
- 80051a4: 2000000c .word 0x2000000c
- 80051a8: 20000008 .word 0x20000008
-
-080051ac <HAL_IncTick>:
- * @note This function is declared as __weak to be overwritten in case of other
- * implementations in user file.
- * @retval None
- */
-__weak void HAL_IncTick(void)
-{
- 80051ac: b480 push {r7}
- 80051ae: af00 add r7, sp, #0
- uwTick += uwTickFreq;
- 80051b0: 4b06 ldr r3, [pc, #24] ; (80051cc <HAL_IncTick+0x20>)
- 80051b2: 781b ldrb r3, [r3, #0]
- 80051b4: 461a mov r2, r3
- 80051b6: 4b06 ldr r3, [pc, #24] ; (80051d0 <HAL_IncTick+0x24>)
- 80051b8: 681b ldr r3, [r3, #0]
- 80051ba: 4413 add r3, r2
- 80051bc: 4a04 ldr r2, [pc, #16] ; (80051d0 <HAL_IncTick+0x24>)
- 80051be: 6013 str r3, [r2, #0]
-}
- 80051c0: bf00 nop
- 80051c2: 46bd mov sp, r7
- 80051c4: f85d 7b04 ldr.w r7, [sp], #4
- 80051c8: 4770 bx lr
- 80051ca: bf00 nop
- 80051cc: 2000000c .word 0x2000000c
- 80051d0: 20000344 .word 0x20000344
-
-080051d4 <HAL_GetTick>:
- * @note This function is declared as __weak to be overwritten in case of other
- * implementations in user file.
- * @retval tick value
- */
-__weak uint32_t HAL_GetTick(void)
-{
- 80051d4: b480 push {r7}
- 80051d6: af00 add r7, sp, #0
- return uwTick;
- 80051d8: 4b03 ldr r3, [pc, #12] ; (80051e8 <HAL_GetTick+0x14>)
- 80051da: 681b ldr r3, [r3, #0]
-}
- 80051dc: 4618 mov r0, r3
- 80051de: 46bd mov sp, r7
- 80051e0: f85d 7b04 ldr.w r7, [sp], #4
- 80051e4: 4770 bx lr
- 80051e6: bf00 nop
- 80051e8: 20000344 .word 0x20000344
-
-080051ec <__NVIC_SetPriorityGrouping>:
- In case of a conflict between priority grouping and available
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
- \param [in] PriorityGroup Priority grouping field.
- */
-__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
-{
- 80051ec: b480 push {r7}
- 80051ee: b085 sub sp, #20
- 80051f0: af00 add r7, sp, #0
- 80051f2: 6078 str r0, [r7, #4]
- uint32_t reg_value;
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
- 80051f4: 687b ldr r3, [r7, #4]
- 80051f6: f003 0307 and.w r3, r3, #7
- 80051fa: 60fb str r3, [r7, #12]
-
- reg_value = SCB->AIRCR; /* read old register configuration */
- 80051fc: 4b0b ldr r3, [pc, #44] ; (800522c <__NVIC_SetPriorityGrouping+0x40>)
- 80051fe: 68db ldr r3, [r3, #12]
- 8005200: 60bb str r3, [r7, #8]
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
- 8005202: 68ba ldr r2, [r7, #8]
- 8005204: f64f 03ff movw r3, #63743 ; 0xf8ff
- 8005208: 4013 ands r3, r2
- 800520a: 60bb str r3, [r7, #8]
- reg_value = (reg_value |
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
- (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
- 800520c: 68fb ldr r3, [r7, #12]
- 800520e: 021a lsls r2, r3, #8
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
- 8005210: 68bb ldr r3, [r7, #8]
- 8005212: 431a orrs r2, r3
- reg_value = (reg_value |
- 8005214: 4b06 ldr r3, [pc, #24] ; (8005230 <__NVIC_SetPriorityGrouping+0x44>)
- 8005216: 4313 orrs r3, r2
- 8005218: 60bb str r3, [r7, #8]
- SCB->AIRCR = reg_value;
- 800521a: 4a04 ldr r2, [pc, #16] ; (800522c <__NVIC_SetPriorityGrouping+0x40>)
- 800521c: 68bb ldr r3, [r7, #8]
- 800521e: 60d3 str r3, [r2, #12]
-}
- 8005220: bf00 nop
- 8005222: 3714 adds r7, #20
- 8005224: 46bd mov sp, r7
- 8005226: f85d 7b04 ldr.w r7, [sp], #4
- 800522a: 4770 bx lr
- 800522c: e000ed00 .word 0xe000ed00
- 8005230: 05fa0000 .word 0x05fa0000
-
-08005234 <__NVIC_GetPriorityGrouping>:
- \brief Get Priority Grouping
- \details Reads the priority grouping field from the NVIC Interrupt Controller.
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
- */
-__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
-{
- 8005234: b480 push {r7}
- 8005236: af00 add r7, sp, #0
- return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
- 8005238: 4b04 ldr r3, [pc, #16] ; (800524c <__NVIC_GetPriorityGrouping+0x18>)
- 800523a: 68db ldr r3, [r3, #12]
- 800523c: 0a1b lsrs r3, r3, #8
- 800523e: f003 0307 and.w r3, r3, #7
-}
- 8005242: 4618 mov r0, r3
- 8005244: 46bd mov sp, r7
- 8005246: f85d 7b04 ldr.w r7, [sp], #4
- 800524a: 4770 bx lr
- 800524c: e000ed00 .word 0xe000ed00
-
-08005250 <__NVIC_EnableIRQ>:
- \details Enables a device specific interrupt in the NVIC interrupt controller.
- \param [in] IRQn Device specific interrupt number.
- \note IRQn must not be negative.
- */
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
-{
- 8005250: b480 push {r7}
- 8005252: b083 sub sp, #12
- 8005254: af00 add r7, sp, #0
- 8005256: 4603 mov r3, r0
- 8005258: 71fb strb r3, [r7, #7]
- if ((int32_t)(IRQn) >= 0)
- 800525a: f997 3007 ldrsb.w r3, [r7, #7]
- 800525e: 2b00 cmp r3, #0
- 8005260: db0b blt.n 800527a <__NVIC_EnableIRQ+0x2a>
- {
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
- 8005262: 79fb ldrb r3, [r7, #7]
- 8005264: f003 021f and.w r2, r3, #31
- 8005268: 4907 ldr r1, [pc, #28] ; (8005288 <__NVIC_EnableIRQ+0x38>)
- 800526a: f997 3007 ldrsb.w r3, [r7, #7]
- 800526e: 095b lsrs r3, r3, #5
- 8005270: 2001 movs r0, #1
- 8005272: fa00 f202 lsl.w r2, r0, r2
- 8005276: f841 2023 str.w r2, [r1, r3, lsl #2]
- }
-}
- 800527a: bf00 nop
- 800527c: 370c adds r7, #12
- 800527e: 46bd mov sp, r7
- 8005280: f85d 7b04 ldr.w r7, [sp], #4
- 8005284: 4770 bx lr
- 8005286: bf00 nop
- 8005288: e000e100 .word 0xe000e100
-
-0800528c <__NVIC_SetPriority>:
- \param [in] IRQn Interrupt number.
- \param [in] priority Priority to set.
- \note The priority cannot be set for every processor exception.
- */
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
-{
- 800528c: b480 push {r7}
- 800528e: b083 sub sp, #12
- 8005290: af00 add r7, sp, #0
- 8005292: 4603 mov r3, r0
- 8005294: 6039 str r1, [r7, #0]
- 8005296: 71fb strb r3, [r7, #7]
- if ((int32_t)(IRQn) >= 0)
- 8005298: f997 3007 ldrsb.w r3, [r7, #7]
- 800529c: 2b00 cmp r3, #0
- 800529e: db0a blt.n 80052b6 <__NVIC_SetPriority+0x2a>
- {
- NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
- 80052a0: 683b ldr r3, [r7, #0]
- 80052a2: b2da uxtb r2, r3
- 80052a4: 490c ldr r1, [pc, #48] ; (80052d8 <__NVIC_SetPriority+0x4c>)
- 80052a6: f997 3007 ldrsb.w r3, [r7, #7]
- 80052aa: 0112 lsls r2, r2, #4
- 80052ac: b2d2 uxtb r2, r2
- 80052ae: 440b add r3, r1
- 80052b0: f883 2300 strb.w r2, [r3, #768] ; 0x300
- }
- else
- {
- SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
- }
-}
- 80052b4: e00a b.n 80052cc <__NVIC_SetPriority+0x40>
- SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
- 80052b6: 683b ldr r3, [r7, #0]
- 80052b8: b2da uxtb r2, r3
- 80052ba: 4908 ldr r1, [pc, #32] ; (80052dc <__NVIC_SetPriority+0x50>)
- 80052bc: 79fb ldrb r3, [r7, #7]
- 80052be: f003 030f and.w r3, r3, #15
- 80052c2: 3b04 subs r3, #4
- 80052c4: 0112 lsls r2, r2, #4
- 80052c6: b2d2 uxtb r2, r2
- 80052c8: 440b add r3, r1
- 80052ca: 761a strb r2, [r3, #24]
-}
- 80052cc: bf00 nop
- 80052ce: 370c adds r7, #12
- 80052d0: 46bd mov sp, r7
- 80052d2: f85d 7b04 ldr.w r7, [sp], #4
- 80052d6: 4770 bx lr
- 80052d8: e000e100 .word 0xe000e100
- 80052dc: e000ed00 .word 0xe000ed00
-
-080052e0 <NVIC_EncodePriority>:
- \param [in] PreemptPriority Preemptive priority value (starting from 0).
- \param [in] SubPriority Subpriority value (starting from 0).
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
- */
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
-{
- 80052e0: b480 push {r7}
- 80052e2: b089 sub sp, #36 ; 0x24
- 80052e4: af00 add r7, sp, #0
- 80052e6: 60f8 str r0, [r7, #12]
- 80052e8: 60b9 str r1, [r7, #8]
- 80052ea: 607a str r2, [r7, #4]
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
- 80052ec: 68fb ldr r3, [r7, #12]
- 80052ee: f003 0307 and.w r3, r3, #7
- 80052f2: 61fb str r3, [r7, #28]
- uint32_t PreemptPriorityBits;
- uint32_t SubPriorityBits;
-
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
- 80052f4: 69fb ldr r3, [r7, #28]
- 80052f6: f1c3 0307 rsb r3, r3, #7
- 80052fa: 2b04 cmp r3, #4
- 80052fc: bf28 it cs
- 80052fe: 2304 movcs r3, #4
- 8005300: 61bb str r3, [r7, #24]
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
- 8005302: 69fb ldr r3, [r7, #28]
- 8005304: 3304 adds r3, #4
- 8005306: 2b06 cmp r3, #6
- 8005308: d902 bls.n 8005310 <NVIC_EncodePriority+0x30>
- 800530a: 69fb ldr r3, [r7, #28]
- 800530c: 3b03 subs r3, #3
- 800530e: e000 b.n 8005312 <NVIC_EncodePriority+0x32>
- 8005310: 2300 movs r3, #0
- 8005312: 617b str r3, [r7, #20]
-
- return (
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
- 8005314: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff
- 8005318: 69bb ldr r3, [r7, #24]
- 800531a: fa02 f303 lsl.w r3, r2, r3
- 800531e: 43da mvns r2, r3
- 8005320: 68bb ldr r3, [r7, #8]
- 8005322: 401a ands r2, r3
- 8005324: 697b ldr r3, [r7, #20]
- 8005326: 409a lsls r2, r3
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
- 8005328: f04f 31ff mov.w r1, #4294967295 ; 0xffffffff
- 800532c: 697b ldr r3, [r7, #20]
- 800532e: fa01 f303 lsl.w r3, r1, r3
- 8005332: 43d9 mvns r1, r3
- 8005334: 687b ldr r3, [r7, #4]
- 8005336: 400b ands r3, r1
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
- 8005338: 4313 orrs r3, r2
- );
-}
- 800533a: 4618 mov r0, r3
- 800533c: 3724 adds r7, #36 ; 0x24
- 800533e: 46bd mov sp, r7
- 8005340: f85d 7b04 ldr.w r7, [sp], #4
- 8005344: 4770 bx lr
- ...
-
-08005348 <SysTick_Config>:
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
- must contain a vendor-specific implementation of this function.
- */
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
-{
- 8005348: b580 push {r7, lr}
- 800534a: b082 sub sp, #8
- 800534c: af00 add r7, sp, #0
- 800534e: 6078 str r0, [r7, #4]
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
- 8005350: 687b ldr r3, [r7, #4]
- 8005352: 3b01 subs r3, #1
- 8005354: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000
- 8005358: d301 bcc.n 800535e <SysTick_Config+0x16>
- {
- return (1UL); /* Reload value impossible */
- 800535a: 2301 movs r3, #1
- 800535c: e00f b.n 800537e <SysTick_Config+0x36>
- }
-
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
- 800535e: 4a0a ldr r2, [pc, #40] ; (8005388 <SysTick_Config+0x40>)
- 8005360: 687b ldr r3, [r7, #4]
- 8005362: 3b01 subs r3, #1
- 8005364: 6053 str r3, [r2, #4]
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
- 8005366: 210f movs r1, #15
- 8005368: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff
- 800536c: f7ff ff8e bl 800528c <__NVIC_SetPriority>
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
- 8005370: 4b05 ldr r3, [pc, #20] ; (8005388 <SysTick_Config+0x40>)
- 8005372: 2200 movs r2, #0
- 8005374: 609a str r2, [r3, #8]
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
- 8005376: 4b04 ldr r3, [pc, #16] ; (8005388 <SysTick_Config+0x40>)
- 8005378: 2207 movs r2, #7
- 800537a: 601a str r2, [r3, #0]
- SysTick_CTRL_TICKINT_Msk |
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
- return (0UL); /* Function successful */
- 800537c: 2300 movs r3, #0
-}
- 800537e: 4618 mov r0, r3
- 8005380: 3708 adds r7, #8
- 8005382: 46bd mov sp, r7
- 8005384: bd80 pop {r7, pc}
- 8005386: bf00 nop
- 8005388: e000e010 .word 0xe000e010
-
-0800538c <HAL_NVIC_SetPriorityGrouping>:
- * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.
- * The pending IRQ priority will be managed only by the subpriority.
- * @retval None
- */
-void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
-{
- 800538c: b580 push {r7, lr}
- 800538e: b082 sub sp, #8
- 8005390: af00 add r7, sp, #0
- 8005392: 6078 str r0, [r7, #4]
- /* Check the parameters */
- assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
-
- /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
- NVIC_SetPriorityGrouping(PriorityGroup);
- 8005394: 6878 ldr r0, [r7, #4]
- 8005396: f7ff ff29 bl 80051ec <__NVIC_SetPriorityGrouping>
-}
- 800539a: bf00 nop
- 800539c: 3708 adds r7, #8
- 800539e: 46bd mov sp, r7
- 80053a0: bd80 pop {r7, pc}
-
-080053a2 <HAL_NVIC_SetPriority>:
- * This parameter can be a value between 0 and 15
- * A lower priority value indicates a higher priority.
- * @retval None
- */
-void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
-{
- 80053a2: b580 push {r7, lr}
- 80053a4: b086 sub sp, #24
- 80053a6: af00 add r7, sp, #0
- 80053a8: 4603 mov r3, r0
- 80053aa: 60b9 str r1, [r7, #8]
- 80053ac: 607a str r2, [r7, #4]
- 80053ae: 73fb strb r3, [r7, #15]
- uint32_t prioritygroup = 0x00;
- 80053b0: 2300 movs r3, #0
- 80053b2: 617b str r3, [r7, #20]
-
- /* Check the parameters */
- assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
- assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
-
- prioritygroup = NVIC_GetPriorityGrouping();
- 80053b4: f7ff ff3e bl 8005234 <__NVIC_GetPriorityGrouping>
- 80053b8: 6178 str r0, [r7, #20]
-
- NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
- 80053ba: 687a ldr r2, [r7, #4]
- 80053bc: 68b9 ldr r1, [r7, #8]
- 80053be: 6978 ldr r0, [r7, #20]
- 80053c0: f7ff ff8e bl 80052e0 <NVIC_EncodePriority>
- 80053c4: 4602 mov r2, r0
- 80053c6: f997 300f ldrsb.w r3, [r7, #15]
- 80053ca: 4611 mov r1, r2
- 80053cc: 4618 mov r0, r3
- 80053ce: f7ff ff5d bl 800528c <__NVIC_SetPriority>
-}
- 80053d2: bf00 nop
- 80053d4: 3718 adds r7, #24
- 80053d6: 46bd mov sp, r7
- 80053d8: bd80 pop {r7, pc}
-
-080053da <HAL_NVIC_EnableIRQ>:
- * This parameter can be an enumerator of IRQn_Type enumeration
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))
- * @retval None
- */
-void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
-{
- 80053da: b580 push {r7, lr}
- 80053dc: b082 sub sp, #8
- 80053de: af00 add r7, sp, #0
- 80053e0: 4603 mov r3, r0
- 80053e2: 71fb strb r3, [r7, #7]
- /* Check the parameters */
- assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
-
- /* Enable interrupt */
- NVIC_EnableIRQ(IRQn);
- 80053e4: f997 3007 ldrsb.w r3, [r7, #7]
- 80053e8: 4618 mov r0, r3
- 80053ea: f7ff ff31 bl 8005250 <__NVIC_EnableIRQ>
-}
- 80053ee: bf00 nop
- 80053f0: 3708 adds r7, #8
- 80053f2: 46bd mov sp, r7
- 80053f4: bd80 pop {r7, pc}
-
-080053f6 <HAL_SYSTICK_Config>:
- * @param TicksNumb Specifies the ticks Number of ticks between two interrupts.
- * @retval status: - 0 Function succeeded.
- * - 1 Function failed.
- */
-uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
-{
- 80053f6: b580 push {r7, lr}
- 80053f8: b082 sub sp, #8
- 80053fa: af00 add r7, sp, #0
- 80053fc: 6078 str r0, [r7, #4]
- return SysTick_Config(TicksNumb);
- 80053fe: 6878 ldr r0, [r7, #4]
- 8005400: f7ff ffa2 bl 8005348 <SysTick_Config>
- 8005404: 4603 mov r3, r0
-}
- 8005406: 4618 mov r0, r3
- 8005408: 3708 adds r7, #8
- 800540a: 46bd mov sp, r7
- 800540c: bd80 pop {r7, pc}
-
-0800540e <HAL_DMA_Abort_IT>:
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains
- * the configuration information for the specified DMA Stream.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
-{
- 800540e: b480 push {r7}
- 8005410: b083 sub sp, #12
- 8005412: af00 add r7, sp, #0
- 8005414: 6078 str r0, [r7, #4]
- if(hdma->State != HAL_DMA_STATE_BUSY)
- 8005416: 687b ldr r3, [r7, #4]
- 8005418: f893 3035 ldrb.w r3, [r3, #53] ; 0x35
- 800541c: b2db uxtb r3, r3
- 800541e: 2b02 cmp r3, #2
- 8005420: d004 beq.n 800542c <HAL_DMA_Abort_IT+0x1e>
- {
- hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;
- 8005422: 687b ldr r3, [r7, #4]
- 8005424: 2280 movs r2, #128 ; 0x80
- 8005426: 655a str r2, [r3, #84] ; 0x54
- return HAL_ERROR;
- 8005428: 2301 movs r3, #1
- 800542a: e00c b.n 8005446 <HAL_DMA_Abort_IT+0x38>
- }
- else
- {
- /* Set Abort State */
- hdma->State = HAL_DMA_STATE_ABORT;
- 800542c: 687b ldr r3, [r7, #4]
- 800542e: 2205 movs r2, #5
- 8005430: f883 2035 strb.w r2, [r3, #53] ; 0x35
-
- /* Disable the stream */
- __HAL_DMA_DISABLE(hdma);
- 8005434: 687b ldr r3, [r7, #4]
- 8005436: 681b ldr r3, [r3, #0]
- 8005438: 681a ldr r2, [r3, #0]
- 800543a: 687b ldr r3, [r7, #4]
- 800543c: 681b ldr r3, [r3, #0]
- 800543e: f022 0201 bic.w r2, r2, #1
- 8005442: 601a str r2, [r3, #0]
- }
-
- return HAL_OK;
- 8005444: 2300 movs r3, #0
-}
- 8005446: 4618 mov r0, r3
- 8005448: 370c adds r7, #12
- 800544a: 46bd mov sp, r7
- 800544c: f85d 7b04 ldr.w r7, [sp], #4
- 8005450: 4770 bx lr
- ...
-
-08005454 <HAL_GPIO_Init>:
- * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains
- * the configuration information for the specified GPIO peripheral.
- * @retval None
- */
-void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
-{
- 8005454: b480 push {r7}
- 8005456: b089 sub sp, #36 ; 0x24
- 8005458: af00 add r7, sp, #0
- 800545a: 6078 str r0, [r7, #4]
- 800545c: 6039 str r1, [r7, #0]
- uint32_t position = 0x00;
- 800545e: 2300 movs r3, #0
- 8005460: 61fb str r3, [r7, #28]
- uint32_t ioposition = 0x00;
- 8005462: 2300 movs r3, #0
- 8005464: 617b str r3, [r7, #20]
- uint32_t iocurrent = 0x00;
- 8005466: 2300 movs r3, #0
- 8005468: 613b str r3, [r7, #16]
- uint32_t temp = 0x00;
- 800546a: 2300 movs r3, #0
- 800546c: 61bb str r3, [r7, #24]
- assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
- assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
- assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
-
- /* Configure the port pins */
- for(position = 0; position < GPIO_NUMBER; position++)
- 800546e: 2300 movs r3, #0
- 8005470: 61fb str r3, [r7, #28]
- 8005472: e175 b.n 8005760 <HAL_GPIO_Init+0x30c>
- {
- /* Get the IO position */
- ioposition = ((uint32_t)0x01) << position;
- 8005474: 2201 movs r2, #1
- 8005476: 69fb ldr r3, [r7, #28]
- 8005478: fa02 f303 lsl.w r3, r2, r3
- 800547c: 617b str r3, [r7, #20]
- /* Get the current IO position */
- iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
- 800547e: 683b ldr r3, [r7, #0]
- 8005480: 681b ldr r3, [r3, #0]
- 8005482: 697a ldr r2, [r7, #20]
- 8005484: 4013 ands r3, r2
- 8005486: 613b str r3, [r7, #16]
-
- if(iocurrent == ioposition)
- 8005488: 693a ldr r2, [r7, #16]
- 800548a: 697b ldr r3, [r7, #20]
- 800548c: 429a cmp r2, r3
- 800548e: f040 8164 bne.w 800575a <HAL_GPIO_Init+0x306>
- {
- /*--------------------- GPIO Mode Configuration ------------------------*/
- /* In case of Alternate function mode selection */
- if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
- 8005492: 683b ldr r3, [r7, #0]
- 8005494: 685b ldr r3, [r3, #4]
- 8005496: 2b02 cmp r3, #2
- 8005498: d003 beq.n 80054a2 <HAL_GPIO_Init+0x4e>
- 800549a: 683b ldr r3, [r7, #0]
- 800549c: 685b ldr r3, [r3, #4]
- 800549e: 2b12 cmp r3, #18
- 80054a0: d123 bne.n 80054ea <HAL_GPIO_Init+0x96>
- {
- /* Check the Alternate function parameter */
- assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
-
- /* Configure Alternate function mapped with the current IO */
- temp = GPIOx->AFR[position >> 3];
- 80054a2: 69fb ldr r3, [r7, #28]
- 80054a4: 08da lsrs r2, r3, #3
- 80054a6: 687b ldr r3, [r7, #4]
- 80054a8: 3208 adds r2, #8
- 80054aa: f853 3022 ldr.w r3, [r3, r2, lsl #2]
- 80054ae: 61bb str r3, [r7, #24]
- temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
- 80054b0: 69fb ldr r3, [r7, #28]
- 80054b2: f003 0307 and.w r3, r3, #7
- 80054b6: 009b lsls r3, r3, #2
- 80054b8: 220f movs r2, #15
- 80054ba: fa02 f303 lsl.w r3, r2, r3
- 80054be: 43db mvns r3, r3
- 80054c0: 69ba ldr r2, [r7, #24]
- 80054c2: 4013 ands r3, r2
- 80054c4: 61bb str r3, [r7, #24]
- temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
- 80054c6: 683b ldr r3, [r7, #0]
- 80054c8: 691a ldr r2, [r3, #16]
- 80054ca: 69fb ldr r3, [r7, #28]
- 80054cc: f003 0307 and.w r3, r3, #7
- 80054d0: 009b lsls r3, r3, #2
- 80054d2: fa02 f303 lsl.w r3, r2, r3
- 80054d6: 69ba ldr r2, [r7, #24]
- 80054d8: 4313 orrs r3, r2
- 80054da: 61bb str r3, [r7, #24]
- GPIOx->AFR[position >> 3] = temp;
- 80054dc: 69fb ldr r3, [r7, #28]
- 80054de: 08da lsrs r2, r3, #3
- 80054e0: 687b ldr r3, [r7, #4]
- 80054e2: 3208 adds r2, #8
- 80054e4: 69b9 ldr r1, [r7, #24]
- 80054e6: f843 1022 str.w r1, [r3, r2, lsl #2]
- }
-
- /* Configure IO Direction mode (Input, Output, Alternate or Analog) */
- temp = GPIOx->MODER;
- 80054ea: 687b ldr r3, [r7, #4]
- 80054ec: 681b ldr r3, [r3, #0]
- 80054ee: 61bb str r3, [r7, #24]
- temp &= ~(GPIO_MODER_MODER0 << (position * 2));
- 80054f0: 69fb ldr r3, [r7, #28]
- 80054f2: 005b lsls r3, r3, #1
- 80054f4: 2203 movs r2, #3
- 80054f6: fa02 f303 lsl.w r3, r2, r3
- 80054fa: 43db mvns r3, r3
- 80054fc: 69ba ldr r2, [r7, #24]
- 80054fe: 4013 ands r3, r2
- 8005500: 61bb str r3, [r7, #24]
- temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
- 8005502: 683b ldr r3, [r7, #0]
- 8005504: 685b ldr r3, [r3, #4]
- 8005506: f003 0203 and.w r2, r3, #3
- 800550a: 69fb ldr r3, [r7, #28]
- 800550c: 005b lsls r3, r3, #1
- 800550e: fa02 f303 lsl.w r3, r2, r3
- 8005512: 69ba ldr r2, [r7, #24]
- 8005514: 4313 orrs r3, r2
- 8005516: 61bb str r3, [r7, #24]
- GPIOx->MODER = temp;
- 8005518: 687b ldr r3, [r7, #4]
- 800551a: 69ba ldr r2, [r7, #24]
- 800551c: 601a str r2, [r3, #0]
-
- /* In case of Output or Alternate function mode selection */
- if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
- 800551e: 683b ldr r3, [r7, #0]
- 8005520: 685b ldr r3, [r3, #4]
- 8005522: 2b01 cmp r3, #1
- 8005524: d00b beq.n 800553e <HAL_GPIO_Init+0xea>
- 8005526: 683b ldr r3, [r7, #0]
- 8005528: 685b ldr r3, [r3, #4]
- 800552a: 2b02 cmp r3, #2
- 800552c: d007 beq.n 800553e <HAL_GPIO_Init+0xea>
- (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
- 800552e: 683b ldr r3, [r7, #0]
- 8005530: 685b ldr r3, [r3, #4]
- if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
- 8005532: 2b11 cmp r3, #17
- 8005534: d003 beq.n 800553e <HAL_GPIO_Init+0xea>
- (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
- 8005536: 683b ldr r3, [r7, #0]
- 8005538: 685b ldr r3, [r3, #4]
- 800553a: 2b12 cmp r3, #18
- 800553c: d130 bne.n 80055a0 <HAL_GPIO_Init+0x14c>
- {
- /* Check the Speed parameter */
- assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
- /* Configure the IO Speed */
- temp = GPIOx->OSPEEDR;
- 800553e: 687b ldr r3, [r7, #4]
- 8005540: 689b ldr r3, [r3, #8]
- 8005542: 61bb str r3, [r7, #24]
- temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
- 8005544: 69fb ldr r3, [r7, #28]
- 8005546: 005b lsls r3, r3, #1
- 8005548: 2203 movs r2, #3
- 800554a: fa02 f303 lsl.w r3, r2, r3
- 800554e: 43db mvns r3, r3
- 8005550: 69ba ldr r2, [r7, #24]
- 8005552: 4013 ands r3, r2
- 8005554: 61bb str r3, [r7, #24]
- temp |= (GPIO_Init->Speed << (position * 2));
- 8005556: 683b ldr r3, [r7, #0]
- 8005558: 68da ldr r2, [r3, #12]
- 800555a: 69fb ldr r3, [r7, #28]
- 800555c: 005b lsls r3, r3, #1
- 800555e: fa02 f303 lsl.w r3, r2, r3
- 8005562: 69ba ldr r2, [r7, #24]
- 8005564: 4313 orrs r3, r2
- 8005566: 61bb str r3, [r7, #24]
- GPIOx->OSPEEDR = temp;
- 8005568: 687b ldr r3, [r7, #4]
- 800556a: 69ba ldr r2, [r7, #24]
- 800556c: 609a str r2, [r3, #8]
-
- /* Configure the IO Output Type */
- temp = GPIOx->OTYPER;
- 800556e: 687b ldr r3, [r7, #4]
- 8005570: 685b ldr r3, [r3, #4]
- 8005572: 61bb str r3, [r7, #24]
- temp &= ~(GPIO_OTYPER_OT_0 << position) ;
- 8005574: 2201 movs r2, #1
- 8005576: 69fb ldr r3, [r7, #28]
- 8005578: fa02 f303 lsl.w r3, r2, r3
- 800557c: 43db mvns r3, r3
- 800557e: 69ba ldr r2, [r7, #24]
- 8005580: 4013 ands r3, r2
- 8005582: 61bb str r3, [r7, #24]
- temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4) << position);
- 8005584: 683b ldr r3, [r7, #0]
- 8005586: 685b ldr r3, [r3, #4]
- 8005588: 091b lsrs r3, r3, #4
- 800558a: f003 0201 and.w r2, r3, #1
- 800558e: 69fb ldr r3, [r7, #28]
- 8005590: fa02 f303 lsl.w r3, r2, r3
- 8005594: 69ba ldr r2, [r7, #24]
- 8005596: 4313 orrs r3, r2
- 8005598: 61bb str r3, [r7, #24]
- GPIOx->OTYPER = temp;
- 800559a: 687b ldr r3, [r7, #4]
- 800559c: 69ba ldr r2, [r7, #24]
- 800559e: 605a str r2, [r3, #4]
- }
-
- /* Activate the Pull-up or Pull down resistor for the current IO */
- temp = GPIOx->PUPDR;
- 80055a0: 687b ldr r3, [r7, #4]
- 80055a2: 68db ldr r3, [r3, #12]
- 80055a4: 61bb str r3, [r7, #24]
- temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
- 80055a6: 69fb ldr r3, [r7, #28]
- 80055a8: 005b lsls r3, r3, #1
- 80055aa: 2203 movs r2, #3
- 80055ac: fa02 f303 lsl.w r3, r2, r3
- 80055b0: 43db mvns r3, r3
- 80055b2: 69ba ldr r2, [r7, #24]
- 80055b4: 4013 ands r3, r2
- 80055b6: 61bb str r3, [r7, #24]
- temp |= ((GPIO_Init->Pull) << (position * 2));
- 80055b8: 683b ldr r3, [r7, #0]
- 80055ba: 689a ldr r2, [r3, #8]
- 80055bc: 69fb ldr r3, [r7, #28]
- 80055be: 005b lsls r3, r3, #1
- 80055c0: fa02 f303 lsl.w r3, r2, r3
- 80055c4: 69ba ldr r2, [r7, #24]
- 80055c6: 4313 orrs r3, r2
- 80055c8: 61bb str r3, [r7, #24]
- GPIOx->PUPDR = temp;
- 80055ca: 687b ldr r3, [r7, #4]
- 80055cc: 69ba ldr r2, [r7, #24]
- 80055ce: 60da str r2, [r3, #12]
-
- /*--------------------- EXTI Mode Configuration ------------------------*/
- /* Configure the External Interrupt or event for the current IO */
- if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
- 80055d0: 683b ldr r3, [r7, #0]
- 80055d2: 685b ldr r3, [r3, #4]
- 80055d4: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
- 80055d8: 2b00 cmp r3, #0
- 80055da: f000 80be beq.w 800575a <HAL_GPIO_Init+0x306>
- {
- /* Enable SYSCFG Clock */
- __HAL_RCC_SYSCFG_CLK_ENABLE();
- 80055de: 4b65 ldr r3, [pc, #404] ; (8005774 <HAL_GPIO_Init+0x320>)
- 80055e0: 6c5b ldr r3, [r3, #68] ; 0x44
- 80055e2: 4a64 ldr r2, [pc, #400] ; (8005774 <HAL_GPIO_Init+0x320>)
- 80055e4: f443 4380 orr.w r3, r3, #16384 ; 0x4000
- 80055e8: 6453 str r3, [r2, #68] ; 0x44
- 80055ea: 4b62 ldr r3, [pc, #392] ; (8005774 <HAL_GPIO_Init+0x320>)
- 80055ec: 6c5b ldr r3, [r3, #68] ; 0x44
- 80055ee: f403 4380 and.w r3, r3, #16384 ; 0x4000
- 80055f2: 60fb str r3, [r7, #12]
- 80055f4: 68fb ldr r3, [r7, #12]
-
- temp = SYSCFG->EXTICR[position >> 2];
- 80055f6: 4a60 ldr r2, [pc, #384] ; (8005778 <HAL_GPIO_Init+0x324>)
- 80055f8: 69fb ldr r3, [r7, #28]
- 80055fa: 089b lsrs r3, r3, #2
- 80055fc: 3302 adds r3, #2
- 80055fe: f852 3023 ldr.w r3, [r2, r3, lsl #2]
- 8005602: 61bb str r3, [r7, #24]
- temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03)));
- 8005604: 69fb ldr r3, [r7, #28]
- 8005606: f003 0303 and.w r3, r3, #3
- 800560a: 009b lsls r3, r3, #2
- 800560c: 220f movs r2, #15
- 800560e: fa02 f303 lsl.w r3, r2, r3
- 8005612: 43db mvns r3, r3
- 8005614: 69ba ldr r2, [r7, #24]
- 8005616: 4013 ands r3, r2
- 8005618: 61bb str r3, [r7, #24]
- temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));
- 800561a: 687b ldr r3, [r7, #4]
- 800561c: 4a57 ldr r2, [pc, #348] ; (800577c <HAL_GPIO_Init+0x328>)
- 800561e: 4293 cmp r3, r2
- 8005620: d037 beq.n 8005692 <HAL_GPIO_Init+0x23e>
- 8005622: 687b ldr r3, [r7, #4]
- 8005624: 4a56 ldr r2, [pc, #344] ; (8005780 <HAL_GPIO_Init+0x32c>)
- 8005626: 4293 cmp r3, r2
- 8005628: d031 beq.n 800568e <HAL_GPIO_Init+0x23a>
- 800562a: 687b ldr r3, [r7, #4]
- 800562c: 4a55 ldr r2, [pc, #340] ; (8005784 <HAL_GPIO_Init+0x330>)
- 800562e: 4293 cmp r3, r2
- 8005630: d02b beq.n 800568a <HAL_GPIO_Init+0x236>
- 8005632: 687b ldr r3, [r7, #4]
- 8005634: 4a54 ldr r2, [pc, #336] ; (8005788 <HAL_GPIO_Init+0x334>)
- 8005636: 4293 cmp r3, r2
- 8005638: d025 beq.n 8005686 <HAL_GPIO_Init+0x232>
- 800563a: 687b ldr r3, [r7, #4]
- 800563c: 4a53 ldr r2, [pc, #332] ; (800578c <HAL_GPIO_Init+0x338>)
- 800563e: 4293 cmp r3, r2
- 8005640: d01f beq.n 8005682 <HAL_GPIO_Init+0x22e>
- 8005642: 687b ldr r3, [r7, #4]
- 8005644: 4a52 ldr r2, [pc, #328] ; (8005790 <HAL_GPIO_Init+0x33c>)
- 8005646: 4293 cmp r3, r2
- 8005648: d019 beq.n 800567e <HAL_GPIO_Init+0x22a>
- 800564a: 687b ldr r3, [r7, #4]
- 800564c: 4a51 ldr r2, [pc, #324] ; (8005794 <HAL_GPIO_Init+0x340>)
- 800564e: 4293 cmp r3, r2
- 8005650: d013 beq.n 800567a <HAL_GPIO_Init+0x226>
- 8005652: 687b ldr r3, [r7, #4]
- 8005654: 4a50 ldr r2, [pc, #320] ; (8005798 <HAL_GPIO_Init+0x344>)
- 8005656: 4293 cmp r3, r2
- 8005658: d00d beq.n 8005676 <HAL_GPIO_Init+0x222>
- 800565a: 687b ldr r3, [r7, #4]
- 800565c: 4a4f ldr r2, [pc, #316] ; (800579c <HAL_GPIO_Init+0x348>)
- 800565e: 4293 cmp r3, r2
- 8005660: d007 beq.n 8005672 <HAL_GPIO_Init+0x21e>
- 8005662: 687b ldr r3, [r7, #4]
- 8005664: 4a4e ldr r2, [pc, #312] ; (80057a0 <HAL_GPIO_Init+0x34c>)
- 8005666: 4293 cmp r3, r2
- 8005668: d101 bne.n 800566e <HAL_GPIO_Init+0x21a>
- 800566a: 2309 movs r3, #9
- 800566c: e012 b.n 8005694 <HAL_GPIO_Init+0x240>
- 800566e: 230a movs r3, #10
- 8005670: e010 b.n 8005694 <HAL_GPIO_Init+0x240>
- 8005672: 2308 movs r3, #8
- 8005674: e00e b.n 8005694 <HAL_GPIO_Init+0x240>
- 8005676: 2307 movs r3, #7
- 8005678: e00c b.n 8005694 <HAL_GPIO_Init+0x240>
- 800567a: 2306 movs r3, #6
- 800567c: e00a b.n 8005694 <HAL_GPIO_Init+0x240>
- 800567e: 2305 movs r3, #5
- 8005680: e008 b.n 8005694 <HAL_GPIO_Init+0x240>
- 8005682: 2304 movs r3, #4
- 8005684: e006 b.n 8005694 <HAL_GPIO_Init+0x240>
- 8005686: 2303 movs r3, #3
- 8005688: e004 b.n 8005694 <HAL_GPIO_Init+0x240>
- 800568a: 2302 movs r3, #2
- 800568c: e002 b.n 8005694 <HAL_GPIO_Init+0x240>
- 800568e: 2301 movs r3, #1
- 8005690: e000 b.n 8005694 <HAL_GPIO_Init+0x240>
- 8005692: 2300 movs r3, #0
- 8005694: 69fa ldr r2, [r7, #28]
- 8005696: f002 0203 and.w r2, r2, #3
- 800569a: 0092 lsls r2, r2, #2
- 800569c: 4093 lsls r3, r2
- 800569e: 69ba ldr r2, [r7, #24]
- 80056a0: 4313 orrs r3, r2
- 80056a2: 61bb str r3, [r7, #24]
- SYSCFG->EXTICR[position >> 2] = temp;
- 80056a4: 4934 ldr r1, [pc, #208] ; (8005778 <HAL_GPIO_Init+0x324>)
- 80056a6: 69fb ldr r3, [r7, #28]
- 80056a8: 089b lsrs r3, r3, #2
- 80056aa: 3302 adds r3, #2
- 80056ac: 69ba ldr r2, [r7, #24]
- 80056ae: f841 2023 str.w r2, [r1, r3, lsl #2]
-
- /* Clear EXTI line configuration */
- temp = EXTI->IMR;
- 80056b2: 4b3c ldr r3, [pc, #240] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 80056b4: 681b ldr r3, [r3, #0]
- 80056b6: 61bb str r3, [r7, #24]
- temp &= ~((uint32_t)iocurrent);
- 80056b8: 693b ldr r3, [r7, #16]
- 80056ba: 43db mvns r3, r3
- 80056bc: 69ba ldr r2, [r7, #24]
- 80056be: 4013 ands r3, r2
- 80056c0: 61bb str r3, [r7, #24]
- if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
- 80056c2: 683b ldr r3, [r7, #0]
- 80056c4: 685b ldr r3, [r3, #4]
- 80056c6: f403 3380 and.w r3, r3, #65536 ; 0x10000
- 80056ca: 2b00 cmp r3, #0
- 80056cc: d003 beq.n 80056d6 <HAL_GPIO_Init+0x282>
- {
- temp |= iocurrent;
- 80056ce: 69ba ldr r2, [r7, #24]
- 80056d0: 693b ldr r3, [r7, #16]
- 80056d2: 4313 orrs r3, r2
- 80056d4: 61bb str r3, [r7, #24]
- }
- EXTI->IMR = temp;
- 80056d6: 4a33 ldr r2, [pc, #204] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 80056d8: 69bb ldr r3, [r7, #24]
- 80056da: 6013 str r3, [r2, #0]
-
- temp = EXTI->EMR;
- 80056dc: 4b31 ldr r3, [pc, #196] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 80056de: 685b ldr r3, [r3, #4]
- 80056e0: 61bb str r3, [r7, #24]
- temp &= ~((uint32_t)iocurrent);
- 80056e2: 693b ldr r3, [r7, #16]
- 80056e4: 43db mvns r3, r3
- 80056e6: 69ba ldr r2, [r7, #24]
- 80056e8: 4013 ands r3, r2
- 80056ea: 61bb str r3, [r7, #24]
- if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
- 80056ec: 683b ldr r3, [r7, #0]
- 80056ee: 685b ldr r3, [r3, #4]
- 80056f0: f403 3300 and.w r3, r3, #131072 ; 0x20000
- 80056f4: 2b00 cmp r3, #0
- 80056f6: d003 beq.n 8005700 <HAL_GPIO_Init+0x2ac>
- {
- temp |= iocurrent;
- 80056f8: 69ba ldr r2, [r7, #24]
- 80056fa: 693b ldr r3, [r7, #16]
- 80056fc: 4313 orrs r3, r2
- 80056fe: 61bb str r3, [r7, #24]
- }
- EXTI->EMR = temp;
- 8005700: 4a28 ldr r2, [pc, #160] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 8005702: 69bb ldr r3, [r7, #24]
- 8005704: 6053 str r3, [r2, #4]
-
- /* Clear Rising Falling edge configuration */
- temp = EXTI->RTSR;
- 8005706: 4b27 ldr r3, [pc, #156] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 8005708: 689b ldr r3, [r3, #8]
- 800570a: 61bb str r3, [r7, #24]
- temp &= ~((uint32_t)iocurrent);
- 800570c: 693b ldr r3, [r7, #16]
- 800570e: 43db mvns r3, r3
- 8005710: 69ba ldr r2, [r7, #24]
- 8005712: 4013 ands r3, r2
- 8005714: 61bb str r3, [r7, #24]
- if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
- 8005716: 683b ldr r3, [r7, #0]
- 8005718: 685b ldr r3, [r3, #4]
- 800571a: f403 1380 and.w r3, r3, #1048576 ; 0x100000
- 800571e: 2b00 cmp r3, #0
- 8005720: d003 beq.n 800572a <HAL_GPIO_Init+0x2d6>
- {
- temp |= iocurrent;
- 8005722: 69ba ldr r2, [r7, #24]
- 8005724: 693b ldr r3, [r7, #16]
- 8005726: 4313 orrs r3, r2
- 8005728: 61bb str r3, [r7, #24]
- }
- EXTI->RTSR = temp;
- 800572a: 4a1e ldr r2, [pc, #120] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 800572c: 69bb ldr r3, [r7, #24]
- 800572e: 6093 str r3, [r2, #8]
-
- temp = EXTI->FTSR;
- 8005730: 4b1c ldr r3, [pc, #112] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 8005732: 68db ldr r3, [r3, #12]
- 8005734: 61bb str r3, [r7, #24]
- temp &= ~((uint32_t)iocurrent);
- 8005736: 693b ldr r3, [r7, #16]
- 8005738: 43db mvns r3, r3
- 800573a: 69ba ldr r2, [r7, #24]
- 800573c: 4013 ands r3, r2
- 800573e: 61bb str r3, [r7, #24]
- if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
- 8005740: 683b ldr r3, [r7, #0]
- 8005742: 685b ldr r3, [r3, #4]
- 8005744: f403 1300 and.w r3, r3, #2097152 ; 0x200000
- 8005748: 2b00 cmp r3, #0
- 800574a: d003 beq.n 8005754 <HAL_GPIO_Init+0x300>
- {
- temp |= iocurrent;
- 800574c: 69ba ldr r2, [r7, #24]
- 800574e: 693b ldr r3, [r7, #16]
- 8005750: 4313 orrs r3, r2
- 8005752: 61bb str r3, [r7, #24]
- }
- EXTI->FTSR = temp;
- 8005754: 4a13 ldr r2, [pc, #76] ; (80057a4 <HAL_GPIO_Init+0x350>)
- 8005756: 69bb ldr r3, [r7, #24]
- 8005758: 60d3 str r3, [r2, #12]
- for(position = 0; position < GPIO_NUMBER; position++)
- 800575a: 69fb ldr r3, [r7, #28]
- 800575c: 3301 adds r3, #1
- 800575e: 61fb str r3, [r7, #28]
- 8005760: 69fb ldr r3, [r7, #28]
- 8005762: 2b0f cmp r3, #15
- 8005764: f67f ae86 bls.w 8005474 <HAL_GPIO_Init+0x20>
- }
- }
- }
-}
- 8005768: bf00 nop
- 800576a: 3724 adds r7, #36 ; 0x24
- 800576c: 46bd mov sp, r7
- 800576e: f85d 7b04 ldr.w r7, [sp], #4
- 8005772: 4770 bx lr
- 8005774: 40023800 .word 0x40023800
- 8005778: 40013800 .word 0x40013800
- 800577c: 40020000 .word 0x40020000
- 8005780: 40020400 .word 0x40020400
- 8005784: 40020800 .word 0x40020800
- 8005788: 40020c00 .word 0x40020c00
- 800578c: 40021000 .word 0x40021000
- 8005790: 40021400 .word 0x40021400
- 8005794: 40021800 .word 0x40021800
- 8005798: 40021c00 .word 0x40021c00
- 800579c: 40022000 .word 0x40022000
- 80057a0: 40022400 .word 0x40022400
- 80057a4: 40013c00 .word 0x40013c00
-
-080057a8 <HAL_GPIO_WritePin>:
- * @arg GPIO_PIN_RESET: to clear the port pin
- * @arg GPIO_PIN_SET: to set the port pin
- * @retval None
- */
-void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
-{
- 80057a8: b480 push {r7}
- 80057aa: b083 sub sp, #12
- 80057ac: af00 add r7, sp, #0
- 80057ae: 6078 str r0, [r7, #4]
- 80057b0: 460b mov r3, r1
- 80057b2: 807b strh r3, [r7, #2]
- 80057b4: 4613 mov r3, r2
- 80057b6: 707b strb r3, [r7, #1]
- /* Check the parameters */
- assert_param(IS_GPIO_PIN(GPIO_Pin));
- assert_param(IS_GPIO_PIN_ACTION(PinState));
-
- if(PinState != GPIO_PIN_RESET)
- 80057b8: 787b ldrb r3, [r7, #1]
- 80057ba: 2b00 cmp r3, #0
- 80057bc: d003 beq.n 80057c6 <HAL_GPIO_WritePin+0x1e>
- {
- GPIOx->BSRR = GPIO_Pin;
- 80057be: 887a ldrh r2, [r7, #2]
- 80057c0: 687b ldr r3, [r7, #4]
- 80057c2: 619a str r2, [r3, #24]
- }
- else
- {
- GPIOx->BSRR = (uint32_t)GPIO_Pin << 16;
- }
-}
- 80057c4: e003 b.n 80057ce <HAL_GPIO_WritePin+0x26>
- GPIOx->BSRR = (uint32_t)GPIO_Pin << 16;
- 80057c6: 887b ldrh r3, [r7, #2]
- 80057c8: 041a lsls r2, r3, #16
- 80057ca: 687b ldr r3, [r7, #4]
- 80057cc: 619a str r2, [r3, #24]
-}
- 80057ce: bf00 nop
- 80057d0: 370c adds r7, #12
- 80057d2: 46bd mov sp, r7
- 80057d4: f85d 7b04 ldr.w r7, [sp], #4
- 80057d8: 4770 bx lr
- ...
-
-080057dc <HAL_GPIO_EXTI_IRQHandler>:
- * @brief This function handles EXTI interrupt request.
- * @param GPIO_Pin Specifies the pins connected EXTI line
- * @retval None
- */
-void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
-{
- 80057dc: b580 push {r7, lr}
- 80057de: b082 sub sp, #8
- 80057e0: af00 add r7, sp, #0
- 80057e2: 4603 mov r3, r0
- 80057e4: 80fb strh r3, [r7, #6]
- /* EXTI line interrupt detected */
- if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
- 80057e6: 4b08 ldr r3, [pc, #32] ; (8005808 <HAL_GPIO_EXTI_IRQHandler+0x2c>)
- 80057e8: 695a ldr r2, [r3, #20]
- 80057ea: 88fb ldrh r3, [r7, #6]
- 80057ec: 4013 ands r3, r2
- 80057ee: 2b00 cmp r3, #0
- 80057f0: d006 beq.n 8005800 <HAL_GPIO_EXTI_IRQHandler+0x24>
- {
- __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
- 80057f2: 4a05 ldr r2, [pc, #20] ; (8005808 <HAL_GPIO_EXTI_IRQHandler+0x2c>)
- 80057f4: 88fb ldrh r3, [r7, #6]
- 80057f6: 6153 str r3, [r2, #20]
- HAL_GPIO_EXTI_Callback(GPIO_Pin);
- 80057f8: 88fb ldrh r3, [r7, #6]
- 80057fa: 4618 mov r0, r3
- 80057fc: f7fb ffd0 bl 80017a0 <HAL_GPIO_EXTI_Callback>
- }
-}
- 8005800: bf00 nop
- 8005802: 3708 adds r7, #8
- 8005804: 46bd mov sp, r7
- 8005806: bd80 pop {r7, pc}
- 8005808: 40013c00 .word 0x40013c00
-
-0800580c <HAL_RCC_OscConfig>:
- * supported by this function. User should request a transition to HSE Off
- * first and then HSE On or HSE Bypass.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
-{
- 800580c: b580 push {r7, lr}
- 800580e: b086 sub sp, #24
- 8005810: af00 add r7, sp, #0
- 8005812: 6078 str r0, [r7, #4]
- uint32_t tickstart;
- FlagStatus pwrclkchanged = RESET;
- 8005814: 2300 movs r3, #0
- 8005816: 75fb strb r3, [r7, #23]
-
- /* Check Null pointer */
- if(RCC_OscInitStruct == NULL)
- 8005818: 687b ldr r3, [r7, #4]
- 800581a: 2b00 cmp r3, #0
- 800581c: d101 bne.n 8005822 <HAL_RCC_OscConfig+0x16>
- {
- return HAL_ERROR;
- 800581e: 2301 movs r3, #1
- 8005820: e25e b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
-
- /* Check the parameters */
- assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
-
- /*------------------------------- HSE Configuration ------------------------*/
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
- 8005822: 687b ldr r3, [r7, #4]
- 8005824: 681b ldr r3, [r3, #0]
- 8005826: f003 0301 and.w r3, r3, #1
- 800582a: 2b00 cmp r3, #0
- 800582c: f000 8087 beq.w 800593e <HAL_RCC_OscConfig+0x132>
- {
- /* Check the parameters */
- assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
- /* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
- if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
- 8005830: 4b96 ldr r3, [pc, #600] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005832: 689b ldr r3, [r3, #8]
- 8005834: f003 030c and.w r3, r3, #12
- 8005838: 2b04 cmp r3, #4
- 800583a: d00c beq.n 8005856 <HAL_RCC_OscConfig+0x4a>
- || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
- 800583c: 4b93 ldr r3, [pc, #588] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 800583e: 689b ldr r3, [r3, #8]
- 8005840: f003 030c and.w r3, r3, #12
- 8005844: 2b08 cmp r3, #8
- 8005846: d112 bne.n 800586e <HAL_RCC_OscConfig+0x62>
- 8005848: 4b90 ldr r3, [pc, #576] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 800584a: 685b ldr r3, [r3, #4]
- 800584c: f403 0380 and.w r3, r3, #4194304 ; 0x400000
- 8005850: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000
- 8005854: d10b bne.n 800586e <HAL_RCC_OscConfig+0x62>
- {
- if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
- 8005856: 4b8d ldr r3, [pc, #564] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005858: 681b ldr r3, [r3, #0]
- 800585a: f403 3300 and.w r3, r3, #131072 ; 0x20000
- 800585e: 2b00 cmp r3, #0
- 8005860: d06c beq.n 800593c <HAL_RCC_OscConfig+0x130>
- 8005862: 687b ldr r3, [r7, #4]
- 8005864: 685b ldr r3, [r3, #4]
- 8005866: 2b00 cmp r3, #0
- 8005868: d168 bne.n 800593c <HAL_RCC_OscConfig+0x130>
- {
- return HAL_ERROR;
- 800586a: 2301 movs r3, #1
- 800586c: e238 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- }
- }
- else
- {
- /* Set the new HSE configuration ---------------------------------------*/
- __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
- 800586e: 687b ldr r3, [r7, #4]
- 8005870: 685b ldr r3, [r3, #4]
- 8005872: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
- 8005876: d106 bne.n 8005886 <HAL_RCC_OscConfig+0x7a>
- 8005878: 4b84 ldr r3, [pc, #528] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 800587a: 681b ldr r3, [r3, #0]
- 800587c: 4a83 ldr r2, [pc, #524] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 800587e: f443 3380 orr.w r3, r3, #65536 ; 0x10000
- 8005882: 6013 str r3, [r2, #0]
- 8005884: e02e b.n 80058e4 <HAL_RCC_OscConfig+0xd8>
- 8005886: 687b ldr r3, [r7, #4]
- 8005888: 685b ldr r3, [r3, #4]
- 800588a: 2b00 cmp r3, #0
- 800588c: d10c bne.n 80058a8 <HAL_RCC_OscConfig+0x9c>
- 800588e: 4b7f ldr r3, [pc, #508] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005890: 681b ldr r3, [r3, #0]
- 8005892: 4a7e ldr r2, [pc, #504] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005894: f423 3380 bic.w r3, r3, #65536 ; 0x10000
- 8005898: 6013 str r3, [r2, #0]
- 800589a: 4b7c ldr r3, [pc, #496] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 800589c: 681b ldr r3, [r3, #0]
- 800589e: 4a7b ldr r2, [pc, #492] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058a0: f423 2380 bic.w r3, r3, #262144 ; 0x40000
- 80058a4: 6013 str r3, [r2, #0]
- 80058a6: e01d b.n 80058e4 <HAL_RCC_OscConfig+0xd8>
- 80058a8: 687b ldr r3, [r7, #4]
- 80058aa: 685b ldr r3, [r3, #4]
- 80058ac: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000
- 80058b0: d10c bne.n 80058cc <HAL_RCC_OscConfig+0xc0>
- 80058b2: 4b76 ldr r3, [pc, #472] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058b4: 681b ldr r3, [r3, #0]
- 80058b6: 4a75 ldr r2, [pc, #468] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058b8: f443 2380 orr.w r3, r3, #262144 ; 0x40000
- 80058bc: 6013 str r3, [r2, #0]
- 80058be: 4b73 ldr r3, [pc, #460] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058c0: 681b ldr r3, [r3, #0]
- 80058c2: 4a72 ldr r2, [pc, #456] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058c4: f443 3380 orr.w r3, r3, #65536 ; 0x10000
- 80058c8: 6013 str r3, [r2, #0]
- 80058ca: e00b b.n 80058e4 <HAL_RCC_OscConfig+0xd8>
- 80058cc: 4b6f ldr r3, [pc, #444] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058ce: 681b ldr r3, [r3, #0]
- 80058d0: 4a6e ldr r2, [pc, #440] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058d2: f423 3380 bic.w r3, r3, #65536 ; 0x10000
- 80058d6: 6013 str r3, [r2, #0]
- 80058d8: 4b6c ldr r3, [pc, #432] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058da: 681b ldr r3, [r3, #0]
- 80058dc: 4a6b ldr r2, [pc, #428] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80058de: f423 2380 bic.w r3, r3, #262144 ; 0x40000
- 80058e2: 6013 str r3, [r2, #0]
-
- /* Check the HSE State */
- if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
- 80058e4: 687b ldr r3, [r7, #4]
- 80058e6: 685b ldr r3, [r3, #4]
- 80058e8: 2b00 cmp r3, #0
- 80058ea: d013 beq.n 8005914 <HAL_RCC_OscConfig+0x108>
- {
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 80058ec: f7ff fc72 bl 80051d4 <HAL_GetTick>
- 80058f0: 6138 str r0, [r7, #16]
-
- /* Wait till HSE is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
- 80058f2: e008 b.n 8005906 <HAL_RCC_OscConfig+0xfa>
- {
- if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
- 80058f4: f7ff fc6e bl 80051d4 <HAL_GetTick>
- 80058f8: 4602 mov r2, r0
- 80058fa: 693b ldr r3, [r7, #16]
- 80058fc: 1ad3 subs r3, r2, r3
- 80058fe: 2b64 cmp r3, #100 ; 0x64
- 8005900: d901 bls.n 8005906 <HAL_RCC_OscConfig+0xfa>
- {
- return HAL_TIMEOUT;
- 8005902: 2303 movs r3, #3
- 8005904: e1ec b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
- 8005906: 4b61 ldr r3, [pc, #388] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005908: 681b ldr r3, [r3, #0]
- 800590a: f403 3300 and.w r3, r3, #131072 ; 0x20000
- 800590e: 2b00 cmp r3, #0
- 8005910: d0f0 beq.n 80058f4 <HAL_RCC_OscConfig+0xe8>
- 8005912: e014 b.n 800593e <HAL_RCC_OscConfig+0x132>
- }
- }
- else
- {
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005914: f7ff fc5e bl 80051d4 <HAL_GetTick>
- 8005918: 6138 str r0, [r7, #16]
-
- /* Wait till HSE is bypassed or disabled */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
- 800591a: e008 b.n 800592e <HAL_RCC_OscConfig+0x122>
- {
- if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
- 800591c: f7ff fc5a bl 80051d4 <HAL_GetTick>
- 8005920: 4602 mov r2, r0
- 8005922: 693b ldr r3, [r7, #16]
- 8005924: 1ad3 subs r3, r2, r3
- 8005926: 2b64 cmp r3, #100 ; 0x64
- 8005928: d901 bls.n 800592e <HAL_RCC_OscConfig+0x122>
- {
- return HAL_TIMEOUT;
- 800592a: 2303 movs r3, #3
- 800592c: e1d8 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
- 800592e: 4b57 ldr r3, [pc, #348] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005930: 681b ldr r3, [r3, #0]
- 8005932: f403 3300 and.w r3, r3, #131072 ; 0x20000
- 8005936: 2b00 cmp r3, #0
- 8005938: d1f0 bne.n 800591c <HAL_RCC_OscConfig+0x110>
- 800593a: e000 b.n 800593e <HAL_RCC_OscConfig+0x132>
- if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
- 800593c: bf00 nop
- }
- }
- }
- }
- /*----------------------------- HSI Configuration --------------------------*/
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
- 800593e: 687b ldr r3, [r7, #4]
- 8005940: 681b ldr r3, [r3, #0]
- 8005942: f003 0302 and.w r3, r3, #2
- 8005946: 2b00 cmp r3, #0
- 8005948: d069 beq.n 8005a1e <HAL_RCC_OscConfig+0x212>
- /* Check the parameters */
- assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
- assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
-
- /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
- if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
- 800594a: 4b50 ldr r3, [pc, #320] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 800594c: 689b ldr r3, [r3, #8]
- 800594e: f003 030c and.w r3, r3, #12
- 8005952: 2b00 cmp r3, #0
- 8005954: d00b beq.n 800596e <HAL_RCC_OscConfig+0x162>
- || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
- 8005956: 4b4d ldr r3, [pc, #308] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005958: 689b ldr r3, [r3, #8]
- 800595a: f003 030c and.w r3, r3, #12
- 800595e: 2b08 cmp r3, #8
- 8005960: d11c bne.n 800599c <HAL_RCC_OscConfig+0x190>
- 8005962: 4b4a ldr r3, [pc, #296] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005964: 685b ldr r3, [r3, #4]
- 8005966: f403 0380 and.w r3, r3, #4194304 ; 0x400000
- 800596a: 2b00 cmp r3, #0
- 800596c: d116 bne.n 800599c <HAL_RCC_OscConfig+0x190>
- {
- /* When HSI is used as system clock it will not disabled */
- if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
- 800596e: 4b47 ldr r3, [pc, #284] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005970: 681b ldr r3, [r3, #0]
- 8005972: f003 0302 and.w r3, r3, #2
- 8005976: 2b00 cmp r3, #0
- 8005978: d005 beq.n 8005986 <HAL_RCC_OscConfig+0x17a>
- 800597a: 687b ldr r3, [r7, #4]
- 800597c: 68db ldr r3, [r3, #12]
- 800597e: 2b01 cmp r3, #1
- 8005980: d001 beq.n 8005986 <HAL_RCC_OscConfig+0x17a>
- {
- return HAL_ERROR;
- 8005982: 2301 movs r3, #1
- 8005984: e1ac b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- }
- /* Otherwise, just the calibration is allowed */
- else
- {
- /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
- __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
- 8005986: 4b41 ldr r3, [pc, #260] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005988: 681b ldr r3, [r3, #0]
- 800598a: f023 02f8 bic.w r2, r3, #248 ; 0xf8
- 800598e: 687b ldr r3, [r7, #4]
- 8005990: 691b ldr r3, [r3, #16]
- 8005992: 00db lsls r3, r3, #3
- 8005994: 493d ldr r1, [pc, #244] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005996: 4313 orrs r3, r2
- 8005998: 600b str r3, [r1, #0]
- if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
- 800599a: e040 b.n 8005a1e <HAL_RCC_OscConfig+0x212>
- }
- }
- else
- {
- /* Check the HSI State */
- if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)
- 800599c: 687b ldr r3, [r7, #4]
- 800599e: 68db ldr r3, [r3, #12]
- 80059a0: 2b00 cmp r3, #0
- 80059a2: d023 beq.n 80059ec <HAL_RCC_OscConfig+0x1e0>
- {
- /* Enable the Internal High Speed oscillator (HSI). */
- __HAL_RCC_HSI_ENABLE();
- 80059a4: 4b39 ldr r3, [pc, #228] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80059a6: 681b ldr r3, [r3, #0]
- 80059a8: 4a38 ldr r2, [pc, #224] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80059aa: f043 0301 orr.w r3, r3, #1
- 80059ae: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 80059b0: f7ff fc10 bl 80051d4 <HAL_GetTick>
- 80059b4: 6138 str r0, [r7, #16]
-
- /* Wait till HSI is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
- 80059b6: e008 b.n 80059ca <HAL_RCC_OscConfig+0x1be>
- {
- if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
- 80059b8: f7ff fc0c bl 80051d4 <HAL_GetTick>
- 80059bc: 4602 mov r2, r0
- 80059be: 693b ldr r3, [r7, #16]
- 80059c0: 1ad3 subs r3, r2, r3
- 80059c2: 2b02 cmp r3, #2
- 80059c4: d901 bls.n 80059ca <HAL_RCC_OscConfig+0x1be>
- {
- return HAL_TIMEOUT;
- 80059c6: 2303 movs r3, #3
- 80059c8: e18a b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
- 80059ca: 4b30 ldr r3, [pc, #192] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80059cc: 681b ldr r3, [r3, #0]
- 80059ce: f003 0302 and.w r3, r3, #2
- 80059d2: 2b00 cmp r3, #0
- 80059d4: d0f0 beq.n 80059b8 <HAL_RCC_OscConfig+0x1ac>
- }
- }
-
- /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
- __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
- 80059d6: 4b2d ldr r3, [pc, #180] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80059d8: 681b ldr r3, [r3, #0]
- 80059da: f023 02f8 bic.w r2, r3, #248 ; 0xf8
- 80059de: 687b ldr r3, [r7, #4]
- 80059e0: 691b ldr r3, [r3, #16]
- 80059e2: 00db lsls r3, r3, #3
- 80059e4: 4929 ldr r1, [pc, #164] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80059e6: 4313 orrs r3, r2
- 80059e8: 600b str r3, [r1, #0]
- 80059ea: e018 b.n 8005a1e <HAL_RCC_OscConfig+0x212>
- }
- else
- {
- /* Disable the Internal High Speed oscillator (HSI). */
- __HAL_RCC_HSI_DISABLE();
- 80059ec: 4b27 ldr r3, [pc, #156] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80059ee: 681b ldr r3, [r3, #0]
- 80059f0: 4a26 ldr r2, [pc, #152] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 80059f2: f023 0301 bic.w r3, r3, #1
- 80059f6: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 80059f8: f7ff fbec bl 80051d4 <HAL_GetTick>
- 80059fc: 6138 str r0, [r7, #16]
-
- /* Wait till HSI is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
- 80059fe: e008 b.n 8005a12 <HAL_RCC_OscConfig+0x206>
- {
- if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
- 8005a00: f7ff fbe8 bl 80051d4 <HAL_GetTick>
- 8005a04: 4602 mov r2, r0
- 8005a06: 693b ldr r3, [r7, #16]
- 8005a08: 1ad3 subs r3, r2, r3
- 8005a0a: 2b02 cmp r3, #2
- 8005a0c: d901 bls.n 8005a12 <HAL_RCC_OscConfig+0x206>
- {
- return HAL_TIMEOUT;
- 8005a0e: 2303 movs r3, #3
- 8005a10: e166 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
- 8005a12: 4b1e ldr r3, [pc, #120] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005a14: 681b ldr r3, [r3, #0]
- 8005a16: f003 0302 and.w r3, r3, #2
- 8005a1a: 2b00 cmp r3, #0
- 8005a1c: d1f0 bne.n 8005a00 <HAL_RCC_OscConfig+0x1f4>
- }
- }
- }
- }
- /*------------------------------ LSI Configuration -------------------------*/
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
- 8005a1e: 687b ldr r3, [r7, #4]
- 8005a20: 681b ldr r3, [r3, #0]
- 8005a22: f003 0308 and.w r3, r3, #8
- 8005a26: 2b00 cmp r3, #0
- 8005a28: d038 beq.n 8005a9c <HAL_RCC_OscConfig+0x290>
- {
- /* Check the parameters */
- assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
-
- /* Check the LSI State */
- if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)
- 8005a2a: 687b ldr r3, [r7, #4]
- 8005a2c: 695b ldr r3, [r3, #20]
- 8005a2e: 2b00 cmp r3, #0
- 8005a30: d019 beq.n 8005a66 <HAL_RCC_OscConfig+0x25a>
- {
- /* Enable the Internal Low Speed oscillator (LSI). */
- __HAL_RCC_LSI_ENABLE();
- 8005a32: 4b16 ldr r3, [pc, #88] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005a34: 6f5b ldr r3, [r3, #116] ; 0x74
- 8005a36: 4a15 ldr r2, [pc, #84] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005a38: f043 0301 orr.w r3, r3, #1
- 8005a3c: 6753 str r3, [r2, #116] ; 0x74
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005a3e: f7ff fbc9 bl 80051d4 <HAL_GetTick>
- 8005a42: 6138 str r0, [r7, #16]
-
- /* Wait till LSI is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
- 8005a44: e008 b.n 8005a58 <HAL_RCC_OscConfig+0x24c>
- {
- if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
- 8005a46: f7ff fbc5 bl 80051d4 <HAL_GetTick>
- 8005a4a: 4602 mov r2, r0
- 8005a4c: 693b ldr r3, [r7, #16]
- 8005a4e: 1ad3 subs r3, r2, r3
- 8005a50: 2b02 cmp r3, #2
- 8005a52: d901 bls.n 8005a58 <HAL_RCC_OscConfig+0x24c>
- {
- return HAL_TIMEOUT;
- 8005a54: 2303 movs r3, #3
- 8005a56: e143 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
- 8005a58: 4b0c ldr r3, [pc, #48] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005a5a: 6f5b ldr r3, [r3, #116] ; 0x74
- 8005a5c: f003 0302 and.w r3, r3, #2
- 8005a60: 2b00 cmp r3, #0
- 8005a62: d0f0 beq.n 8005a46 <HAL_RCC_OscConfig+0x23a>
- 8005a64: e01a b.n 8005a9c <HAL_RCC_OscConfig+0x290>
- }
- }
- else
- {
- /* Disable the Internal Low Speed oscillator (LSI). */
- __HAL_RCC_LSI_DISABLE();
- 8005a66: 4b09 ldr r3, [pc, #36] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005a68: 6f5b ldr r3, [r3, #116] ; 0x74
- 8005a6a: 4a08 ldr r2, [pc, #32] ; (8005a8c <HAL_RCC_OscConfig+0x280>)
- 8005a6c: f023 0301 bic.w r3, r3, #1
- 8005a70: 6753 str r3, [r2, #116] ; 0x74
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005a72: f7ff fbaf bl 80051d4 <HAL_GetTick>
- 8005a76: 6138 str r0, [r7, #16]
-
- /* Wait till LSI is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
- 8005a78: e00a b.n 8005a90 <HAL_RCC_OscConfig+0x284>
- {
- if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
- 8005a7a: f7ff fbab bl 80051d4 <HAL_GetTick>
- 8005a7e: 4602 mov r2, r0
- 8005a80: 693b ldr r3, [r7, #16]
- 8005a82: 1ad3 subs r3, r2, r3
- 8005a84: 2b02 cmp r3, #2
- 8005a86: d903 bls.n 8005a90 <HAL_RCC_OscConfig+0x284>
- {
- return HAL_TIMEOUT;
- 8005a88: 2303 movs r3, #3
- 8005a8a: e129 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- 8005a8c: 40023800 .word 0x40023800
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
- 8005a90: 4b95 ldr r3, [pc, #596] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005a92: 6f5b ldr r3, [r3, #116] ; 0x74
- 8005a94: f003 0302 and.w r3, r3, #2
- 8005a98: 2b00 cmp r3, #0
- 8005a9a: d1ee bne.n 8005a7a <HAL_RCC_OscConfig+0x26e>
- }
- }
- }
- }
- /*------------------------------ LSE Configuration -------------------------*/
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
- 8005a9c: 687b ldr r3, [r7, #4]
- 8005a9e: 681b ldr r3, [r3, #0]
- 8005aa0: f003 0304 and.w r3, r3, #4
- 8005aa4: 2b00 cmp r3, #0
- 8005aa6: f000 80a4 beq.w 8005bf2 <HAL_RCC_OscConfig+0x3e6>
- /* Check the parameters */
- assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
-
- /* Update LSE configuration in Backup Domain control register */
- /* Requires to enable write access to Backup Domain of necessary */
- if(__HAL_RCC_PWR_IS_CLK_DISABLED())
- 8005aaa: 4b8f ldr r3, [pc, #572] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005aac: 6c1b ldr r3, [r3, #64] ; 0x40
- 8005aae: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
- 8005ab2: 2b00 cmp r3, #0
- 8005ab4: d10d bne.n 8005ad2 <HAL_RCC_OscConfig+0x2c6>
- {
- /* Enable Power Clock*/
- __HAL_RCC_PWR_CLK_ENABLE();
- 8005ab6: 4b8c ldr r3, [pc, #560] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005ab8: 6c1b ldr r3, [r3, #64] ; 0x40
- 8005aba: 4a8b ldr r2, [pc, #556] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005abc: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
- 8005ac0: 6413 str r3, [r2, #64] ; 0x40
- 8005ac2: 4b89 ldr r3, [pc, #548] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005ac4: 6c1b ldr r3, [r3, #64] ; 0x40
- 8005ac6: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
- 8005aca: 60fb str r3, [r7, #12]
- 8005acc: 68fb ldr r3, [r7, #12]
- pwrclkchanged = SET;
- 8005ace: 2301 movs r3, #1
- 8005ad0: 75fb strb r3, [r7, #23]
- }
-
- if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
- 8005ad2: 4b86 ldr r3, [pc, #536] ; (8005cec <HAL_RCC_OscConfig+0x4e0>)
- 8005ad4: 681b ldr r3, [r3, #0]
- 8005ad6: f403 7380 and.w r3, r3, #256 ; 0x100
- 8005ada: 2b00 cmp r3, #0
- 8005adc: d118 bne.n 8005b10 <HAL_RCC_OscConfig+0x304>
- {
- /* Enable write access to Backup domain */
- PWR->CR1 |= PWR_CR1_DBP;
- 8005ade: 4b83 ldr r3, [pc, #524] ; (8005cec <HAL_RCC_OscConfig+0x4e0>)
- 8005ae0: 681b ldr r3, [r3, #0]
- 8005ae2: 4a82 ldr r2, [pc, #520] ; (8005cec <HAL_RCC_OscConfig+0x4e0>)
- 8005ae4: f443 7380 orr.w r3, r3, #256 ; 0x100
- 8005ae8: 6013 str r3, [r2, #0]
-
- /* Wait for Backup domain Write protection disable */
- tickstart = HAL_GetTick();
- 8005aea: f7ff fb73 bl 80051d4 <HAL_GetTick>
- 8005aee: 6138 str r0, [r7, #16]
-
- while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
- 8005af0: e008 b.n 8005b04 <HAL_RCC_OscConfig+0x2f8>
- {
- if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)
- 8005af2: f7ff fb6f bl 80051d4 <HAL_GetTick>
- 8005af6: 4602 mov r2, r0
- 8005af8: 693b ldr r3, [r7, #16]
- 8005afa: 1ad3 subs r3, r2, r3
- 8005afc: 2b64 cmp r3, #100 ; 0x64
- 8005afe: d901 bls.n 8005b04 <HAL_RCC_OscConfig+0x2f8>
- {
- return HAL_TIMEOUT;
- 8005b00: 2303 movs r3, #3
- 8005b02: e0ed b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
- 8005b04: 4b79 ldr r3, [pc, #484] ; (8005cec <HAL_RCC_OscConfig+0x4e0>)
- 8005b06: 681b ldr r3, [r3, #0]
- 8005b08: f403 7380 and.w r3, r3, #256 ; 0x100
- 8005b0c: 2b00 cmp r3, #0
- 8005b0e: d0f0 beq.n 8005af2 <HAL_RCC_OscConfig+0x2e6>
- }
- }
- }
-
- /* Set the new LSE configuration -----------------------------------------*/
- __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
- 8005b10: 687b ldr r3, [r7, #4]
- 8005b12: 689b ldr r3, [r3, #8]
- 8005b14: 2b01 cmp r3, #1
- 8005b16: d106 bne.n 8005b26 <HAL_RCC_OscConfig+0x31a>
- 8005b18: 4b73 ldr r3, [pc, #460] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b1a: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005b1c: 4a72 ldr r2, [pc, #456] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b1e: f043 0301 orr.w r3, r3, #1
- 8005b22: 6713 str r3, [r2, #112] ; 0x70
- 8005b24: e02d b.n 8005b82 <HAL_RCC_OscConfig+0x376>
- 8005b26: 687b ldr r3, [r7, #4]
- 8005b28: 689b ldr r3, [r3, #8]
- 8005b2a: 2b00 cmp r3, #0
- 8005b2c: d10c bne.n 8005b48 <HAL_RCC_OscConfig+0x33c>
- 8005b2e: 4b6e ldr r3, [pc, #440] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b30: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005b32: 4a6d ldr r2, [pc, #436] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b34: f023 0301 bic.w r3, r3, #1
- 8005b38: 6713 str r3, [r2, #112] ; 0x70
- 8005b3a: 4b6b ldr r3, [pc, #428] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b3c: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005b3e: 4a6a ldr r2, [pc, #424] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b40: f023 0304 bic.w r3, r3, #4
- 8005b44: 6713 str r3, [r2, #112] ; 0x70
- 8005b46: e01c b.n 8005b82 <HAL_RCC_OscConfig+0x376>
- 8005b48: 687b ldr r3, [r7, #4]
- 8005b4a: 689b ldr r3, [r3, #8]
- 8005b4c: 2b05 cmp r3, #5
- 8005b4e: d10c bne.n 8005b6a <HAL_RCC_OscConfig+0x35e>
- 8005b50: 4b65 ldr r3, [pc, #404] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b52: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005b54: 4a64 ldr r2, [pc, #400] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b56: f043 0304 orr.w r3, r3, #4
- 8005b5a: 6713 str r3, [r2, #112] ; 0x70
- 8005b5c: 4b62 ldr r3, [pc, #392] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b5e: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005b60: 4a61 ldr r2, [pc, #388] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b62: f043 0301 orr.w r3, r3, #1
- 8005b66: 6713 str r3, [r2, #112] ; 0x70
- 8005b68: e00b b.n 8005b82 <HAL_RCC_OscConfig+0x376>
- 8005b6a: 4b5f ldr r3, [pc, #380] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b6c: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005b6e: 4a5e ldr r2, [pc, #376] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b70: f023 0301 bic.w r3, r3, #1
- 8005b74: 6713 str r3, [r2, #112] ; 0x70
- 8005b76: 4b5c ldr r3, [pc, #368] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b78: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005b7a: 4a5b ldr r2, [pc, #364] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005b7c: f023 0304 bic.w r3, r3, #4
- 8005b80: 6713 str r3, [r2, #112] ; 0x70
- /* Check the LSE State */
- if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
- 8005b82: 687b ldr r3, [r7, #4]
- 8005b84: 689b ldr r3, [r3, #8]
- 8005b86: 2b00 cmp r3, #0
- 8005b88: d015 beq.n 8005bb6 <HAL_RCC_OscConfig+0x3aa>
- {
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005b8a: f7ff fb23 bl 80051d4 <HAL_GetTick>
- 8005b8e: 6138 str r0, [r7, #16]
-
- /* Wait till LSE is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 8005b90: e00a b.n 8005ba8 <HAL_RCC_OscConfig+0x39c>
- {
- if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
- 8005b92: f7ff fb1f bl 80051d4 <HAL_GetTick>
- 8005b96: 4602 mov r2, r0
- 8005b98: 693b ldr r3, [r7, #16]
- 8005b9a: 1ad3 subs r3, r2, r3
- 8005b9c: f241 3288 movw r2, #5000 ; 0x1388
- 8005ba0: 4293 cmp r3, r2
- 8005ba2: d901 bls.n 8005ba8 <HAL_RCC_OscConfig+0x39c>
- {
- return HAL_TIMEOUT;
- 8005ba4: 2303 movs r3, #3
- 8005ba6: e09b b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 8005ba8: 4b4f ldr r3, [pc, #316] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005baa: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005bac: f003 0302 and.w r3, r3, #2
- 8005bb0: 2b00 cmp r3, #0
- 8005bb2: d0ee beq.n 8005b92 <HAL_RCC_OscConfig+0x386>
- 8005bb4: e014 b.n 8005be0 <HAL_RCC_OscConfig+0x3d4>
- }
- }
- else
- {
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005bb6: f7ff fb0d bl 80051d4 <HAL_GetTick>
- 8005bba: 6138 str r0, [r7, #16]
-
- /* Wait till LSE is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
- 8005bbc: e00a b.n 8005bd4 <HAL_RCC_OscConfig+0x3c8>
- {
- if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
- 8005bbe: f7ff fb09 bl 80051d4 <HAL_GetTick>
- 8005bc2: 4602 mov r2, r0
- 8005bc4: 693b ldr r3, [r7, #16]
- 8005bc6: 1ad3 subs r3, r2, r3
- 8005bc8: f241 3288 movw r2, #5000 ; 0x1388
- 8005bcc: 4293 cmp r3, r2
- 8005bce: d901 bls.n 8005bd4 <HAL_RCC_OscConfig+0x3c8>
- {
- return HAL_TIMEOUT;
- 8005bd0: 2303 movs r3, #3
- 8005bd2: e085 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
- 8005bd4: 4b44 ldr r3, [pc, #272] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005bd6: 6f1b ldr r3, [r3, #112] ; 0x70
- 8005bd8: f003 0302 and.w r3, r3, #2
- 8005bdc: 2b00 cmp r3, #0
- 8005bde: d1ee bne.n 8005bbe <HAL_RCC_OscConfig+0x3b2>
- }
- }
- }
-
- /* Restore clock configuration if changed */
- if(pwrclkchanged == SET)
- 8005be0: 7dfb ldrb r3, [r7, #23]
- 8005be2: 2b01 cmp r3, #1
- 8005be4: d105 bne.n 8005bf2 <HAL_RCC_OscConfig+0x3e6>
- {
- __HAL_RCC_PWR_CLK_DISABLE();
- 8005be6: 4b40 ldr r3, [pc, #256] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005be8: 6c1b ldr r3, [r3, #64] ; 0x40
- 8005bea: 4a3f ldr r2, [pc, #252] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005bec: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
- 8005bf0: 6413 str r3, [r2, #64] ; 0x40
- }
- }
- /*-------------------------------- PLL Configuration -----------------------*/
- /* Check the parameters */
- assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
- if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
- 8005bf2: 687b ldr r3, [r7, #4]
- 8005bf4: 699b ldr r3, [r3, #24]
- 8005bf6: 2b00 cmp r3, #0
- 8005bf8: d071 beq.n 8005cde <HAL_RCC_OscConfig+0x4d2>
- {
- /* Check if the PLL is used as system clock or not */
- if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
- 8005bfa: 4b3b ldr r3, [pc, #236] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005bfc: 689b ldr r3, [r3, #8]
- 8005bfe: f003 030c and.w r3, r3, #12
- 8005c02: 2b08 cmp r3, #8
- 8005c04: d069 beq.n 8005cda <HAL_RCC_OscConfig+0x4ce>
- {
- if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
- 8005c06: 687b ldr r3, [r7, #4]
- 8005c08: 699b ldr r3, [r3, #24]
- 8005c0a: 2b02 cmp r3, #2
- 8005c0c: d14b bne.n 8005ca6 <HAL_RCC_OscConfig+0x49a>
-#if defined (RCC_PLLCFGR_PLLR)
- assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR));
-#endif
-
- /* Disable the main PLL. */
- __HAL_RCC_PLL_DISABLE();
- 8005c0e: 4b36 ldr r3, [pc, #216] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005c10: 681b ldr r3, [r3, #0]
- 8005c12: 4a35 ldr r2, [pc, #212] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005c14: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000
- 8005c18: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005c1a: f7ff fadb bl 80051d4 <HAL_GetTick>
- 8005c1e: 6138 str r0, [r7, #16]
-
- /* Wait till PLL is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8005c20: e008 b.n 8005c34 <HAL_RCC_OscConfig+0x428>
- {
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
- 8005c22: f7ff fad7 bl 80051d4 <HAL_GetTick>
- 8005c26: 4602 mov r2, r0
- 8005c28: 693b ldr r3, [r7, #16]
- 8005c2a: 1ad3 subs r3, r2, r3
- 8005c2c: 2b02 cmp r3, #2
- 8005c2e: d901 bls.n 8005c34 <HAL_RCC_OscConfig+0x428>
- {
- return HAL_TIMEOUT;
- 8005c30: 2303 movs r3, #3
- 8005c32: e055 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8005c34: 4b2c ldr r3, [pc, #176] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005c36: 681b ldr r3, [r3, #0]
- 8005c38: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
- 8005c3c: 2b00 cmp r3, #0
- 8005c3e: d1f0 bne.n 8005c22 <HAL_RCC_OscConfig+0x416>
- }
- }
-
- /* Configure the main PLL clock source, multiplication and division factors. */
-#if defined (RCC_PLLCFGR_PLLR)
- __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
- 8005c40: 687b ldr r3, [r7, #4]
- 8005c42: 69da ldr r2, [r3, #28]
- 8005c44: 687b ldr r3, [r7, #4]
- 8005c46: 6a1b ldr r3, [r3, #32]
- 8005c48: 431a orrs r2, r3
- 8005c4a: 687b ldr r3, [r7, #4]
- 8005c4c: 6a5b ldr r3, [r3, #36] ; 0x24
- 8005c4e: 019b lsls r3, r3, #6
- 8005c50: 431a orrs r2, r3
- 8005c52: 687b ldr r3, [r7, #4]
- 8005c54: 6a9b ldr r3, [r3, #40] ; 0x28
- 8005c56: 085b lsrs r3, r3, #1
- 8005c58: 3b01 subs r3, #1
- 8005c5a: 041b lsls r3, r3, #16
- 8005c5c: 431a orrs r2, r3
- 8005c5e: 687b ldr r3, [r7, #4]
- 8005c60: 6adb ldr r3, [r3, #44] ; 0x2c
- 8005c62: 061b lsls r3, r3, #24
- 8005c64: 431a orrs r2, r3
- 8005c66: 687b ldr r3, [r7, #4]
- 8005c68: 6b1b ldr r3, [r3, #48] ; 0x30
- 8005c6a: 071b lsls r3, r3, #28
- 8005c6c: 491e ldr r1, [pc, #120] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005c6e: 4313 orrs r3, r2
- 8005c70: 604b str r3, [r1, #4]
- RCC_OscInitStruct->PLL.PLLP,
- RCC_OscInitStruct->PLL.PLLQ);
-#endif
-
- /* Enable the main PLL. */
- __HAL_RCC_PLL_ENABLE();
- 8005c72: 4b1d ldr r3, [pc, #116] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005c74: 681b ldr r3, [r3, #0]
- 8005c76: 4a1c ldr r2, [pc, #112] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005c78: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000
- 8005c7c: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005c7e: f7ff faa9 bl 80051d4 <HAL_GetTick>
- 8005c82: 6138 str r0, [r7, #16]
-
- /* Wait till PLL is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
- 8005c84: e008 b.n 8005c98 <HAL_RCC_OscConfig+0x48c>
- {
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
- 8005c86: f7ff faa5 bl 80051d4 <HAL_GetTick>
- 8005c8a: 4602 mov r2, r0
- 8005c8c: 693b ldr r3, [r7, #16]
- 8005c8e: 1ad3 subs r3, r2, r3
- 8005c90: 2b02 cmp r3, #2
- 8005c92: d901 bls.n 8005c98 <HAL_RCC_OscConfig+0x48c>
- {
- return HAL_TIMEOUT;
- 8005c94: 2303 movs r3, #3
- 8005c96: e023 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
- 8005c98: 4b13 ldr r3, [pc, #76] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005c9a: 681b ldr r3, [r3, #0]
- 8005c9c: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
- 8005ca0: 2b00 cmp r3, #0
- 8005ca2: d0f0 beq.n 8005c86 <HAL_RCC_OscConfig+0x47a>
- 8005ca4: e01b b.n 8005cde <HAL_RCC_OscConfig+0x4d2>
- }
- }
- else
- {
- /* Disable the main PLL. */
- __HAL_RCC_PLL_DISABLE();
- 8005ca6: 4b10 ldr r3, [pc, #64] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005ca8: 681b ldr r3, [r3, #0]
- 8005caa: 4a0f ldr r2, [pc, #60] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005cac: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000
- 8005cb0: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005cb2: f7ff fa8f bl 80051d4 <HAL_GetTick>
- 8005cb6: 6138 str r0, [r7, #16]
-
- /* Wait till PLL is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8005cb8: e008 b.n 8005ccc <HAL_RCC_OscConfig+0x4c0>
- {
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
- 8005cba: f7ff fa8b bl 80051d4 <HAL_GetTick>
- 8005cbe: 4602 mov r2, r0
- 8005cc0: 693b ldr r3, [r7, #16]
- 8005cc2: 1ad3 subs r3, r2, r3
- 8005cc4: 2b02 cmp r3, #2
- 8005cc6: d901 bls.n 8005ccc <HAL_RCC_OscConfig+0x4c0>
- {
- return HAL_TIMEOUT;
- 8005cc8: 2303 movs r3, #3
- 8005cca: e009 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8005ccc: 4b06 ldr r3, [pc, #24] ; (8005ce8 <HAL_RCC_OscConfig+0x4dc>)
- 8005cce: 681b ldr r3, [r3, #0]
- 8005cd0: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
- 8005cd4: 2b00 cmp r3, #0
- 8005cd6: d1f0 bne.n 8005cba <HAL_RCC_OscConfig+0x4ae>
- 8005cd8: e001 b.n 8005cde <HAL_RCC_OscConfig+0x4d2>
- }
- }
- }
- else
- {
- return HAL_ERROR;
- 8005cda: 2301 movs r3, #1
- 8005cdc: e000 b.n 8005ce0 <HAL_RCC_OscConfig+0x4d4>
- }
- }
- return HAL_OK;
- 8005cde: 2300 movs r3, #0
-}
- 8005ce0: 4618 mov r0, r3
- 8005ce2: 3718 adds r7, #24
- 8005ce4: 46bd mov sp, r7
- 8005ce6: bd80 pop {r7, pc}
- 8005ce8: 40023800 .word 0x40023800
- 8005cec: 40007000 .word 0x40007000
-
-08005cf0 <HAL_RCC_ClockConfig>:
- * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency
- * (for more details refer to section above "Initialization/de-initialization functions")
- * @retval None
- */
-HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
-{
- 8005cf0: b580 push {r7, lr}
- 8005cf2: b084 sub sp, #16
- 8005cf4: af00 add r7, sp, #0
- 8005cf6: 6078 str r0, [r7, #4]
- 8005cf8: 6039 str r1, [r7, #0]
- uint32_t tickstart = 0;
- 8005cfa: 2300 movs r3, #0
- 8005cfc: 60fb str r3, [r7, #12]
-
- /* Check Null pointer */
- if(RCC_ClkInitStruct == NULL)
- 8005cfe: 687b ldr r3, [r7, #4]
- 8005d00: 2b00 cmp r3, #0
- 8005d02: d101 bne.n 8005d08 <HAL_RCC_ClockConfig+0x18>
- {
- return HAL_ERROR;
- 8005d04: 2301 movs r3, #1
- 8005d06: e0ce b.n 8005ea6 <HAL_RCC_ClockConfig+0x1b6>
- /* To correctly read data from FLASH memory, the number of wait states (LATENCY)
- must be correctly programmed according to the frequency of the CPU clock
- (HCLK) and the supply voltage of the device. */
-
- /* Increasing the CPU frequency */
- if(FLatency > __HAL_FLASH_GET_LATENCY())
- 8005d08: 4b69 ldr r3, [pc, #420] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005d0a: 681b ldr r3, [r3, #0]
- 8005d0c: f003 030f and.w r3, r3, #15
- 8005d10: 683a ldr r2, [r7, #0]
- 8005d12: 429a cmp r2, r3
- 8005d14: d910 bls.n 8005d38 <HAL_RCC_ClockConfig+0x48>
- {
- /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
- __HAL_FLASH_SET_LATENCY(FLatency);
- 8005d16: 4b66 ldr r3, [pc, #408] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005d18: 681b ldr r3, [r3, #0]
- 8005d1a: f023 020f bic.w r2, r3, #15
- 8005d1e: 4964 ldr r1, [pc, #400] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005d20: 683b ldr r3, [r7, #0]
- 8005d22: 4313 orrs r3, r2
- 8005d24: 600b str r3, [r1, #0]
-
- /* Check that the new number of wait states is taken into account to access the Flash
- memory by reading the FLASH_ACR register */
- if(__HAL_FLASH_GET_LATENCY() != FLatency)
- 8005d26: 4b62 ldr r3, [pc, #392] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005d28: 681b ldr r3, [r3, #0]
- 8005d2a: f003 030f and.w r3, r3, #15
- 8005d2e: 683a ldr r2, [r7, #0]
- 8005d30: 429a cmp r2, r3
- 8005d32: d001 beq.n 8005d38 <HAL_RCC_ClockConfig+0x48>
- {
- return HAL_ERROR;
- 8005d34: 2301 movs r3, #1
- 8005d36: e0b6 b.n 8005ea6 <HAL_RCC_ClockConfig+0x1b6>
- }
- }
-
- /*-------------------------- HCLK Configuration --------------------------*/
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
- 8005d38: 687b ldr r3, [r7, #4]
- 8005d3a: 681b ldr r3, [r3, #0]
- 8005d3c: f003 0302 and.w r3, r3, #2
- 8005d40: 2b00 cmp r3, #0
- 8005d42: d020 beq.n 8005d86 <HAL_RCC_ClockConfig+0x96>
- {
- /* Set the highest APBx dividers in order to ensure that we do not go through
- a non-spec phase whatever we decrease or increase HCLK. */
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
- 8005d44: 687b ldr r3, [r7, #4]
- 8005d46: 681b ldr r3, [r3, #0]
- 8005d48: f003 0304 and.w r3, r3, #4
- 8005d4c: 2b00 cmp r3, #0
- 8005d4e: d005 beq.n 8005d5c <HAL_RCC_ClockConfig+0x6c>
- {
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
- 8005d50: 4b58 ldr r3, [pc, #352] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005d52: 689b ldr r3, [r3, #8]
- 8005d54: 4a57 ldr r2, [pc, #348] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005d56: f443 53e0 orr.w r3, r3, #7168 ; 0x1c00
- 8005d5a: 6093 str r3, [r2, #8]
- }
-
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
- 8005d5c: 687b ldr r3, [r7, #4]
- 8005d5e: 681b ldr r3, [r3, #0]
- 8005d60: f003 0308 and.w r3, r3, #8
- 8005d64: 2b00 cmp r3, #0
- 8005d66: d005 beq.n 8005d74 <HAL_RCC_ClockConfig+0x84>
- {
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
- 8005d68: 4b52 ldr r3, [pc, #328] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005d6a: 689b ldr r3, [r3, #8]
- 8005d6c: 4a51 ldr r2, [pc, #324] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005d6e: f443 4360 orr.w r3, r3, #57344 ; 0xe000
- 8005d72: 6093 str r3, [r2, #8]
- }
-
- /* Set the new HCLK clock divider */
- assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
- MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
- 8005d74: 4b4f ldr r3, [pc, #316] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005d76: 689b ldr r3, [r3, #8]
- 8005d78: f023 02f0 bic.w r2, r3, #240 ; 0xf0
- 8005d7c: 687b ldr r3, [r7, #4]
- 8005d7e: 689b ldr r3, [r3, #8]
- 8005d80: 494c ldr r1, [pc, #304] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005d82: 4313 orrs r3, r2
- 8005d84: 608b str r3, [r1, #8]
- }
-
- /*------------------------- SYSCLK Configuration ---------------------------*/
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
- 8005d86: 687b ldr r3, [r7, #4]
- 8005d88: 681b ldr r3, [r3, #0]
- 8005d8a: f003 0301 and.w r3, r3, #1
- 8005d8e: 2b00 cmp r3, #0
- 8005d90: d040 beq.n 8005e14 <HAL_RCC_ClockConfig+0x124>
- {
- assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
-
- /* HSE is selected as System Clock Source */
- if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
- 8005d92: 687b ldr r3, [r7, #4]
- 8005d94: 685b ldr r3, [r3, #4]
- 8005d96: 2b01 cmp r3, #1
- 8005d98: d107 bne.n 8005daa <HAL_RCC_ClockConfig+0xba>
- {
- /* Check the HSE ready flag */
- if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
- 8005d9a: 4b46 ldr r3, [pc, #280] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005d9c: 681b ldr r3, [r3, #0]
- 8005d9e: f403 3300 and.w r3, r3, #131072 ; 0x20000
- 8005da2: 2b00 cmp r3, #0
- 8005da4: d115 bne.n 8005dd2 <HAL_RCC_ClockConfig+0xe2>
- {
- return HAL_ERROR;
- 8005da6: 2301 movs r3, #1
- 8005da8: e07d b.n 8005ea6 <HAL_RCC_ClockConfig+0x1b6>
- }
- }
- /* PLL is selected as System Clock Source */
- else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
- 8005daa: 687b ldr r3, [r7, #4]
- 8005dac: 685b ldr r3, [r3, #4]
- 8005dae: 2b02 cmp r3, #2
- 8005db0: d107 bne.n 8005dc2 <HAL_RCC_ClockConfig+0xd2>
- {
- /* Check the PLL ready flag */
- if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
- 8005db2: 4b40 ldr r3, [pc, #256] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005db4: 681b ldr r3, [r3, #0]
- 8005db6: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
- 8005dba: 2b00 cmp r3, #0
- 8005dbc: d109 bne.n 8005dd2 <HAL_RCC_ClockConfig+0xe2>
- {
- return HAL_ERROR;
- 8005dbe: 2301 movs r3, #1
- 8005dc0: e071 b.n 8005ea6 <HAL_RCC_ClockConfig+0x1b6>
- }
- /* HSI is selected as System Clock Source */
- else
- {
- /* Check the HSI ready flag */
- if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
- 8005dc2: 4b3c ldr r3, [pc, #240] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005dc4: 681b ldr r3, [r3, #0]
- 8005dc6: f003 0302 and.w r3, r3, #2
- 8005dca: 2b00 cmp r3, #0
- 8005dcc: d101 bne.n 8005dd2 <HAL_RCC_ClockConfig+0xe2>
- {
- return HAL_ERROR;
- 8005dce: 2301 movs r3, #1
- 8005dd0: e069 b.n 8005ea6 <HAL_RCC_ClockConfig+0x1b6>
- }
- }
-
- __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
- 8005dd2: 4b38 ldr r3, [pc, #224] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005dd4: 689b ldr r3, [r3, #8]
- 8005dd6: f023 0203 bic.w r2, r3, #3
- 8005dda: 687b ldr r3, [r7, #4]
- 8005ddc: 685b ldr r3, [r3, #4]
- 8005dde: 4935 ldr r1, [pc, #212] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005de0: 4313 orrs r3, r2
- 8005de2: 608b str r3, [r1, #8]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8005de4: f7ff f9f6 bl 80051d4 <HAL_GetTick>
- 8005de8: 60f8 str r0, [r7, #12]
-
- while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
- 8005dea: e00a b.n 8005e02 <HAL_RCC_ClockConfig+0x112>
- {
- if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
- 8005dec: f7ff f9f2 bl 80051d4 <HAL_GetTick>
- 8005df0: 4602 mov r2, r0
- 8005df2: 68fb ldr r3, [r7, #12]
- 8005df4: 1ad3 subs r3, r2, r3
- 8005df6: f241 3288 movw r2, #5000 ; 0x1388
- 8005dfa: 4293 cmp r3, r2
- 8005dfc: d901 bls.n 8005e02 <HAL_RCC_ClockConfig+0x112>
- {
- return HAL_TIMEOUT;
- 8005dfe: 2303 movs r3, #3
- 8005e00: e051 b.n 8005ea6 <HAL_RCC_ClockConfig+0x1b6>
- while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
- 8005e02: 4b2c ldr r3, [pc, #176] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005e04: 689b ldr r3, [r3, #8]
- 8005e06: f003 020c and.w r2, r3, #12
- 8005e0a: 687b ldr r3, [r7, #4]
- 8005e0c: 685b ldr r3, [r3, #4]
- 8005e0e: 009b lsls r3, r3, #2
- 8005e10: 429a cmp r2, r3
- 8005e12: d1eb bne.n 8005dec <HAL_RCC_ClockConfig+0xfc>
- }
- }
- }
-
- /* Decreasing the number of wait states because of lower CPU frequency */
- if(FLatency < __HAL_FLASH_GET_LATENCY())
- 8005e14: 4b26 ldr r3, [pc, #152] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005e16: 681b ldr r3, [r3, #0]
- 8005e18: f003 030f and.w r3, r3, #15
- 8005e1c: 683a ldr r2, [r7, #0]
- 8005e1e: 429a cmp r2, r3
- 8005e20: d210 bcs.n 8005e44 <HAL_RCC_ClockConfig+0x154>
- {
- /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
- __HAL_FLASH_SET_LATENCY(FLatency);
- 8005e22: 4b23 ldr r3, [pc, #140] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005e24: 681b ldr r3, [r3, #0]
- 8005e26: f023 020f bic.w r2, r3, #15
- 8005e2a: 4921 ldr r1, [pc, #132] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005e2c: 683b ldr r3, [r7, #0]
- 8005e2e: 4313 orrs r3, r2
- 8005e30: 600b str r3, [r1, #0]
-
- /* Check that the new number of wait states is taken into account to access the Flash
- memory by reading the FLASH_ACR register */
- if(__HAL_FLASH_GET_LATENCY() != FLatency)
- 8005e32: 4b1f ldr r3, [pc, #124] ; (8005eb0 <HAL_RCC_ClockConfig+0x1c0>)
- 8005e34: 681b ldr r3, [r3, #0]
- 8005e36: f003 030f and.w r3, r3, #15
- 8005e3a: 683a ldr r2, [r7, #0]
- 8005e3c: 429a cmp r2, r3
- 8005e3e: d001 beq.n 8005e44 <HAL_RCC_ClockConfig+0x154>
- {
- return HAL_ERROR;
- 8005e40: 2301 movs r3, #1
- 8005e42: e030 b.n 8005ea6 <HAL_RCC_ClockConfig+0x1b6>
- }
- }
-
- /*-------------------------- PCLK1 Configuration ---------------------------*/
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
- 8005e44: 687b ldr r3, [r7, #4]
- 8005e46: 681b ldr r3, [r3, #0]
- 8005e48: f003 0304 and.w r3, r3, #4
- 8005e4c: 2b00 cmp r3, #0
- 8005e4e: d008 beq.n 8005e62 <HAL_RCC_ClockConfig+0x172>
- {
- assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
- 8005e50: 4b18 ldr r3, [pc, #96] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005e52: 689b ldr r3, [r3, #8]
- 8005e54: f423 52e0 bic.w r2, r3, #7168 ; 0x1c00
- 8005e58: 687b ldr r3, [r7, #4]
- 8005e5a: 68db ldr r3, [r3, #12]
- 8005e5c: 4915 ldr r1, [pc, #84] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005e5e: 4313 orrs r3, r2
- 8005e60: 608b str r3, [r1, #8]
- }
-
- /*-------------------------- PCLK2 Configuration ---------------------------*/
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
- 8005e62: 687b ldr r3, [r7, #4]
- 8005e64: 681b ldr r3, [r3, #0]
- 8005e66: f003 0308 and.w r3, r3, #8
- 8005e6a: 2b00 cmp r3, #0
- 8005e6c: d009 beq.n 8005e82 <HAL_RCC_ClockConfig+0x192>
- {
- assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
- 8005e6e: 4b11 ldr r3, [pc, #68] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005e70: 689b ldr r3, [r3, #8]
- 8005e72: f423 4260 bic.w r2, r3, #57344 ; 0xe000
- 8005e76: 687b ldr r3, [r7, #4]
- 8005e78: 691b ldr r3, [r3, #16]
- 8005e7a: 00db lsls r3, r3, #3
- 8005e7c: 490d ldr r1, [pc, #52] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005e7e: 4313 orrs r3, r2
- 8005e80: 608b str r3, [r1, #8]
- }
-
- /* Update the SystemCoreClock global variable */
- SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
- 8005e82: f000 f81d bl 8005ec0 <HAL_RCC_GetSysClockFreq>
- 8005e86: 4601 mov r1, r0
- 8005e88: 4b0a ldr r3, [pc, #40] ; (8005eb4 <HAL_RCC_ClockConfig+0x1c4>)
- 8005e8a: 689b ldr r3, [r3, #8]
- 8005e8c: 091b lsrs r3, r3, #4
- 8005e8e: f003 030f and.w r3, r3, #15
- 8005e92: 4a09 ldr r2, [pc, #36] ; (8005eb8 <HAL_RCC_ClockConfig+0x1c8>)
- 8005e94: 5cd3 ldrb r3, [r2, r3]
- 8005e96: fa21 f303 lsr.w r3, r1, r3
- 8005e9a: 4a08 ldr r2, [pc, #32] ; (8005ebc <HAL_RCC_ClockConfig+0x1cc>)
- 8005e9c: 6013 str r3, [r2, #0]
-
- /* Configure the source of time base considering new system clocks settings*/
- HAL_InitTick (TICK_INT_PRIORITY);
- 8005e9e: 2000 movs r0, #0
- 8005ea0: f7ff f954 bl 800514c <HAL_InitTick>
-
- return HAL_OK;
- 8005ea4: 2300 movs r3, #0
-}
- 8005ea6: 4618 mov r0, r3
- 8005ea8: 3710 adds r7, #16
- 8005eaa: 46bd mov sp, r7
- 8005eac: bd80 pop {r7, pc}
- 8005eae: bf00 nop
- 8005eb0: 40023c00 .word 0x40023c00
- 8005eb4: 40023800 .word 0x40023800
- 8005eb8: 08008ca8 .word 0x08008ca8
- 8005ebc: 20000004 .word 0x20000004
-
-08005ec0 <HAL_RCC_GetSysClockFreq>:
- *
- *
- * @retval SYSCLK frequency
- */
-uint32_t HAL_RCC_GetSysClockFreq(void)
-{
- 8005ec0: b5f0 push {r4, r5, r6, r7, lr}
- 8005ec2: b085 sub sp, #20
- 8005ec4: af00 add r7, sp, #0
- uint32_t pllm = 0, pllvco = 0, pllp = 0;
- 8005ec6: 2300 movs r3, #0
- 8005ec8: 607b str r3, [r7, #4]
- 8005eca: 2300 movs r3, #0
- 8005ecc: 60fb str r3, [r7, #12]
- 8005ece: 2300 movs r3, #0
- 8005ed0: 603b str r3, [r7, #0]
- uint32_t sysclockfreq = 0;
- 8005ed2: 2300 movs r3, #0
- 8005ed4: 60bb str r3, [r7, #8]
-
- /* Get SYSCLK source -------------------------------------------------------*/
- switch (RCC->CFGR & RCC_CFGR_SWS)
- 8005ed6: 4b50 ldr r3, [pc, #320] ; (8006018 <HAL_RCC_GetSysClockFreq+0x158>)
- 8005ed8: 689b ldr r3, [r3, #8]
- 8005eda: f003 030c and.w r3, r3, #12
- 8005ede: 2b04 cmp r3, #4
- 8005ee0: d007 beq.n 8005ef2 <HAL_RCC_GetSysClockFreq+0x32>
- 8005ee2: 2b08 cmp r3, #8
- 8005ee4: d008 beq.n 8005ef8 <HAL_RCC_GetSysClockFreq+0x38>
- 8005ee6: 2b00 cmp r3, #0
- 8005ee8: f040 808d bne.w 8006006 <HAL_RCC_GetSysClockFreq+0x146>
- {
- case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
- {
- sysclockfreq = HSI_VALUE;
- 8005eec: 4b4b ldr r3, [pc, #300] ; (800601c <HAL_RCC_GetSysClockFreq+0x15c>)
- 8005eee: 60bb str r3, [r7, #8]
- break;
- 8005ef0: e08c b.n 800600c <HAL_RCC_GetSysClockFreq+0x14c>
- }
- case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
- {
- sysclockfreq = HSE_VALUE;
- 8005ef2: 4b4b ldr r3, [pc, #300] ; (8006020 <HAL_RCC_GetSysClockFreq+0x160>)
- 8005ef4: 60bb str r3, [r7, #8]
- break;
- 8005ef6: e089 b.n 800600c <HAL_RCC_GetSysClockFreq+0x14c>
- }
- case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock source */
- {
- /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN
- SYSCLK = PLL_VCO / PLLP */
- pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
- 8005ef8: 4b47 ldr r3, [pc, #284] ; (8006018 <HAL_RCC_GetSysClockFreq+0x158>)
- 8005efa: 685b ldr r3, [r3, #4]
- 8005efc: f003 033f and.w r3, r3, #63 ; 0x3f
- 8005f00: 607b str r3, [r7, #4]
- if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
- 8005f02: 4b45 ldr r3, [pc, #276] ; (8006018 <HAL_RCC_GetSysClockFreq+0x158>)
- 8005f04: 685b ldr r3, [r3, #4]
- 8005f06: f403 0380 and.w r3, r3, #4194304 ; 0x400000
- 8005f0a: 2b00 cmp r3, #0
- 8005f0c: d023 beq.n 8005f56 <HAL_RCC_GetSysClockFreq+0x96>
- {
- /* HSE used as PLL clock source */
- pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
- 8005f0e: 4b42 ldr r3, [pc, #264] ; (8006018 <HAL_RCC_GetSysClockFreq+0x158>)
- 8005f10: 685b ldr r3, [r3, #4]
- 8005f12: 099b lsrs r3, r3, #6
- 8005f14: f04f 0400 mov.w r4, #0
- 8005f18: f240 11ff movw r1, #511 ; 0x1ff
- 8005f1c: f04f 0200 mov.w r2, #0
- 8005f20: ea03 0501 and.w r5, r3, r1
- 8005f24: ea04 0602 and.w r6, r4, r2
- 8005f28: 4a3d ldr r2, [pc, #244] ; (8006020 <HAL_RCC_GetSysClockFreq+0x160>)
- 8005f2a: fb02 f106 mul.w r1, r2, r6
- 8005f2e: 2200 movs r2, #0
- 8005f30: fb02 f205 mul.w r2, r2, r5
- 8005f34: 440a add r2, r1
- 8005f36: 493a ldr r1, [pc, #232] ; (8006020 <HAL_RCC_GetSysClockFreq+0x160>)
- 8005f38: fba5 0101 umull r0, r1, r5, r1
- 8005f3c: 1853 adds r3, r2, r1
- 8005f3e: 4619 mov r1, r3
- 8005f40: 687b ldr r3, [r7, #4]
- 8005f42: f04f 0400 mov.w r4, #0
- 8005f46: 461a mov r2, r3
- 8005f48: 4623 mov r3, r4
- 8005f4a: f7fa f975 bl 8000238 <__aeabi_uldivmod>
- 8005f4e: 4603 mov r3, r0
- 8005f50: 460c mov r4, r1
- 8005f52: 60fb str r3, [r7, #12]
- 8005f54: e049 b.n 8005fea <HAL_RCC_GetSysClockFreq+0x12a>
- }
- else
- {
- /* HSI used as PLL clock source */
- pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
- 8005f56: 4b30 ldr r3, [pc, #192] ; (8006018 <HAL_RCC_GetSysClockFreq+0x158>)
- 8005f58: 685b ldr r3, [r3, #4]
- 8005f5a: 099b lsrs r3, r3, #6
- 8005f5c: f04f 0400 mov.w r4, #0
- 8005f60: f240 11ff movw r1, #511 ; 0x1ff
- 8005f64: f04f 0200 mov.w r2, #0
- 8005f68: ea03 0501 and.w r5, r3, r1
- 8005f6c: ea04 0602 and.w r6, r4, r2
- 8005f70: 4629 mov r1, r5
- 8005f72: 4632 mov r2, r6
- 8005f74: f04f 0300 mov.w r3, #0
- 8005f78: f04f 0400 mov.w r4, #0
- 8005f7c: 0154 lsls r4, r2, #5
- 8005f7e: ea44 64d1 orr.w r4, r4, r1, lsr #27
- 8005f82: 014b lsls r3, r1, #5
- 8005f84: 4619 mov r1, r3
- 8005f86: 4622 mov r2, r4
- 8005f88: 1b49 subs r1, r1, r5
- 8005f8a: eb62 0206 sbc.w r2, r2, r6
- 8005f8e: f04f 0300 mov.w r3, #0
- 8005f92: f04f 0400 mov.w r4, #0
- 8005f96: 0194 lsls r4, r2, #6
- 8005f98: ea44 6491 orr.w r4, r4, r1, lsr #26
- 8005f9c: 018b lsls r3, r1, #6
- 8005f9e: 1a5b subs r3, r3, r1
- 8005fa0: eb64 0402 sbc.w r4, r4, r2
- 8005fa4: f04f 0100 mov.w r1, #0
- 8005fa8: f04f 0200 mov.w r2, #0
- 8005fac: 00e2 lsls r2, r4, #3
- 8005fae: ea42 7253 orr.w r2, r2, r3, lsr #29
- 8005fb2: 00d9 lsls r1, r3, #3
- 8005fb4: 460b mov r3, r1
- 8005fb6: 4614 mov r4, r2
- 8005fb8: 195b adds r3, r3, r5
- 8005fba: eb44 0406 adc.w r4, r4, r6
- 8005fbe: f04f 0100 mov.w r1, #0
- 8005fc2: f04f 0200 mov.w r2, #0
- 8005fc6: 02a2 lsls r2, r4, #10
- 8005fc8: ea42 5293 orr.w r2, r2, r3, lsr #22
- 8005fcc: 0299 lsls r1, r3, #10
- 8005fce: 460b mov r3, r1
- 8005fd0: 4614 mov r4, r2
- 8005fd2: 4618 mov r0, r3
- 8005fd4: 4621 mov r1, r4
- 8005fd6: 687b ldr r3, [r7, #4]
- 8005fd8: f04f 0400 mov.w r4, #0
- 8005fdc: 461a mov r2, r3
- 8005fde: 4623 mov r3, r4
- 8005fe0: f7fa f92a bl 8000238 <__aeabi_uldivmod>
- 8005fe4: 4603 mov r3, r0
- 8005fe6: 460c mov r4, r1
- 8005fe8: 60fb str r3, [r7, #12]
- }
- pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1 ) *2);
- 8005fea: 4b0b ldr r3, [pc, #44] ; (8006018 <HAL_RCC_GetSysClockFreq+0x158>)
- 8005fec: 685b ldr r3, [r3, #4]
- 8005fee: 0c1b lsrs r3, r3, #16
- 8005ff0: f003 0303 and.w r3, r3, #3
- 8005ff4: 3301 adds r3, #1
- 8005ff6: 005b lsls r3, r3, #1
- 8005ff8: 603b str r3, [r7, #0]
-
- sysclockfreq = pllvco/pllp;
- 8005ffa: 68fa ldr r2, [r7, #12]
- 8005ffc: 683b ldr r3, [r7, #0]
- 8005ffe: fbb2 f3f3 udiv r3, r2, r3
- 8006002: 60bb str r3, [r7, #8]
- break;
- 8006004: e002 b.n 800600c <HAL_RCC_GetSysClockFreq+0x14c>
- }
- default:
- {
- sysclockfreq = HSI_VALUE;
- 8006006: 4b05 ldr r3, [pc, #20] ; (800601c <HAL_RCC_GetSysClockFreq+0x15c>)
- 8006008: 60bb str r3, [r7, #8]
- break;
- 800600a: bf00 nop
- }
- }
- return sysclockfreq;
- 800600c: 68bb ldr r3, [r7, #8]
-}
- 800600e: 4618 mov r0, r3
- 8006010: 3714 adds r7, #20
- 8006012: 46bd mov sp, r7
- 8006014: bdf0 pop {r4, r5, r6, r7, pc}
- 8006016: bf00 nop
- 8006018: 40023800 .word 0x40023800
- 800601c: 00f42400 .word 0x00f42400
- 8006020: 017d7840 .word 0x017d7840
-
-08006024 <HAL_RCC_GetHCLKFreq>:
- * right HCLK value. Otherwise, any configuration based on this function will be incorrect.
- * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency.
- * @retval HCLK frequency
- */
-uint32_t HAL_RCC_GetHCLKFreq(void)
-{
- 8006024: b480 push {r7}
- 8006026: af00 add r7, sp, #0
- return SystemCoreClock;
- 8006028: 4b03 ldr r3, [pc, #12] ; (8006038 <HAL_RCC_GetHCLKFreq+0x14>)
- 800602a: 681b ldr r3, [r3, #0]
-}
- 800602c: 4618 mov r0, r3
- 800602e: 46bd mov sp, r7
- 8006030: f85d 7b04 ldr.w r7, [sp], #4
- 8006034: 4770 bx lr
- 8006036: bf00 nop
- 8006038: 20000004 .word 0x20000004
-
-0800603c <HAL_RCC_GetPCLK1Freq>:
- * @note Each time PCLK1 changes, this function must be called to update the
- * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
- * @retval PCLK1 frequency
- */
-uint32_t HAL_RCC_GetPCLK1Freq(void)
-{
- 800603c: b580 push {r7, lr}
- 800603e: af00 add r7, sp, #0
- /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
- return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1)>> RCC_CFGR_PPRE1_Pos]);
- 8006040: f7ff fff0 bl 8006024 <HAL_RCC_GetHCLKFreq>
- 8006044: 4601 mov r1, r0
- 8006046: 4b05 ldr r3, [pc, #20] ; (800605c <HAL_RCC_GetPCLK1Freq+0x20>)
- 8006048: 689b ldr r3, [r3, #8]
- 800604a: 0a9b lsrs r3, r3, #10
- 800604c: f003 0307 and.w r3, r3, #7
- 8006050: 4a03 ldr r2, [pc, #12] ; (8006060 <HAL_RCC_GetPCLK1Freq+0x24>)
- 8006052: 5cd3 ldrb r3, [r2, r3]
- 8006054: fa21 f303 lsr.w r3, r1, r3
-}
- 8006058: 4618 mov r0, r3
- 800605a: bd80 pop {r7, pc}
- 800605c: 40023800 .word 0x40023800
- 8006060: 08008cb8 .word 0x08008cb8
-
-08006064 <HAL_RCC_GetPCLK2Freq>:
- * @note Each time PCLK2 changes, this function must be called to update the
- * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
- * @retval PCLK2 frequency
- */
-uint32_t HAL_RCC_GetPCLK2Freq(void)
-{
- 8006064: b580 push {r7, lr}
- 8006066: af00 add r7, sp, #0
- /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
- return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2)>> RCC_CFGR_PPRE2_Pos]);
- 8006068: f7ff ffdc bl 8006024 <HAL_RCC_GetHCLKFreq>
- 800606c: 4601 mov r1, r0
- 800606e: 4b05 ldr r3, [pc, #20] ; (8006084 <HAL_RCC_GetPCLK2Freq+0x20>)
- 8006070: 689b ldr r3, [r3, #8]
- 8006072: 0b5b lsrs r3, r3, #13
- 8006074: f003 0307 and.w r3, r3, #7
- 8006078: 4a03 ldr r2, [pc, #12] ; (8006088 <HAL_RCC_GetPCLK2Freq+0x24>)
- 800607a: 5cd3 ldrb r3, [r2, r3]
- 800607c: fa21 f303 lsr.w r3, r1, r3
-}
- 8006080: 4618 mov r0, r3
- 8006082: bd80 pop {r7, pc}
- 8006084: 40023800 .word 0x40023800
- 8006088: 08008cb8 .word 0x08008cb8
-
-0800608c <HAL_RCCEx_PeriphCLKConfig>:
- * the backup registers) are set to their reset values.
- *
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
-{
- 800608c: b580 push {r7, lr}
- 800608e: b088 sub sp, #32
- 8006090: af00 add r7, sp, #0
- 8006092: 6078 str r0, [r7, #4]
- uint32_t tickstart = 0;
- 8006094: 2300 movs r3, #0
- 8006096: 617b str r3, [r7, #20]
- uint32_t tmpreg0 = 0;
- 8006098: 2300 movs r3, #0
- 800609a: 613b str r3, [r7, #16]
- uint32_t tmpreg1 = 0;
- 800609c: 2300 movs r3, #0
- 800609e: 60fb str r3, [r7, #12]
- uint32_t plli2sused = 0;
- 80060a0: 2300 movs r3, #0
- 80060a2: 61fb str r3, [r7, #28]
- uint32_t pllsaiused = 0;
- 80060a4: 2300 movs r3, #0
- 80060a6: 61bb str r3, [r7, #24]
-
- /* Check the parameters */
- assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
-
- /*----------------------------------- I2S configuration ----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S))
- 80060a8: 687b ldr r3, [r7, #4]
- 80060aa: 681b ldr r3, [r3, #0]
- 80060ac: f003 0301 and.w r3, r3, #1
- 80060b0: 2b00 cmp r3, #0
- 80060b2: d012 beq.n 80060da <HAL_RCCEx_PeriphCLKConfig+0x4e>
- {
- /* Check the parameters */
- assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection));
-
- /* Configure I2S Clock source */
- __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);
- 80060b4: 4b69 ldr r3, [pc, #420] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80060b6: 689b ldr r3, [r3, #8]
- 80060b8: 4a68 ldr r2, [pc, #416] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80060ba: f423 0300 bic.w r3, r3, #8388608 ; 0x800000
- 80060be: 6093 str r3, [r2, #8]
- 80060c0: 4b66 ldr r3, [pc, #408] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80060c2: 689a ldr r2, [r3, #8]
- 80060c4: 687b ldr r3, [r7, #4]
- 80060c6: 6b5b ldr r3, [r3, #52] ; 0x34
- 80060c8: 4964 ldr r1, [pc, #400] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80060ca: 4313 orrs r3, r2
- 80060cc: 608b str r3, [r1, #8]
-
- /* Enable the PLLI2S when it's used as clock source for I2S */
- if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)
- 80060ce: 687b ldr r3, [r7, #4]
- 80060d0: 6b5b ldr r3, [r3, #52] ; 0x34
- 80060d2: 2b00 cmp r3, #0
- 80060d4: d101 bne.n 80060da <HAL_RCCEx_PeriphCLKConfig+0x4e>
- {
- plli2sused = 1;
- 80060d6: 2301 movs r3, #1
- 80060d8: 61fb str r3, [r7, #28]
- }
- }
-
- /*------------------------------------ SAI1 configuration --------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1))
- 80060da: 687b ldr r3, [r7, #4]
- 80060dc: 681b ldr r3, [r3, #0]
- 80060de: f403 2300 and.w r3, r3, #524288 ; 0x80000
- 80060e2: 2b00 cmp r3, #0
- 80060e4: d017 beq.n 8006116 <HAL_RCCEx_PeriphCLKConfig+0x8a>
- {
- /* Check the parameters */
- assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection));
-
- /* Configure SAI1 Clock source */
- __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);
- 80060e6: 4b5d ldr r3, [pc, #372] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80060e8: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 80060ec: f423 1240 bic.w r2, r3, #3145728 ; 0x300000
- 80060f0: 687b ldr r3, [r7, #4]
- 80060f2: 6bdb ldr r3, [r3, #60] ; 0x3c
- 80060f4: 4959 ldr r1, [pc, #356] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80060f6: 4313 orrs r3, r2
- 80060f8: f8c1 308c str.w r3, [r1, #140] ; 0x8c
- /* Enable the PLLI2S when it's used as clock source for SAI */
- if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)
- 80060fc: 687b ldr r3, [r7, #4]
- 80060fe: 6bdb ldr r3, [r3, #60] ; 0x3c
- 8006100: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000
- 8006104: d101 bne.n 800610a <HAL_RCCEx_PeriphCLKConfig+0x7e>
- {
- plli2sused = 1;
- 8006106: 2301 movs r3, #1
- 8006108: 61fb str r3, [r7, #28]
- }
- /* Enable the PLLSAI when it's used as clock source for SAI */
- if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)
- 800610a: 687b ldr r3, [r7, #4]
- 800610c: 6bdb ldr r3, [r3, #60] ; 0x3c
- 800610e: 2b00 cmp r3, #0
- 8006110: d101 bne.n 8006116 <HAL_RCCEx_PeriphCLKConfig+0x8a>
- {
- pllsaiused = 1;
- 8006112: 2301 movs r3, #1
- 8006114: 61bb str r3, [r7, #24]
- }
- }
-
- /*------------------------------------ SAI2 configuration --------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2))
- 8006116: 687b ldr r3, [r7, #4]
- 8006118: 681b ldr r3, [r3, #0]
- 800611a: f403 1380 and.w r3, r3, #1048576 ; 0x100000
- 800611e: 2b00 cmp r3, #0
- 8006120: d017 beq.n 8006152 <HAL_RCCEx_PeriphCLKConfig+0xc6>
- {
- /* Check the parameters */
- assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection));
-
- /* Configure SAI2 Clock source */
- __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection);
- 8006122: 4b4e ldr r3, [pc, #312] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8006124: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 8006128: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000
- 800612c: 687b ldr r3, [r7, #4]
- 800612e: 6c1b ldr r3, [r3, #64] ; 0x40
- 8006130: 494a ldr r1, [pc, #296] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8006132: 4313 orrs r3, r2
- 8006134: f8c1 308c str.w r3, [r1, #140] ; 0x8c
-
- /* Enable the PLLI2S when it's used as clock source for SAI */
- if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)
- 8006138: 687b ldr r3, [r7, #4]
- 800613a: 6c1b ldr r3, [r3, #64] ; 0x40
- 800613c: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000
- 8006140: d101 bne.n 8006146 <HAL_RCCEx_PeriphCLKConfig+0xba>
- {
- plli2sused = 1;
- 8006142: 2301 movs r3, #1
- 8006144: 61fb str r3, [r7, #28]
- }
- /* Enable the PLLSAI when it's used as clock source for SAI */
- if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)
- 8006146: 687b ldr r3, [r7, #4]
- 8006148: 6c1b ldr r3, [r3, #64] ; 0x40
- 800614a: 2b00 cmp r3, #0
- 800614c: d101 bne.n 8006152 <HAL_RCCEx_PeriphCLKConfig+0xc6>
- {
- pllsaiused = 1;
- 800614e: 2301 movs r3, #1
- 8006150: 61bb str r3, [r7, #24]
- }
- }
-
- /*-------------------------------------- SPDIF-RX Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)
- 8006152: 687b ldr r3, [r7, #4]
- 8006154: 681b ldr r3, [r3, #0]
- 8006156: f003 7380 and.w r3, r3, #16777216 ; 0x1000000
- 800615a: 2b00 cmp r3, #0
- 800615c: d001 beq.n 8006162 <HAL_RCCEx_PeriphCLKConfig+0xd6>
- {
- plli2sused = 1;
- 800615e: 2301 movs r3, #1
- 8006160: 61fb str r3, [r7, #28]
- }
-
- /*------------------------------------ RTC configuration --------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC))
- 8006162: 687b ldr r3, [r7, #4]
- 8006164: 681b ldr r3, [r3, #0]
- 8006166: f003 0320 and.w r3, r3, #32
- 800616a: 2b00 cmp r3, #0
- 800616c: f000 808b beq.w 8006286 <HAL_RCCEx_PeriphCLKConfig+0x1fa>
- {
- /* Check for RTC Parameters used to output RTCCLK */
- assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));
-
- /* Enable Power Clock*/
- __HAL_RCC_PWR_CLK_ENABLE();
- 8006170: 4b3a ldr r3, [pc, #232] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8006172: 6c1b ldr r3, [r3, #64] ; 0x40
- 8006174: 4a39 ldr r2, [pc, #228] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8006176: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
- 800617a: 6413 str r3, [r2, #64] ; 0x40
- 800617c: 4b37 ldr r3, [pc, #220] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800617e: 6c1b ldr r3, [r3, #64] ; 0x40
- 8006180: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
- 8006184: 60bb str r3, [r7, #8]
- 8006186: 68bb ldr r3, [r7, #8]
-
- /* Enable write access to Backup domain */
- PWR->CR1 |= PWR_CR1_DBP;
- 8006188: 4b35 ldr r3, [pc, #212] ; (8006260 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
- 800618a: 681b ldr r3, [r3, #0]
- 800618c: 4a34 ldr r2, [pc, #208] ; (8006260 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
- 800618e: f443 7380 orr.w r3, r3, #256 ; 0x100
- 8006192: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8006194: f7ff f81e bl 80051d4 <HAL_GetTick>
- 8006198: 6178 str r0, [r7, #20]
-
- /* Wait for Backup domain Write protection disable */
- while((PWR->CR1 & PWR_CR1_DBP) == RESET)
- 800619a: e008 b.n 80061ae <HAL_RCCEx_PeriphCLKConfig+0x122>
- {
- if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
- 800619c: f7ff f81a bl 80051d4 <HAL_GetTick>
- 80061a0: 4602 mov r2, r0
- 80061a2: 697b ldr r3, [r7, #20]
- 80061a4: 1ad3 subs r3, r2, r3
- 80061a6: 2b64 cmp r3, #100 ; 0x64
- 80061a8: d901 bls.n 80061ae <HAL_RCCEx_PeriphCLKConfig+0x122>
- {
- return HAL_TIMEOUT;
- 80061aa: 2303 movs r3, #3
- 80061ac: e38d b.n 80068ca <HAL_RCCEx_PeriphCLKConfig+0x83e>
- while((PWR->CR1 & PWR_CR1_DBP) == RESET)
- 80061ae: 4b2c ldr r3, [pc, #176] ; (8006260 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
- 80061b0: 681b ldr r3, [r3, #0]
- 80061b2: f403 7380 and.w r3, r3, #256 ; 0x100
- 80061b6: 2b00 cmp r3, #0
- 80061b8: d0f0 beq.n 800619c <HAL_RCCEx_PeriphCLKConfig+0x110>
- }
- }
-
- /* Reset the Backup domain only if the RTC Clock source selection is modified */
- tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL);
- 80061ba: 4b28 ldr r3, [pc, #160] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80061bc: 6f1b ldr r3, [r3, #112] ; 0x70
- 80061be: f403 7340 and.w r3, r3, #768 ; 0x300
- 80061c2: 613b str r3, [r7, #16]
-
- if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))
- 80061c4: 693b ldr r3, [r7, #16]
- 80061c6: 2b00 cmp r3, #0
- 80061c8: d035 beq.n 8006236 <HAL_RCCEx_PeriphCLKConfig+0x1aa>
- 80061ca: 687b ldr r3, [r7, #4]
- 80061cc: 6b1b ldr r3, [r3, #48] ; 0x30
- 80061ce: f403 7340 and.w r3, r3, #768 ; 0x300
- 80061d2: 693a ldr r2, [r7, #16]
- 80061d4: 429a cmp r2, r3
- 80061d6: d02e beq.n 8006236 <HAL_RCCEx_PeriphCLKConfig+0x1aa>
- {
- /* Store the content of BDCR register before the reset of Backup Domain */
- tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
- 80061d8: 4b20 ldr r3, [pc, #128] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80061da: 6f1b ldr r3, [r3, #112] ; 0x70
- 80061dc: f423 7340 bic.w r3, r3, #768 ; 0x300
- 80061e0: 613b str r3, [r7, #16]
-
- /* RTC Clock selection can be changed only if the Backup Domain is reset */
- __HAL_RCC_BACKUPRESET_FORCE();
- 80061e2: 4b1e ldr r3, [pc, #120] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80061e4: 6f1b ldr r3, [r3, #112] ; 0x70
- 80061e6: 4a1d ldr r2, [pc, #116] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80061e8: f443 3380 orr.w r3, r3, #65536 ; 0x10000
- 80061ec: 6713 str r3, [r2, #112] ; 0x70
- __HAL_RCC_BACKUPRESET_RELEASE();
- 80061ee: 4b1b ldr r3, [pc, #108] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80061f0: 6f1b ldr r3, [r3, #112] ; 0x70
- 80061f2: 4a1a ldr r2, [pc, #104] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80061f4: f423 3380 bic.w r3, r3, #65536 ; 0x10000
- 80061f8: 6713 str r3, [r2, #112] ; 0x70
-
- /* Restore the Content of BDCR register */
- RCC->BDCR = tmpreg0;
- 80061fa: 4a18 ldr r2, [pc, #96] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80061fc: 693b ldr r3, [r7, #16]
- 80061fe: 6713 str r3, [r2, #112] ; 0x70
-
- /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */
- if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
- 8006200: 4b16 ldr r3, [pc, #88] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8006202: 6f1b ldr r3, [r3, #112] ; 0x70
- 8006204: f003 0301 and.w r3, r3, #1
- 8006208: 2b01 cmp r3, #1
- 800620a: d114 bne.n 8006236 <HAL_RCCEx_PeriphCLKConfig+0x1aa>
- {
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 800620c: f7fe ffe2 bl 80051d4 <HAL_GetTick>
- 8006210: 6178 str r0, [r7, #20]
-
- /* Wait till LSE is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 8006212: e00a b.n 800622a <HAL_RCCEx_PeriphCLKConfig+0x19e>
- {
- if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
- 8006214: f7fe ffde bl 80051d4 <HAL_GetTick>
- 8006218: 4602 mov r2, r0
- 800621a: 697b ldr r3, [r7, #20]
- 800621c: 1ad3 subs r3, r2, r3
- 800621e: f241 3288 movw r2, #5000 ; 0x1388
- 8006222: 4293 cmp r3, r2
- 8006224: d901 bls.n 800622a <HAL_RCCEx_PeriphCLKConfig+0x19e>
- {
- return HAL_TIMEOUT;
- 8006226: 2303 movs r3, #3
- 8006228: e34f b.n 80068ca <HAL_RCCEx_PeriphCLKConfig+0x83e>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 800622a: 4b0c ldr r3, [pc, #48] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800622c: 6f1b ldr r3, [r3, #112] ; 0x70
- 800622e: f003 0302 and.w r3, r3, #2
- 8006232: 2b00 cmp r3, #0
- 8006234: d0ee beq.n 8006214 <HAL_RCCEx_PeriphCLKConfig+0x188>
- }
- }
- }
- }
- __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
- 8006236: 687b ldr r3, [r7, #4]
- 8006238: 6b1b ldr r3, [r3, #48] ; 0x30
- 800623a: f403 7340 and.w r3, r3, #768 ; 0x300
- 800623e: f5b3 7f40 cmp.w r3, #768 ; 0x300
- 8006242: d111 bne.n 8006268 <HAL_RCCEx_PeriphCLKConfig+0x1dc>
- 8006244: 4b05 ldr r3, [pc, #20] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8006246: 689b ldr r3, [r3, #8]
- 8006248: f423 12f8 bic.w r2, r3, #2031616 ; 0x1f0000
- 800624c: 687b ldr r3, [r7, #4]
- 800624e: 6b19 ldr r1, [r3, #48] ; 0x30
- 8006250: 4b04 ldr r3, [pc, #16] ; (8006264 <HAL_RCCEx_PeriphCLKConfig+0x1d8>)
- 8006252: 400b ands r3, r1
- 8006254: 4901 ldr r1, [pc, #4] ; (800625c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8006256: 4313 orrs r3, r2
- 8006258: 608b str r3, [r1, #8]
- 800625a: e00b b.n 8006274 <HAL_RCCEx_PeriphCLKConfig+0x1e8>
- 800625c: 40023800 .word 0x40023800
- 8006260: 40007000 .word 0x40007000
- 8006264: 0ffffcff .word 0x0ffffcff
- 8006268: 4bb3 ldr r3, [pc, #716] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800626a: 689b ldr r3, [r3, #8]
- 800626c: 4ab2 ldr r2, [pc, #712] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800626e: f423 13f8 bic.w r3, r3, #2031616 ; 0x1f0000
- 8006272: 6093 str r3, [r2, #8]
- 8006274: 4bb0 ldr r3, [pc, #704] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006276: 6f1a ldr r2, [r3, #112] ; 0x70
- 8006278: 687b ldr r3, [r7, #4]
- 800627a: 6b1b ldr r3, [r3, #48] ; 0x30
- 800627c: f3c3 030b ubfx r3, r3, #0, #12
- 8006280: 49ad ldr r1, [pc, #692] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006282: 4313 orrs r3, r2
- 8006284: 670b str r3, [r1, #112] ; 0x70
- }
-
- /*------------------------------------ TIM configuration --------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM))
- 8006286: 687b ldr r3, [r7, #4]
- 8006288: 681b ldr r3, [r3, #0]
- 800628a: f003 0310 and.w r3, r3, #16
- 800628e: 2b00 cmp r3, #0
- 8006290: d010 beq.n 80062b4 <HAL_RCCEx_PeriphCLKConfig+0x228>
- {
- /* Check the parameters */
- assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection));
-
- /* Configure Timer Prescaler */
- __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection);
- 8006292: 4ba9 ldr r3, [pc, #676] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006294: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 8006298: 4aa7 ldr r2, [pc, #668] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800629a: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000
- 800629e: f8c2 308c str.w r3, [r2, #140] ; 0x8c
- 80062a2: 4ba5 ldr r3, [pc, #660] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80062a4: f8d3 208c ldr.w r2, [r3, #140] ; 0x8c
- 80062a8: 687b ldr r3, [r7, #4]
- 80062aa: 6b9b ldr r3, [r3, #56] ; 0x38
- 80062ac: 49a2 ldr r1, [pc, #648] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80062ae: 4313 orrs r3, r2
- 80062b0: f8c1 308c str.w r3, [r1, #140] ; 0x8c
- }
-
- /*-------------------------------------- I2C1 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)
- 80062b4: 687b ldr r3, [r7, #4]
- 80062b6: 681b ldr r3, [r3, #0]
- 80062b8: f403 4380 and.w r3, r3, #16384 ; 0x4000
- 80062bc: 2b00 cmp r3, #0
- 80062be: d00a beq.n 80062d6 <HAL_RCCEx_PeriphCLKConfig+0x24a>
- {
- /* Check the parameters */
- assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));
-
- /* Configure the I2C1 clock source */
- __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);
- 80062c0: 4b9d ldr r3, [pc, #628] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80062c2: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80062c6: f423 3240 bic.w r2, r3, #196608 ; 0x30000
- 80062ca: 687b ldr r3, [r7, #4]
- 80062cc: 6e5b ldr r3, [r3, #100] ; 0x64
- 80062ce: 499a ldr r1, [pc, #616] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80062d0: 4313 orrs r3, r2
- 80062d2: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- I2C2 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2)
- 80062d6: 687b ldr r3, [r7, #4]
- 80062d8: 681b ldr r3, [r3, #0]
- 80062da: f403 4300 and.w r3, r3, #32768 ; 0x8000
- 80062de: 2b00 cmp r3, #0
- 80062e0: d00a beq.n 80062f8 <HAL_RCCEx_PeriphCLKConfig+0x26c>
- {
- /* Check the parameters */
- assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection));
-
- /* Configure the I2C2 clock source */
- __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection);
- 80062e2: 4b95 ldr r3, [pc, #596] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80062e4: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80062e8: f423 2240 bic.w r2, r3, #786432 ; 0xc0000
- 80062ec: 687b ldr r3, [r7, #4]
- 80062ee: 6e9b ldr r3, [r3, #104] ; 0x68
- 80062f0: 4991 ldr r1, [pc, #580] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80062f2: 4313 orrs r3, r2
- 80062f4: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- I2C3 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)
- 80062f8: 687b ldr r3, [r7, #4]
- 80062fa: 681b ldr r3, [r3, #0]
- 80062fc: f403 3380 and.w r3, r3, #65536 ; 0x10000
- 8006300: 2b00 cmp r3, #0
- 8006302: d00a beq.n 800631a <HAL_RCCEx_PeriphCLKConfig+0x28e>
- {
- /* Check the parameters */
- assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));
-
- /* Configure the I2C3 clock source */
- __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);
- 8006304: 4b8c ldr r3, [pc, #560] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006306: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 800630a: f423 1240 bic.w r2, r3, #3145728 ; 0x300000
- 800630e: 687b ldr r3, [r7, #4]
- 8006310: 6edb ldr r3, [r3, #108] ; 0x6c
- 8006312: 4989 ldr r1, [pc, #548] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006314: 4313 orrs r3, r2
- 8006316: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- I2C4 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4)
- 800631a: 687b ldr r3, [r7, #4]
- 800631c: 681b ldr r3, [r3, #0]
- 800631e: f403 3300 and.w r3, r3, #131072 ; 0x20000
- 8006322: 2b00 cmp r3, #0
- 8006324: d00a beq.n 800633c <HAL_RCCEx_PeriphCLKConfig+0x2b0>
- {
- /* Check the parameters */
- assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection));
-
- /* Configure the I2C4 clock source */
- __HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection);
- 8006326: 4b84 ldr r3, [pc, #528] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006328: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 800632c: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000
- 8006330: 687b ldr r3, [r7, #4]
- 8006332: 6f1b ldr r3, [r3, #112] ; 0x70
- 8006334: 4980 ldr r1, [pc, #512] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006336: 4313 orrs r3, r2
- 8006338: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- USART1 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)
- 800633c: 687b ldr r3, [r7, #4]
- 800633e: 681b ldr r3, [r3, #0]
- 8006340: f003 0340 and.w r3, r3, #64 ; 0x40
- 8006344: 2b00 cmp r3, #0
- 8006346: d00a beq.n 800635e <HAL_RCCEx_PeriphCLKConfig+0x2d2>
- {
- /* Check the parameters */
- assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));
-
- /* Configure the USART1 clock source */
- __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);
- 8006348: 4b7b ldr r3, [pc, #492] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800634a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 800634e: f023 0203 bic.w r2, r3, #3
- 8006352: 687b ldr r3, [r7, #4]
- 8006354: 6c5b ldr r3, [r3, #68] ; 0x44
- 8006356: 4978 ldr r1, [pc, #480] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006358: 4313 orrs r3, r2
- 800635a: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- USART2 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)
- 800635e: 687b ldr r3, [r7, #4]
- 8006360: 681b ldr r3, [r3, #0]
- 8006362: f003 0380 and.w r3, r3, #128 ; 0x80
- 8006366: 2b00 cmp r3, #0
- 8006368: d00a beq.n 8006380 <HAL_RCCEx_PeriphCLKConfig+0x2f4>
- {
- /* Check the parameters */
- assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));
-
- /* Configure the USART2 clock source */
- __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);
- 800636a: 4b73 ldr r3, [pc, #460] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800636c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8006370: f023 020c bic.w r2, r3, #12
- 8006374: 687b ldr r3, [r7, #4]
- 8006376: 6c9b ldr r3, [r3, #72] ; 0x48
- 8006378: 496f ldr r1, [pc, #444] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800637a: 4313 orrs r3, r2
- 800637c: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- USART3 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3)
- 8006380: 687b ldr r3, [r7, #4]
- 8006382: 681b ldr r3, [r3, #0]
- 8006384: f403 7380 and.w r3, r3, #256 ; 0x100
- 8006388: 2b00 cmp r3, #0
- 800638a: d00a beq.n 80063a2 <HAL_RCCEx_PeriphCLKConfig+0x316>
- {
- /* Check the parameters */
- assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection));
-
- /* Configure the USART3 clock source */
- __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection);
- 800638c: 4b6a ldr r3, [pc, #424] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800638e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8006392: f023 0230 bic.w r2, r3, #48 ; 0x30
- 8006396: 687b ldr r3, [r7, #4]
- 8006398: 6cdb ldr r3, [r3, #76] ; 0x4c
- 800639a: 4967 ldr r1, [pc, #412] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800639c: 4313 orrs r3, r2
- 800639e: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- UART4 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4)
- 80063a2: 687b ldr r3, [r7, #4]
- 80063a4: 681b ldr r3, [r3, #0]
- 80063a6: f403 7300 and.w r3, r3, #512 ; 0x200
- 80063aa: 2b00 cmp r3, #0
- 80063ac: d00a beq.n 80063c4 <HAL_RCCEx_PeriphCLKConfig+0x338>
- {
- /* Check the parameters */
- assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection));
-
- /* Configure the UART4 clock source */
- __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection);
- 80063ae: 4b62 ldr r3, [pc, #392] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80063b0: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80063b4: f023 02c0 bic.w r2, r3, #192 ; 0xc0
- 80063b8: 687b ldr r3, [r7, #4]
- 80063ba: 6d1b ldr r3, [r3, #80] ; 0x50
- 80063bc: 495e ldr r1, [pc, #376] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80063be: 4313 orrs r3, r2
- 80063c0: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- UART5 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5)
- 80063c4: 687b ldr r3, [r7, #4]
- 80063c6: 681b ldr r3, [r3, #0]
- 80063c8: f403 6380 and.w r3, r3, #1024 ; 0x400
- 80063cc: 2b00 cmp r3, #0
- 80063ce: d00a beq.n 80063e6 <HAL_RCCEx_PeriphCLKConfig+0x35a>
- {
- /* Check the parameters */
- assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection));
-
- /* Configure the UART5 clock source */
- __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection);
- 80063d0: 4b59 ldr r3, [pc, #356] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80063d2: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80063d6: f423 7240 bic.w r2, r3, #768 ; 0x300
- 80063da: 687b ldr r3, [r7, #4]
- 80063dc: 6d5b ldr r3, [r3, #84] ; 0x54
- 80063de: 4956 ldr r1, [pc, #344] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80063e0: 4313 orrs r3, r2
- 80063e2: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- USART6 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6)
- 80063e6: 687b ldr r3, [r7, #4]
- 80063e8: 681b ldr r3, [r3, #0]
- 80063ea: f403 6300 and.w r3, r3, #2048 ; 0x800
- 80063ee: 2b00 cmp r3, #0
- 80063f0: d00a beq.n 8006408 <HAL_RCCEx_PeriphCLKConfig+0x37c>
- {
- /* Check the parameters */
- assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection));
-
- /* Configure the USART6 clock source */
- __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection);
- 80063f2: 4b51 ldr r3, [pc, #324] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80063f4: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80063f8: f423 6240 bic.w r2, r3, #3072 ; 0xc00
- 80063fc: 687b ldr r3, [r7, #4]
- 80063fe: 6d9b ldr r3, [r3, #88] ; 0x58
- 8006400: 494d ldr r1, [pc, #308] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006402: 4313 orrs r3, r2
- 8006404: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- UART7 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7)
- 8006408: 687b ldr r3, [r7, #4]
- 800640a: 681b ldr r3, [r3, #0]
- 800640c: f403 5380 and.w r3, r3, #4096 ; 0x1000
- 8006410: 2b00 cmp r3, #0
- 8006412: d00a beq.n 800642a <HAL_RCCEx_PeriphCLKConfig+0x39e>
- {
- /* Check the parameters */
- assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection));
-
- /* Configure the UART7 clock source */
- __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection);
- 8006414: 4b48 ldr r3, [pc, #288] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006416: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 800641a: f423 5240 bic.w r2, r3, #12288 ; 0x3000
- 800641e: 687b ldr r3, [r7, #4]
- 8006420: 6ddb ldr r3, [r3, #92] ; 0x5c
- 8006422: 4945 ldr r1, [pc, #276] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006424: 4313 orrs r3, r2
- 8006426: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- UART8 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8)
- 800642a: 687b ldr r3, [r7, #4]
- 800642c: 681b ldr r3, [r3, #0]
- 800642e: f403 5300 and.w r3, r3, #8192 ; 0x2000
- 8006432: 2b00 cmp r3, #0
- 8006434: d00a beq.n 800644c <HAL_RCCEx_PeriphCLKConfig+0x3c0>
- {
- /* Check the parameters */
- assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection));
-
- /* Configure the UART8 clock source */
- __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection);
- 8006436: 4b40 ldr r3, [pc, #256] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006438: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 800643c: f423 4240 bic.w r2, r3, #49152 ; 0xc000
- 8006440: 687b ldr r3, [r7, #4]
- 8006442: 6e1b ldr r3, [r3, #96] ; 0x60
- 8006444: 493c ldr r1, [pc, #240] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006446: 4313 orrs r3, r2
- 8006448: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*--------------------------------------- CEC Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC)
- 800644c: 687b ldr r3, [r7, #4]
- 800644e: 681b ldr r3, [r3, #0]
- 8006450: f403 0380 and.w r3, r3, #4194304 ; 0x400000
- 8006454: 2b00 cmp r3, #0
- 8006456: d00a beq.n 800646e <HAL_RCCEx_PeriphCLKConfig+0x3e2>
- {
- /* Check the parameters */
- assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection));
-
- /* Configure the CEC clock source */
- __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection);
- 8006458: 4b37 ldr r3, [pc, #220] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800645a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 800645e: f023 6280 bic.w r2, r3, #67108864 ; 0x4000000
- 8006462: 687b ldr r3, [r7, #4]
- 8006464: 6f9b ldr r3, [r3, #120] ; 0x78
- 8006466: 4934 ldr r1, [pc, #208] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006468: 4313 orrs r3, r2
- 800646a: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*-------------------------------------- CK48 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48)
- 800646e: 687b ldr r3, [r7, #4]
- 8006470: 681b ldr r3, [r3, #0]
- 8006472: f403 1300 and.w r3, r3, #2097152 ; 0x200000
- 8006476: 2b00 cmp r3, #0
- 8006478: d011 beq.n 800649e <HAL_RCCEx_PeriphCLKConfig+0x412>
- {
- /* Check the parameters */
- assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection));
-
- /* Configure the CLK48 source */
- __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection);
- 800647a: 4b2f ldr r3, [pc, #188] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800647c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8006480: f023 6200 bic.w r2, r3, #134217728 ; 0x8000000
- 8006484: 687b ldr r3, [r7, #4]
- 8006486: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8006488: 492b ldr r1, [pc, #172] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800648a: 4313 orrs r3, r2
- 800648c: f8c1 3090 str.w r3, [r1, #144] ; 0x90
-
- /* Enable the PLLSAI when it's used as clock source for CK48 */
- if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP)
- 8006490: 687b ldr r3, [r7, #4]
- 8006492: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8006494: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000
- 8006498: d101 bne.n 800649e <HAL_RCCEx_PeriphCLKConfig+0x412>
- {
- pllsaiused = 1;
- 800649a: 2301 movs r3, #1
- 800649c: 61bb str r3, [r7, #24]
- }
- }
-
- /*-------------------------------------- LTDC Configuration -----------------------------------*/
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC)
- 800649e: 687b ldr r3, [r7, #4]
- 80064a0: 681b ldr r3, [r3, #0]
- 80064a2: f003 0308 and.w r3, r3, #8
- 80064a6: 2b00 cmp r3, #0
- 80064a8: d001 beq.n 80064ae <HAL_RCCEx_PeriphCLKConfig+0x422>
- {
- pllsaiused = 1;
- 80064aa: 2301 movs r3, #1
- 80064ac: 61bb str r3, [r7, #24]
- }
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */
-
- /*-------------------------------------- LPTIM1 Configuration -----------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1)
- 80064ae: 687b ldr r3, [r7, #4]
- 80064b0: 681b ldr r3, [r3, #0]
- 80064b2: f403 2380 and.w r3, r3, #262144 ; 0x40000
- 80064b6: 2b00 cmp r3, #0
- 80064b8: d00a beq.n 80064d0 <HAL_RCCEx_PeriphCLKConfig+0x444>
- {
- /* Check the parameters */
- assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection));
-
- /* Configure the LTPIM1 clock source */
- __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);
- 80064ba: 4b1f ldr r3, [pc, #124] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80064bc: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80064c0: f023 7240 bic.w r2, r3, #50331648 ; 0x3000000
- 80064c4: 687b ldr r3, [r7, #4]
- 80064c6: 6f5b ldr r3, [r3, #116] ; 0x74
- 80064c8: 491b ldr r1, [pc, #108] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80064ca: 4313 orrs r3, r2
- 80064cc: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*------------------------------------- SDMMC1 Configuration ------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1)
- 80064d0: 687b ldr r3, [r7, #4]
- 80064d2: 681b ldr r3, [r3, #0]
- 80064d4: f403 0300 and.w r3, r3, #8388608 ; 0x800000
- 80064d8: 2b00 cmp r3, #0
- 80064da: d00b beq.n 80064f4 <HAL_RCCEx_PeriphCLKConfig+0x468>
- {
- /* Check the parameters */
- assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection));
-
- /* Configure the SDMMC1 clock source */
- __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection);
- 80064dc: 4b16 ldr r3, [pc, #88] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80064de: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80064e2: f023 5280 bic.w r2, r3, #268435456 ; 0x10000000
- 80064e6: 687b ldr r3, [r7, #4]
- 80064e8: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80
- 80064ec: 4912 ldr r1, [pc, #72] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80064ee: 4313 orrs r3, r2
- 80064f0: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)
- /*------------------------------------- SDMMC2 Configuration ------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2)
- 80064f4: 687b ldr r3, [r7, #4]
- 80064f6: 681b ldr r3, [r3, #0]
- 80064f8: f003 6380 and.w r3, r3, #67108864 ; 0x4000000
- 80064fc: 2b00 cmp r3, #0
- 80064fe: d00b beq.n 8006518 <HAL_RCCEx_PeriphCLKConfig+0x48c>
- {
- /* Check the parameters */
- assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection));
-
- /* Configure the SDMMC2 clock source */
- __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection);
- 8006500: 4b0d ldr r3, [pc, #52] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006502: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8006506: f023 5200 bic.w r2, r3, #536870912 ; 0x20000000
- 800650a: 687b ldr r3, [r7, #4]
- 800650c: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
- 8006510: 4909 ldr r1, [pc, #36] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006512: 4313 orrs r3, r2
- 8006514: f8c1 3090 str.w r3, [r1, #144] ; 0x90
- }
-
- /*------------------------------------- DFSDM1 Configuration -------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1)
- 8006518: 687b ldr r3, [r7, #4]
- 800651a: 681b ldr r3, [r3, #0]
- 800651c: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
- 8006520: 2b00 cmp r3, #0
- 8006522: d00f beq.n 8006544 <HAL_RCCEx_PeriphCLKConfig+0x4b8>
- {
- /* Check the parameters */
- assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection));
-
- /* Configure the DFSDM1 interface clock source */
- __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection);
- 8006524: 4b04 ldr r3, [pc, #16] ; (8006538 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8006526: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 800652a: f023 7200 bic.w r2, r3, #33554432 ; 0x2000000
- 800652e: 687b ldr r3, [r7, #4]
- 8006530: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 8006534: e002 b.n 800653c <HAL_RCCEx_PeriphCLKConfig+0x4b0>
- 8006536: bf00 nop
- 8006538: 40023800 .word 0x40023800
- 800653c: 4985 ldr r1, [pc, #532] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800653e: 4313 orrs r3, r2
- 8006540: f8c1 308c str.w r3, [r1, #140] ; 0x8c
- }
-
- /*------------------------------------- DFSDM AUDIO Configuration -------------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO)
- 8006544: 687b ldr r3, [r7, #4]
- 8006546: 681b ldr r3, [r3, #0]
- 8006548: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
- 800654c: 2b00 cmp r3, #0
- 800654e: d00b beq.n 8006568 <HAL_RCCEx_PeriphCLKConfig+0x4dc>
- {
- /* Check the parameters */
- assert_param(IS_RCC_DFSDM1AUDIOCLKSOURCE(PeriphClkInit->Dfsdm1AudioClockSelection));
-
- /* Configure the DFSDM interface clock source */
- __HAL_RCC_DFSDM1AUDIO_CONFIG(PeriphClkInit->Dfsdm1AudioClockSelection);
- 8006550: 4b80 ldr r3, [pc, #512] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006552: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 8006556: f023 6280 bic.w r2, r3, #67108864 ; 0x4000000
- 800655a: 687b ldr r3, [r7, #4]
- 800655c: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 8006560: 497c ldr r1, [pc, #496] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006562: 4313 orrs r3, r2
- 8006564: f8c1 308c str.w r3, [r1, #140] ; 0x8c
- }
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
-
- /*-------------------------------------- PLLI2S Configuration ---------------------------------*/
- /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2, I2S or SPDIF-RX */
- if((plli2sused == 1) || (PeriphClkInit->PeriphClockSelection == RCC_PERIPHCLK_PLLI2S))
- 8006568: 69fb ldr r3, [r7, #28]
- 800656a: 2b01 cmp r3, #1
- 800656c: d005 beq.n 800657a <HAL_RCCEx_PeriphCLKConfig+0x4ee>
- 800656e: 687b ldr r3, [r7, #4]
- 8006570: 681b ldr r3, [r3, #0]
- 8006572: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000
- 8006576: f040 80d6 bne.w 8006726 <HAL_RCCEx_PeriphCLKConfig+0x69a>
- {
- /* Disable the PLLI2S */
- __HAL_RCC_PLLI2S_DISABLE();
- 800657a: 4b76 ldr r3, [pc, #472] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800657c: 681b ldr r3, [r3, #0]
- 800657e: 4a75 ldr r2, [pc, #468] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006580: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000
- 8006584: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8006586: f7fe fe25 bl 80051d4 <HAL_GetTick>
- 800658a: 6178 str r0, [r7, #20]
-
- /* Wait till PLLI2S is disabled */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
- 800658c: e008 b.n 80065a0 <HAL_RCCEx_PeriphCLKConfig+0x514>
- {
- if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
- 800658e: f7fe fe21 bl 80051d4 <HAL_GetTick>
- 8006592: 4602 mov r2, r0
- 8006594: 697b ldr r3, [r7, #20]
- 8006596: 1ad3 subs r3, r2, r3
- 8006598: 2b64 cmp r3, #100 ; 0x64
- 800659a: d901 bls.n 80065a0 <HAL_RCCEx_PeriphCLKConfig+0x514>
- {
- /* return in case of Timeout detected */
- return HAL_TIMEOUT;
- 800659c: 2303 movs r3, #3
- 800659e: e194 b.n 80068ca <HAL_RCCEx_PeriphCLKConfig+0x83e>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
- 80065a0: 4b6c ldr r3, [pc, #432] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80065a2: 681b ldr r3, [r3, #0]
- 80065a4: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
- 80065a8: 2b00 cmp r3, #0
- 80065aa: d1f0 bne.n 800658e <HAL_RCCEx_PeriphCLKConfig+0x502>
-
- /* check for common PLLI2S Parameters */
- assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN));
-
- /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)))
- 80065ac: 687b ldr r3, [r7, #4]
- 80065ae: 681b ldr r3, [r3, #0]
- 80065b0: f003 0301 and.w r3, r3, #1
- 80065b4: 2b00 cmp r3, #0
- 80065b6: d021 beq.n 80065fc <HAL_RCCEx_PeriphCLKConfig+0x570>
- 80065b8: 687b ldr r3, [r7, #4]
- 80065ba: 6b5b ldr r3, [r3, #52] ; 0x34
- 80065bc: 2b00 cmp r3, #0
- 80065be: d11d bne.n 80065fc <HAL_RCCEx_PeriphCLKConfig+0x570>
- {
- /* check for Parameters */
- assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR));
-
- /* Read PLLI2SP and PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuration) */
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);
- 80065c0: 4b64 ldr r3, [pc, #400] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80065c2: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
- 80065c6: 0c1b lsrs r3, r3, #16
- 80065c8: f003 0303 and.w r3, r3, #3
- 80065cc: 613b str r3, [r7, #16]
- tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
- 80065ce: 4b61 ldr r3, [pc, #388] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80065d0: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
- 80065d4: 0e1b lsrs r3, r3, #24
- 80065d6: f003 030f and.w r3, r3, #15
- 80065da: 60fb str r3, [r7, #12]
- /* Configure the PLLI2S division factors */
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */
- /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, tmpreg1, PeriphClkInit->PLLI2S.PLLI2SR);
- 80065dc: 687b ldr r3, [r7, #4]
- 80065de: 685b ldr r3, [r3, #4]
- 80065e0: 019a lsls r2, r3, #6
- 80065e2: 693b ldr r3, [r7, #16]
- 80065e4: 041b lsls r3, r3, #16
- 80065e6: 431a orrs r2, r3
- 80065e8: 68fb ldr r3, [r7, #12]
- 80065ea: 061b lsls r3, r3, #24
- 80065ec: 431a orrs r2, r3
- 80065ee: 687b ldr r3, [r7, #4]
- 80065f0: 689b ldr r3, [r3, #8]
- 80065f2: 071b lsls r3, r3, #28
- 80065f4: 4957 ldr r1, [pc, #348] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80065f6: 4313 orrs r3, r2
- 80065f8: f8c1 3084 str.w r3, [r1, #132] ; 0x84
- }
-
- /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||
- 80065fc: 687b ldr r3, [r7, #4]
- 80065fe: 681b ldr r3, [r3, #0]
- 8006600: f403 2300 and.w r3, r3, #524288 ; 0x80000
- 8006604: 2b00 cmp r3, #0
- 8006606: d004 beq.n 8006612 <HAL_RCCEx_PeriphCLKConfig+0x586>
- 8006608: 687b ldr r3, [r7, #4]
- 800660a: 6bdb ldr r3, [r3, #60] ; 0x3c
- 800660c: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000
- 8006610: d00a beq.n 8006628 <HAL_RCCEx_PeriphCLKConfig+0x59c>
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))
- 8006612: 687b ldr r3, [r7, #4]
- 8006614: 681b ldr r3, [r3, #0]
- 8006616: f403 1380 and.w r3, r3, #1048576 ; 0x100000
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||
- 800661a: 2b00 cmp r3, #0
- 800661c: d02e beq.n 800667c <HAL_RCCEx_PeriphCLKConfig+0x5f0>
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))
- 800661e: 687b ldr r3, [r7, #4]
- 8006620: 6c1b ldr r3, [r3, #64] ; 0x40
- 8006622: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000
- 8006626: d129 bne.n 800667c <HAL_RCCEx_PeriphCLKConfig+0x5f0>
- assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));
- /* Check for PLLI2S/DIVQ parameters */
- assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ));
-
- /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI configuration) */
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);
- 8006628: 4b4a ldr r3, [pc, #296] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800662a: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
- 800662e: 0c1b lsrs r3, r3, #16
- 8006630: f003 0303 and.w r3, r3, #3
- 8006634: 613b str r3, [r7, #16]
- tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
- 8006636: 4b47 ldr r3, [pc, #284] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006638: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
- 800663c: 0f1b lsrs r3, r3, #28
- 800663e: f003 0307 and.w r3, r3, #7
- 8006642: 60fb str r3, [r7, #12]
- /* Configure the PLLI2S division factors */
- /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */
- /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */
- /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, tmpreg0, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg1);
- 8006644: 687b ldr r3, [r7, #4]
- 8006646: 685b ldr r3, [r3, #4]
- 8006648: 019a lsls r2, r3, #6
- 800664a: 693b ldr r3, [r7, #16]
- 800664c: 041b lsls r3, r3, #16
- 800664e: 431a orrs r2, r3
- 8006650: 687b ldr r3, [r7, #4]
- 8006652: 68db ldr r3, [r3, #12]
- 8006654: 061b lsls r3, r3, #24
- 8006656: 431a orrs r2, r3
- 8006658: 68fb ldr r3, [r7, #12]
- 800665a: 071b lsls r3, r3, #28
- 800665c: 493d ldr r1, [pc, #244] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800665e: 4313 orrs r3, r2
- 8006660: f8c1 3084 str.w r3, [r1, #132] ; 0x84
-
- /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */
- __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ);
- 8006664: 4b3b ldr r3, [pc, #236] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006666: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 800666a: f023 021f bic.w r2, r3, #31
- 800666e: 687b ldr r3, [r7, #4]
- 8006670: 6a5b ldr r3, [r3, #36] ; 0x24
- 8006672: 3b01 subs r3, #1
- 8006674: 4937 ldr r1, [pc, #220] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006676: 4313 orrs r3, r2
- 8006678: f8c1 308c str.w r3, [r1, #140] ; 0x8c
- }
-
- /*----------------- In Case of PLLI2S is selected as source clock for SPDIF-RX -------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)
- 800667c: 687b ldr r3, [r7, #4]
- 800667e: 681b ldr r3, [r3, #0]
- 8006680: f003 7380 and.w r3, r3, #16777216 ; 0x1000000
- 8006684: 2b00 cmp r3, #0
- 8006686: d01d beq.n 80066c4 <HAL_RCCEx_PeriphCLKConfig+0x638>
- {
- /* check for Parameters */
- assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP));
-
- /* Read PLLI2SR value from PLLI2SCFGR register (this value is not needed for SPDIF-RX configuration) */
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
- 8006688: 4b32 ldr r3, [pc, #200] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800668a: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
- 800668e: 0e1b lsrs r3, r3, #24
- 8006690: f003 030f and.w r3, r3, #15
- 8006694: 613b str r3, [r7, #16]
- tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
- 8006696: 4b2f ldr r3, [pc, #188] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006698: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84
- 800669c: 0f1b lsrs r3, r3, #28
- 800669e: f003 0307 and.w r3, r3, #7
- 80066a2: 60fb str r3, [r7, #12]
- /* Configure the PLLI2S division factors */
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */
- /* SPDIFCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, tmpreg0, tmpreg1);
- 80066a4: 687b ldr r3, [r7, #4]
- 80066a6: 685b ldr r3, [r3, #4]
- 80066a8: 019a lsls r2, r3, #6
- 80066aa: 687b ldr r3, [r7, #4]
- 80066ac: 691b ldr r3, [r3, #16]
- 80066ae: 041b lsls r3, r3, #16
- 80066b0: 431a orrs r2, r3
- 80066b2: 693b ldr r3, [r7, #16]
- 80066b4: 061b lsls r3, r3, #24
- 80066b6: 431a orrs r2, r3
- 80066b8: 68fb ldr r3, [r7, #12]
- 80066ba: 071b lsls r3, r3, #28
- 80066bc: 4925 ldr r1, [pc, #148] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80066be: 4313 orrs r3, r2
- 80066c0: f8c1 3084 str.w r3, [r1, #132] ; 0x84
- }
-
- /*----------------- In Case of PLLI2S is just selected -----------------*/
- if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)
- 80066c4: 687b ldr r3, [r7, #4]
- 80066c6: 681b ldr r3, [r3, #0]
- 80066c8: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
- 80066cc: 2b00 cmp r3, #0
- 80066ce: d011 beq.n 80066f4 <HAL_RCCEx_PeriphCLKConfig+0x668>
- assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));
-
- /* Configure the PLLI2S division factors */
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */
- /* SPDIFRXCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, PeriphClkInit->PLLI2S.PLLI2SQ, PeriphClkInit->PLLI2S.PLLI2SR);
- 80066d0: 687b ldr r3, [r7, #4]
- 80066d2: 685b ldr r3, [r3, #4]
- 80066d4: 019a lsls r2, r3, #6
- 80066d6: 687b ldr r3, [r7, #4]
- 80066d8: 691b ldr r3, [r3, #16]
- 80066da: 041b lsls r3, r3, #16
- 80066dc: 431a orrs r2, r3
- 80066de: 687b ldr r3, [r7, #4]
- 80066e0: 68db ldr r3, [r3, #12]
- 80066e2: 061b lsls r3, r3, #24
- 80066e4: 431a orrs r2, r3
- 80066e6: 687b ldr r3, [r7, #4]
- 80066e8: 689b ldr r3, [r3, #8]
- 80066ea: 071b lsls r3, r3, #28
- 80066ec: 4919 ldr r1, [pc, #100] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80066ee: 4313 orrs r3, r2
- 80066f0: f8c1 3084 str.w r3, [r1, #132] ; 0x84
- }
-
- /* Enable the PLLI2S */
- __HAL_RCC_PLLI2S_ENABLE();
- 80066f4: 4b17 ldr r3, [pc, #92] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80066f6: 681b ldr r3, [r3, #0]
- 80066f8: 4a16 ldr r2, [pc, #88] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80066fa: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000
- 80066fe: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 8006700: f7fe fd68 bl 80051d4 <HAL_GetTick>
- 8006704: 6178 str r0, [r7, #20]
-
- /* Wait till PLLI2S is ready */
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
- 8006706: e008 b.n 800671a <HAL_RCCEx_PeriphCLKConfig+0x68e>
- {
- if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
- 8006708: f7fe fd64 bl 80051d4 <HAL_GetTick>
- 800670c: 4602 mov r2, r0
- 800670e: 697b ldr r3, [r7, #20]
- 8006710: 1ad3 subs r3, r2, r3
- 8006712: 2b64 cmp r3, #100 ; 0x64
- 8006714: d901 bls.n 800671a <HAL_RCCEx_PeriphCLKConfig+0x68e>
- {
- /* return in case of Timeout detected */
- return HAL_TIMEOUT;
- 8006716: 2303 movs r3, #3
- 8006718: e0d7 b.n 80068ca <HAL_RCCEx_PeriphCLKConfig+0x83e>
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
- 800671a: 4b0e ldr r3, [pc, #56] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800671c: 681b ldr r3, [r3, #0]
- 800671e: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
- 8006722: 2b00 cmp r3, #0
- 8006724: d0f0 beq.n 8006708 <HAL_RCCEx_PeriphCLKConfig+0x67c>
- }
- }
-
- /*-------------------------------------- PLLSAI Configuration ---------------------------------*/
- /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 */
- if(pllsaiused == 1)
- 8006726: 69bb ldr r3, [r7, #24]
- 8006728: 2b01 cmp r3, #1
- 800672a: f040 80cd bne.w 80068c8 <HAL_RCCEx_PeriphCLKConfig+0x83c>
- {
- /* Disable PLLSAI Clock */
- __HAL_RCC_PLLSAI_DISABLE();
- 800672e: 4b09 ldr r3, [pc, #36] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006730: 681b ldr r3, [r3, #0]
- 8006732: 4a08 ldr r2, [pc, #32] ; (8006754 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8006734: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
- 8006738: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 800673a: f7fe fd4b bl 80051d4 <HAL_GetTick>
- 800673e: 6178 str r0, [r7, #20]
-
- /* Wait till PLLSAI is disabled */
- while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
- 8006740: e00a b.n 8006758 <HAL_RCCEx_PeriphCLKConfig+0x6cc>
- {
- if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
- 8006742: f7fe fd47 bl 80051d4 <HAL_GetTick>
- 8006746: 4602 mov r2, r0
- 8006748: 697b ldr r3, [r7, #20]
- 800674a: 1ad3 subs r3, r2, r3
- 800674c: 2b64 cmp r3, #100 ; 0x64
- 800674e: d903 bls.n 8006758 <HAL_RCCEx_PeriphCLKConfig+0x6cc>
- {
- /* return in case of Timeout detected */
- return HAL_TIMEOUT;
- 8006750: 2303 movs r3, #3
- 8006752: e0ba b.n 80068ca <HAL_RCCEx_PeriphCLKConfig+0x83e>
- 8006754: 40023800 .word 0x40023800
- while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
- 8006758: 4b5e ldr r3, [pc, #376] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 800675a: 681b ldr r3, [r3, #0]
- 800675c: f003 5300 and.w r3, r3, #536870912 ; 0x20000000
- 8006760: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000
- 8006764: d0ed beq.n 8006742 <HAL_RCCEx_PeriphCLKConfig+0x6b6>
-
- /* Check the PLLSAI division factors */
- assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN));
-
- /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\
- 8006766: 687b ldr r3, [r7, #4]
- 8006768: 681b ldr r3, [r3, #0]
- 800676a: f403 2300 and.w r3, r3, #524288 ; 0x80000
- 800676e: 2b00 cmp r3, #0
- 8006770: d003 beq.n 800677a <HAL_RCCEx_PeriphCLKConfig+0x6ee>
- 8006772: 687b ldr r3, [r7, #4]
- 8006774: 6bdb ldr r3, [r3, #60] ; 0x3c
- 8006776: 2b00 cmp r3, #0
- 8006778: d009 beq.n 800678e <HAL_RCCEx_PeriphCLKConfig+0x702>
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))
- 800677a: 687b ldr r3, [r7, #4]
- 800677c: 681b ldr r3, [r3, #0]
- 800677e: f403 1380 and.w r3, r3, #1048576 ; 0x100000
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\
- 8006782: 2b00 cmp r3, #0
- 8006784: d02e beq.n 80067e4 <HAL_RCCEx_PeriphCLKConfig+0x758>
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))
- 8006786: 687b ldr r3, [r7, #4]
- 8006788: 6c1b ldr r3, [r3, #64] ; 0x40
- 800678a: 2b00 cmp r3, #0
- 800678c: d12a bne.n 80067e4 <HAL_RCCEx_PeriphCLKConfig+0x758>
- assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ));
- /* check for PLLSAI/DIVQ Parameter */
- assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ));
-
- /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuration) */
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);
- 800678e: 4b51 ldr r3, [pc, #324] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8006790: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 8006794: 0c1b lsrs r3, r3, #16
- 8006796: f003 0303 and.w r3, r3, #3
- 800679a: 613b str r3, [r7, #16]
- tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
- 800679c: 4b4d ldr r3, [pc, #308] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 800679e: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 80067a2: 0f1b lsrs r3, r3, #28
- 80067a4: f003 0307 and.w r3, r3, #7
- 80067a8: 60fb str r3, [r7, #12]
- /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */
- /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAIQ, tmpreg1);
- 80067aa: 687b ldr r3, [r7, #4]
- 80067ac: 695b ldr r3, [r3, #20]
- 80067ae: 019a lsls r2, r3, #6
- 80067b0: 693b ldr r3, [r7, #16]
- 80067b2: 041b lsls r3, r3, #16
- 80067b4: 431a orrs r2, r3
- 80067b6: 687b ldr r3, [r7, #4]
- 80067b8: 699b ldr r3, [r3, #24]
- 80067ba: 061b lsls r3, r3, #24
- 80067bc: 431a orrs r2, r3
- 80067be: 68fb ldr r3, [r7, #12]
- 80067c0: 071b lsls r3, r3, #28
- 80067c2: 4944 ldr r1, [pc, #272] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 80067c4: 4313 orrs r3, r2
- 80067c6: f8c1 3088 str.w r3, [r1, #136] ; 0x88
-
- /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */
- __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ);
- 80067ca: 4b42 ldr r3, [pc, #264] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 80067cc: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 80067d0: f423 52f8 bic.w r2, r3, #7936 ; 0x1f00
- 80067d4: 687b ldr r3, [r7, #4]
- 80067d6: 6a9b ldr r3, [r3, #40] ; 0x28
- 80067d8: 3b01 subs r3, #1
- 80067da: 021b lsls r3, r3, #8
- 80067dc: 493d ldr r1, [pc, #244] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 80067de: 4313 orrs r3, r2
- 80067e0: f8c1 308c str.w r3, [r1, #140] ; 0x8c
- }
-
- /*----------------- In Case of PLLSAI is selected as source clock for CLK48 -------------------*/
- /* In Case of PLLI2S is selected as source clock for CK48 */
- if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP))
- 80067e4: 687b ldr r3, [r7, #4]
- 80067e6: 681b ldr r3, [r3, #0]
- 80067e8: f403 1300 and.w r3, r3, #2097152 ; 0x200000
- 80067ec: 2b00 cmp r3, #0
- 80067ee: d022 beq.n 8006836 <HAL_RCCEx_PeriphCLKConfig+0x7aa>
- 80067f0: 687b ldr r3, [r7, #4]
- 80067f2: 6fdb ldr r3, [r3, #124] ; 0x7c
- 80067f4: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000
- 80067f8: d11d bne.n 8006836 <HAL_RCCEx_PeriphCLKConfig+0x7aa>
- {
- /* check for Parameters */
- assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP));
- /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 configuration) */
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
- 80067fa: 4b36 ldr r3, [pc, #216] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 80067fc: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 8006800: 0e1b lsrs r3, r3, #24
- 8006802: f003 030f and.w r3, r3, #15
- 8006806: 613b str r3, [r7, #16]
- tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
- 8006808: 4b32 ldr r3, [pc, #200] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 800680a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 800680e: 0f1b lsrs r3, r3, #28
- 8006810: f003 0307 and.w r3, r3, #7
- 8006814: 60fb str r3, [r7, #12]
-
- /* Configure the PLLSAI division factors */
- /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */
- /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg0, tmpreg1);
- 8006816: 687b ldr r3, [r7, #4]
- 8006818: 695b ldr r3, [r3, #20]
- 800681a: 019a lsls r2, r3, #6
- 800681c: 687b ldr r3, [r7, #4]
- 800681e: 6a1b ldr r3, [r3, #32]
- 8006820: 041b lsls r3, r3, #16
- 8006822: 431a orrs r2, r3
- 8006824: 693b ldr r3, [r7, #16]
- 8006826: 061b lsls r3, r3, #24
- 8006828: 431a orrs r2, r3
- 800682a: 68fb ldr r3, [r7, #12]
- 800682c: 071b lsls r3, r3, #28
- 800682e: 4929 ldr r1, [pc, #164] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8006830: 4313 orrs r3, r2
- 8006832: f8c1 3088 str.w r3, [r1, #136] ; 0x88
- }
-
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)
- /*---------------------------- LTDC configuration -------------------------------*/
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == (RCC_PERIPHCLK_LTDC))
- 8006836: 687b ldr r3, [r7, #4]
- 8006838: 681b ldr r3, [r3, #0]
- 800683a: f003 0308 and.w r3, r3, #8
- 800683e: 2b00 cmp r3, #0
- 8006840: d028 beq.n 8006894 <HAL_RCCEx_PeriphCLKConfig+0x808>
- {
- assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->PLLSAI.PLLSAIR));
- assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR));
-
- /* Read PLLSAIP and PLLSAIQ value from PLLSAICFGR register (these value are not needed for LTDC configuration) */
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
- 8006842: 4b24 ldr r3, [pc, #144] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8006844: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 8006848: 0e1b lsrs r3, r3, #24
- 800684a: f003 030f and.w r3, r3, #15
- 800684e: 613b str r3, [r7, #16]
- tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);
- 8006850: 4b20 ldr r3, [pc, #128] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8006852: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
- 8006856: 0c1b lsrs r3, r3, #16
- 8006858: f003 0303 and.w r3, r3, #3
- 800685c: 60fb str r3, [r7, #12]
-
- /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */
- /* LTDC_CLK(first level) = PLLSAI_VCO Output/PLLSAIR */
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg1, tmpreg0, PeriphClkInit->PLLSAI.PLLSAIR);
- 800685e: 687b ldr r3, [r7, #4]
- 8006860: 695b ldr r3, [r3, #20]
- 8006862: 019a lsls r2, r3, #6
- 8006864: 68fb ldr r3, [r7, #12]
- 8006866: 041b lsls r3, r3, #16
- 8006868: 431a orrs r2, r3
- 800686a: 693b ldr r3, [r7, #16]
- 800686c: 061b lsls r3, r3, #24
- 800686e: 431a orrs r2, r3
- 8006870: 687b ldr r3, [r7, #4]
- 8006872: 69db ldr r3, [r3, #28]
- 8006874: 071b lsls r3, r3, #28
- 8006876: 4917 ldr r1, [pc, #92] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8006878: 4313 orrs r3, r2
- 800687a: f8c1 3088 str.w r3, [r1, #136] ; 0x88
-
- /* LTDC_CLK = LTDC_CLK(first level)/PLLSAIDIVR */
- __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR);
- 800687e: 4b15 ldr r3, [pc, #84] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8006880: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c
- 8006884: f423 3240 bic.w r2, r3, #196608 ; 0x30000
- 8006888: 687b ldr r3, [r7, #4]
- 800688a: 6adb ldr r3, [r3, #44] ; 0x2c
- 800688c: 4911 ldr r1, [pc, #68] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 800688e: 4313 orrs r3, r2
- 8006890: f8c1 308c str.w r3, [r1, #140] ; 0x8c
- }
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */
-
- /* Enable PLLSAI Clock */
- __HAL_RCC_PLLSAI_ENABLE();
- 8006894: 4b0f ldr r3, [pc, #60] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8006896: 681b ldr r3, [r3, #0]
- 8006898: 4a0e ldr r2, [pc, #56] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 800689a: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
- 800689e: 6013 str r3, [r2, #0]
-
- /* Get Start Tick*/
- tickstart = HAL_GetTick();
- 80068a0: f7fe fc98 bl 80051d4 <HAL_GetTick>
- 80068a4: 6178 str r0, [r7, #20]
-
- /* Wait till PLLSAI is ready */
- while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
- 80068a6: e008 b.n 80068ba <HAL_RCCEx_PeriphCLKConfig+0x82e>
- {
- if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
- 80068a8: f7fe fc94 bl 80051d4 <HAL_GetTick>
- 80068ac: 4602 mov r2, r0
- 80068ae: 697b ldr r3, [r7, #20]
- 80068b0: 1ad3 subs r3, r2, r3
- 80068b2: 2b64 cmp r3, #100 ; 0x64
- 80068b4: d901 bls.n 80068ba <HAL_RCCEx_PeriphCLKConfig+0x82e>
- {
- /* return in case of Timeout detected */
- return HAL_TIMEOUT;
- 80068b6: 2303 movs r3, #3
- 80068b8: e007 b.n 80068ca <HAL_RCCEx_PeriphCLKConfig+0x83e>
- while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
- 80068ba: 4b06 ldr r3, [pc, #24] ; (80068d4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 80068bc: 681b ldr r3, [r3, #0]
- 80068be: f003 5300 and.w r3, r3, #536870912 ; 0x20000000
- 80068c2: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000
- 80068c6: d1ef bne.n 80068a8 <HAL_RCCEx_PeriphCLKConfig+0x81c>
- }
- }
- }
- return HAL_OK;
- 80068c8: 2300 movs r3, #0
-}
- 80068ca: 4618 mov r0, r3
- 80068cc: 3720 adds r7, #32
- 80068ce: 46bd mov sp, r7
- 80068d0: bd80 pop {r7, pc}
- 80068d2: bf00 nop
- 80068d4: 40023800 .word 0x40023800
-
-080068d8 <HAL_TIM_Base_Init>:
- * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init()
- * @param htim TIM Base handle
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
-{
- 80068d8: b580 push {r7, lr}
- 80068da: b082 sub sp, #8
- 80068dc: af00 add r7, sp, #0
- 80068de: 6078 str r0, [r7, #4]
- /* Check the TIM handle allocation */
- if (htim == NULL)
- 80068e0: 687b ldr r3, [r7, #4]
- 80068e2: 2b00 cmp r3, #0
- 80068e4: d101 bne.n 80068ea <HAL_TIM_Base_Init+0x12>
- {
- return HAL_ERROR;
- 80068e6: 2301 movs r3, #1
- 80068e8: e01d b.n 8006926 <HAL_TIM_Base_Init+0x4e>
- assert_param(IS_TIM_INSTANCE(htim->Instance));
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
-
- if (htim->State == HAL_TIM_STATE_RESET)
- 80068ea: 687b ldr r3, [r7, #4]
- 80068ec: f893 303d ldrb.w r3, [r3, #61] ; 0x3d
- 80068f0: b2db uxtb r3, r3
- 80068f2: 2b00 cmp r3, #0
- 80068f4: d106 bne.n 8006904 <HAL_TIM_Base_Init+0x2c>
- {
- /* Allocate lock resource and initialize it */
- htim->Lock = HAL_UNLOCKED;
- 80068f6: 687b ldr r3, [r7, #4]
- 80068f8: 2200 movs r2, #0
- 80068fa: f883 203c strb.w r2, [r3, #60] ; 0x3c
- }
- /* Init the low level hardware : GPIO, CLOCK, NVIC */
- htim->Base_MspInitCallback(htim);
-#else
- /* Init the low level hardware : GPIO, CLOCK, NVIC */
- HAL_TIM_Base_MspInit(htim);
- 80068fe: 6878 ldr r0, [r7, #4]
- 8006900: f7fe faa0 bl 8004e44 <HAL_TIM_Base_MspInit>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
-
- /* Set the TIM state */
- htim->State = HAL_TIM_STATE_BUSY;
- 8006904: 687b ldr r3, [r7, #4]
- 8006906: 2202 movs r2, #2
- 8006908: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- /* Set the Time Base configuration */
- TIM_Base_SetConfig(htim->Instance, &htim->Init);
- 800690c: 687b ldr r3, [r7, #4]
- 800690e: 681a ldr r2, [r3, #0]
- 8006910: 687b ldr r3, [r7, #4]
- 8006912: 3304 adds r3, #4
- 8006914: 4619 mov r1, r3
- 8006916: 4610 mov r0, r2
- 8006918: f000 fc90 bl 800723c <TIM_Base_SetConfig>
-
- /* Initialize the TIM state*/
- htim->State = HAL_TIM_STATE_READY;
- 800691c: 687b ldr r3, [r7, #4]
- 800691e: 2201 movs r2, #1
- 8006920: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- return HAL_OK;
- 8006924: 2300 movs r3, #0
-}
- 8006926: 4618 mov r0, r3
- 8006928: 3708 adds r7, #8
- 800692a: 46bd mov sp, r7
- 800692c: bd80 pop {r7, pc}
- ...
-
-08006930 <HAL_TIM_Base_Start_IT>:
- * @brief Starts the TIM Base generation in interrupt mode.
- * @param htim TIM Base handle
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
-{
- 8006930: b480 push {r7}
- 8006932: b085 sub sp, #20
- 8006934: af00 add r7, sp, #0
- 8006936: 6078 str r0, [r7, #4]
-
- /* Check the parameters */
- assert_param(IS_TIM_INSTANCE(htim->Instance));
-
- /* Enable the TIM Update interrupt */
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
- 8006938: 687b ldr r3, [r7, #4]
- 800693a: 681b ldr r3, [r3, #0]
- 800693c: 68da ldr r2, [r3, #12]
- 800693e: 687b ldr r3, [r7, #4]
- 8006940: 681b ldr r3, [r3, #0]
- 8006942: f042 0201 orr.w r2, r2, #1
- 8006946: 60da str r2, [r3, #12]
-
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
- 8006948: 687b ldr r3, [r7, #4]
- 800694a: 681b ldr r3, [r3, #0]
- 800694c: 689a ldr r2, [r3, #8]
- 800694e: 4b0c ldr r3, [pc, #48] ; (8006980 <HAL_TIM_Base_Start_IT+0x50>)
- 8006950: 4013 ands r3, r2
- 8006952: 60fb str r3, [r7, #12]
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
- 8006954: 68fb ldr r3, [r7, #12]
- 8006956: 2b06 cmp r3, #6
- 8006958: d00b beq.n 8006972 <HAL_TIM_Base_Start_IT+0x42>
- 800695a: 68fb ldr r3, [r7, #12]
- 800695c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
- 8006960: d007 beq.n 8006972 <HAL_TIM_Base_Start_IT+0x42>
- {
- __HAL_TIM_ENABLE(htim);
- 8006962: 687b ldr r3, [r7, #4]
- 8006964: 681b ldr r3, [r3, #0]
- 8006966: 681a ldr r2, [r3, #0]
- 8006968: 687b ldr r3, [r7, #4]
- 800696a: 681b ldr r3, [r3, #0]
- 800696c: f042 0201 orr.w r2, r2, #1
- 8006970: 601a str r2, [r3, #0]
- }
-
- /* Return function status */
- return HAL_OK;
- 8006972: 2300 movs r3, #0
-}
- 8006974: 4618 mov r0, r3
- 8006976: 3714 adds r7, #20
- 8006978: 46bd mov sp, r7
- 800697a: f85d 7b04 ldr.w r7, [sp], #4
- 800697e: 4770 bx lr
- 8006980: 00010007 .word 0x00010007
-
-08006984 <HAL_TIM_PWM_Init>:
- * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init()
- * @param htim TIM PWM handle
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)
-{
- 8006984: b580 push {r7, lr}
- 8006986: b082 sub sp, #8
- 8006988: af00 add r7, sp, #0
- 800698a: 6078 str r0, [r7, #4]
- /* Check the TIM handle allocation */
- if (htim == NULL)
- 800698c: 687b ldr r3, [r7, #4]
- 800698e: 2b00 cmp r3, #0
- 8006990: d101 bne.n 8006996 <HAL_TIM_PWM_Init+0x12>
- {
- return HAL_ERROR;
- 8006992: 2301 movs r3, #1
- 8006994: e01d b.n 80069d2 <HAL_TIM_PWM_Init+0x4e>
- assert_param(IS_TIM_INSTANCE(htim->Instance));
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
-
- if (htim->State == HAL_TIM_STATE_RESET)
- 8006996: 687b ldr r3, [r7, #4]
- 8006998: f893 303d ldrb.w r3, [r3, #61] ; 0x3d
- 800699c: b2db uxtb r3, r3
- 800699e: 2b00 cmp r3, #0
- 80069a0: d106 bne.n 80069b0 <HAL_TIM_PWM_Init+0x2c>
- {
- /* Allocate lock resource and initialize it */
- htim->Lock = HAL_UNLOCKED;
- 80069a2: 687b ldr r3, [r7, #4]
- 80069a4: 2200 movs r2, #0
- 80069a6: f883 203c strb.w r2, [r3, #60] ; 0x3c
- }
- /* Init the low level hardware : GPIO, CLOCK, NVIC */
- htim->PWM_MspInitCallback(htim);
-#else
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
- HAL_TIM_PWM_MspInit(htim);
- 80069aa: 6878 ldr r0, [r7, #4]
- 80069ac: f000 f815 bl 80069da <HAL_TIM_PWM_MspInit>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
-
- /* Set the TIM state */
- htim->State = HAL_TIM_STATE_BUSY;
- 80069b0: 687b ldr r3, [r7, #4]
- 80069b2: 2202 movs r2, #2
- 80069b4: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- /* Init the base time for the PWM */
- TIM_Base_SetConfig(htim->Instance, &htim->Init);
- 80069b8: 687b ldr r3, [r7, #4]
- 80069ba: 681a ldr r2, [r3, #0]
- 80069bc: 687b ldr r3, [r7, #4]
- 80069be: 3304 adds r3, #4
- 80069c0: 4619 mov r1, r3
- 80069c2: 4610 mov r0, r2
- 80069c4: f000 fc3a bl 800723c <TIM_Base_SetConfig>
-
- /* Initialize the TIM state*/
- htim->State = HAL_TIM_STATE_READY;
- 80069c8: 687b ldr r3, [r7, #4]
- 80069ca: 2201 movs r2, #1
- 80069cc: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- return HAL_OK;
- 80069d0: 2300 movs r3, #0
-}
- 80069d2: 4618 mov r0, r3
- 80069d4: 3708 adds r7, #8
- 80069d6: 46bd mov sp, r7
- 80069d8: bd80 pop {r7, pc}
-
-080069da <HAL_TIM_PWM_MspInit>:
- * @brief Initializes the TIM PWM MSP.
- * @param htim TIM PWM handle
- * @retval None
- */
-__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
-{
- 80069da: b480 push {r7}
- 80069dc: b083 sub sp, #12
- 80069de: af00 add r7, sp, #0
- 80069e0: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_TIM_PWM_MspInit could be implemented in the user file
- */
-}
- 80069e2: bf00 nop
- 80069e4: 370c adds r7, #12
- 80069e6: 46bd mov sp, r7
- 80069e8: f85d 7b04 ldr.w r7, [sp], #4
- 80069ec: 4770 bx lr
- ...
-
-080069f0 <HAL_TIM_PWM_Start>:
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
-{
- 80069f0: b580 push {r7, lr}
- 80069f2: b084 sub sp, #16
- 80069f4: af00 add r7, sp, #0
- 80069f6: 6078 str r0, [r7, #4]
- 80069f8: 6039 str r1, [r7, #0]
-
- /* Check the parameters */
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
-
- /* Enable the Capture compare channel */
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
- 80069fa: 687b ldr r3, [r7, #4]
- 80069fc: 681b ldr r3, [r3, #0]
- 80069fe: 2201 movs r2, #1
- 8006a00: 6839 ldr r1, [r7, #0]
- 8006a02: 4618 mov r0, r3
- 8006a04: f000 ffb2 bl 800796c <TIM_CCxChannelCmd>
-
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
- 8006a08: 687b ldr r3, [r7, #4]
- 8006a0a: 681b ldr r3, [r3, #0]
- 8006a0c: 4a17 ldr r2, [pc, #92] ; (8006a6c <HAL_TIM_PWM_Start+0x7c>)
- 8006a0e: 4293 cmp r3, r2
- 8006a10: d004 beq.n 8006a1c <HAL_TIM_PWM_Start+0x2c>
- 8006a12: 687b ldr r3, [r7, #4]
- 8006a14: 681b ldr r3, [r3, #0]
- 8006a16: 4a16 ldr r2, [pc, #88] ; (8006a70 <HAL_TIM_PWM_Start+0x80>)
- 8006a18: 4293 cmp r3, r2
- 8006a1a: d101 bne.n 8006a20 <HAL_TIM_PWM_Start+0x30>
- 8006a1c: 2301 movs r3, #1
- 8006a1e: e000 b.n 8006a22 <HAL_TIM_PWM_Start+0x32>
- 8006a20: 2300 movs r3, #0
- 8006a22: 2b00 cmp r3, #0
- 8006a24: d007 beq.n 8006a36 <HAL_TIM_PWM_Start+0x46>
- {
- /* Enable the main output */
- __HAL_TIM_MOE_ENABLE(htim);
- 8006a26: 687b ldr r3, [r7, #4]
- 8006a28: 681b ldr r3, [r3, #0]
- 8006a2a: 6c5a ldr r2, [r3, #68] ; 0x44
- 8006a2c: 687b ldr r3, [r7, #4]
- 8006a2e: 681b ldr r3, [r3, #0]
- 8006a30: f442 4200 orr.w r2, r2, #32768 ; 0x8000
- 8006a34: 645a str r2, [r3, #68] ; 0x44
- }
-
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
- 8006a36: 687b ldr r3, [r7, #4]
- 8006a38: 681b ldr r3, [r3, #0]
- 8006a3a: 689a ldr r2, [r3, #8]
- 8006a3c: 4b0d ldr r3, [pc, #52] ; (8006a74 <HAL_TIM_PWM_Start+0x84>)
- 8006a3e: 4013 ands r3, r2
- 8006a40: 60fb str r3, [r7, #12]
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
- 8006a42: 68fb ldr r3, [r7, #12]
- 8006a44: 2b06 cmp r3, #6
- 8006a46: d00b beq.n 8006a60 <HAL_TIM_PWM_Start+0x70>
- 8006a48: 68fb ldr r3, [r7, #12]
- 8006a4a: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
- 8006a4e: d007 beq.n 8006a60 <HAL_TIM_PWM_Start+0x70>
- {
- __HAL_TIM_ENABLE(htim);
- 8006a50: 687b ldr r3, [r7, #4]
- 8006a52: 681b ldr r3, [r3, #0]
- 8006a54: 681a ldr r2, [r3, #0]
- 8006a56: 687b ldr r3, [r7, #4]
- 8006a58: 681b ldr r3, [r3, #0]
- 8006a5a: f042 0201 orr.w r2, r2, #1
- 8006a5e: 601a str r2, [r3, #0]
- }
-
- /* Return function status */
- return HAL_OK;
- 8006a60: 2300 movs r3, #0
-}
- 8006a62: 4618 mov r0, r3
- 8006a64: 3710 adds r7, #16
- 8006a66: 46bd mov sp, r7
- 8006a68: bd80 pop {r7, pc}
- 8006a6a: bf00 nop
- 8006a6c: 40010000 .word 0x40010000
- 8006a70: 40010400 .word 0x40010400
- 8006a74: 00010007 .word 0x00010007
-
-08006a78 <HAL_TIM_Encoder_Init>:
- * @param htim TIM Encoder Interface handle
- * @param sConfig TIM Encoder Interface configuration structure
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig)
-{
- 8006a78: b580 push {r7, lr}
- 8006a7a: b086 sub sp, #24
- 8006a7c: af00 add r7, sp, #0
- 8006a7e: 6078 str r0, [r7, #4]
- 8006a80: 6039 str r1, [r7, #0]
- uint32_t tmpsmcr;
- uint32_t tmpccmr1;
- uint32_t tmpccer;
-
- /* Check the TIM handle allocation */
- if (htim == NULL)
- 8006a82: 687b ldr r3, [r7, #4]
- 8006a84: 2b00 cmp r3, #0
- 8006a86: d101 bne.n 8006a8c <HAL_TIM_Encoder_Init+0x14>
- {
- return HAL_ERROR;
- 8006a88: 2301 movs r3, #1
- 8006a8a: e07b b.n 8006b84 <HAL_TIM_Encoder_Init+0x10c>
- assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
- assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
- assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
- assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter));
-
- if (htim->State == HAL_TIM_STATE_RESET)
- 8006a8c: 687b ldr r3, [r7, #4]
- 8006a8e: f893 303d ldrb.w r3, [r3, #61] ; 0x3d
- 8006a92: b2db uxtb r3, r3
- 8006a94: 2b00 cmp r3, #0
- 8006a96: d106 bne.n 8006aa6 <HAL_TIM_Encoder_Init+0x2e>
- {
- /* Allocate lock resource and initialize it */
- htim->Lock = HAL_UNLOCKED;
- 8006a98: 687b ldr r3, [r7, #4]
- 8006a9a: 2200 movs r2, #0
- 8006a9c: f883 203c strb.w r2, [r3, #60] ; 0x3c
- }
- /* Init the low level hardware : GPIO, CLOCK, NVIC */
- htim->Encoder_MspInitCallback(htim);
-#else
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
- HAL_TIM_Encoder_MspInit(htim);
- 8006aa0: 6878 ldr r0, [r7, #4]
- 8006aa2: f7fe f93f bl 8004d24 <HAL_TIM_Encoder_MspInit>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
-
- /* Set the TIM state */
- htim->State = HAL_TIM_STATE_BUSY;
- 8006aa6: 687b ldr r3, [r7, #4]
- 8006aa8: 2202 movs r2, #2
- 8006aaa: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- /* Reset the SMS and ECE bits */
- htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE);
- 8006aae: 687b ldr r3, [r7, #4]
- 8006ab0: 681b ldr r3, [r3, #0]
- 8006ab2: 6899 ldr r1, [r3, #8]
- 8006ab4: 687b ldr r3, [r7, #4]
- 8006ab6: 681a ldr r2, [r3, #0]
- 8006ab8: 4b34 ldr r3, [pc, #208] ; (8006b8c <HAL_TIM_Encoder_Init+0x114>)
- 8006aba: 400b ands r3, r1
- 8006abc: 6093 str r3, [r2, #8]
-
- /* Configure the Time base in the Encoder Mode */
- TIM_Base_SetConfig(htim->Instance, &htim->Init);
- 8006abe: 687b ldr r3, [r7, #4]
- 8006ac0: 681a ldr r2, [r3, #0]
- 8006ac2: 687b ldr r3, [r7, #4]
- 8006ac4: 3304 adds r3, #4
- 8006ac6: 4619 mov r1, r3
- 8006ac8: 4610 mov r0, r2
- 8006aca: f000 fbb7 bl 800723c <TIM_Base_SetConfig>
-
- /* Get the TIMx SMCR register value */
- tmpsmcr = htim->Instance->SMCR;
- 8006ace: 687b ldr r3, [r7, #4]
- 8006ad0: 681b ldr r3, [r3, #0]
- 8006ad2: 689b ldr r3, [r3, #8]
- 8006ad4: 617b str r3, [r7, #20]
-
- /* Get the TIMx CCMR1 register value */
- tmpccmr1 = htim->Instance->CCMR1;
- 8006ad6: 687b ldr r3, [r7, #4]
- 8006ad8: 681b ldr r3, [r3, #0]
- 8006ada: 699b ldr r3, [r3, #24]
- 8006adc: 613b str r3, [r7, #16]
-
- /* Get the TIMx CCER register value */
- tmpccer = htim->Instance->CCER;
- 8006ade: 687b ldr r3, [r7, #4]
- 8006ae0: 681b ldr r3, [r3, #0]
- 8006ae2: 6a1b ldr r3, [r3, #32]
- 8006ae4: 60fb str r3, [r7, #12]
-
- /* Set the encoder Mode */
- tmpsmcr |= sConfig->EncoderMode;
- 8006ae6: 683b ldr r3, [r7, #0]
- 8006ae8: 681b ldr r3, [r3, #0]
- 8006aea: 697a ldr r2, [r7, #20]
- 8006aec: 4313 orrs r3, r2
- 8006aee: 617b str r3, [r7, #20]
-
- /* Select the Capture Compare 1 and the Capture Compare 2 as input */
- tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S);
- 8006af0: 693a ldr r2, [r7, #16]
- 8006af2: 4b27 ldr r3, [pc, #156] ; (8006b90 <HAL_TIM_Encoder_Init+0x118>)
- 8006af4: 4013 ands r3, r2
- 8006af6: 613b str r3, [r7, #16]
- tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U));
- 8006af8: 683b ldr r3, [r7, #0]
- 8006afa: 689a ldr r2, [r3, #8]
- 8006afc: 683b ldr r3, [r7, #0]
- 8006afe: 699b ldr r3, [r3, #24]
- 8006b00: 021b lsls r3, r3, #8
- 8006b02: 4313 orrs r3, r2
- 8006b04: 693a ldr r2, [r7, #16]
- 8006b06: 4313 orrs r3, r2
- 8006b08: 613b str r3, [r7, #16]
-
- /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */
- tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC);
- 8006b0a: 693a ldr r2, [r7, #16]
- 8006b0c: 4b21 ldr r3, [pc, #132] ; (8006b94 <HAL_TIM_Encoder_Init+0x11c>)
- 8006b0e: 4013 ands r3, r2
- 8006b10: 613b str r3, [r7, #16]
- tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F);
- 8006b12: 693a ldr r2, [r7, #16]
- 8006b14: 4b20 ldr r3, [pc, #128] ; (8006b98 <HAL_TIM_Encoder_Init+0x120>)
- 8006b16: 4013 ands r3, r2
- 8006b18: 613b str r3, [r7, #16]
- tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U);
- 8006b1a: 683b ldr r3, [r7, #0]
- 8006b1c: 68da ldr r2, [r3, #12]
- 8006b1e: 683b ldr r3, [r7, #0]
- 8006b20: 69db ldr r3, [r3, #28]
- 8006b22: 021b lsls r3, r3, #8
- 8006b24: 4313 orrs r3, r2
- 8006b26: 693a ldr r2, [r7, #16]
- 8006b28: 4313 orrs r3, r2
- 8006b2a: 613b str r3, [r7, #16]
- tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U);
- 8006b2c: 683b ldr r3, [r7, #0]
- 8006b2e: 691b ldr r3, [r3, #16]
- 8006b30: 011a lsls r2, r3, #4
- 8006b32: 683b ldr r3, [r7, #0]
- 8006b34: 6a1b ldr r3, [r3, #32]
- 8006b36: 031b lsls r3, r3, #12
- 8006b38: 4313 orrs r3, r2
- 8006b3a: 693a ldr r2, [r7, #16]
- 8006b3c: 4313 orrs r3, r2
- 8006b3e: 613b str r3, [r7, #16]
-
- /* Set the TI1 and the TI2 Polarities */
- tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);
- 8006b40: 68fb ldr r3, [r7, #12]
- 8006b42: f023 0322 bic.w r3, r3, #34 ; 0x22
- 8006b46: 60fb str r3, [r7, #12]
- tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP);
- 8006b48: 68fb ldr r3, [r7, #12]
- 8006b4a: f023 0388 bic.w r3, r3, #136 ; 0x88
- 8006b4e: 60fb str r3, [r7, #12]
- tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U);
- 8006b50: 683b ldr r3, [r7, #0]
- 8006b52: 685a ldr r2, [r3, #4]
- 8006b54: 683b ldr r3, [r7, #0]
- 8006b56: 695b ldr r3, [r3, #20]
- 8006b58: 011b lsls r3, r3, #4
- 8006b5a: 4313 orrs r3, r2
- 8006b5c: 68fa ldr r2, [r7, #12]
- 8006b5e: 4313 orrs r3, r2
- 8006b60: 60fb str r3, [r7, #12]
-
- /* Write to TIMx SMCR */
- htim->Instance->SMCR = tmpsmcr;
- 8006b62: 687b ldr r3, [r7, #4]
- 8006b64: 681b ldr r3, [r3, #0]
- 8006b66: 697a ldr r2, [r7, #20]
- 8006b68: 609a str r2, [r3, #8]
-
- /* Write to TIMx CCMR1 */
- htim->Instance->CCMR1 = tmpccmr1;
- 8006b6a: 687b ldr r3, [r7, #4]
- 8006b6c: 681b ldr r3, [r3, #0]
- 8006b6e: 693a ldr r2, [r7, #16]
- 8006b70: 619a str r2, [r3, #24]
-
- /* Write to TIMx CCER */
- htim->Instance->CCER = tmpccer;
- 8006b72: 687b ldr r3, [r7, #4]
- 8006b74: 681b ldr r3, [r3, #0]
- 8006b76: 68fa ldr r2, [r7, #12]
- 8006b78: 621a str r2, [r3, #32]
-
- /* Initialize the TIM state*/
- htim->State = HAL_TIM_STATE_READY;
- 8006b7a: 687b ldr r3, [r7, #4]
- 8006b7c: 2201 movs r2, #1
- 8006b7e: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- return HAL_OK;
- 8006b82: 2300 movs r3, #0
-}
- 8006b84: 4618 mov r0, r3
- 8006b86: 3718 adds r7, #24
- 8006b88: 46bd mov sp, r7
- 8006b8a: bd80 pop {r7, pc}
- 8006b8c: fffebff8 .word 0xfffebff8
- 8006b90: fffffcfc .word 0xfffffcfc
- 8006b94: fffff3f3 .word 0xfffff3f3
- 8006b98: ffff0f0f .word 0xffff0f0f
-
-08006b9c <HAL_TIM_Encoder_Start>:
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected
- * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
-{
- 8006b9c: b580 push {r7, lr}
- 8006b9e: b082 sub sp, #8
- 8006ba0: af00 add r7, sp, #0
- 8006ba2: 6078 str r0, [r7, #4]
- 8006ba4: 6039 str r1, [r7, #0]
- /* Check the parameters */
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
-
- /* Enable the encoder interface channels */
- switch (Channel)
- 8006ba6: 683b ldr r3, [r7, #0]
- 8006ba8: 2b00 cmp r3, #0
- 8006baa: d002 beq.n 8006bb2 <HAL_TIM_Encoder_Start+0x16>
- 8006bac: 2b04 cmp r3, #4
- 8006bae: d008 beq.n 8006bc2 <HAL_TIM_Encoder_Start+0x26>
- 8006bb0: e00f b.n 8006bd2 <HAL_TIM_Encoder_Start+0x36>
- {
- case TIM_CHANNEL_1:
- {
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
- 8006bb2: 687b ldr r3, [r7, #4]
- 8006bb4: 681b ldr r3, [r3, #0]
- 8006bb6: 2201 movs r2, #1
- 8006bb8: 2100 movs r1, #0
- 8006bba: 4618 mov r0, r3
- 8006bbc: f000 fed6 bl 800796c <TIM_CCxChannelCmd>
- break;
- 8006bc0: e016 b.n 8006bf0 <HAL_TIM_Encoder_Start+0x54>
- }
-
- case TIM_CHANNEL_2:
- {
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
- 8006bc2: 687b ldr r3, [r7, #4]
- 8006bc4: 681b ldr r3, [r3, #0]
- 8006bc6: 2201 movs r2, #1
- 8006bc8: 2104 movs r1, #4
- 8006bca: 4618 mov r0, r3
- 8006bcc: f000 fece bl 800796c <TIM_CCxChannelCmd>
- break;
- 8006bd0: e00e b.n 8006bf0 <HAL_TIM_Encoder_Start+0x54>
- }
-
- default :
- {
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
- 8006bd2: 687b ldr r3, [r7, #4]
- 8006bd4: 681b ldr r3, [r3, #0]
- 8006bd6: 2201 movs r2, #1
- 8006bd8: 2100 movs r1, #0
- 8006bda: 4618 mov r0, r3
- 8006bdc: f000 fec6 bl 800796c <TIM_CCxChannelCmd>
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
- 8006be0: 687b ldr r3, [r7, #4]
- 8006be2: 681b ldr r3, [r3, #0]
- 8006be4: 2201 movs r2, #1
- 8006be6: 2104 movs r1, #4
- 8006be8: 4618 mov r0, r3
- 8006bea: f000 febf bl 800796c <TIM_CCxChannelCmd>
- break;
- 8006bee: bf00 nop
- }
- }
- /* Enable the Peripheral */
- __HAL_TIM_ENABLE(htim);
- 8006bf0: 687b ldr r3, [r7, #4]
- 8006bf2: 681b ldr r3, [r3, #0]
- 8006bf4: 681a ldr r2, [r3, #0]
- 8006bf6: 687b ldr r3, [r7, #4]
- 8006bf8: 681b ldr r3, [r3, #0]
- 8006bfa: f042 0201 orr.w r2, r2, #1
- 8006bfe: 601a str r2, [r3, #0]
-
- /* Return function status */
- return HAL_OK;
- 8006c00: 2300 movs r3, #0
-}
- 8006c02: 4618 mov r0, r3
- 8006c04: 3708 adds r7, #8
- 8006c06: 46bd mov sp, r7
- 8006c08: bd80 pop {r7, pc}
-
-08006c0a <HAL_TIM_IRQHandler>:
- * @brief This function handles TIM interrupts requests.
- * @param htim TIM handle
- * @retval None
- */
-void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
-{
- 8006c0a: b580 push {r7, lr}
- 8006c0c: b082 sub sp, #8
- 8006c0e: af00 add r7, sp, #0
- 8006c10: 6078 str r0, [r7, #4]
- /* Capture compare 1 event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)
- 8006c12: 687b ldr r3, [r7, #4]
- 8006c14: 681b ldr r3, [r3, #0]
- 8006c16: 691b ldr r3, [r3, #16]
- 8006c18: f003 0302 and.w r3, r3, #2
- 8006c1c: 2b02 cmp r3, #2
- 8006c1e: d122 bne.n 8006c66 <HAL_TIM_IRQHandler+0x5c>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET)
- 8006c20: 687b ldr r3, [r7, #4]
- 8006c22: 681b ldr r3, [r3, #0]
- 8006c24: 68db ldr r3, [r3, #12]
- 8006c26: f003 0302 and.w r3, r3, #2
- 8006c2a: 2b02 cmp r3, #2
- 8006c2c: d11b bne.n 8006c66 <HAL_TIM_IRQHandler+0x5c>
- {
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
- 8006c2e: 687b ldr r3, [r7, #4]
- 8006c30: 681b ldr r3, [r3, #0]
- 8006c32: f06f 0202 mvn.w r2, #2
- 8006c36: 611a str r2, [r3, #16]
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
- 8006c38: 687b ldr r3, [r7, #4]
- 8006c3a: 2201 movs r2, #1
- 8006c3c: 771a strb r2, [r3, #28]
-
- /* Input capture event */
- if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U)
- 8006c3e: 687b ldr r3, [r7, #4]
- 8006c40: 681b ldr r3, [r3, #0]
- 8006c42: 699b ldr r3, [r3, #24]
- 8006c44: f003 0303 and.w r3, r3, #3
- 8006c48: 2b00 cmp r3, #0
- 8006c4a: d003 beq.n 8006c54 <HAL_TIM_IRQHandler+0x4a>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->IC_CaptureCallback(htim);
-#else
- HAL_TIM_IC_CaptureCallback(htim);
- 8006c4c: 6878 ldr r0, [r7, #4]
- 8006c4e: f000 fad7 bl 8007200 <HAL_TIM_IC_CaptureCallback>
- 8006c52: e005 b.n 8006c60 <HAL_TIM_IRQHandler+0x56>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->OC_DelayElapsedCallback(htim);
- htim->PWM_PulseFinishedCallback(htim);
-#else
- HAL_TIM_OC_DelayElapsedCallback(htim);
- 8006c54: 6878 ldr r0, [r7, #4]
- 8006c56: f000 fac9 bl 80071ec <HAL_TIM_OC_DelayElapsedCallback>
- HAL_TIM_PWM_PulseFinishedCallback(htim);
- 8006c5a: 6878 ldr r0, [r7, #4]
- 8006c5c: f000 fada bl 8007214 <HAL_TIM_PWM_PulseFinishedCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
- 8006c60: 687b ldr r3, [r7, #4]
- 8006c62: 2200 movs r2, #0
- 8006c64: 771a strb r2, [r3, #28]
- }
- }
- }
- /* Capture compare 2 event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)
- 8006c66: 687b ldr r3, [r7, #4]
- 8006c68: 681b ldr r3, [r3, #0]
- 8006c6a: 691b ldr r3, [r3, #16]
- 8006c6c: f003 0304 and.w r3, r3, #4
- 8006c70: 2b04 cmp r3, #4
- 8006c72: d122 bne.n 8006cba <HAL_TIM_IRQHandler+0xb0>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET)
- 8006c74: 687b ldr r3, [r7, #4]
- 8006c76: 681b ldr r3, [r3, #0]
- 8006c78: 68db ldr r3, [r3, #12]
- 8006c7a: f003 0304 and.w r3, r3, #4
- 8006c7e: 2b04 cmp r3, #4
- 8006c80: d11b bne.n 8006cba <HAL_TIM_IRQHandler+0xb0>
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
- 8006c82: 687b ldr r3, [r7, #4]
- 8006c84: 681b ldr r3, [r3, #0]
- 8006c86: f06f 0204 mvn.w r2, #4
- 8006c8a: 611a str r2, [r3, #16]
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
- 8006c8c: 687b ldr r3, [r7, #4]
- 8006c8e: 2202 movs r2, #2
- 8006c90: 771a strb r2, [r3, #28]
- /* Input capture event */
- if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)
- 8006c92: 687b ldr r3, [r7, #4]
- 8006c94: 681b ldr r3, [r3, #0]
- 8006c96: 699b ldr r3, [r3, #24]
- 8006c98: f403 7340 and.w r3, r3, #768 ; 0x300
- 8006c9c: 2b00 cmp r3, #0
- 8006c9e: d003 beq.n 8006ca8 <HAL_TIM_IRQHandler+0x9e>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->IC_CaptureCallback(htim);
-#else
- HAL_TIM_IC_CaptureCallback(htim);
- 8006ca0: 6878 ldr r0, [r7, #4]
- 8006ca2: f000 faad bl 8007200 <HAL_TIM_IC_CaptureCallback>
- 8006ca6: e005 b.n 8006cb4 <HAL_TIM_IRQHandler+0xaa>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->OC_DelayElapsedCallback(htim);
- htim->PWM_PulseFinishedCallback(htim);
-#else
- HAL_TIM_OC_DelayElapsedCallback(htim);
- 8006ca8: 6878 ldr r0, [r7, #4]
- 8006caa: f000 fa9f bl 80071ec <HAL_TIM_OC_DelayElapsedCallback>
- HAL_TIM_PWM_PulseFinishedCallback(htim);
- 8006cae: 6878 ldr r0, [r7, #4]
- 8006cb0: f000 fab0 bl 8007214 <HAL_TIM_PWM_PulseFinishedCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
- 8006cb4: 687b ldr r3, [r7, #4]
- 8006cb6: 2200 movs r2, #0
- 8006cb8: 771a strb r2, [r3, #28]
- }
- }
- /* Capture compare 3 event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)
- 8006cba: 687b ldr r3, [r7, #4]
- 8006cbc: 681b ldr r3, [r3, #0]
- 8006cbe: 691b ldr r3, [r3, #16]
- 8006cc0: f003 0308 and.w r3, r3, #8
- 8006cc4: 2b08 cmp r3, #8
- 8006cc6: d122 bne.n 8006d0e <HAL_TIM_IRQHandler+0x104>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET)
- 8006cc8: 687b ldr r3, [r7, #4]
- 8006cca: 681b ldr r3, [r3, #0]
- 8006ccc: 68db ldr r3, [r3, #12]
- 8006cce: f003 0308 and.w r3, r3, #8
- 8006cd2: 2b08 cmp r3, #8
- 8006cd4: d11b bne.n 8006d0e <HAL_TIM_IRQHandler+0x104>
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
- 8006cd6: 687b ldr r3, [r7, #4]
- 8006cd8: 681b ldr r3, [r3, #0]
- 8006cda: f06f 0208 mvn.w r2, #8
- 8006cde: 611a str r2, [r3, #16]
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
- 8006ce0: 687b ldr r3, [r7, #4]
- 8006ce2: 2204 movs r2, #4
- 8006ce4: 771a strb r2, [r3, #28]
- /* Input capture event */
- if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)
- 8006ce6: 687b ldr r3, [r7, #4]
- 8006ce8: 681b ldr r3, [r3, #0]
- 8006cea: 69db ldr r3, [r3, #28]
- 8006cec: f003 0303 and.w r3, r3, #3
- 8006cf0: 2b00 cmp r3, #0
- 8006cf2: d003 beq.n 8006cfc <HAL_TIM_IRQHandler+0xf2>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->IC_CaptureCallback(htim);
-#else
- HAL_TIM_IC_CaptureCallback(htim);
- 8006cf4: 6878 ldr r0, [r7, #4]
- 8006cf6: f000 fa83 bl 8007200 <HAL_TIM_IC_CaptureCallback>
- 8006cfa: e005 b.n 8006d08 <HAL_TIM_IRQHandler+0xfe>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->OC_DelayElapsedCallback(htim);
- htim->PWM_PulseFinishedCallback(htim);
-#else
- HAL_TIM_OC_DelayElapsedCallback(htim);
- 8006cfc: 6878 ldr r0, [r7, #4]
- 8006cfe: f000 fa75 bl 80071ec <HAL_TIM_OC_DelayElapsedCallback>
- HAL_TIM_PWM_PulseFinishedCallback(htim);
- 8006d02: 6878 ldr r0, [r7, #4]
- 8006d04: f000 fa86 bl 8007214 <HAL_TIM_PWM_PulseFinishedCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
- 8006d08: 687b ldr r3, [r7, #4]
- 8006d0a: 2200 movs r2, #0
- 8006d0c: 771a strb r2, [r3, #28]
- }
- }
- /* Capture compare 4 event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
- 8006d0e: 687b ldr r3, [r7, #4]
- 8006d10: 681b ldr r3, [r3, #0]
- 8006d12: 691b ldr r3, [r3, #16]
- 8006d14: f003 0310 and.w r3, r3, #16
- 8006d18: 2b10 cmp r3, #16
- 8006d1a: d122 bne.n 8006d62 <HAL_TIM_IRQHandler+0x158>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET)
- 8006d1c: 687b ldr r3, [r7, #4]
- 8006d1e: 681b ldr r3, [r3, #0]
- 8006d20: 68db ldr r3, [r3, #12]
- 8006d22: f003 0310 and.w r3, r3, #16
- 8006d26: 2b10 cmp r3, #16
- 8006d28: d11b bne.n 8006d62 <HAL_TIM_IRQHandler+0x158>
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
- 8006d2a: 687b ldr r3, [r7, #4]
- 8006d2c: 681b ldr r3, [r3, #0]
- 8006d2e: f06f 0210 mvn.w r2, #16
- 8006d32: 611a str r2, [r3, #16]
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
- 8006d34: 687b ldr r3, [r7, #4]
- 8006d36: 2208 movs r2, #8
- 8006d38: 771a strb r2, [r3, #28]
- /* Input capture event */
- if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)
- 8006d3a: 687b ldr r3, [r7, #4]
- 8006d3c: 681b ldr r3, [r3, #0]
- 8006d3e: 69db ldr r3, [r3, #28]
- 8006d40: f403 7340 and.w r3, r3, #768 ; 0x300
- 8006d44: 2b00 cmp r3, #0
- 8006d46: d003 beq.n 8006d50 <HAL_TIM_IRQHandler+0x146>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->IC_CaptureCallback(htim);
-#else
- HAL_TIM_IC_CaptureCallback(htim);
- 8006d48: 6878 ldr r0, [r7, #4]
- 8006d4a: f000 fa59 bl 8007200 <HAL_TIM_IC_CaptureCallback>
- 8006d4e: e005 b.n 8006d5c <HAL_TIM_IRQHandler+0x152>
- {
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->OC_DelayElapsedCallback(htim);
- htim->PWM_PulseFinishedCallback(htim);
-#else
- HAL_TIM_OC_DelayElapsedCallback(htim);
- 8006d50: 6878 ldr r0, [r7, #4]
- 8006d52: f000 fa4b bl 80071ec <HAL_TIM_OC_DelayElapsedCallback>
- HAL_TIM_PWM_PulseFinishedCallback(htim);
- 8006d56: 6878 ldr r0, [r7, #4]
- 8006d58: f000 fa5c bl 8007214 <HAL_TIM_PWM_PulseFinishedCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
- 8006d5c: 687b ldr r3, [r7, #4]
- 8006d5e: 2200 movs r2, #0
- 8006d60: 771a strb r2, [r3, #28]
- }
- }
- /* TIM Update event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
- 8006d62: 687b ldr r3, [r7, #4]
- 8006d64: 681b ldr r3, [r3, #0]
- 8006d66: 691b ldr r3, [r3, #16]
- 8006d68: f003 0301 and.w r3, r3, #1
- 8006d6c: 2b01 cmp r3, #1
- 8006d6e: d10e bne.n 8006d8e <HAL_TIM_IRQHandler+0x184>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)
- 8006d70: 687b ldr r3, [r7, #4]
- 8006d72: 681b ldr r3, [r3, #0]
- 8006d74: 68db ldr r3, [r3, #12]
- 8006d76: f003 0301 and.w r3, r3, #1
- 8006d7a: 2b01 cmp r3, #1
- 8006d7c: d107 bne.n 8006d8e <HAL_TIM_IRQHandler+0x184>
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
- 8006d7e: 687b ldr r3, [r7, #4]
- 8006d80: 681b ldr r3, [r3, #0]
- 8006d82: f06f 0201 mvn.w r2, #1
- 8006d86: 611a str r2, [r3, #16]
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->PeriodElapsedCallback(htim);
-#else
- HAL_TIM_PeriodElapsedCallback(htim);
- 8006d88: 6878 ldr r0, [r7, #4]
- 8006d8a: f7fa fbcf bl 800152c <HAL_TIM_PeriodElapsedCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- }
- /* TIM Break input event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET)
- 8006d8e: 687b ldr r3, [r7, #4]
- 8006d90: 681b ldr r3, [r3, #0]
- 8006d92: 691b ldr r3, [r3, #16]
- 8006d94: f003 0380 and.w r3, r3, #128 ; 0x80
- 8006d98: 2b80 cmp r3, #128 ; 0x80
- 8006d9a: d10e bne.n 8006dba <HAL_TIM_IRQHandler+0x1b0>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)
- 8006d9c: 687b ldr r3, [r7, #4]
- 8006d9e: 681b ldr r3, [r3, #0]
- 8006da0: 68db ldr r3, [r3, #12]
- 8006da2: f003 0380 and.w r3, r3, #128 ; 0x80
- 8006da6: 2b80 cmp r3, #128 ; 0x80
- 8006da8: d107 bne.n 8006dba <HAL_TIM_IRQHandler+0x1b0>
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK);
- 8006daa: 687b ldr r3, [r7, #4]
- 8006dac: 681b ldr r3, [r3, #0]
- 8006dae: f06f 0280 mvn.w r2, #128 ; 0x80
- 8006db2: 611a str r2, [r3, #16]
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->BreakCallback(htim);
-#else
- HAL_TIMEx_BreakCallback(htim);
- 8006db4: 6878 ldr r0, [r7, #4]
- 8006db6: f000 fe65 bl 8007a84 <HAL_TIMEx_BreakCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- }
- /* TIM Break2 input event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET)
- 8006dba: 687b ldr r3, [r7, #4]
- 8006dbc: 681b ldr r3, [r3, #0]
- 8006dbe: 691b ldr r3, [r3, #16]
- 8006dc0: f403 7380 and.w r3, r3, #256 ; 0x100
- 8006dc4: f5b3 7f80 cmp.w r3, #256 ; 0x100
- 8006dc8: d10e bne.n 8006de8 <HAL_TIM_IRQHandler+0x1de>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)
- 8006dca: 687b ldr r3, [r7, #4]
- 8006dcc: 681b ldr r3, [r3, #0]
- 8006dce: 68db ldr r3, [r3, #12]
- 8006dd0: f003 0380 and.w r3, r3, #128 ; 0x80
- 8006dd4: 2b80 cmp r3, #128 ; 0x80
- 8006dd6: d107 bne.n 8006de8 <HAL_TIM_IRQHandler+0x1de>
- {
- __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2);
- 8006dd8: 687b ldr r3, [r7, #4]
- 8006dda: 681b ldr r3, [r3, #0]
- 8006ddc: f46f 7280 mvn.w r2, #256 ; 0x100
- 8006de0: 611a str r2, [r3, #16]
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->Break2Callback(htim);
-#else
- HAL_TIMEx_Break2Callback(htim);
- 8006de2: 6878 ldr r0, [r7, #4]
- 8006de4: f000 fe58 bl 8007a98 <HAL_TIMEx_Break2Callback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- }
- /* TIM Trigger detection event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)
- 8006de8: 687b ldr r3, [r7, #4]
- 8006dea: 681b ldr r3, [r3, #0]
- 8006dec: 691b ldr r3, [r3, #16]
- 8006dee: f003 0340 and.w r3, r3, #64 ; 0x40
- 8006df2: 2b40 cmp r3, #64 ; 0x40
- 8006df4: d10e bne.n 8006e14 <HAL_TIM_IRQHandler+0x20a>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET)
- 8006df6: 687b ldr r3, [r7, #4]
- 8006df8: 681b ldr r3, [r3, #0]
- 8006dfa: 68db ldr r3, [r3, #12]
- 8006dfc: f003 0340 and.w r3, r3, #64 ; 0x40
- 8006e00: 2b40 cmp r3, #64 ; 0x40
- 8006e02: d107 bne.n 8006e14 <HAL_TIM_IRQHandler+0x20a>
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);
- 8006e04: 687b ldr r3, [r7, #4]
- 8006e06: 681b ldr r3, [r3, #0]
- 8006e08: f06f 0240 mvn.w r2, #64 ; 0x40
- 8006e0c: 611a str r2, [r3, #16]
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->TriggerCallback(htim);
-#else
- HAL_TIM_TriggerCallback(htim);
- 8006e0e: 6878 ldr r0, [r7, #4]
- 8006e10: f000 fa0a bl 8007228 <HAL_TIM_TriggerCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- }
- /* TIM commutation event */
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET)
- 8006e14: 687b ldr r3, [r7, #4]
- 8006e16: 681b ldr r3, [r3, #0]
- 8006e18: 691b ldr r3, [r3, #16]
- 8006e1a: f003 0320 and.w r3, r3, #32
- 8006e1e: 2b20 cmp r3, #32
- 8006e20: d10e bne.n 8006e40 <HAL_TIM_IRQHandler+0x236>
- {
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET)
- 8006e22: 687b ldr r3, [r7, #4]
- 8006e24: 681b ldr r3, [r3, #0]
- 8006e26: 68db ldr r3, [r3, #12]
- 8006e28: f003 0320 and.w r3, r3, #32
- 8006e2c: 2b20 cmp r3, #32
- 8006e2e: d107 bne.n 8006e40 <HAL_TIM_IRQHandler+0x236>
- {
- __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM);
- 8006e30: 687b ldr r3, [r7, #4]
- 8006e32: 681b ldr r3, [r3, #0]
- 8006e34: f06f 0220 mvn.w r2, #32
- 8006e38: 611a str r2, [r3, #16]
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
- htim->CommutationCallback(htim);
-#else
- HAL_TIMEx_CommutCallback(htim);
- 8006e3a: 6878 ldr r0, [r7, #4]
- 8006e3c: f000 fe18 bl 8007a70 <HAL_TIMEx_CommutCallback>
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
- }
- }
-}
- 8006e40: bf00 nop
- 8006e42: 3708 adds r7, #8
- 8006e44: 46bd mov sp, r7
- 8006e46: bd80 pop {r7, pc}
-
-08006e48 <HAL_TIM_PWM_ConfigChannel>:
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim,
- TIM_OC_InitTypeDef *sConfig,
- uint32_t Channel)
-{
- 8006e48: b580 push {r7, lr}
- 8006e4a: b084 sub sp, #16
- 8006e4c: af00 add r7, sp, #0
- 8006e4e: 60f8 str r0, [r7, #12]
- 8006e50: 60b9 str r1, [r7, #8]
- 8006e52: 607a str r2, [r7, #4]
- assert_param(IS_TIM_PWM_MODE(sConfig->OCMode));
- assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));
- assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode));
-
- /* Process Locked */
- __HAL_LOCK(htim);
- 8006e54: 68fb ldr r3, [r7, #12]
- 8006e56: f893 303c ldrb.w r3, [r3, #60] ; 0x3c
- 8006e5a: 2b01 cmp r3, #1
- 8006e5c: d101 bne.n 8006e62 <HAL_TIM_PWM_ConfigChannel+0x1a>
- 8006e5e: 2302 movs r3, #2
- 8006e60: e105 b.n 800706e <HAL_TIM_PWM_ConfigChannel+0x226>
- 8006e62: 68fb ldr r3, [r7, #12]
- 8006e64: 2201 movs r2, #1
- 8006e66: f883 203c strb.w r2, [r3, #60] ; 0x3c
-
- htim->State = HAL_TIM_STATE_BUSY;
- 8006e6a: 68fb ldr r3, [r7, #12]
- 8006e6c: 2202 movs r2, #2
- 8006e6e: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- switch (Channel)
- 8006e72: 687b ldr r3, [r7, #4]
- 8006e74: 2b14 cmp r3, #20
- 8006e76: f200 80f0 bhi.w 800705a <HAL_TIM_PWM_ConfigChannel+0x212>
- 8006e7a: a201 add r2, pc, #4 ; (adr r2, 8006e80 <HAL_TIM_PWM_ConfigChannel+0x38>)
- 8006e7c: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 8006e80: 08006ed5 .word 0x08006ed5
- 8006e84: 0800705b .word 0x0800705b
- 8006e88: 0800705b .word 0x0800705b
- 8006e8c: 0800705b .word 0x0800705b
- 8006e90: 08006f15 .word 0x08006f15
- 8006e94: 0800705b .word 0x0800705b
- 8006e98: 0800705b .word 0x0800705b
- 8006e9c: 0800705b .word 0x0800705b
- 8006ea0: 08006f57 .word 0x08006f57
- 8006ea4: 0800705b .word 0x0800705b
- 8006ea8: 0800705b .word 0x0800705b
- 8006eac: 0800705b .word 0x0800705b
- 8006eb0: 08006f97 .word 0x08006f97
- 8006eb4: 0800705b .word 0x0800705b
- 8006eb8: 0800705b .word 0x0800705b
- 8006ebc: 0800705b .word 0x0800705b
- 8006ec0: 08006fd9 .word 0x08006fd9
- 8006ec4: 0800705b .word 0x0800705b
- 8006ec8: 0800705b .word 0x0800705b
- 8006ecc: 0800705b .word 0x0800705b
- 8006ed0: 08007019 .word 0x08007019
- {
- /* Check the parameters */
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
-
- /* Configure the Channel 1 in PWM mode */
- TIM_OC1_SetConfig(htim->Instance, sConfig);
- 8006ed4: 68fb ldr r3, [r7, #12]
- 8006ed6: 681b ldr r3, [r3, #0]
- 8006ed8: 68b9 ldr r1, [r7, #8]
- 8006eda: 4618 mov r0, r3
- 8006edc: f000 fa4e bl 800737c <TIM_OC1_SetConfig>
-
- /* Set the Preload enable bit for channel1 */
- htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE;
- 8006ee0: 68fb ldr r3, [r7, #12]
- 8006ee2: 681b ldr r3, [r3, #0]
- 8006ee4: 699a ldr r2, [r3, #24]
- 8006ee6: 68fb ldr r3, [r7, #12]
- 8006ee8: 681b ldr r3, [r3, #0]
- 8006eea: f042 0208 orr.w r2, r2, #8
- 8006eee: 619a str r2, [r3, #24]
-
- /* Configure the Output Fast mode */
- htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE;
- 8006ef0: 68fb ldr r3, [r7, #12]
- 8006ef2: 681b ldr r3, [r3, #0]
- 8006ef4: 699a ldr r2, [r3, #24]
- 8006ef6: 68fb ldr r3, [r7, #12]
- 8006ef8: 681b ldr r3, [r3, #0]
- 8006efa: f022 0204 bic.w r2, r2, #4
- 8006efe: 619a str r2, [r3, #24]
- htim->Instance->CCMR1 |= sConfig->OCFastMode;
- 8006f00: 68fb ldr r3, [r7, #12]
- 8006f02: 681b ldr r3, [r3, #0]
- 8006f04: 6999 ldr r1, [r3, #24]
- 8006f06: 68bb ldr r3, [r7, #8]
- 8006f08: 691a ldr r2, [r3, #16]
- 8006f0a: 68fb ldr r3, [r7, #12]
- 8006f0c: 681b ldr r3, [r3, #0]
- 8006f0e: 430a orrs r2, r1
- 8006f10: 619a str r2, [r3, #24]
- break;
- 8006f12: e0a3 b.n 800705c <HAL_TIM_PWM_ConfigChannel+0x214>
- {
- /* Check the parameters */
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
-
- /* Configure the Channel 2 in PWM mode */
- TIM_OC2_SetConfig(htim->Instance, sConfig);
- 8006f14: 68fb ldr r3, [r7, #12]
- 8006f16: 681b ldr r3, [r3, #0]
- 8006f18: 68b9 ldr r1, [r7, #8]
- 8006f1a: 4618 mov r0, r3
- 8006f1c: f000 faa0 bl 8007460 <TIM_OC2_SetConfig>
-
- /* Set the Preload enable bit for channel2 */
- htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE;
- 8006f20: 68fb ldr r3, [r7, #12]
- 8006f22: 681b ldr r3, [r3, #0]
- 8006f24: 699a ldr r2, [r3, #24]
- 8006f26: 68fb ldr r3, [r7, #12]
- 8006f28: 681b ldr r3, [r3, #0]
- 8006f2a: f442 6200 orr.w r2, r2, #2048 ; 0x800
- 8006f2e: 619a str r2, [r3, #24]
-
- /* Configure the Output Fast mode */
- htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE;
- 8006f30: 68fb ldr r3, [r7, #12]
- 8006f32: 681b ldr r3, [r3, #0]
- 8006f34: 699a ldr r2, [r3, #24]
- 8006f36: 68fb ldr r3, [r7, #12]
- 8006f38: 681b ldr r3, [r3, #0]
- 8006f3a: f422 6280 bic.w r2, r2, #1024 ; 0x400
- 8006f3e: 619a str r2, [r3, #24]
- htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U;
- 8006f40: 68fb ldr r3, [r7, #12]
- 8006f42: 681b ldr r3, [r3, #0]
- 8006f44: 6999 ldr r1, [r3, #24]
- 8006f46: 68bb ldr r3, [r7, #8]
- 8006f48: 691b ldr r3, [r3, #16]
- 8006f4a: 021a lsls r2, r3, #8
- 8006f4c: 68fb ldr r3, [r7, #12]
- 8006f4e: 681b ldr r3, [r3, #0]
- 8006f50: 430a orrs r2, r1
- 8006f52: 619a str r2, [r3, #24]
- break;
- 8006f54: e082 b.n 800705c <HAL_TIM_PWM_ConfigChannel+0x214>
- {
- /* Check the parameters */
- assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
-
- /* Configure the Channel 3 in PWM mode */
- TIM_OC3_SetConfig(htim->Instance, sConfig);
- 8006f56: 68fb ldr r3, [r7, #12]
- 8006f58: 681b ldr r3, [r3, #0]
- 8006f5a: 68b9 ldr r1, [r7, #8]
- 8006f5c: 4618 mov r0, r3
- 8006f5e: f000 faf7 bl 8007550 <TIM_OC3_SetConfig>
-
- /* Set the Preload enable bit for channel3 */
- htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE;
- 8006f62: 68fb ldr r3, [r7, #12]
- 8006f64: 681b ldr r3, [r3, #0]
- 8006f66: 69da ldr r2, [r3, #28]
- 8006f68: 68fb ldr r3, [r7, #12]
- 8006f6a: 681b ldr r3, [r3, #0]
- 8006f6c: f042 0208 orr.w r2, r2, #8
- 8006f70: 61da str r2, [r3, #28]
-
- /* Configure the Output Fast mode */
- htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE;
- 8006f72: 68fb ldr r3, [r7, #12]
- 8006f74: 681b ldr r3, [r3, #0]
- 8006f76: 69da ldr r2, [r3, #28]
- 8006f78: 68fb ldr r3, [r7, #12]
- 8006f7a: 681b ldr r3, [r3, #0]
- 8006f7c: f022 0204 bic.w r2, r2, #4
- 8006f80: 61da str r2, [r3, #28]
- htim->Instance->CCMR2 |= sConfig->OCFastMode;
- 8006f82: 68fb ldr r3, [r7, #12]
- 8006f84: 681b ldr r3, [r3, #0]
- 8006f86: 69d9 ldr r1, [r3, #28]
- 8006f88: 68bb ldr r3, [r7, #8]
- 8006f8a: 691a ldr r2, [r3, #16]
- 8006f8c: 68fb ldr r3, [r7, #12]
- 8006f8e: 681b ldr r3, [r3, #0]
- 8006f90: 430a orrs r2, r1
- 8006f92: 61da str r2, [r3, #28]
- break;
- 8006f94: e062 b.n 800705c <HAL_TIM_PWM_ConfigChannel+0x214>
- {
- /* Check the parameters */
- assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
-
- /* Configure the Channel 4 in PWM mode */
- TIM_OC4_SetConfig(htim->Instance, sConfig);
- 8006f96: 68fb ldr r3, [r7, #12]
- 8006f98: 681b ldr r3, [r3, #0]
- 8006f9a: 68b9 ldr r1, [r7, #8]
- 8006f9c: 4618 mov r0, r3
- 8006f9e: f000 fb4d bl 800763c <TIM_OC4_SetConfig>
-
- /* Set the Preload enable bit for channel4 */
- htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE;
- 8006fa2: 68fb ldr r3, [r7, #12]
- 8006fa4: 681b ldr r3, [r3, #0]
- 8006fa6: 69da ldr r2, [r3, #28]
- 8006fa8: 68fb ldr r3, [r7, #12]
- 8006faa: 681b ldr r3, [r3, #0]
- 8006fac: f442 6200 orr.w r2, r2, #2048 ; 0x800
- 8006fb0: 61da str r2, [r3, #28]
-
- /* Configure the Output Fast mode */
- htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE;
- 8006fb2: 68fb ldr r3, [r7, #12]
- 8006fb4: 681b ldr r3, [r3, #0]
- 8006fb6: 69da ldr r2, [r3, #28]
- 8006fb8: 68fb ldr r3, [r7, #12]
- 8006fba: 681b ldr r3, [r3, #0]
- 8006fbc: f422 6280 bic.w r2, r2, #1024 ; 0x400
- 8006fc0: 61da str r2, [r3, #28]
- htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U;
- 8006fc2: 68fb ldr r3, [r7, #12]
- 8006fc4: 681b ldr r3, [r3, #0]
- 8006fc6: 69d9 ldr r1, [r3, #28]
- 8006fc8: 68bb ldr r3, [r7, #8]
- 8006fca: 691b ldr r3, [r3, #16]
- 8006fcc: 021a lsls r2, r3, #8
- 8006fce: 68fb ldr r3, [r7, #12]
- 8006fd0: 681b ldr r3, [r3, #0]
- 8006fd2: 430a orrs r2, r1
- 8006fd4: 61da str r2, [r3, #28]
- break;
- 8006fd6: e041 b.n 800705c <HAL_TIM_PWM_ConfigChannel+0x214>
- {
- /* Check the parameters */
- assert_param(IS_TIM_CC5_INSTANCE(htim->Instance));
-
- /* Configure the Channel 5 in PWM mode */
- TIM_OC5_SetConfig(htim->Instance, sConfig);
- 8006fd8: 68fb ldr r3, [r7, #12]
- 8006fda: 681b ldr r3, [r3, #0]
- 8006fdc: 68b9 ldr r1, [r7, #8]
- 8006fde: 4618 mov r0, r3
- 8006fe0: f000 fb84 bl 80076ec <TIM_OC5_SetConfig>
-
- /* Set the Preload enable bit for channel5*/
- htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE;
- 8006fe4: 68fb ldr r3, [r7, #12]
- 8006fe6: 681b ldr r3, [r3, #0]
- 8006fe8: 6d5a ldr r2, [r3, #84] ; 0x54
- 8006fea: 68fb ldr r3, [r7, #12]
- 8006fec: 681b ldr r3, [r3, #0]
- 8006fee: f042 0208 orr.w r2, r2, #8
- 8006ff2: 655a str r2, [r3, #84] ; 0x54
-
- /* Configure the Output Fast mode */
- htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE;
- 8006ff4: 68fb ldr r3, [r7, #12]
- 8006ff6: 681b ldr r3, [r3, #0]
- 8006ff8: 6d5a ldr r2, [r3, #84] ; 0x54
- 8006ffa: 68fb ldr r3, [r7, #12]
- 8006ffc: 681b ldr r3, [r3, #0]
- 8006ffe: f022 0204 bic.w r2, r2, #4
- 8007002: 655a str r2, [r3, #84] ; 0x54
- htim->Instance->CCMR3 |= sConfig->OCFastMode;
- 8007004: 68fb ldr r3, [r7, #12]
- 8007006: 681b ldr r3, [r3, #0]
- 8007008: 6d59 ldr r1, [r3, #84] ; 0x54
- 800700a: 68bb ldr r3, [r7, #8]
- 800700c: 691a ldr r2, [r3, #16]
- 800700e: 68fb ldr r3, [r7, #12]
- 8007010: 681b ldr r3, [r3, #0]
- 8007012: 430a orrs r2, r1
- 8007014: 655a str r2, [r3, #84] ; 0x54
- break;
- 8007016: e021 b.n 800705c <HAL_TIM_PWM_ConfigChannel+0x214>
- {
- /* Check the parameters */
- assert_param(IS_TIM_CC6_INSTANCE(htim->Instance));
-
- /* Configure the Channel 6 in PWM mode */
- TIM_OC6_SetConfig(htim->Instance, sConfig);
- 8007018: 68fb ldr r3, [r7, #12]
- 800701a: 681b ldr r3, [r3, #0]
- 800701c: 68b9 ldr r1, [r7, #8]
- 800701e: 4618 mov r0, r3
- 8007020: f000 fbb6 bl 8007790 <TIM_OC6_SetConfig>
-
- /* Set the Preload enable bit for channel6 */
- htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE;
- 8007024: 68fb ldr r3, [r7, #12]
- 8007026: 681b ldr r3, [r3, #0]
- 8007028: 6d5a ldr r2, [r3, #84] ; 0x54
- 800702a: 68fb ldr r3, [r7, #12]
- 800702c: 681b ldr r3, [r3, #0]
- 800702e: f442 6200 orr.w r2, r2, #2048 ; 0x800
- 8007032: 655a str r2, [r3, #84] ; 0x54
-
- /* Configure the Output Fast mode */
- htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE;
- 8007034: 68fb ldr r3, [r7, #12]
- 8007036: 681b ldr r3, [r3, #0]
- 8007038: 6d5a ldr r2, [r3, #84] ; 0x54
- 800703a: 68fb ldr r3, [r7, #12]
- 800703c: 681b ldr r3, [r3, #0]
- 800703e: f422 6280 bic.w r2, r2, #1024 ; 0x400
- 8007042: 655a str r2, [r3, #84] ; 0x54
- htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U;
- 8007044: 68fb ldr r3, [r7, #12]
- 8007046: 681b ldr r3, [r3, #0]
- 8007048: 6d59 ldr r1, [r3, #84] ; 0x54
- 800704a: 68bb ldr r3, [r7, #8]
- 800704c: 691b ldr r3, [r3, #16]
- 800704e: 021a lsls r2, r3, #8
- 8007050: 68fb ldr r3, [r7, #12]
- 8007052: 681b ldr r3, [r3, #0]
- 8007054: 430a orrs r2, r1
- 8007056: 655a str r2, [r3, #84] ; 0x54
- break;
- 8007058: e000 b.n 800705c <HAL_TIM_PWM_ConfigChannel+0x214>
- }
-
- default:
- break;
- 800705a: bf00 nop
- }
-
- htim->State = HAL_TIM_STATE_READY;
- 800705c: 68fb ldr r3, [r7, #12]
- 800705e: 2201 movs r2, #1
- 8007060: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- __HAL_UNLOCK(htim);
- 8007064: 68fb ldr r3, [r7, #12]
- 8007066: 2200 movs r2, #0
- 8007068: f883 203c strb.w r2, [r3, #60] ; 0x3c
-
- return HAL_OK;
- 800706c: 2300 movs r3, #0
-}
- 800706e: 4618 mov r0, r3
- 8007070: 3710 adds r7, #16
- 8007072: 46bd mov sp, r7
- 8007074: bd80 pop {r7, pc}
- 8007076: bf00 nop
-
-08007078 <HAL_TIM_ConfigClockSource>:
- * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that
- * contains the clock source information for the TIM peripheral.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig)
-{
- 8007078: b580 push {r7, lr}
- 800707a: b084 sub sp, #16
- 800707c: af00 add r7, sp, #0
- 800707e: 6078 str r0, [r7, #4]
- 8007080: 6039 str r1, [r7, #0]
- uint32_t tmpsmcr;
-
- /* Process Locked */
- __HAL_LOCK(htim);
- 8007082: 687b ldr r3, [r7, #4]
- 8007084: f893 303c ldrb.w r3, [r3, #60] ; 0x3c
- 8007088: 2b01 cmp r3, #1
- 800708a: d101 bne.n 8007090 <HAL_TIM_ConfigClockSource+0x18>
- 800708c: 2302 movs r3, #2
- 800708e: e0a6 b.n 80071de <HAL_TIM_ConfigClockSource+0x166>
- 8007090: 687b ldr r3, [r7, #4]
- 8007092: 2201 movs r2, #1
- 8007094: f883 203c strb.w r2, [r3, #60] ; 0x3c
-
- htim->State = HAL_TIM_STATE_BUSY;
- 8007098: 687b ldr r3, [r7, #4]
- 800709a: 2202 movs r2, #2
- 800709c: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- /* Check the parameters */
- assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource));
-
- /* Reset the SMS, TS, ECE, ETPS and ETRF bits */
- tmpsmcr = htim->Instance->SMCR;
- 80070a0: 687b ldr r3, [r7, #4]
- 80070a2: 681b ldr r3, [r3, #0]
- 80070a4: 689b ldr r3, [r3, #8]
- 80070a6: 60fb str r3, [r7, #12]
- tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);
- 80070a8: 68fa ldr r2, [r7, #12]
- 80070aa: 4b4f ldr r3, [pc, #316] ; (80071e8 <HAL_TIM_ConfigClockSource+0x170>)
- 80070ac: 4013 ands r3, r2
- 80070ae: 60fb str r3, [r7, #12]
- tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
- 80070b0: 68fb ldr r3, [r7, #12]
- 80070b2: f423 437f bic.w r3, r3, #65280 ; 0xff00
- 80070b6: 60fb str r3, [r7, #12]
- htim->Instance->SMCR = tmpsmcr;
- 80070b8: 687b ldr r3, [r7, #4]
- 80070ba: 681b ldr r3, [r3, #0]
- 80070bc: 68fa ldr r2, [r7, #12]
- 80070be: 609a str r2, [r3, #8]
-
- switch (sClockSourceConfig->ClockSource)
- 80070c0: 683b ldr r3, [r7, #0]
- 80070c2: 681b ldr r3, [r3, #0]
- 80070c4: 2b40 cmp r3, #64 ; 0x40
- 80070c6: d067 beq.n 8007198 <HAL_TIM_ConfigClockSource+0x120>
- 80070c8: 2b40 cmp r3, #64 ; 0x40
- 80070ca: d80b bhi.n 80070e4 <HAL_TIM_ConfigClockSource+0x6c>
- 80070cc: 2b10 cmp r3, #16
- 80070ce: d073 beq.n 80071b8 <HAL_TIM_ConfigClockSource+0x140>
- 80070d0: 2b10 cmp r3, #16
- 80070d2: d802 bhi.n 80070da <HAL_TIM_ConfigClockSource+0x62>
- 80070d4: 2b00 cmp r3, #0
- 80070d6: d06f beq.n 80071b8 <HAL_TIM_ConfigClockSource+0x140>
- TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource);
- break;
- }
-
- default:
- break;
- 80070d8: e078 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- switch (sClockSourceConfig->ClockSource)
- 80070da: 2b20 cmp r3, #32
- 80070dc: d06c beq.n 80071b8 <HAL_TIM_ConfigClockSource+0x140>
- 80070de: 2b30 cmp r3, #48 ; 0x30
- 80070e0: d06a beq.n 80071b8 <HAL_TIM_ConfigClockSource+0x140>
- break;
- 80070e2: e073 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- switch (sClockSourceConfig->ClockSource)
- 80070e4: 2b70 cmp r3, #112 ; 0x70
- 80070e6: d00d beq.n 8007104 <HAL_TIM_ConfigClockSource+0x8c>
- 80070e8: 2b70 cmp r3, #112 ; 0x70
- 80070ea: d804 bhi.n 80070f6 <HAL_TIM_ConfigClockSource+0x7e>
- 80070ec: 2b50 cmp r3, #80 ; 0x50
- 80070ee: d033 beq.n 8007158 <HAL_TIM_ConfigClockSource+0xe0>
- 80070f0: 2b60 cmp r3, #96 ; 0x60
- 80070f2: d041 beq.n 8007178 <HAL_TIM_ConfigClockSource+0x100>
- break;
- 80070f4: e06a b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- switch (sClockSourceConfig->ClockSource)
- 80070f6: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
- 80070fa: d066 beq.n 80071ca <HAL_TIM_ConfigClockSource+0x152>
- 80070fc: f5b3 5f00 cmp.w r3, #8192 ; 0x2000
- 8007100: d017 beq.n 8007132 <HAL_TIM_ConfigClockSource+0xba>
- break;
- 8007102: e063 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- TIM_ETR_SetConfig(htim->Instance,
- 8007104: 687b ldr r3, [r7, #4]
- 8007106: 6818 ldr r0, [r3, #0]
- 8007108: 683b ldr r3, [r7, #0]
- 800710a: 6899 ldr r1, [r3, #8]
- 800710c: 683b ldr r3, [r7, #0]
- 800710e: 685a ldr r2, [r3, #4]
- 8007110: 683b ldr r3, [r7, #0]
- 8007112: 68db ldr r3, [r3, #12]
- 8007114: f000 fc0a bl 800792c <TIM_ETR_SetConfig>
- tmpsmcr = htim->Instance->SMCR;
- 8007118: 687b ldr r3, [r7, #4]
- 800711a: 681b ldr r3, [r3, #0]
- 800711c: 689b ldr r3, [r3, #8]
- 800711e: 60fb str r3, [r7, #12]
- tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1);
- 8007120: 68fb ldr r3, [r7, #12]
- 8007122: f043 0377 orr.w r3, r3, #119 ; 0x77
- 8007126: 60fb str r3, [r7, #12]
- htim->Instance->SMCR = tmpsmcr;
- 8007128: 687b ldr r3, [r7, #4]
- 800712a: 681b ldr r3, [r3, #0]
- 800712c: 68fa ldr r2, [r7, #12]
- 800712e: 609a str r2, [r3, #8]
- break;
- 8007130: e04c b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- TIM_ETR_SetConfig(htim->Instance,
- 8007132: 687b ldr r3, [r7, #4]
- 8007134: 6818 ldr r0, [r3, #0]
- 8007136: 683b ldr r3, [r7, #0]
- 8007138: 6899 ldr r1, [r3, #8]
- 800713a: 683b ldr r3, [r7, #0]
- 800713c: 685a ldr r2, [r3, #4]
- 800713e: 683b ldr r3, [r7, #0]
- 8007140: 68db ldr r3, [r3, #12]
- 8007142: f000 fbf3 bl 800792c <TIM_ETR_SetConfig>
- htim->Instance->SMCR |= TIM_SMCR_ECE;
- 8007146: 687b ldr r3, [r7, #4]
- 8007148: 681b ldr r3, [r3, #0]
- 800714a: 689a ldr r2, [r3, #8]
- 800714c: 687b ldr r3, [r7, #4]
- 800714e: 681b ldr r3, [r3, #0]
- 8007150: f442 4280 orr.w r2, r2, #16384 ; 0x4000
- 8007154: 609a str r2, [r3, #8]
- break;
- 8007156: e039 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- TIM_TI1_ConfigInputStage(htim->Instance,
- 8007158: 687b ldr r3, [r7, #4]
- 800715a: 6818 ldr r0, [r3, #0]
- 800715c: 683b ldr r3, [r7, #0]
- 800715e: 6859 ldr r1, [r3, #4]
- 8007160: 683b ldr r3, [r7, #0]
- 8007162: 68db ldr r3, [r3, #12]
- 8007164: 461a mov r2, r3
- 8007166: f000 fb67 bl 8007838 <TIM_TI1_ConfigInputStage>
- TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1);
- 800716a: 687b ldr r3, [r7, #4]
- 800716c: 681b ldr r3, [r3, #0]
- 800716e: 2150 movs r1, #80 ; 0x50
- 8007170: 4618 mov r0, r3
- 8007172: f000 fbc0 bl 80078f6 <TIM_ITRx_SetConfig>
- break;
- 8007176: e029 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- TIM_TI2_ConfigInputStage(htim->Instance,
- 8007178: 687b ldr r3, [r7, #4]
- 800717a: 6818 ldr r0, [r3, #0]
- 800717c: 683b ldr r3, [r7, #0]
- 800717e: 6859 ldr r1, [r3, #4]
- 8007180: 683b ldr r3, [r7, #0]
- 8007182: 68db ldr r3, [r3, #12]
- 8007184: 461a mov r2, r3
- 8007186: f000 fb86 bl 8007896 <TIM_TI2_ConfigInputStage>
- TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2);
- 800718a: 687b ldr r3, [r7, #4]
- 800718c: 681b ldr r3, [r3, #0]
- 800718e: 2160 movs r1, #96 ; 0x60
- 8007190: 4618 mov r0, r3
- 8007192: f000 fbb0 bl 80078f6 <TIM_ITRx_SetConfig>
- break;
- 8007196: e019 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- TIM_TI1_ConfigInputStage(htim->Instance,
- 8007198: 687b ldr r3, [r7, #4]
- 800719a: 6818 ldr r0, [r3, #0]
- 800719c: 683b ldr r3, [r7, #0]
- 800719e: 6859 ldr r1, [r3, #4]
- 80071a0: 683b ldr r3, [r7, #0]
- 80071a2: 68db ldr r3, [r3, #12]
- 80071a4: 461a mov r2, r3
- 80071a6: f000 fb47 bl 8007838 <TIM_TI1_ConfigInputStage>
- TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED);
- 80071aa: 687b ldr r3, [r7, #4]
- 80071ac: 681b ldr r3, [r3, #0]
- 80071ae: 2140 movs r1, #64 ; 0x40
- 80071b0: 4618 mov r0, r3
- 80071b2: f000 fba0 bl 80078f6 <TIM_ITRx_SetConfig>
- break;
- 80071b6: e009 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource);
- 80071b8: 687b ldr r3, [r7, #4]
- 80071ba: 681a ldr r2, [r3, #0]
- 80071bc: 683b ldr r3, [r7, #0]
- 80071be: 681b ldr r3, [r3, #0]
- 80071c0: 4619 mov r1, r3
- 80071c2: 4610 mov r0, r2
- 80071c4: f000 fb97 bl 80078f6 <TIM_ITRx_SetConfig>
- break;
- 80071c8: e000 b.n 80071cc <HAL_TIM_ConfigClockSource+0x154>
- break;
- 80071ca: bf00 nop
- }
- htim->State = HAL_TIM_STATE_READY;
- 80071cc: 687b ldr r3, [r7, #4]
- 80071ce: 2201 movs r2, #1
- 80071d0: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- __HAL_UNLOCK(htim);
- 80071d4: 687b ldr r3, [r7, #4]
- 80071d6: 2200 movs r2, #0
- 80071d8: f883 203c strb.w r2, [r3, #60] ; 0x3c
-
- return HAL_OK;
- 80071dc: 2300 movs r3, #0
-}
- 80071de: 4618 mov r0, r3
- 80071e0: 3710 adds r7, #16
- 80071e2: 46bd mov sp, r7
- 80071e4: bd80 pop {r7, pc}
- 80071e6: bf00 nop
- 80071e8: fffeff88 .word 0xfffeff88
-
-080071ec <HAL_TIM_OC_DelayElapsedCallback>:
- * @brief Output Compare callback in non-blocking mode
- * @param htim TIM OC handle
- * @retval None
- */
-__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
-{
- 80071ec: b480 push {r7}
- 80071ee: b083 sub sp, #12
- 80071f0: af00 add r7, sp, #0
- 80071f2: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file
- */
-}
- 80071f4: bf00 nop
- 80071f6: 370c adds r7, #12
- 80071f8: 46bd mov sp, r7
- 80071fa: f85d 7b04 ldr.w r7, [sp], #4
- 80071fe: 4770 bx lr
-
-08007200 <HAL_TIM_IC_CaptureCallback>:
- * @brief Input Capture callback in non-blocking mode
- * @param htim TIM IC handle
- * @retval None
- */
-__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
-{
- 8007200: b480 push {r7}
- 8007202: b083 sub sp, #12
- 8007204: af00 add r7, sp, #0
- 8007206: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_TIM_IC_CaptureCallback could be implemented in the user file
- */
-}
- 8007208: bf00 nop
- 800720a: 370c adds r7, #12
- 800720c: 46bd mov sp, r7
- 800720e: f85d 7b04 ldr.w r7, [sp], #4
- 8007212: 4770 bx lr
-
-08007214 <HAL_TIM_PWM_PulseFinishedCallback>:
- * @brief PWM Pulse finished callback in non-blocking mode
- * @param htim TIM handle
- * @retval None
- */
-__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
-{
- 8007214: b480 push {r7}
- 8007216: b083 sub sp, #12
- 8007218: af00 add r7, sp, #0
- 800721a: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file
- */
-}
- 800721c: bf00 nop
- 800721e: 370c adds r7, #12
- 8007220: 46bd mov sp, r7
- 8007222: f85d 7b04 ldr.w r7, [sp], #4
- 8007226: 4770 bx lr
-
-08007228 <HAL_TIM_TriggerCallback>:
- * @brief Hall Trigger detection callback in non-blocking mode
- * @param htim TIM handle
- * @retval None
- */
-__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
-{
- 8007228: b480 push {r7}
- 800722a: b083 sub sp, #12
- 800722c: af00 add r7, sp, #0
- 800722e: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_TIM_TriggerCallback could be implemented in the user file
- */
-}
- 8007230: bf00 nop
- 8007232: 370c adds r7, #12
- 8007234: 46bd mov sp, r7
- 8007236: f85d 7b04 ldr.w r7, [sp], #4
- 800723a: 4770 bx lr
-
-0800723c <TIM_Base_SetConfig>:
- * @param TIMx TIM peripheral
- * @param Structure TIM Base configuration structure
- * @retval None
- */
-void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
-{
- 800723c: b480 push {r7}
- 800723e: b085 sub sp, #20
- 8007240: af00 add r7, sp, #0
- 8007242: 6078 str r0, [r7, #4]
- 8007244: 6039 str r1, [r7, #0]
- uint32_t tmpcr1;
- tmpcr1 = TIMx->CR1;
- 8007246: 687b ldr r3, [r7, #4]
- 8007248: 681b ldr r3, [r3, #0]
- 800724a: 60fb str r3, [r7, #12]
-
- /* Set TIM Time Base Unit parameters ---------------------------------------*/
- if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
- 800724c: 687b ldr r3, [r7, #4]
- 800724e: 4a40 ldr r2, [pc, #256] ; (8007350 <TIM_Base_SetConfig+0x114>)
- 8007250: 4293 cmp r3, r2
- 8007252: d013 beq.n 800727c <TIM_Base_SetConfig+0x40>
- 8007254: 687b ldr r3, [r7, #4]
- 8007256: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
- 800725a: d00f beq.n 800727c <TIM_Base_SetConfig+0x40>
- 800725c: 687b ldr r3, [r7, #4]
- 800725e: 4a3d ldr r2, [pc, #244] ; (8007354 <TIM_Base_SetConfig+0x118>)
- 8007260: 4293 cmp r3, r2
- 8007262: d00b beq.n 800727c <TIM_Base_SetConfig+0x40>
- 8007264: 687b ldr r3, [r7, #4]
- 8007266: 4a3c ldr r2, [pc, #240] ; (8007358 <TIM_Base_SetConfig+0x11c>)
- 8007268: 4293 cmp r3, r2
- 800726a: d007 beq.n 800727c <TIM_Base_SetConfig+0x40>
- 800726c: 687b ldr r3, [r7, #4]
- 800726e: 4a3b ldr r2, [pc, #236] ; (800735c <TIM_Base_SetConfig+0x120>)
- 8007270: 4293 cmp r3, r2
- 8007272: d003 beq.n 800727c <TIM_Base_SetConfig+0x40>
- 8007274: 687b ldr r3, [r7, #4]
- 8007276: 4a3a ldr r2, [pc, #232] ; (8007360 <TIM_Base_SetConfig+0x124>)
- 8007278: 4293 cmp r3, r2
- 800727a: d108 bne.n 800728e <TIM_Base_SetConfig+0x52>
- {
- /* Select the Counter Mode */
- tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
- 800727c: 68fb ldr r3, [r7, #12]
- 800727e: f023 0370 bic.w r3, r3, #112 ; 0x70
- 8007282: 60fb str r3, [r7, #12]
- tmpcr1 |= Structure->CounterMode;
- 8007284: 683b ldr r3, [r7, #0]
- 8007286: 685b ldr r3, [r3, #4]
- 8007288: 68fa ldr r2, [r7, #12]
- 800728a: 4313 orrs r3, r2
- 800728c: 60fb str r3, [r7, #12]
- }
-
- if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
- 800728e: 687b ldr r3, [r7, #4]
- 8007290: 4a2f ldr r2, [pc, #188] ; (8007350 <TIM_Base_SetConfig+0x114>)
- 8007292: 4293 cmp r3, r2
- 8007294: d02b beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 8007296: 687b ldr r3, [r7, #4]
- 8007298: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
- 800729c: d027 beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 800729e: 687b ldr r3, [r7, #4]
- 80072a0: 4a2c ldr r2, [pc, #176] ; (8007354 <TIM_Base_SetConfig+0x118>)
- 80072a2: 4293 cmp r3, r2
- 80072a4: d023 beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072a6: 687b ldr r3, [r7, #4]
- 80072a8: 4a2b ldr r2, [pc, #172] ; (8007358 <TIM_Base_SetConfig+0x11c>)
- 80072aa: 4293 cmp r3, r2
- 80072ac: d01f beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072ae: 687b ldr r3, [r7, #4]
- 80072b0: 4a2a ldr r2, [pc, #168] ; (800735c <TIM_Base_SetConfig+0x120>)
- 80072b2: 4293 cmp r3, r2
- 80072b4: d01b beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072b6: 687b ldr r3, [r7, #4]
- 80072b8: 4a29 ldr r2, [pc, #164] ; (8007360 <TIM_Base_SetConfig+0x124>)
- 80072ba: 4293 cmp r3, r2
- 80072bc: d017 beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072be: 687b ldr r3, [r7, #4]
- 80072c0: 4a28 ldr r2, [pc, #160] ; (8007364 <TIM_Base_SetConfig+0x128>)
- 80072c2: 4293 cmp r3, r2
- 80072c4: d013 beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072c6: 687b ldr r3, [r7, #4]
- 80072c8: 4a27 ldr r2, [pc, #156] ; (8007368 <TIM_Base_SetConfig+0x12c>)
- 80072ca: 4293 cmp r3, r2
- 80072cc: d00f beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072ce: 687b ldr r3, [r7, #4]
- 80072d0: 4a26 ldr r2, [pc, #152] ; (800736c <TIM_Base_SetConfig+0x130>)
- 80072d2: 4293 cmp r3, r2
- 80072d4: d00b beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072d6: 687b ldr r3, [r7, #4]
- 80072d8: 4a25 ldr r2, [pc, #148] ; (8007370 <TIM_Base_SetConfig+0x134>)
- 80072da: 4293 cmp r3, r2
- 80072dc: d007 beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072de: 687b ldr r3, [r7, #4]
- 80072e0: 4a24 ldr r2, [pc, #144] ; (8007374 <TIM_Base_SetConfig+0x138>)
- 80072e2: 4293 cmp r3, r2
- 80072e4: d003 beq.n 80072ee <TIM_Base_SetConfig+0xb2>
- 80072e6: 687b ldr r3, [r7, #4]
- 80072e8: 4a23 ldr r2, [pc, #140] ; (8007378 <TIM_Base_SetConfig+0x13c>)
- 80072ea: 4293 cmp r3, r2
- 80072ec: d108 bne.n 8007300 <TIM_Base_SetConfig+0xc4>
- {
- /* Set the clock division */
- tmpcr1 &= ~TIM_CR1_CKD;
- 80072ee: 68fb ldr r3, [r7, #12]
- 80072f0: f423 7340 bic.w r3, r3, #768 ; 0x300
- 80072f4: 60fb str r3, [r7, #12]
- tmpcr1 |= (uint32_t)Structure->ClockDivision;
- 80072f6: 683b ldr r3, [r7, #0]
- 80072f8: 68db ldr r3, [r3, #12]
- 80072fa: 68fa ldr r2, [r7, #12]
- 80072fc: 4313 orrs r3, r2
- 80072fe: 60fb str r3, [r7, #12]
- }
-
- /* Set the auto-reload preload */
- MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
- 8007300: 68fb ldr r3, [r7, #12]
- 8007302: f023 0280 bic.w r2, r3, #128 ; 0x80
- 8007306: 683b ldr r3, [r7, #0]
- 8007308: 695b ldr r3, [r3, #20]
- 800730a: 4313 orrs r3, r2
- 800730c: 60fb str r3, [r7, #12]
-
- TIMx->CR1 = tmpcr1;
- 800730e: 687b ldr r3, [r7, #4]
- 8007310: 68fa ldr r2, [r7, #12]
- 8007312: 601a str r2, [r3, #0]
-
- /* Set the Autoreload value */
- TIMx->ARR = (uint32_t)Structure->Period ;
- 8007314: 683b ldr r3, [r7, #0]
- 8007316: 689a ldr r2, [r3, #8]
- 8007318: 687b ldr r3, [r7, #4]
- 800731a: 62da str r2, [r3, #44] ; 0x2c
-
- /* Set the Prescaler value */
- TIMx->PSC = Structure->Prescaler;
- 800731c: 683b ldr r3, [r7, #0]
- 800731e: 681a ldr r2, [r3, #0]
- 8007320: 687b ldr r3, [r7, #4]
- 8007322: 629a str r2, [r3, #40] ; 0x28
-
- if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
- 8007324: 687b ldr r3, [r7, #4]
- 8007326: 4a0a ldr r2, [pc, #40] ; (8007350 <TIM_Base_SetConfig+0x114>)
- 8007328: 4293 cmp r3, r2
- 800732a: d003 beq.n 8007334 <TIM_Base_SetConfig+0xf8>
- 800732c: 687b ldr r3, [r7, #4]
- 800732e: 4a0c ldr r2, [pc, #48] ; (8007360 <TIM_Base_SetConfig+0x124>)
- 8007330: 4293 cmp r3, r2
- 8007332: d103 bne.n 800733c <TIM_Base_SetConfig+0x100>
- {
- /* Set the Repetition Counter value */
- TIMx->RCR = Structure->RepetitionCounter;
- 8007334: 683b ldr r3, [r7, #0]
- 8007336: 691a ldr r2, [r3, #16]
- 8007338: 687b ldr r3, [r7, #4]
- 800733a: 631a str r2, [r3, #48] ; 0x30
- }
-
- /* Generate an update event to reload the Prescaler
- and the repetition counter (only for advanced timer) value immediately */
- TIMx->EGR = TIM_EGR_UG;
- 800733c: 687b ldr r3, [r7, #4]
- 800733e: 2201 movs r2, #1
- 8007340: 615a str r2, [r3, #20]
-}
- 8007342: bf00 nop
- 8007344: 3714 adds r7, #20
- 8007346: 46bd mov sp, r7
- 8007348: f85d 7b04 ldr.w r7, [sp], #4
- 800734c: 4770 bx lr
- 800734e: bf00 nop
- 8007350: 40010000 .word 0x40010000
- 8007354: 40000400 .word 0x40000400
- 8007358: 40000800 .word 0x40000800
- 800735c: 40000c00 .word 0x40000c00
- 8007360: 40010400 .word 0x40010400
- 8007364: 40014000 .word 0x40014000
- 8007368: 40014400 .word 0x40014400
- 800736c: 40014800 .word 0x40014800
- 8007370: 40001800 .word 0x40001800
- 8007374: 40001c00 .word 0x40001c00
- 8007378: 40002000 .word 0x40002000
-
-0800737c <TIM_OC1_SetConfig>:
- * @param TIMx to select the TIM peripheral
- * @param OC_Config The ouput configuration structure
- * @retval None
- */
-static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
-{
- 800737c: b480 push {r7}
- 800737e: b087 sub sp, #28
- 8007380: af00 add r7, sp, #0
- 8007382: 6078 str r0, [r7, #4]
- 8007384: 6039 str r1, [r7, #0]
- uint32_t tmpccmrx;
- uint32_t tmpccer;
- uint32_t tmpcr2;
-
- /* Disable the Channel 1: Reset the CC1E Bit */
- TIMx->CCER &= ~TIM_CCER_CC1E;
- 8007386: 687b ldr r3, [r7, #4]
- 8007388: 6a1b ldr r3, [r3, #32]
- 800738a: f023 0201 bic.w r2, r3, #1
- 800738e: 687b ldr r3, [r7, #4]
- 8007390: 621a str r2, [r3, #32]
-
- /* Get the TIMx CCER register value */
- tmpccer = TIMx->CCER;
- 8007392: 687b ldr r3, [r7, #4]
- 8007394: 6a1b ldr r3, [r3, #32]
- 8007396: 617b str r3, [r7, #20]
- /* Get the TIMx CR2 register value */
- tmpcr2 = TIMx->CR2;
- 8007398: 687b ldr r3, [r7, #4]
- 800739a: 685b ldr r3, [r3, #4]
- 800739c: 613b str r3, [r7, #16]
-
- /* Get the TIMx CCMR1 register value */
- tmpccmrx = TIMx->CCMR1;
- 800739e: 687b ldr r3, [r7, #4]
- 80073a0: 699b ldr r3, [r3, #24]
- 80073a2: 60fb str r3, [r7, #12]
-
- /* Reset the Output Compare Mode Bits */
- tmpccmrx &= ~TIM_CCMR1_OC1M;
- 80073a4: 68fa ldr r2, [r7, #12]
- 80073a6: 4b2b ldr r3, [pc, #172] ; (8007454 <TIM_OC1_SetConfig+0xd8>)
- 80073a8: 4013 ands r3, r2
- 80073aa: 60fb str r3, [r7, #12]
- tmpccmrx &= ~TIM_CCMR1_CC1S;
- 80073ac: 68fb ldr r3, [r7, #12]
- 80073ae: f023 0303 bic.w r3, r3, #3
- 80073b2: 60fb str r3, [r7, #12]
- /* Select the Output Compare Mode */
- tmpccmrx |= OC_Config->OCMode;
- 80073b4: 683b ldr r3, [r7, #0]
- 80073b6: 681b ldr r3, [r3, #0]
- 80073b8: 68fa ldr r2, [r7, #12]
- 80073ba: 4313 orrs r3, r2
- 80073bc: 60fb str r3, [r7, #12]
-
- /* Reset the Output Polarity level */
- tmpccer &= ~TIM_CCER_CC1P;
- 80073be: 697b ldr r3, [r7, #20]
- 80073c0: f023 0302 bic.w r3, r3, #2
- 80073c4: 617b str r3, [r7, #20]
- /* Set the Output Compare Polarity */
- tmpccer |= OC_Config->OCPolarity;
- 80073c6: 683b ldr r3, [r7, #0]
- 80073c8: 689b ldr r3, [r3, #8]
- 80073ca: 697a ldr r2, [r7, #20]
- 80073cc: 4313 orrs r3, r2
- 80073ce: 617b str r3, [r7, #20]
-
- if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1))
- 80073d0: 687b ldr r3, [r7, #4]
- 80073d2: 4a21 ldr r2, [pc, #132] ; (8007458 <TIM_OC1_SetConfig+0xdc>)
- 80073d4: 4293 cmp r3, r2
- 80073d6: d003 beq.n 80073e0 <TIM_OC1_SetConfig+0x64>
- 80073d8: 687b ldr r3, [r7, #4]
- 80073da: 4a20 ldr r2, [pc, #128] ; (800745c <TIM_OC1_SetConfig+0xe0>)
- 80073dc: 4293 cmp r3, r2
- 80073de: d10c bne.n 80073fa <TIM_OC1_SetConfig+0x7e>
- {
- /* Check parameters */
- assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));
-
- /* Reset the Output N Polarity level */
- tmpccer &= ~TIM_CCER_CC1NP;
- 80073e0: 697b ldr r3, [r7, #20]
- 80073e2: f023 0308 bic.w r3, r3, #8
- 80073e6: 617b str r3, [r7, #20]
- /* Set the Output N Polarity */
- tmpccer |= OC_Config->OCNPolarity;
- 80073e8: 683b ldr r3, [r7, #0]
- 80073ea: 68db ldr r3, [r3, #12]
- 80073ec: 697a ldr r2, [r7, #20]
- 80073ee: 4313 orrs r3, r2
- 80073f0: 617b str r3, [r7, #20]
- /* Reset the Output N State */
- tmpccer &= ~TIM_CCER_CC1NE;
- 80073f2: 697b ldr r3, [r7, #20]
- 80073f4: f023 0304 bic.w r3, r3, #4
- 80073f8: 617b str r3, [r7, #20]
- }
-
- if (IS_TIM_BREAK_INSTANCE(TIMx))
- 80073fa: 687b ldr r3, [r7, #4]
- 80073fc: 4a16 ldr r2, [pc, #88] ; (8007458 <TIM_OC1_SetConfig+0xdc>)
- 80073fe: 4293 cmp r3, r2
- 8007400: d003 beq.n 800740a <TIM_OC1_SetConfig+0x8e>
- 8007402: 687b ldr r3, [r7, #4]
- 8007404: 4a15 ldr r2, [pc, #84] ; (800745c <TIM_OC1_SetConfig+0xe0>)
- 8007406: 4293 cmp r3, r2
- 8007408: d111 bne.n 800742e <TIM_OC1_SetConfig+0xb2>
- /* Check parameters */
- assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
-
- /* Reset the Output Compare and Output Compare N IDLE State */
- tmpcr2 &= ~TIM_CR2_OIS1;
- 800740a: 693b ldr r3, [r7, #16]
- 800740c: f423 7380 bic.w r3, r3, #256 ; 0x100
- 8007410: 613b str r3, [r7, #16]
- tmpcr2 &= ~TIM_CR2_OIS1N;
- 8007412: 693b ldr r3, [r7, #16]
- 8007414: f423 7300 bic.w r3, r3, #512 ; 0x200
- 8007418: 613b str r3, [r7, #16]
- /* Set the Output Idle state */
- tmpcr2 |= OC_Config->OCIdleState;
- 800741a: 683b ldr r3, [r7, #0]
- 800741c: 695b ldr r3, [r3, #20]
- 800741e: 693a ldr r2, [r7, #16]
- 8007420: 4313 orrs r3, r2
- 8007422: 613b str r3, [r7, #16]
- /* Set the Output N Idle state */
- tmpcr2 |= OC_Config->OCNIdleState;
- 8007424: 683b ldr r3, [r7, #0]
- 8007426: 699b ldr r3, [r3, #24]
- 8007428: 693a ldr r2, [r7, #16]
- 800742a: 4313 orrs r3, r2
- 800742c: 613b str r3, [r7, #16]
- }
-
- /* Write to TIMx CR2 */
- TIMx->CR2 = tmpcr2;
- 800742e: 687b ldr r3, [r7, #4]
- 8007430: 693a ldr r2, [r7, #16]
- 8007432: 605a str r2, [r3, #4]
-
- /* Write to TIMx CCMR1 */
- TIMx->CCMR1 = tmpccmrx;
- 8007434: 687b ldr r3, [r7, #4]
- 8007436: 68fa ldr r2, [r7, #12]
- 8007438: 619a str r2, [r3, #24]
-
- /* Set the Capture Compare Register value */
- TIMx->CCR1 = OC_Config->Pulse;
- 800743a: 683b ldr r3, [r7, #0]
- 800743c: 685a ldr r2, [r3, #4]
- 800743e: 687b ldr r3, [r7, #4]
- 8007440: 635a str r2, [r3, #52] ; 0x34
-
- /* Write to TIMx CCER */
- TIMx->CCER = tmpccer;
- 8007442: 687b ldr r3, [r7, #4]
- 8007444: 697a ldr r2, [r7, #20]
- 8007446: 621a str r2, [r3, #32]
-}
- 8007448: bf00 nop
- 800744a: 371c adds r7, #28
- 800744c: 46bd mov sp, r7
- 800744e: f85d 7b04 ldr.w r7, [sp], #4
- 8007452: 4770 bx lr
- 8007454: fffeff8f .word 0xfffeff8f
- 8007458: 40010000 .word 0x40010000
- 800745c: 40010400 .word 0x40010400
-
-08007460 <TIM_OC2_SetConfig>:
- * @param TIMx to select the TIM peripheral
- * @param OC_Config The ouput configuration structure
- * @retval None
- */
-void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
-{
- 8007460: b480 push {r7}
- 8007462: b087 sub sp, #28
- 8007464: af00 add r7, sp, #0
- 8007466: 6078 str r0, [r7, #4]
- 8007468: 6039 str r1, [r7, #0]
- uint32_t tmpccmrx;
- uint32_t tmpccer;
- uint32_t tmpcr2;
-
- /* Disable the Channel 2: Reset the CC2E Bit */
- TIMx->CCER &= ~TIM_CCER_CC2E;
- 800746a: 687b ldr r3, [r7, #4]
- 800746c: 6a1b ldr r3, [r3, #32]
- 800746e: f023 0210 bic.w r2, r3, #16
- 8007472: 687b ldr r3, [r7, #4]
- 8007474: 621a str r2, [r3, #32]
-
- /* Get the TIMx CCER register value */
- tmpccer = TIMx->CCER;
- 8007476: 687b ldr r3, [r7, #4]
- 8007478: 6a1b ldr r3, [r3, #32]
- 800747a: 617b str r3, [r7, #20]
- /* Get the TIMx CR2 register value */
- tmpcr2 = TIMx->CR2;
- 800747c: 687b ldr r3, [r7, #4]
- 800747e: 685b ldr r3, [r3, #4]
- 8007480: 613b str r3, [r7, #16]
-
- /* Get the TIMx CCMR1 register value */
- tmpccmrx = TIMx->CCMR1;
- 8007482: 687b ldr r3, [r7, #4]
- 8007484: 699b ldr r3, [r3, #24]
- 8007486: 60fb str r3, [r7, #12]
-
- /* Reset the Output Compare mode and Capture/Compare selection Bits */
- tmpccmrx &= ~TIM_CCMR1_OC2M;
- 8007488: 68fa ldr r2, [r7, #12]
- 800748a: 4b2e ldr r3, [pc, #184] ; (8007544 <TIM_OC2_SetConfig+0xe4>)
- 800748c: 4013 ands r3, r2
- 800748e: 60fb str r3, [r7, #12]
- tmpccmrx &= ~TIM_CCMR1_CC2S;
- 8007490: 68fb ldr r3, [r7, #12]
- 8007492: f423 7340 bic.w r3, r3, #768 ; 0x300
- 8007496: 60fb str r3, [r7, #12]
-
- /* Select the Output Compare Mode */
- tmpccmrx |= (OC_Config->OCMode << 8U);
- 8007498: 683b ldr r3, [r7, #0]
- 800749a: 681b ldr r3, [r3, #0]
- 800749c: 021b lsls r3, r3, #8
- 800749e: 68fa ldr r2, [r7, #12]
- 80074a0: 4313 orrs r3, r2
- 80074a2: 60fb str r3, [r7, #12]
-
- /* Reset the Output Polarity level */
- tmpccer &= ~TIM_CCER_CC2P;
- 80074a4: 697b ldr r3, [r7, #20]
- 80074a6: f023 0320 bic.w r3, r3, #32
- 80074aa: 617b str r3, [r7, #20]
- /* Set the Output Compare Polarity */
- tmpccer |= (OC_Config->OCPolarity << 4U);
- 80074ac: 683b ldr r3, [r7, #0]
- 80074ae: 689b ldr r3, [r3, #8]
- 80074b0: 011b lsls r3, r3, #4
- 80074b2: 697a ldr r2, [r7, #20]
- 80074b4: 4313 orrs r3, r2
- 80074b6: 617b str r3, [r7, #20]
-
- if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2))
- 80074b8: 687b ldr r3, [r7, #4]
- 80074ba: 4a23 ldr r2, [pc, #140] ; (8007548 <TIM_OC2_SetConfig+0xe8>)
- 80074bc: 4293 cmp r3, r2
- 80074be: d003 beq.n 80074c8 <TIM_OC2_SetConfig+0x68>
- 80074c0: 687b ldr r3, [r7, #4]
- 80074c2: 4a22 ldr r2, [pc, #136] ; (800754c <TIM_OC2_SetConfig+0xec>)
- 80074c4: 4293 cmp r3, r2
- 80074c6: d10d bne.n 80074e4 <TIM_OC2_SetConfig+0x84>
- {
- assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));
-
- /* Reset the Output N Polarity level */
- tmpccer &= ~TIM_CCER_CC2NP;
- 80074c8: 697b ldr r3, [r7, #20]
- 80074ca: f023 0380 bic.w r3, r3, #128 ; 0x80
- 80074ce: 617b str r3, [r7, #20]
- /* Set the Output N Polarity */
- tmpccer |= (OC_Config->OCNPolarity << 4U);
- 80074d0: 683b ldr r3, [r7, #0]
- 80074d2: 68db ldr r3, [r3, #12]
- 80074d4: 011b lsls r3, r3, #4
- 80074d6: 697a ldr r2, [r7, #20]
- 80074d8: 4313 orrs r3, r2
- 80074da: 617b str r3, [r7, #20]
- /* Reset the Output N State */
- tmpccer &= ~TIM_CCER_CC2NE;
- 80074dc: 697b ldr r3, [r7, #20]
- 80074de: f023 0340 bic.w r3, r3, #64 ; 0x40
- 80074e2: 617b str r3, [r7, #20]
-
- }
-
- if (IS_TIM_BREAK_INSTANCE(TIMx))
- 80074e4: 687b ldr r3, [r7, #4]
- 80074e6: 4a18 ldr r2, [pc, #96] ; (8007548 <TIM_OC2_SetConfig+0xe8>)
- 80074e8: 4293 cmp r3, r2
- 80074ea: d003 beq.n 80074f4 <TIM_OC2_SetConfig+0x94>
- 80074ec: 687b ldr r3, [r7, #4]
- 80074ee: 4a17 ldr r2, [pc, #92] ; (800754c <TIM_OC2_SetConfig+0xec>)
- 80074f0: 4293 cmp r3, r2
- 80074f2: d113 bne.n 800751c <TIM_OC2_SetConfig+0xbc>
- /* Check parameters */
- assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
-
- /* Reset the Output Compare and Output Compare N IDLE State */
- tmpcr2 &= ~TIM_CR2_OIS2;
- 80074f4: 693b ldr r3, [r7, #16]
- 80074f6: f423 6380 bic.w r3, r3, #1024 ; 0x400
- 80074fa: 613b str r3, [r7, #16]
- tmpcr2 &= ~TIM_CR2_OIS2N;
- 80074fc: 693b ldr r3, [r7, #16]
- 80074fe: f423 6300 bic.w r3, r3, #2048 ; 0x800
- 8007502: 613b str r3, [r7, #16]
- /* Set the Output Idle state */
- tmpcr2 |= (OC_Config->OCIdleState << 2U);
- 8007504: 683b ldr r3, [r7, #0]
- 8007506: 695b ldr r3, [r3, #20]
- 8007508: 009b lsls r3, r3, #2
- 800750a: 693a ldr r2, [r7, #16]
- 800750c: 4313 orrs r3, r2
- 800750e: 613b str r3, [r7, #16]
- /* Set the Output N Idle state */
- tmpcr2 |= (OC_Config->OCNIdleState << 2U);
- 8007510: 683b ldr r3, [r7, #0]
- 8007512: 699b ldr r3, [r3, #24]
- 8007514: 009b lsls r3, r3, #2
- 8007516: 693a ldr r2, [r7, #16]
- 8007518: 4313 orrs r3, r2
- 800751a: 613b str r3, [r7, #16]
- }
-
- /* Write to TIMx CR2 */
- TIMx->CR2 = tmpcr2;
- 800751c: 687b ldr r3, [r7, #4]
- 800751e: 693a ldr r2, [r7, #16]
- 8007520: 605a str r2, [r3, #4]
-
- /* Write to TIMx CCMR1 */
- TIMx->CCMR1 = tmpccmrx;
- 8007522: 687b ldr r3, [r7, #4]
- 8007524: 68fa ldr r2, [r7, #12]
- 8007526: 619a str r2, [r3, #24]
-
- /* Set the Capture Compare Register value */
- TIMx->CCR2 = OC_Config->Pulse;
- 8007528: 683b ldr r3, [r7, #0]
- 800752a: 685a ldr r2, [r3, #4]
- 800752c: 687b ldr r3, [r7, #4]
- 800752e: 639a str r2, [r3, #56] ; 0x38
-
- /* Write to TIMx CCER */
- TIMx->CCER = tmpccer;
- 8007530: 687b ldr r3, [r7, #4]
- 8007532: 697a ldr r2, [r7, #20]
- 8007534: 621a str r2, [r3, #32]
-}
- 8007536: bf00 nop
- 8007538: 371c adds r7, #28
- 800753a: 46bd mov sp, r7
- 800753c: f85d 7b04 ldr.w r7, [sp], #4
- 8007540: 4770 bx lr
- 8007542: bf00 nop
- 8007544: feff8fff .word 0xfeff8fff
- 8007548: 40010000 .word 0x40010000
- 800754c: 40010400 .word 0x40010400
-
-08007550 <TIM_OC3_SetConfig>:
- * @param TIMx to select the TIM peripheral
- * @param OC_Config The ouput configuration structure
- * @retval None
- */
-static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
-{
- 8007550: b480 push {r7}
- 8007552: b087 sub sp, #28
- 8007554: af00 add r7, sp, #0
- 8007556: 6078 str r0, [r7, #4]
- 8007558: 6039 str r1, [r7, #0]
- uint32_t tmpccmrx;
- uint32_t tmpccer;
- uint32_t tmpcr2;
-
- /* Disable the Channel 3: Reset the CC2E Bit */
- TIMx->CCER &= ~TIM_CCER_CC3E;
- 800755a: 687b ldr r3, [r7, #4]
- 800755c: 6a1b ldr r3, [r3, #32]
- 800755e: f423 7280 bic.w r2, r3, #256 ; 0x100
- 8007562: 687b ldr r3, [r7, #4]
- 8007564: 621a str r2, [r3, #32]
-
- /* Get the TIMx CCER register value */
- tmpccer = TIMx->CCER;
- 8007566: 687b ldr r3, [r7, #4]
- 8007568: 6a1b ldr r3, [r3, #32]
- 800756a: 617b str r3, [r7, #20]
- /* Get the TIMx CR2 register value */
- tmpcr2 = TIMx->CR2;
- 800756c: 687b ldr r3, [r7, #4]
- 800756e: 685b ldr r3, [r3, #4]
- 8007570: 613b str r3, [r7, #16]
-
- /* Get the TIMx CCMR2 register value */
- tmpccmrx = TIMx->CCMR2;
- 8007572: 687b ldr r3, [r7, #4]
- 8007574: 69db ldr r3, [r3, #28]
- 8007576: 60fb str r3, [r7, #12]
-
- /* Reset the Output Compare mode and Capture/Compare selection Bits */
- tmpccmrx &= ~TIM_CCMR2_OC3M;
- 8007578: 68fa ldr r2, [r7, #12]
- 800757a: 4b2d ldr r3, [pc, #180] ; (8007630 <TIM_OC3_SetConfig+0xe0>)
- 800757c: 4013 ands r3, r2
- 800757e: 60fb str r3, [r7, #12]
- tmpccmrx &= ~TIM_CCMR2_CC3S;
- 8007580: 68fb ldr r3, [r7, #12]
- 8007582: f023 0303 bic.w r3, r3, #3
- 8007586: 60fb str r3, [r7, #12]
- /* Select the Output Compare Mode */
- tmpccmrx |= OC_Config->OCMode;
- 8007588: 683b ldr r3, [r7, #0]
- 800758a: 681b ldr r3, [r3, #0]
- 800758c: 68fa ldr r2, [r7, #12]
- 800758e: 4313 orrs r3, r2
- 8007590: 60fb str r3, [r7, #12]
-
- /* Reset the Output Polarity level */
- tmpccer &= ~TIM_CCER_CC3P;
- 8007592: 697b ldr r3, [r7, #20]
- 8007594: f423 7300 bic.w r3, r3, #512 ; 0x200
- 8007598: 617b str r3, [r7, #20]
- /* Set the Output Compare Polarity */
- tmpccer |= (OC_Config->OCPolarity << 8U);
- 800759a: 683b ldr r3, [r7, #0]
- 800759c: 689b ldr r3, [r3, #8]
- 800759e: 021b lsls r3, r3, #8
- 80075a0: 697a ldr r2, [r7, #20]
- 80075a2: 4313 orrs r3, r2
- 80075a4: 617b str r3, [r7, #20]
-
- if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3))
- 80075a6: 687b ldr r3, [r7, #4]
- 80075a8: 4a22 ldr r2, [pc, #136] ; (8007634 <TIM_OC3_SetConfig+0xe4>)
- 80075aa: 4293 cmp r3, r2
- 80075ac: d003 beq.n 80075b6 <TIM_OC3_SetConfig+0x66>
- 80075ae: 687b ldr r3, [r7, #4]
- 80075b0: 4a21 ldr r2, [pc, #132] ; (8007638 <TIM_OC3_SetConfig+0xe8>)
- 80075b2: 4293 cmp r3, r2
- 80075b4: d10d bne.n 80075d2 <TIM_OC3_SetConfig+0x82>
- {
- assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));
-
- /* Reset the Output N Polarity level */
- tmpccer &= ~TIM_CCER_CC3NP;
- 80075b6: 697b ldr r3, [r7, #20]
- 80075b8: f423 6300 bic.w r3, r3, #2048 ; 0x800
- 80075bc: 617b str r3, [r7, #20]
- /* Set the Output N Polarity */
- tmpccer |= (OC_Config->OCNPolarity << 8U);
- 80075be: 683b ldr r3, [r7, #0]
- 80075c0: 68db ldr r3, [r3, #12]
- 80075c2: 021b lsls r3, r3, #8
- 80075c4: 697a ldr r2, [r7, #20]
- 80075c6: 4313 orrs r3, r2
- 80075c8: 617b str r3, [r7, #20]
- /* Reset the Output N State */
- tmpccer &= ~TIM_CCER_CC3NE;
- 80075ca: 697b ldr r3, [r7, #20]
- 80075cc: f423 6380 bic.w r3, r3, #1024 ; 0x400
- 80075d0: 617b str r3, [r7, #20]
- }
-
- if (IS_TIM_BREAK_INSTANCE(TIMx))
- 80075d2: 687b ldr r3, [r7, #4]
- 80075d4: 4a17 ldr r2, [pc, #92] ; (8007634 <TIM_OC3_SetConfig+0xe4>)
- 80075d6: 4293 cmp r3, r2
- 80075d8: d003 beq.n 80075e2 <TIM_OC3_SetConfig+0x92>
- 80075da: 687b ldr r3, [r7, #4]
- 80075dc: 4a16 ldr r2, [pc, #88] ; (8007638 <TIM_OC3_SetConfig+0xe8>)
- 80075de: 4293 cmp r3, r2
- 80075e0: d113 bne.n 800760a <TIM_OC3_SetConfig+0xba>
- /* Check parameters */
- assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
-
- /* Reset the Output Compare and Output Compare N IDLE State */
- tmpcr2 &= ~TIM_CR2_OIS3;
- 80075e2: 693b ldr r3, [r7, #16]
- 80075e4: f423 5380 bic.w r3, r3, #4096 ; 0x1000
- 80075e8: 613b str r3, [r7, #16]
- tmpcr2 &= ~TIM_CR2_OIS3N;
- 80075ea: 693b ldr r3, [r7, #16]
- 80075ec: f423 5300 bic.w r3, r3, #8192 ; 0x2000
- 80075f0: 613b str r3, [r7, #16]
- /* Set the Output Idle state */
- tmpcr2 |= (OC_Config->OCIdleState << 4U);
- 80075f2: 683b ldr r3, [r7, #0]
- 80075f4: 695b ldr r3, [r3, #20]
- 80075f6: 011b lsls r3, r3, #4
- 80075f8: 693a ldr r2, [r7, #16]
- 80075fa: 4313 orrs r3, r2
- 80075fc: 613b str r3, [r7, #16]
- /* Set the Output N Idle state */
- tmpcr2 |= (OC_Config->OCNIdleState << 4U);
- 80075fe: 683b ldr r3, [r7, #0]
- 8007600: 699b ldr r3, [r3, #24]
- 8007602: 011b lsls r3, r3, #4
- 8007604: 693a ldr r2, [r7, #16]
- 8007606: 4313 orrs r3, r2
- 8007608: 613b str r3, [r7, #16]
- }
-
- /* Write to TIMx CR2 */
- TIMx->CR2 = tmpcr2;
- 800760a: 687b ldr r3, [r7, #4]
- 800760c: 693a ldr r2, [r7, #16]
- 800760e: 605a str r2, [r3, #4]
-
- /* Write to TIMx CCMR2 */
- TIMx->CCMR2 = tmpccmrx;
- 8007610: 687b ldr r3, [r7, #4]
- 8007612: 68fa ldr r2, [r7, #12]
- 8007614: 61da str r2, [r3, #28]
-
- /* Set the Capture Compare Register value */
- TIMx->CCR3 = OC_Config->Pulse;
- 8007616: 683b ldr r3, [r7, #0]
- 8007618: 685a ldr r2, [r3, #4]
- 800761a: 687b ldr r3, [r7, #4]
- 800761c: 63da str r2, [r3, #60] ; 0x3c
-
- /* Write to TIMx CCER */
- TIMx->CCER = tmpccer;
- 800761e: 687b ldr r3, [r7, #4]
- 8007620: 697a ldr r2, [r7, #20]
- 8007622: 621a str r2, [r3, #32]
-}
- 8007624: bf00 nop
- 8007626: 371c adds r7, #28
- 8007628: 46bd mov sp, r7
- 800762a: f85d 7b04 ldr.w r7, [sp], #4
- 800762e: 4770 bx lr
- 8007630: fffeff8f .word 0xfffeff8f
- 8007634: 40010000 .word 0x40010000
- 8007638: 40010400 .word 0x40010400
-
-0800763c <TIM_OC4_SetConfig>:
- * @param TIMx to select the TIM peripheral
- * @param OC_Config The ouput configuration structure
- * @retval None
- */
-static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
-{
- 800763c: b480 push {r7}
- 800763e: b087 sub sp, #28
- 8007640: af00 add r7, sp, #0
- 8007642: 6078 str r0, [r7, #4]
- 8007644: 6039 str r1, [r7, #0]
- uint32_t tmpccmrx;
- uint32_t tmpccer;
- uint32_t tmpcr2;
-
- /* Disable the Channel 4: Reset the CC4E Bit */
- TIMx->CCER &= ~TIM_CCER_CC4E;
- 8007646: 687b ldr r3, [r7, #4]
- 8007648: 6a1b ldr r3, [r3, #32]
- 800764a: f423 5280 bic.w r2, r3, #4096 ; 0x1000
- 800764e: 687b ldr r3, [r7, #4]
- 8007650: 621a str r2, [r3, #32]
-
- /* Get the TIMx CCER register value */
- tmpccer = TIMx->CCER;
- 8007652: 687b ldr r3, [r7, #4]
- 8007654: 6a1b ldr r3, [r3, #32]
- 8007656: 613b str r3, [r7, #16]
- /* Get the TIMx CR2 register value */
- tmpcr2 = TIMx->CR2;
- 8007658: 687b ldr r3, [r7, #4]
- 800765a: 685b ldr r3, [r3, #4]
- 800765c: 617b str r3, [r7, #20]
-
- /* Get the TIMx CCMR2 register value */
- tmpccmrx = TIMx->CCMR2;
- 800765e: 687b ldr r3, [r7, #4]
- 8007660: 69db ldr r3, [r3, #28]
- 8007662: 60fb str r3, [r7, #12]
-
- /* Reset the Output Compare mode and Capture/Compare selection Bits */
- tmpccmrx &= ~TIM_CCMR2_OC4M;
- 8007664: 68fa ldr r2, [r7, #12]
- 8007666: 4b1e ldr r3, [pc, #120] ; (80076e0 <TIM_OC4_SetConfig+0xa4>)
- 8007668: 4013 ands r3, r2
- 800766a: 60fb str r3, [r7, #12]
- tmpccmrx &= ~TIM_CCMR2_CC4S;
- 800766c: 68fb ldr r3, [r7, #12]
- 800766e: f423 7340 bic.w r3, r3, #768 ; 0x300
- 8007672: 60fb str r3, [r7, #12]
-
- /* Select the Output Compare Mode */
- tmpccmrx |= (OC_Config->OCMode << 8U);
- 8007674: 683b ldr r3, [r7, #0]
- 8007676: 681b ldr r3, [r3, #0]
- 8007678: 021b lsls r3, r3, #8
- 800767a: 68fa ldr r2, [r7, #12]
- 800767c: 4313 orrs r3, r2
- 800767e: 60fb str r3, [r7, #12]
-
- /* Reset the Output Polarity level */
- tmpccer &= ~TIM_CCER_CC4P;
- 8007680: 693b ldr r3, [r7, #16]
- 8007682: f423 5300 bic.w r3, r3, #8192 ; 0x2000
- 8007686: 613b str r3, [r7, #16]
- /* Set the Output Compare Polarity */
- tmpccer |= (OC_Config->OCPolarity << 12U);
- 8007688: 683b ldr r3, [r7, #0]
- 800768a: 689b ldr r3, [r3, #8]
- 800768c: 031b lsls r3, r3, #12
- 800768e: 693a ldr r2, [r7, #16]
- 8007690: 4313 orrs r3, r2
- 8007692: 613b str r3, [r7, #16]
-
- if (IS_TIM_BREAK_INSTANCE(TIMx))
- 8007694: 687b ldr r3, [r7, #4]
- 8007696: 4a13 ldr r2, [pc, #76] ; (80076e4 <TIM_OC4_SetConfig+0xa8>)
- 8007698: 4293 cmp r3, r2
- 800769a: d003 beq.n 80076a4 <TIM_OC4_SetConfig+0x68>
- 800769c: 687b ldr r3, [r7, #4]
- 800769e: 4a12 ldr r2, [pc, #72] ; (80076e8 <TIM_OC4_SetConfig+0xac>)
- 80076a0: 4293 cmp r3, r2
- 80076a2: d109 bne.n 80076b8 <TIM_OC4_SetConfig+0x7c>
- {
- /* Check parameters */
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
-
- /* Reset the Output Compare IDLE State */
- tmpcr2 &= ~TIM_CR2_OIS4;
- 80076a4: 697b ldr r3, [r7, #20]
- 80076a6: f423 4380 bic.w r3, r3, #16384 ; 0x4000
- 80076aa: 617b str r3, [r7, #20]
-
- /* Set the Output Idle state */
- tmpcr2 |= (OC_Config->OCIdleState << 6U);
- 80076ac: 683b ldr r3, [r7, #0]
- 80076ae: 695b ldr r3, [r3, #20]
- 80076b0: 019b lsls r3, r3, #6
- 80076b2: 697a ldr r2, [r7, #20]
- 80076b4: 4313 orrs r3, r2
- 80076b6: 617b str r3, [r7, #20]
- }
-
- /* Write to TIMx CR2 */
- TIMx->CR2 = tmpcr2;
- 80076b8: 687b ldr r3, [r7, #4]
- 80076ba: 697a ldr r2, [r7, #20]
- 80076bc: 605a str r2, [r3, #4]
-
- /* Write to TIMx CCMR2 */
- TIMx->CCMR2 = tmpccmrx;
- 80076be: 687b ldr r3, [r7, #4]
- 80076c0: 68fa ldr r2, [r7, #12]
- 80076c2: 61da str r2, [r3, #28]
-
- /* Set the Capture Compare Register value */
- TIMx->CCR4 = OC_Config->Pulse;
- 80076c4: 683b ldr r3, [r7, #0]
- 80076c6: 685a ldr r2, [r3, #4]
- 80076c8: 687b ldr r3, [r7, #4]
- 80076ca: 641a str r2, [r3, #64] ; 0x40
-
- /* Write to TIMx CCER */
- TIMx->CCER = tmpccer;
- 80076cc: 687b ldr r3, [r7, #4]
- 80076ce: 693a ldr r2, [r7, #16]
- 80076d0: 621a str r2, [r3, #32]
-}
- 80076d2: bf00 nop
- 80076d4: 371c adds r7, #28
- 80076d6: 46bd mov sp, r7
- 80076d8: f85d 7b04 ldr.w r7, [sp], #4
- 80076dc: 4770 bx lr
- 80076de: bf00 nop
- 80076e0: feff8fff .word 0xfeff8fff
- 80076e4: 40010000 .word 0x40010000
- 80076e8: 40010400 .word 0x40010400
-
-080076ec <TIM_OC5_SetConfig>:
- * @param OC_Config The ouput configuration structure
- * @retval None
- */
-static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx,
- TIM_OC_InitTypeDef *OC_Config)
-{
- 80076ec: b480 push {r7}
- 80076ee: b087 sub sp, #28
- 80076f0: af00 add r7, sp, #0
- 80076f2: 6078 str r0, [r7, #4]
- 80076f4: 6039 str r1, [r7, #0]
- uint32_t tmpccmrx;
- uint32_t tmpccer;
- uint32_t tmpcr2;
-
- /* Disable the output: Reset the CCxE Bit */
- TIMx->CCER &= ~TIM_CCER_CC5E;
- 80076f6: 687b ldr r3, [r7, #4]
- 80076f8: 6a1b ldr r3, [r3, #32]
- 80076fa: f423 3280 bic.w r2, r3, #65536 ; 0x10000
- 80076fe: 687b ldr r3, [r7, #4]
- 8007700: 621a str r2, [r3, #32]
-
- /* Get the TIMx CCER register value */
- tmpccer = TIMx->CCER;
- 8007702: 687b ldr r3, [r7, #4]
- 8007704: 6a1b ldr r3, [r3, #32]
- 8007706: 613b str r3, [r7, #16]
- /* Get the TIMx CR2 register value */
- tmpcr2 = TIMx->CR2;
- 8007708: 687b ldr r3, [r7, #4]
- 800770a: 685b ldr r3, [r3, #4]
- 800770c: 617b str r3, [r7, #20]
- /* Get the TIMx CCMR1 register value */
- tmpccmrx = TIMx->CCMR3;
- 800770e: 687b ldr r3, [r7, #4]
- 8007710: 6d5b ldr r3, [r3, #84] ; 0x54
- 8007712: 60fb str r3, [r7, #12]
-
- /* Reset the Output Compare Mode Bits */
- tmpccmrx &= ~(TIM_CCMR3_OC5M);
- 8007714: 68fa ldr r2, [r7, #12]
- 8007716: 4b1b ldr r3, [pc, #108] ; (8007784 <TIM_OC5_SetConfig+0x98>)
- 8007718: 4013 ands r3, r2
- 800771a: 60fb str r3, [r7, #12]
- /* Select the Output Compare Mode */
- tmpccmrx |= OC_Config->OCMode;
- 800771c: 683b ldr r3, [r7, #0]
- 800771e: 681b ldr r3, [r3, #0]
- 8007720: 68fa ldr r2, [r7, #12]
- 8007722: 4313 orrs r3, r2
- 8007724: 60fb str r3, [r7, #12]
-
- /* Reset the Output Polarity level */
- tmpccer &= ~TIM_CCER_CC5P;
- 8007726: 693b ldr r3, [r7, #16]
- 8007728: f423 3300 bic.w r3, r3, #131072 ; 0x20000
- 800772c: 613b str r3, [r7, #16]
- /* Set the Output Compare Polarity */
- tmpccer |= (OC_Config->OCPolarity << 16U);
- 800772e: 683b ldr r3, [r7, #0]
- 8007730: 689b ldr r3, [r3, #8]
- 8007732: 041b lsls r3, r3, #16
- 8007734: 693a ldr r2, [r7, #16]
- 8007736: 4313 orrs r3, r2
- 8007738: 613b str r3, [r7, #16]
-
- if (IS_TIM_BREAK_INSTANCE(TIMx))
- 800773a: 687b ldr r3, [r7, #4]
- 800773c: 4a12 ldr r2, [pc, #72] ; (8007788 <TIM_OC5_SetConfig+0x9c>)
- 800773e: 4293 cmp r3, r2
- 8007740: d003 beq.n 800774a <TIM_OC5_SetConfig+0x5e>
- 8007742: 687b ldr r3, [r7, #4]
- 8007744: 4a11 ldr r2, [pc, #68] ; (800778c <TIM_OC5_SetConfig+0xa0>)
- 8007746: 4293 cmp r3, r2
- 8007748: d109 bne.n 800775e <TIM_OC5_SetConfig+0x72>
- {
- /* Reset the Output Compare IDLE State */
- tmpcr2 &= ~TIM_CR2_OIS5;
- 800774a: 697b ldr r3, [r7, #20]
- 800774c: f423 3380 bic.w r3, r3, #65536 ; 0x10000
- 8007750: 617b str r3, [r7, #20]
- /* Set the Output Idle state */
- tmpcr2 |= (OC_Config->OCIdleState << 8U);
- 8007752: 683b ldr r3, [r7, #0]
- 8007754: 695b ldr r3, [r3, #20]
- 8007756: 021b lsls r3, r3, #8
- 8007758: 697a ldr r2, [r7, #20]
- 800775a: 4313 orrs r3, r2
- 800775c: 617b str r3, [r7, #20]
- }
- /* Write to TIMx CR2 */
- TIMx->CR2 = tmpcr2;
- 800775e: 687b ldr r3, [r7, #4]
- 8007760: 697a ldr r2, [r7, #20]
- 8007762: 605a str r2, [r3, #4]
-
- /* Write to TIMx CCMR3 */
- TIMx->CCMR3 = tmpccmrx;
- 8007764: 687b ldr r3, [r7, #4]
- 8007766: 68fa ldr r2, [r7, #12]
- 8007768: 655a str r2, [r3, #84] ; 0x54
-
- /* Set the Capture Compare Register value */
- TIMx->CCR5 = OC_Config->Pulse;
- 800776a: 683b ldr r3, [r7, #0]
- 800776c: 685a ldr r2, [r3, #4]
- 800776e: 687b ldr r3, [r7, #4]
- 8007770: 659a str r2, [r3, #88] ; 0x58
-
- /* Write to TIMx CCER */
- TIMx->CCER = tmpccer;
- 8007772: 687b ldr r3, [r7, #4]
- 8007774: 693a ldr r2, [r7, #16]
- 8007776: 621a str r2, [r3, #32]
-}
- 8007778: bf00 nop
- 800777a: 371c adds r7, #28
- 800777c: 46bd mov sp, r7
- 800777e: f85d 7b04 ldr.w r7, [sp], #4
- 8007782: 4770 bx lr
- 8007784: fffeff8f .word 0xfffeff8f
- 8007788: 40010000 .word 0x40010000
- 800778c: 40010400 .word 0x40010400
-
-08007790 <TIM_OC6_SetConfig>:
- * @param OC_Config The ouput configuration structure
- * @retval None
- */
-static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx,
- TIM_OC_InitTypeDef *OC_Config)
-{
- 8007790: b480 push {r7}
- 8007792: b087 sub sp, #28
- 8007794: af00 add r7, sp, #0
- 8007796: 6078 str r0, [r7, #4]
- 8007798: 6039 str r1, [r7, #0]
- uint32_t tmpccmrx;
- uint32_t tmpccer;
- uint32_t tmpcr2;
-
- /* Disable the output: Reset the CCxE Bit */
- TIMx->CCER &= ~TIM_CCER_CC6E;
- 800779a: 687b ldr r3, [r7, #4]
- 800779c: 6a1b ldr r3, [r3, #32]
- 800779e: f423 1280 bic.w r2, r3, #1048576 ; 0x100000
- 80077a2: 687b ldr r3, [r7, #4]
- 80077a4: 621a str r2, [r3, #32]
-
- /* Get the TIMx CCER register value */
- tmpccer = TIMx->CCER;
- 80077a6: 687b ldr r3, [r7, #4]
- 80077a8: 6a1b ldr r3, [r3, #32]
- 80077aa: 613b str r3, [r7, #16]
- /* Get the TIMx CR2 register value */
- tmpcr2 = TIMx->CR2;
- 80077ac: 687b ldr r3, [r7, #4]
- 80077ae: 685b ldr r3, [r3, #4]
- 80077b0: 617b str r3, [r7, #20]
- /* Get the TIMx CCMR1 register value */
- tmpccmrx = TIMx->CCMR3;
- 80077b2: 687b ldr r3, [r7, #4]
- 80077b4: 6d5b ldr r3, [r3, #84] ; 0x54
- 80077b6: 60fb str r3, [r7, #12]
-
- /* Reset the Output Compare Mode Bits */
- tmpccmrx &= ~(TIM_CCMR3_OC6M);
- 80077b8: 68fa ldr r2, [r7, #12]
- 80077ba: 4b1c ldr r3, [pc, #112] ; (800782c <TIM_OC6_SetConfig+0x9c>)
- 80077bc: 4013 ands r3, r2
- 80077be: 60fb str r3, [r7, #12]
- /* Select the Output Compare Mode */
- tmpccmrx |= (OC_Config->OCMode << 8U);
- 80077c0: 683b ldr r3, [r7, #0]
- 80077c2: 681b ldr r3, [r3, #0]
- 80077c4: 021b lsls r3, r3, #8
- 80077c6: 68fa ldr r2, [r7, #12]
- 80077c8: 4313 orrs r3, r2
- 80077ca: 60fb str r3, [r7, #12]
-
- /* Reset the Output Polarity level */
- tmpccer &= (uint32_t)~TIM_CCER_CC6P;
- 80077cc: 693b ldr r3, [r7, #16]
- 80077ce: f423 1300 bic.w r3, r3, #2097152 ; 0x200000
- 80077d2: 613b str r3, [r7, #16]
- /* Set the Output Compare Polarity */
- tmpccer |= (OC_Config->OCPolarity << 20U);
- 80077d4: 683b ldr r3, [r7, #0]
- 80077d6: 689b ldr r3, [r3, #8]
- 80077d8: 051b lsls r3, r3, #20
- 80077da: 693a ldr r2, [r7, #16]
- 80077dc: 4313 orrs r3, r2
- 80077de: 613b str r3, [r7, #16]
-
- if (IS_TIM_BREAK_INSTANCE(TIMx))
- 80077e0: 687b ldr r3, [r7, #4]
- 80077e2: 4a13 ldr r2, [pc, #76] ; (8007830 <TIM_OC6_SetConfig+0xa0>)
- 80077e4: 4293 cmp r3, r2
- 80077e6: d003 beq.n 80077f0 <TIM_OC6_SetConfig+0x60>
- 80077e8: 687b ldr r3, [r7, #4]
- 80077ea: 4a12 ldr r2, [pc, #72] ; (8007834 <TIM_OC6_SetConfig+0xa4>)
- 80077ec: 4293 cmp r3, r2
- 80077ee: d109 bne.n 8007804 <TIM_OC6_SetConfig+0x74>
- {
- /* Reset the Output Compare IDLE State */
- tmpcr2 &= ~TIM_CR2_OIS6;
- 80077f0: 697b ldr r3, [r7, #20]
- 80077f2: f423 2380 bic.w r3, r3, #262144 ; 0x40000
- 80077f6: 617b str r3, [r7, #20]
- /* Set the Output Idle state */
- tmpcr2 |= (OC_Config->OCIdleState << 10U);
- 80077f8: 683b ldr r3, [r7, #0]
- 80077fa: 695b ldr r3, [r3, #20]
- 80077fc: 029b lsls r3, r3, #10
- 80077fe: 697a ldr r2, [r7, #20]
- 8007800: 4313 orrs r3, r2
- 8007802: 617b str r3, [r7, #20]
- }
-
- /* Write to TIMx CR2 */
- TIMx->CR2 = tmpcr2;
- 8007804: 687b ldr r3, [r7, #4]
- 8007806: 697a ldr r2, [r7, #20]
- 8007808: 605a str r2, [r3, #4]
-
- /* Write to TIMx CCMR3 */
- TIMx->CCMR3 = tmpccmrx;
- 800780a: 687b ldr r3, [r7, #4]
- 800780c: 68fa ldr r2, [r7, #12]
- 800780e: 655a str r2, [r3, #84] ; 0x54
-
- /* Set the Capture Compare Register value */
- TIMx->CCR6 = OC_Config->Pulse;
- 8007810: 683b ldr r3, [r7, #0]
- 8007812: 685a ldr r2, [r3, #4]
- 8007814: 687b ldr r3, [r7, #4]
- 8007816: 65da str r2, [r3, #92] ; 0x5c
-
- /* Write to TIMx CCER */
- TIMx->CCER = tmpccer;
- 8007818: 687b ldr r3, [r7, #4]
- 800781a: 693a ldr r2, [r7, #16]
- 800781c: 621a str r2, [r3, #32]
-}
- 800781e: bf00 nop
- 8007820: 371c adds r7, #28
- 8007822: 46bd mov sp, r7
- 8007824: f85d 7b04 ldr.w r7, [sp], #4
- 8007828: 4770 bx lr
- 800782a: bf00 nop
- 800782c: feff8fff .word 0xfeff8fff
- 8007830: 40010000 .word 0x40010000
- 8007834: 40010400 .word 0x40010400
-
-08007838 <TIM_TI1_ConfigInputStage>:
- * @param TIM_ICFilter Specifies the Input Capture Filter.
- * This parameter must be a value between 0x00 and 0x0F.
- * @retval None
- */
-static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)
-{
- 8007838: b480 push {r7}
- 800783a: b087 sub sp, #28
- 800783c: af00 add r7, sp, #0
- 800783e: 60f8 str r0, [r7, #12]
- 8007840: 60b9 str r1, [r7, #8]
- 8007842: 607a str r2, [r7, #4]
- uint32_t tmpccmr1;
- uint32_t tmpccer;
-
- /* Disable the Channel 1: Reset the CC1E Bit */
- tmpccer = TIMx->CCER;
- 8007844: 68fb ldr r3, [r7, #12]
- 8007846: 6a1b ldr r3, [r3, #32]
- 8007848: 617b str r3, [r7, #20]
- TIMx->CCER &= ~TIM_CCER_CC1E;
- 800784a: 68fb ldr r3, [r7, #12]
- 800784c: 6a1b ldr r3, [r3, #32]
- 800784e: f023 0201 bic.w r2, r3, #1
- 8007852: 68fb ldr r3, [r7, #12]
- 8007854: 621a str r2, [r3, #32]
- tmpccmr1 = TIMx->CCMR1;
- 8007856: 68fb ldr r3, [r7, #12]
- 8007858: 699b ldr r3, [r3, #24]
- 800785a: 613b str r3, [r7, #16]
-
- /* Set the filter */
- tmpccmr1 &= ~TIM_CCMR1_IC1F;
- 800785c: 693b ldr r3, [r7, #16]
- 800785e: f023 03f0 bic.w r3, r3, #240 ; 0xf0
- 8007862: 613b str r3, [r7, #16]
- tmpccmr1 |= (TIM_ICFilter << 4U);
- 8007864: 687b ldr r3, [r7, #4]
- 8007866: 011b lsls r3, r3, #4
- 8007868: 693a ldr r2, [r7, #16]
- 800786a: 4313 orrs r3, r2
- 800786c: 613b str r3, [r7, #16]
-
- /* Select the Polarity and set the CC1E Bit */
- tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);
- 800786e: 697b ldr r3, [r7, #20]
- 8007870: f023 030a bic.w r3, r3, #10
- 8007874: 617b str r3, [r7, #20]
- tmpccer |= TIM_ICPolarity;
- 8007876: 697a ldr r2, [r7, #20]
- 8007878: 68bb ldr r3, [r7, #8]
- 800787a: 4313 orrs r3, r2
- 800787c: 617b str r3, [r7, #20]
-
- /* Write to TIMx CCMR1 and CCER registers */
- TIMx->CCMR1 = tmpccmr1;
- 800787e: 68fb ldr r3, [r7, #12]
- 8007880: 693a ldr r2, [r7, #16]
- 8007882: 619a str r2, [r3, #24]
- TIMx->CCER = tmpccer;
- 8007884: 68fb ldr r3, [r7, #12]
- 8007886: 697a ldr r2, [r7, #20]
- 8007888: 621a str r2, [r3, #32]
-}
- 800788a: bf00 nop
- 800788c: 371c adds r7, #28
- 800788e: 46bd mov sp, r7
- 8007890: f85d 7b04 ldr.w r7, [sp], #4
- 8007894: 4770 bx lr
-
-08007896 <TIM_TI2_ConfigInputStage>:
- * @param TIM_ICFilter Specifies the Input Capture Filter.
- * This parameter must be a value between 0x00 and 0x0F.
- * @retval None
- */
-static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)
-{
- 8007896: b480 push {r7}
- 8007898: b087 sub sp, #28
- 800789a: af00 add r7, sp, #0
- 800789c: 60f8 str r0, [r7, #12]
- 800789e: 60b9 str r1, [r7, #8]
- 80078a0: 607a str r2, [r7, #4]
- uint32_t tmpccmr1;
- uint32_t tmpccer;
-
- /* Disable the Channel 2: Reset the CC2E Bit */
- TIMx->CCER &= ~TIM_CCER_CC2E;
- 80078a2: 68fb ldr r3, [r7, #12]
- 80078a4: 6a1b ldr r3, [r3, #32]
- 80078a6: f023 0210 bic.w r2, r3, #16
- 80078aa: 68fb ldr r3, [r7, #12]
- 80078ac: 621a str r2, [r3, #32]
- tmpccmr1 = TIMx->CCMR1;
- 80078ae: 68fb ldr r3, [r7, #12]
- 80078b0: 699b ldr r3, [r3, #24]
- 80078b2: 617b str r3, [r7, #20]
- tmpccer = TIMx->CCER;
- 80078b4: 68fb ldr r3, [r7, #12]
- 80078b6: 6a1b ldr r3, [r3, #32]
- 80078b8: 613b str r3, [r7, #16]
-
- /* Set the filter */
- tmpccmr1 &= ~TIM_CCMR1_IC2F;
- 80078ba: 697b ldr r3, [r7, #20]
- 80078bc: f423 4370 bic.w r3, r3, #61440 ; 0xf000
- 80078c0: 617b str r3, [r7, #20]
- tmpccmr1 |= (TIM_ICFilter << 12U);
- 80078c2: 687b ldr r3, [r7, #4]
- 80078c4: 031b lsls r3, r3, #12
- 80078c6: 697a ldr r2, [r7, #20]
- 80078c8: 4313 orrs r3, r2
- 80078ca: 617b str r3, [r7, #20]
-
- /* Select the Polarity and set the CC2E Bit */
- tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);
- 80078cc: 693b ldr r3, [r7, #16]
- 80078ce: f023 03a0 bic.w r3, r3, #160 ; 0xa0
- 80078d2: 613b str r3, [r7, #16]
- tmpccer |= (TIM_ICPolarity << 4U);
- 80078d4: 68bb ldr r3, [r7, #8]
- 80078d6: 011b lsls r3, r3, #4
- 80078d8: 693a ldr r2, [r7, #16]
- 80078da: 4313 orrs r3, r2
- 80078dc: 613b str r3, [r7, #16]
-
- /* Write to TIMx CCMR1 and CCER registers */
- TIMx->CCMR1 = tmpccmr1 ;
- 80078de: 68fb ldr r3, [r7, #12]
- 80078e0: 697a ldr r2, [r7, #20]
- 80078e2: 619a str r2, [r3, #24]
- TIMx->CCER = tmpccer;
- 80078e4: 68fb ldr r3, [r7, #12]
- 80078e6: 693a ldr r2, [r7, #16]
- 80078e8: 621a str r2, [r3, #32]
-}
- 80078ea: bf00 nop
- 80078ec: 371c adds r7, #28
- 80078ee: 46bd mov sp, r7
- 80078f0: f85d 7b04 ldr.w r7, [sp], #4
- 80078f4: 4770 bx lr
-
-080078f6 <TIM_ITRx_SetConfig>:
- * @arg TIM_TS_TI2FP2: Filtered Timer Input 2
- * @arg TIM_TS_ETRF: External Trigger input
- * @retval None
- */
-static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource)
-{
- 80078f6: b480 push {r7}
- 80078f8: b085 sub sp, #20
- 80078fa: af00 add r7, sp, #0
- 80078fc: 6078 str r0, [r7, #4]
- 80078fe: 6039 str r1, [r7, #0]
- uint32_t tmpsmcr;
-
- /* Get the TIMx SMCR register value */
- tmpsmcr = TIMx->SMCR;
- 8007900: 687b ldr r3, [r7, #4]
- 8007902: 689b ldr r3, [r3, #8]
- 8007904: 60fb str r3, [r7, #12]
- /* Reset the TS Bits */
- tmpsmcr &= ~TIM_SMCR_TS;
- 8007906: 68fb ldr r3, [r7, #12]
- 8007908: f023 0370 bic.w r3, r3, #112 ; 0x70
- 800790c: 60fb str r3, [r7, #12]
- /* Set the Input Trigger source and the slave mode*/
- tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1);
- 800790e: 683a ldr r2, [r7, #0]
- 8007910: 68fb ldr r3, [r7, #12]
- 8007912: 4313 orrs r3, r2
- 8007914: f043 0307 orr.w r3, r3, #7
- 8007918: 60fb str r3, [r7, #12]
- /* Write to TIMx SMCR */
- TIMx->SMCR = tmpsmcr;
- 800791a: 687b ldr r3, [r7, #4]
- 800791c: 68fa ldr r2, [r7, #12]
- 800791e: 609a str r2, [r3, #8]
-}
- 8007920: bf00 nop
- 8007922: 3714 adds r7, #20
- 8007924: 46bd mov sp, r7
- 8007926: f85d 7b04 ldr.w r7, [sp], #4
- 800792a: 4770 bx lr
-
-0800792c <TIM_ETR_SetConfig>:
- * This parameter must be a value between 0x00 and 0x0F
- * @retval None
- */
-void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler,
- uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter)
-{
- 800792c: b480 push {r7}
- 800792e: b087 sub sp, #28
- 8007930: af00 add r7, sp, #0
- 8007932: 60f8 str r0, [r7, #12]
- 8007934: 60b9 str r1, [r7, #8]
- 8007936: 607a str r2, [r7, #4]
- 8007938: 603b str r3, [r7, #0]
- uint32_t tmpsmcr;
-
- tmpsmcr = TIMx->SMCR;
- 800793a: 68fb ldr r3, [r7, #12]
- 800793c: 689b ldr r3, [r3, #8]
- 800793e: 617b str r3, [r7, #20]
-
- /* Reset the ETR Bits */
- tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
- 8007940: 697b ldr r3, [r7, #20]
- 8007942: f423 437f bic.w r3, r3, #65280 ; 0xff00
- 8007946: 617b str r3, [r7, #20]
-
- /* Set the Prescaler, the Filter value and the Polarity */
- tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U)));
- 8007948: 683b ldr r3, [r7, #0]
- 800794a: 021a lsls r2, r3, #8
- 800794c: 687b ldr r3, [r7, #4]
- 800794e: 431a orrs r2, r3
- 8007950: 68bb ldr r3, [r7, #8]
- 8007952: 4313 orrs r3, r2
- 8007954: 697a ldr r2, [r7, #20]
- 8007956: 4313 orrs r3, r2
- 8007958: 617b str r3, [r7, #20]
-
- /* Write to TIMx SMCR */
- TIMx->SMCR = tmpsmcr;
- 800795a: 68fb ldr r3, [r7, #12]
- 800795c: 697a ldr r2, [r7, #20]
- 800795e: 609a str r2, [r3, #8]
-}
- 8007960: bf00 nop
- 8007962: 371c adds r7, #28
- 8007964: 46bd mov sp, r7
- 8007966: f85d 7b04 ldr.w r7, [sp], #4
- 800796a: 4770 bx lr
-
-0800796c <TIM_CCxChannelCmd>:
- * @param ChannelState specifies the TIM Channel CCxE bit new state.
- * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE.
- * @retval None
- */
-void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState)
-{
- 800796c: b480 push {r7}
- 800796e: b087 sub sp, #28
- 8007970: af00 add r7, sp, #0
- 8007972: 60f8 str r0, [r7, #12]
- 8007974: 60b9 str r1, [r7, #8]
- 8007976: 607a str r2, [r7, #4]
-
- /* Check the parameters */
- assert_param(IS_TIM_CC1_INSTANCE(TIMx));
- assert_param(IS_TIM_CHANNELS(Channel));
-
- tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */
- 8007978: 68bb ldr r3, [r7, #8]
- 800797a: f003 031f and.w r3, r3, #31
- 800797e: 2201 movs r2, #1
- 8007980: fa02 f303 lsl.w r3, r2, r3
- 8007984: 617b str r3, [r7, #20]
-
- /* Reset the CCxE Bit */
- TIMx->CCER &= ~tmp;
- 8007986: 68fb ldr r3, [r7, #12]
- 8007988: 6a1a ldr r2, [r3, #32]
- 800798a: 697b ldr r3, [r7, #20]
- 800798c: 43db mvns r3, r3
- 800798e: 401a ands r2, r3
- 8007990: 68fb ldr r3, [r7, #12]
- 8007992: 621a str r2, [r3, #32]
-
- /* Set or reset the CCxE Bit */
- TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */
- 8007994: 68fb ldr r3, [r7, #12]
- 8007996: 6a1a ldr r2, [r3, #32]
- 8007998: 68bb ldr r3, [r7, #8]
- 800799a: f003 031f and.w r3, r3, #31
- 800799e: 6879 ldr r1, [r7, #4]
- 80079a0: fa01 f303 lsl.w r3, r1, r3
- 80079a4: 431a orrs r2, r3
- 80079a6: 68fb ldr r3, [r7, #12]
- 80079a8: 621a str r2, [r3, #32]
-}
- 80079aa: bf00 nop
- 80079ac: 371c adds r7, #28
- 80079ae: 46bd mov sp, r7
- 80079b0: f85d 7b04 ldr.w r7, [sp], #4
- 80079b4: 4770 bx lr
- ...
-
-080079b8 <HAL_TIMEx_MasterConfigSynchronization>:
- * mode.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
- TIM_MasterConfigTypeDef *sMasterConfig)
-{
- 80079b8: b480 push {r7}
- 80079ba: b085 sub sp, #20
- 80079bc: af00 add r7, sp, #0
- 80079be: 6078 str r0, [r7, #4]
- 80079c0: 6039 str r1, [r7, #0]
- assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));
- assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
- assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
-
- /* Check input state */
- __HAL_LOCK(htim);
- 80079c2: 687b ldr r3, [r7, #4]
- 80079c4: f893 303c ldrb.w r3, [r3, #60] ; 0x3c
- 80079c8: 2b01 cmp r3, #1
- 80079ca: d101 bne.n 80079d0 <HAL_TIMEx_MasterConfigSynchronization+0x18>
- 80079cc: 2302 movs r3, #2
- 80079ce: e045 b.n 8007a5c <HAL_TIMEx_MasterConfigSynchronization+0xa4>
- 80079d0: 687b ldr r3, [r7, #4]
- 80079d2: 2201 movs r2, #1
- 80079d4: f883 203c strb.w r2, [r3, #60] ; 0x3c
-
- /* Change the handler state */
- htim->State = HAL_TIM_STATE_BUSY;
- 80079d8: 687b ldr r3, [r7, #4]
- 80079da: 2202 movs r2, #2
- 80079dc: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- /* Get the TIMx CR2 register value */
- tmpcr2 = htim->Instance->CR2;
- 80079e0: 687b ldr r3, [r7, #4]
- 80079e2: 681b ldr r3, [r3, #0]
- 80079e4: 685b ldr r3, [r3, #4]
- 80079e6: 60fb str r3, [r7, #12]
-
- /* Get the TIMx SMCR register value */
- tmpsmcr = htim->Instance->SMCR;
- 80079e8: 687b ldr r3, [r7, #4]
- 80079ea: 681b ldr r3, [r3, #0]
- 80079ec: 689b ldr r3, [r3, #8]
- 80079ee: 60bb str r3, [r7, #8]
-
- /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */
- if (IS_TIM_TRGO2_INSTANCE(htim->Instance))
- 80079f0: 687b ldr r3, [r7, #4]
- 80079f2: 681b ldr r3, [r3, #0]
- 80079f4: 4a1c ldr r2, [pc, #112] ; (8007a68 <HAL_TIMEx_MasterConfigSynchronization+0xb0>)
- 80079f6: 4293 cmp r3, r2
- 80079f8: d004 beq.n 8007a04 <HAL_TIMEx_MasterConfigSynchronization+0x4c>
- 80079fa: 687b ldr r3, [r7, #4]
- 80079fc: 681b ldr r3, [r3, #0]
- 80079fe: 4a1b ldr r2, [pc, #108] ; (8007a6c <HAL_TIMEx_MasterConfigSynchronization+0xb4>)
- 8007a00: 4293 cmp r3, r2
- 8007a02: d108 bne.n 8007a16 <HAL_TIMEx_MasterConfigSynchronization+0x5e>
- {
- /* Check the parameters */
- assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2));
-
- /* Clear the MMS2 bits */
- tmpcr2 &= ~TIM_CR2_MMS2;
- 8007a04: 68fb ldr r3, [r7, #12]
- 8007a06: f423 0370 bic.w r3, r3, #15728640 ; 0xf00000
- 8007a0a: 60fb str r3, [r7, #12]
- /* Select the TRGO2 source*/
- tmpcr2 |= sMasterConfig->MasterOutputTrigger2;
- 8007a0c: 683b ldr r3, [r7, #0]
- 8007a0e: 685b ldr r3, [r3, #4]
- 8007a10: 68fa ldr r2, [r7, #12]
- 8007a12: 4313 orrs r3, r2
- 8007a14: 60fb str r3, [r7, #12]
- }
-
- /* Reset the MMS Bits */
- tmpcr2 &= ~TIM_CR2_MMS;
- 8007a16: 68fb ldr r3, [r7, #12]
- 8007a18: f023 0370 bic.w r3, r3, #112 ; 0x70
- 8007a1c: 60fb str r3, [r7, #12]
- /* Select the TRGO source */
- tmpcr2 |= sMasterConfig->MasterOutputTrigger;
- 8007a1e: 683b ldr r3, [r7, #0]
- 8007a20: 681b ldr r3, [r3, #0]
- 8007a22: 68fa ldr r2, [r7, #12]
- 8007a24: 4313 orrs r3, r2
- 8007a26: 60fb str r3, [r7, #12]
-
- /* Reset the MSM Bit */
- tmpsmcr &= ~TIM_SMCR_MSM;
- 8007a28: 68bb ldr r3, [r7, #8]
- 8007a2a: f023 0380 bic.w r3, r3, #128 ; 0x80
- 8007a2e: 60bb str r3, [r7, #8]
- /* Set master mode */
- tmpsmcr |= sMasterConfig->MasterSlaveMode;
- 8007a30: 683b ldr r3, [r7, #0]
- 8007a32: 689b ldr r3, [r3, #8]
- 8007a34: 68ba ldr r2, [r7, #8]
- 8007a36: 4313 orrs r3, r2
- 8007a38: 60bb str r3, [r7, #8]
-
- /* Update TIMx CR2 */
- htim->Instance->CR2 = tmpcr2;
- 8007a3a: 687b ldr r3, [r7, #4]
- 8007a3c: 681b ldr r3, [r3, #0]
- 8007a3e: 68fa ldr r2, [r7, #12]
- 8007a40: 605a str r2, [r3, #4]
-
- /* Update TIMx SMCR */
- htim->Instance->SMCR = tmpsmcr;
- 8007a42: 687b ldr r3, [r7, #4]
- 8007a44: 681b ldr r3, [r3, #0]
- 8007a46: 68ba ldr r2, [r7, #8]
- 8007a48: 609a str r2, [r3, #8]
-
- /* Change the htim state */
- htim->State = HAL_TIM_STATE_READY;
- 8007a4a: 687b ldr r3, [r7, #4]
- 8007a4c: 2201 movs r2, #1
- 8007a4e: f883 203d strb.w r2, [r3, #61] ; 0x3d
-
- __HAL_UNLOCK(htim);
- 8007a52: 687b ldr r3, [r7, #4]
- 8007a54: 2200 movs r2, #0
- 8007a56: f883 203c strb.w r2, [r3, #60] ; 0x3c
-
- return HAL_OK;
- 8007a5a: 2300 movs r3, #0
-}
- 8007a5c: 4618 mov r0, r3
- 8007a5e: 3714 adds r7, #20
- 8007a60: 46bd mov sp, r7
- 8007a62: f85d 7b04 ldr.w r7, [sp], #4
- 8007a66: 4770 bx lr
- 8007a68: 40010000 .word 0x40010000
- 8007a6c: 40010400 .word 0x40010400
-
-08007a70 <HAL_TIMEx_CommutCallback>:
- * @brief Hall commutation changed callback in non-blocking mode
- * @param htim TIM handle
- * @retval None
- */
-__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim)
-{
- 8007a70: b480 push {r7}
- 8007a72: b083 sub sp, #12
- 8007a74: af00 add r7, sp, #0
- 8007a76: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_TIMEx_CommutCallback could be implemented in the user file
- */
-}
- 8007a78: bf00 nop
- 8007a7a: 370c adds r7, #12
- 8007a7c: 46bd mov sp, r7
- 8007a7e: f85d 7b04 ldr.w r7, [sp], #4
- 8007a82: 4770 bx lr
-
-08007a84 <HAL_TIMEx_BreakCallback>:
- * @brief Hall Break detection callback in non-blocking mode
- * @param htim TIM handle
- * @retval None
- */
-__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)
-{
- 8007a84: b480 push {r7}
- 8007a86: b083 sub sp, #12
- 8007a88: af00 add r7, sp, #0
- 8007a8a: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_TIMEx_BreakCallback could be implemented in the user file
- */
-}
- 8007a8c: bf00 nop
- 8007a8e: 370c adds r7, #12
- 8007a90: 46bd mov sp, r7
- 8007a92: f85d 7b04 ldr.w r7, [sp], #4
- 8007a96: 4770 bx lr
-
-08007a98 <HAL_TIMEx_Break2Callback>:
- * @brief Hall Break2 detection callback in non blocking mode
- * @param htim: TIM handle
- * @retval None
- */
-__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim)
-{
- 8007a98: b480 push {r7}
- 8007a9a: b083 sub sp, #12
- 8007a9c: af00 add r7, sp, #0
- 8007a9e: 6078 str r0, [r7, #4]
- UNUSED(htim);
-
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_TIMEx_Break2Callback could be implemented in the user file
- */
-}
- 8007aa0: bf00 nop
- 8007aa2: 370c adds r7, #12
- 8007aa4: 46bd mov sp, r7
- 8007aa6: f85d 7b04 ldr.w r7, [sp], #4
- 8007aaa: 4770 bx lr
-
-08007aac <HAL_UART_Init>:
- * parameters in the UART_InitTypeDef and initialize the associated handle.
- * @param huart UART handle.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
-{
- 8007aac: b580 push {r7, lr}
- 8007aae: b082 sub sp, #8
- 8007ab0: af00 add r7, sp, #0
- 8007ab2: 6078 str r0, [r7, #4]
- /* Check the UART handle allocation */
- if (huart == NULL)
- 8007ab4: 687b ldr r3, [r7, #4]
- 8007ab6: 2b00 cmp r3, #0
- 8007ab8: d101 bne.n 8007abe <HAL_UART_Init+0x12>
- {
- return HAL_ERROR;
- 8007aba: 2301 movs r3, #1
- 8007abc: e040 b.n 8007b40 <HAL_UART_Init+0x94>
- {
- /* Check the parameters */
- assert_param(IS_UART_INSTANCE(huart->Instance));
- }
-
- if (huart->gState == HAL_UART_STATE_RESET)
- 8007abe: 687b ldr r3, [r7, #4]
- 8007ac0: 6f5b ldr r3, [r3, #116] ; 0x74
- 8007ac2: 2b00 cmp r3, #0
- 8007ac4: d106 bne.n 8007ad4 <HAL_UART_Init+0x28>
- {
- /* Allocate lock resource and initialize it */
- huart->Lock = HAL_UNLOCKED;
- 8007ac6: 687b ldr r3, [r7, #4]
- 8007ac8: 2200 movs r2, #0
- 8007aca: f883 2070 strb.w r2, [r3, #112] ; 0x70
-
- /* Init the low level hardware */
- huart->MspInitCallback(huart);
-#else
- /* Init the low level hardware : GPIO, CLOCK */
- HAL_UART_MspInit(huart);
- 8007ace: 6878 ldr r0, [r7, #4]
- 8007ad0: f7fd fa38 bl 8004f44 <HAL_UART_MspInit>
-#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
- }
-
- huart->gState = HAL_UART_STATE_BUSY;
- 8007ad4: 687b ldr r3, [r7, #4]
- 8007ad6: 2224 movs r2, #36 ; 0x24
- 8007ad8: 675a str r2, [r3, #116] ; 0x74
-
- /* Disable the Peripheral */
- __HAL_UART_DISABLE(huart);
- 8007ada: 687b ldr r3, [r7, #4]
- 8007adc: 681b ldr r3, [r3, #0]
- 8007ade: 681a ldr r2, [r3, #0]
- 8007ae0: 687b ldr r3, [r7, #4]
- 8007ae2: 681b ldr r3, [r3, #0]
- 8007ae4: f022 0201 bic.w r2, r2, #1
- 8007ae8: 601a str r2, [r3, #0]
-
- /* Set the UART Communication parameters */
- if (UART_SetConfig(huart) == HAL_ERROR)
- 8007aea: 6878 ldr r0, [r7, #4]
- 8007aec: f000 fa90 bl 8008010 <UART_SetConfig>
- 8007af0: 4603 mov r3, r0
- 8007af2: 2b01 cmp r3, #1
- 8007af4: d101 bne.n 8007afa <HAL_UART_Init+0x4e>
- {
- return HAL_ERROR;
- 8007af6: 2301 movs r3, #1
- 8007af8: e022 b.n 8007b40 <HAL_UART_Init+0x94>
- }
-
- if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)
- 8007afa: 687b ldr r3, [r7, #4]
- 8007afc: 6a5b ldr r3, [r3, #36] ; 0x24
- 8007afe: 2b00 cmp r3, #0
- 8007b00: d002 beq.n 8007b08 <HAL_UART_Init+0x5c>
- {
- UART_AdvFeatureConfig(huart);
- 8007b02: 6878 ldr r0, [r7, #4]
- 8007b04: f000 fd28 bl 8008558 <UART_AdvFeatureConfig>
- }
-
- /* In asynchronous mode, the following bits must be kept cleared:
- - LINEN and CLKEN bits in the USART_CR2 register,
- - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/
- CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
- 8007b08: 687b ldr r3, [r7, #4]
- 8007b0a: 681b ldr r3, [r3, #0]
- 8007b0c: 685a ldr r2, [r3, #4]
- 8007b0e: 687b ldr r3, [r7, #4]
- 8007b10: 681b ldr r3, [r3, #0]
- 8007b12: f422 4290 bic.w r2, r2, #18432 ; 0x4800
- 8007b16: 605a str r2, [r3, #4]
- CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
- 8007b18: 687b ldr r3, [r7, #4]
- 8007b1a: 681b ldr r3, [r3, #0]
- 8007b1c: 689a ldr r2, [r3, #8]
- 8007b1e: 687b ldr r3, [r7, #4]
- 8007b20: 681b ldr r3, [r3, #0]
- 8007b22: f022 022a bic.w r2, r2, #42 ; 0x2a
- 8007b26: 609a str r2, [r3, #8]
-
- /* Enable the Peripheral */
- __HAL_UART_ENABLE(huart);
- 8007b28: 687b ldr r3, [r7, #4]
- 8007b2a: 681b ldr r3, [r3, #0]
- 8007b2c: 681a ldr r2, [r3, #0]
- 8007b2e: 687b ldr r3, [r7, #4]
- 8007b30: 681b ldr r3, [r3, #0]
- 8007b32: f042 0201 orr.w r2, r2, #1
- 8007b36: 601a str r2, [r3, #0]
-
- /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
- return (UART_CheckIdleState(huart));
- 8007b38: 6878 ldr r0, [r7, #4]
- 8007b3a: f000 fdaf bl 800869c <UART_CheckIdleState>
- 8007b3e: 4603 mov r3, r0
-}
- 8007b40: 4618 mov r0, r3
- 8007b42: 3708 adds r7, #8
- 8007b44: 46bd mov sp, r7
- 8007b46: bd80 pop {r7, pc}
-
-08007b48 <HAL_UART_Transmit>:
- * @param Size Amount of data to be sent.
- * @param Timeout Timeout duration.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
-{
- 8007b48: b580 push {r7, lr}
- 8007b4a: b08a sub sp, #40 ; 0x28
- 8007b4c: af02 add r7, sp, #8
- 8007b4e: 60f8 str r0, [r7, #12]
- 8007b50: 60b9 str r1, [r7, #8]
- 8007b52: 603b str r3, [r7, #0]
- 8007b54: 4613 mov r3, r2
- 8007b56: 80fb strh r3, [r7, #6]
- uint8_t *pdata8bits;
- uint16_t *pdata16bits;
- uint32_t tickstart;
-
- /* Check that a Tx process is not already ongoing */
- if (huart->gState == HAL_UART_STATE_READY)
- 8007b58: 68fb ldr r3, [r7, #12]
- 8007b5a: 6f5b ldr r3, [r3, #116] ; 0x74
- 8007b5c: 2b20 cmp r3, #32
- 8007b5e: d17f bne.n 8007c60 <HAL_UART_Transmit+0x118>
- {
- if ((pData == NULL) || (Size == 0U))
- 8007b60: 68bb ldr r3, [r7, #8]
- 8007b62: 2b00 cmp r3, #0
- 8007b64: d002 beq.n 8007b6c <HAL_UART_Transmit+0x24>
- 8007b66: 88fb ldrh r3, [r7, #6]
- 8007b68: 2b00 cmp r3, #0
- 8007b6a: d101 bne.n 8007b70 <HAL_UART_Transmit+0x28>
- {
- return HAL_ERROR;
- 8007b6c: 2301 movs r3, #1
- 8007b6e: e078 b.n 8007c62 <HAL_UART_Transmit+0x11a>
- }
-
- /* Process Locked */
- __HAL_LOCK(huart);
- 8007b70: 68fb ldr r3, [r7, #12]
- 8007b72: f893 3070 ldrb.w r3, [r3, #112] ; 0x70
- 8007b76: 2b01 cmp r3, #1
- 8007b78: d101 bne.n 8007b7e <HAL_UART_Transmit+0x36>
- 8007b7a: 2302 movs r3, #2
- 8007b7c: e071 b.n 8007c62 <HAL_UART_Transmit+0x11a>
- 8007b7e: 68fb ldr r3, [r7, #12]
- 8007b80: 2201 movs r2, #1
- 8007b82: f883 2070 strb.w r2, [r3, #112] ; 0x70
-
- huart->ErrorCode = HAL_UART_ERROR_NONE;
- 8007b86: 68fb ldr r3, [r7, #12]
- 8007b88: 2200 movs r2, #0
- 8007b8a: 67da str r2, [r3, #124] ; 0x7c
- huart->gState = HAL_UART_STATE_BUSY_TX;
- 8007b8c: 68fb ldr r3, [r7, #12]
- 8007b8e: 2221 movs r2, #33 ; 0x21
- 8007b90: 675a str r2, [r3, #116] ; 0x74
-
- /* Init tickstart for timeout managment*/
- tickstart = HAL_GetTick();
- 8007b92: f7fd fb1f bl 80051d4 <HAL_GetTick>
- 8007b96: 6178 str r0, [r7, #20]
-
- huart->TxXferSize = Size;
- 8007b98: 68fb ldr r3, [r7, #12]
- 8007b9a: 88fa ldrh r2, [r7, #6]
- 8007b9c: f8a3 2050 strh.w r2, [r3, #80] ; 0x50
- huart->TxXferCount = Size;
- 8007ba0: 68fb ldr r3, [r7, #12]
- 8007ba2: 88fa ldrh r2, [r7, #6]
- 8007ba4: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
-
- /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */
- if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
- 8007ba8: 68fb ldr r3, [r7, #12]
- 8007baa: 689b ldr r3, [r3, #8]
- 8007bac: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
- 8007bb0: d108 bne.n 8007bc4 <HAL_UART_Transmit+0x7c>
- 8007bb2: 68fb ldr r3, [r7, #12]
- 8007bb4: 691b ldr r3, [r3, #16]
- 8007bb6: 2b00 cmp r3, #0
- 8007bb8: d104 bne.n 8007bc4 <HAL_UART_Transmit+0x7c>
- {
- pdata8bits = NULL;
- 8007bba: 2300 movs r3, #0
- 8007bbc: 61fb str r3, [r7, #28]
- pdata16bits = (uint16_t *) pData;
- 8007bbe: 68bb ldr r3, [r7, #8]
- 8007bc0: 61bb str r3, [r7, #24]
- 8007bc2: e003 b.n 8007bcc <HAL_UART_Transmit+0x84>
- }
- else
- {
- pdata8bits = pData;
- 8007bc4: 68bb ldr r3, [r7, #8]
- 8007bc6: 61fb str r3, [r7, #28]
- pdata16bits = NULL;
- 8007bc8: 2300 movs r3, #0
- 8007bca: 61bb str r3, [r7, #24]
- }
-
- while (huart->TxXferCount > 0U)
- 8007bcc: e02c b.n 8007c28 <HAL_UART_Transmit+0xe0>
- {
- if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
- 8007bce: 683b ldr r3, [r7, #0]
- 8007bd0: 9300 str r3, [sp, #0]
- 8007bd2: 697b ldr r3, [r7, #20]
- 8007bd4: 2200 movs r2, #0
- 8007bd6: 2180 movs r1, #128 ; 0x80
- 8007bd8: 68f8 ldr r0, [r7, #12]
- 8007bda: f000 fd8e bl 80086fa <UART_WaitOnFlagUntilTimeout>
- 8007bde: 4603 mov r3, r0
- 8007be0: 2b00 cmp r3, #0
- 8007be2: d001 beq.n 8007be8 <HAL_UART_Transmit+0xa0>
- {
- return HAL_TIMEOUT;
- 8007be4: 2303 movs r3, #3
- 8007be6: e03c b.n 8007c62 <HAL_UART_Transmit+0x11a>
- }
- if (pdata8bits == NULL)
- 8007be8: 69fb ldr r3, [r7, #28]
- 8007bea: 2b00 cmp r3, #0
- 8007bec: d10b bne.n 8007c06 <HAL_UART_Transmit+0xbe>
- {
- huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU);
- 8007bee: 69bb ldr r3, [r7, #24]
- 8007bf0: 881b ldrh r3, [r3, #0]
- 8007bf2: 461a mov r2, r3
- 8007bf4: 68fb ldr r3, [r7, #12]
- 8007bf6: 681b ldr r3, [r3, #0]
- 8007bf8: f3c2 0208 ubfx r2, r2, #0, #9
- 8007bfc: 629a str r2, [r3, #40] ; 0x28
- pdata16bits++;
- 8007bfe: 69bb ldr r3, [r7, #24]
- 8007c00: 3302 adds r3, #2
- 8007c02: 61bb str r3, [r7, #24]
- 8007c04: e007 b.n 8007c16 <HAL_UART_Transmit+0xce>
- }
- else
- {
- huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU);
- 8007c06: 69fb ldr r3, [r7, #28]
- 8007c08: 781a ldrb r2, [r3, #0]
- 8007c0a: 68fb ldr r3, [r7, #12]
- 8007c0c: 681b ldr r3, [r3, #0]
- 8007c0e: 629a str r2, [r3, #40] ; 0x28
- pdata8bits++;
- 8007c10: 69fb ldr r3, [r7, #28]
- 8007c12: 3301 adds r3, #1
- 8007c14: 61fb str r3, [r7, #28]
- }
- huart->TxXferCount--;
- 8007c16: 68fb ldr r3, [r7, #12]
- 8007c18: f8b3 3052 ldrh.w r3, [r3, #82] ; 0x52
- 8007c1c: b29b uxth r3, r3
- 8007c1e: 3b01 subs r3, #1
- 8007c20: b29a uxth r2, r3
- 8007c22: 68fb ldr r3, [r7, #12]
- 8007c24: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
- while (huart->TxXferCount > 0U)
- 8007c28: 68fb ldr r3, [r7, #12]
- 8007c2a: f8b3 3052 ldrh.w r3, [r3, #82] ; 0x52
- 8007c2e: b29b uxth r3, r3
- 8007c30: 2b00 cmp r3, #0
- 8007c32: d1cc bne.n 8007bce <HAL_UART_Transmit+0x86>
- }
-
- if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)
- 8007c34: 683b ldr r3, [r7, #0]
- 8007c36: 9300 str r3, [sp, #0]
- 8007c38: 697b ldr r3, [r7, #20]
- 8007c3a: 2200 movs r2, #0
- 8007c3c: 2140 movs r1, #64 ; 0x40
- 8007c3e: 68f8 ldr r0, [r7, #12]
- 8007c40: f000 fd5b bl 80086fa <UART_WaitOnFlagUntilTimeout>
- 8007c44: 4603 mov r3, r0
- 8007c46: 2b00 cmp r3, #0
- 8007c48: d001 beq.n 8007c4e <HAL_UART_Transmit+0x106>
- {
- return HAL_TIMEOUT;
- 8007c4a: 2303 movs r3, #3
- 8007c4c: e009 b.n 8007c62 <HAL_UART_Transmit+0x11a>
- }
-
- /* At end of Tx process, restore huart->gState to Ready */
- huart->gState = HAL_UART_STATE_READY;
- 8007c4e: 68fb ldr r3, [r7, #12]
- 8007c50: 2220 movs r2, #32
- 8007c52: 675a str r2, [r3, #116] ; 0x74
-
- /* Process Unlocked */
- __HAL_UNLOCK(huart);
- 8007c54: 68fb ldr r3, [r7, #12]
- 8007c56: 2200 movs r2, #0
- 8007c58: f883 2070 strb.w r2, [r3, #112] ; 0x70
-
- return HAL_OK;
- 8007c5c: 2300 movs r3, #0
- 8007c5e: e000 b.n 8007c62 <HAL_UART_Transmit+0x11a>
- }
- else
- {
- return HAL_BUSY;
- 8007c60: 2302 movs r3, #2
- }
-}
- 8007c62: 4618 mov r0, r3
- 8007c64: 3720 adds r7, #32
- 8007c66: 46bd mov sp, r7
- 8007c68: bd80 pop {r7, pc}
- ...
-
-08007c6c <HAL_UART_Receive_IT>:
- * @param pData Pointer to data buffer.
- * @param Size Amount of data to be received.
- * @retval HAL status
- */
-HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
-{
- 8007c6c: b480 push {r7}
- 8007c6e: b085 sub sp, #20
- 8007c70: af00 add r7, sp, #0
- 8007c72: 60f8 str r0, [r7, #12]
- 8007c74: 60b9 str r1, [r7, #8]
- 8007c76: 4613 mov r3, r2
- 8007c78: 80fb strh r3, [r7, #6]
- /* Check that a Rx process is not already ongoing */
- if (huart->RxState == HAL_UART_STATE_READY)
- 8007c7a: 68fb ldr r3, [r7, #12]
- 8007c7c: 6f9b ldr r3, [r3, #120] ; 0x78
- 8007c7e: 2b20 cmp r3, #32
- 8007c80: f040 808a bne.w 8007d98 <HAL_UART_Receive_IT+0x12c>
- {
- if ((pData == NULL) || (Size == 0U))
- 8007c84: 68bb ldr r3, [r7, #8]
- 8007c86: 2b00 cmp r3, #0
- 8007c88: d002 beq.n 8007c90 <HAL_UART_Receive_IT+0x24>
- 8007c8a: 88fb ldrh r3, [r7, #6]
- 8007c8c: 2b00 cmp r3, #0
- 8007c8e: d101 bne.n 8007c94 <HAL_UART_Receive_IT+0x28>
- {
- return HAL_ERROR;
- 8007c90: 2301 movs r3, #1
- 8007c92: e082 b.n 8007d9a <HAL_UART_Receive_IT+0x12e>
- }
-
- /* Process Locked */
- __HAL_LOCK(huart);
- 8007c94: 68fb ldr r3, [r7, #12]
- 8007c96: f893 3070 ldrb.w r3, [r3, #112] ; 0x70
- 8007c9a: 2b01 cmp r3, #1
- 8007c9c: d101 bne.n 8007ca2 <HAL_UART_Receive_IT+0x36>
- 8007c9e: 2302 movs r3, #2
- 8007ca0: e07b b.n 8007d9a <HAL_UART_Receive_IT+0x12e>
- 8007ca2: 68fb ldr r3, [r7, #12]
- 8007ca4: 2201 movs r2, #1
- 8007ca6: f883 2070 strb.w r2, [r3, #112] ; 0x70
-
- huart->pRxBuffPtr = pData;
- 8007caa: 68fb ldr r3, [r7, #12]
- 8007cac: 68ba ldr r2, [r7, #8]
- 8007cae: 655a str r2, [r3, #84] ; 0x54
- huart->RxXferSize = Size;
- 8007cb0: 68fb ldr r3, [r7, #12]
- 8007cb2: 88fa ldrh r2, [r7, #6]
- 8007cb4: f8a3 2058 strh.w r2, [r3, #88] ; 0x58
- huart->RxXferCount = Size;
- 8007cb8: 68fb ldr r3, [r7, #12]
- 8007cba: 88fa ldrh r2, [r7, #6]
- 8007cbc: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
- huart->RxISR = NULL;
- 8007cc0: 68fb ldr r3, [r7, #12]
- 8007cc2: 2200 movs r2, #0
- 8007cc4: 661a str r2, [r3, #96] ; 0x60
-
- /* Computation of UART mask to apply to RDR register */
- UART_MASK_COMPUTATION(huart);
- 8007cc6: 68fb ldr r3, [r7, #12]
- 8007cc8: 689b ldr r3, [r3, #8]
- 8007cca: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
- 8007cce: d10e bne.n 8007cee <HAL_UART_Receive_IT+0x82>
- 8007cd0: 68fb ldr r3, [r7, #12]
- 8007cd2: 691b ldr r3, [r3, #16]
- 8007cd4: 2b00 cmp r3, #0
- 8007cd6: d105 bne.n 8007ce4 <HAL_UART_Receive_IT+0x78>
- 8007cd8: 68fb ldr r3, [r7, #12]
- 8007cda: f240 12ff movw r2, #511 ; 0x1ff
- 8007cde: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
- 8007ce2: e02d b.n 8007d40 <HAL_UART_Receive_IT+0xd4>
- 8007ce4: 68fb ldr r3, [r7, #12]
- 8007ce6: 22ff movs r2, #255 ; 0xff
- 8007ce8: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
- 8007cec: e028 b.n 8007d40 <HAL_UART_Receive_IT+0xd4>
- 8007cee: 68fb ldr r3, [r7, #12]
- 8007cf0: 689b ldr r3, [r3, #8]
- 8007cf2: 2b00 cmp r3, #0
- 8007cf4: d10d bne.n 8007d12 <HAL_UART_Receive_IT+0xa6>
- 8007cf6: 68fb ldr r3, [r7, #12]
- 8007cf8: 691b ldr r3, [r3, #16]
- 8007cfa: 2b00 cmp r3, #0
- 8007cfc: d104 bne.n 8007d08 <HAL_UART_Receive_IT+0x9c>
- 8007cfe: 68fb ldr r3, [r7, #12]
- 8007d00: 22ff movs r2, #255 ; 0xff
- 8007d02: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
- 8007d06: e01b b.n 8007d40 <HAL_UART_Receive_IT+0xd4>
- 8007d08: 68fb ldr r3, [r7, #12]
- 8007d0a: 227f movs r2, #127 ; 0x7f
- 8007d0c: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
- 8007d10: e016 b.n 8007d40 <HAL_UART_Receive_IT+0xd4>
- 8007d12: 68fb ldr r3, [r7, #12]
- 8007d14: 689b ldr r3, [r3, #8]
- 8007d16: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000
- 8007d1a: d10d bne.n 8007d38 <HAL_UART_Receive_IT+0xcc>
- 8007d1c: 68fb ldr r3, [r7, #12]
- 8007d1e: 691b ldr r3, [r3, #16]
- 8007d20: 2b00 cmp r3, #0
- 8007d22: d104 bne.n 8007d2e <HAL_UART_Receive_IT+0xc2>
- 8007d24: 68fb ldr r3, [r7, #12]
- 8007d26: 227f movs r2, #127 ; 0x7f
- 8007d28: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
- 8007d2c: e008 b.n 8007d40 <HAL_UART_Receive_IT+0xd4>
- 8007d2e: 68fb ldr r3, [r7, #12]
- 8007d30: 223f movs r2, #63 ; 0x3f
- 8007d32: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
- 8007d36: e003 b.n 8007d40 <HAL_UART_Receive_IT+0xd4>
- 8007d38: 68fb ldr r3, [r7, #12]
- 8007d3a: 2200 movs r2, #0
- 8007d3c: f8a3 205c strh.w r2, [r3, #92] ; 0x5c
-
- huart->ErrorCode = HAL_UART_ERROR_NONE;
- 8007d40: 68fb ldr r3, [r7, #12]
- 8007d42: 2200 movs r2, #0
- 8007d44: 67da str r2, [r3, #124] ; 0x7c
- huart->RxState = HAL_UART_STATE_BUSY_RX;
- 8007d46: 68fb ldr r3, [r7, #12]
- 8007d48: 2222 movs r2, #34 ; 0x22
- 8007d4a: 679a str r2, [r3, #120] ; 0x78
-
- /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
- SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 8007d4c: 68fb ldr r3, [r7, #12]
- 8007d4e: 681b ldr r3, [r3, #0]
- 8007d50: 689a ldr r2, [r3, #8]
- 8007d52: 68fb ldr r3, [r7, #12]
- 8007d54: 681b ldr r3, [r3, #0]
- 8007d56: f042 0201 orr.w r2, r2, #1
- 8007d5a: 609a str r2, [r3, #8]
-
- /* Set the Rx ISR function pointer according to the data word length */
- if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
- 8007d5c: 68fb ldr r3, [r7, #12]
- 8007d5e: 689b ldr r3, [r3, #8]
- 8007d60: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
- 8007d64: d107 bne.n 8007d76 <HAL_UART_Receive_IT+0x10a>
- 8007d66: 68fb ldr r3, [r7, #12]
- 8007d68: 691b ldr r3, [r3, #16]
- 8007d6a: 2b00 cmp r3, #0
- 8007d6c: d103 bne.n 8007d76 <HAL_UART_Receive_IT+0x10a>
- {
- huart->RxISR = UART_RxISR_16BIT;
- 8007d6e: 68fb ldr r3, [r7, #12]
- 8007d70: 4a0d ldr r2, [pc, #52] ; (8007da8 <HAL_UART_Receive_IT+0x13c>)
- 8007d72: 661a str r2, [r3, #96] ; 0x60
- 8007d74: e002 b.n 8007d7c <HAL_UART_Receive_IT+0x110>
- }
- else
- {
- huart->RxISR = UART_RxISR_8BIT;
- 8007d76: 68fb ldr r3, [r7, #12]
- 8007d78: 4a0c ldr r2, [pc, #48] ; (8007dac <HAL_UART_Receive_IT+0x140>)
- 8007d7a: 661a str r2, [r3, #96] ; 0x60
- }
-
- /* Process Unlocked */
- __HAL_UNLOCK(huart);
- 8007d7c: 68fb ldr r3, [r7, #12]
- 8007d7e: 2200 movs r2, #0
- 8007d80: f883 2070 strb.w r2, [r3, #112] ; 0x70
-
- /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */
- SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
- 8007d84: 68fb ldr r3, [r7, #12]
- 8007d86: 681b ldr r3, [r3, #0]
- 8007d88: 681a ldr r2, [r3, #0]
- 8007d8a: 68fb ldr r3, [r7, #12]
- 8007d8c: 681b ldr r3, [r3, #0]
- 8007d8e: f442 7290 orr.w r2, r2, #288 ; 0x120
- 8007d92: 601a str r2, [r3, #0]
-
- return HAL_OK;
- 8007d94: 2300 movs r3, #0
- 8007d96: e000 b.n 8007d9a <HAL_UART_Receive_IT+0x12e>
- }
- else
- {
- return HAL_BUSY;
- 8007d98: 2302 movs r3, #2
- }
-}
- 8007d9a: 4618 mov r0, r3
- 8007d9c: 3714 adds r7, #20
- 8007d9e: 46bd mov sp, r7
- 8007da0: f85d 7b04 ldr.w r7, [sp], #4
- 8007da4: 4770 bx lr
- 8007da6: bf00 nop
- 8007da8: 080088cf .word 0x080088cf
- 8007dac: 08008829 .word 0x08008829
-
-08007db0 <HAL_UART_IRQHandler>:
- * @brief Handle UART interrupt request.
- * @param huart UART handle.
- * @retval None
- */
-void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
-{
- 8007db0: b580 push {r7, lr}
- 8007db2: b088 sub sp, #32
- 8007db4: af00 add r7, sp, #0
- 8007db6: 6078 str r0, [r7, #4]
- uint32_t isrflags = READ_REG(huart->Instance->ISR);
- 8007db8: 687b ldr r3, [r7, #4]
- 8007dba: 681b ldr r3, [r3, #0]
- 8007dbc: 69db ldr r3, [r3, #28]
- 8007dbe: 61fb str r3, [r7, #28]
- uint32_t cr1its = READ_REG(huart->Instance->CR1);
- 8007dc0: 687b ldr r3, [r7, #4]
- 8007dc2: 681b ldr r3, [r3, #0]
- 8007dc4: 681b ldr r3, [r3, #0]
- 8007dc6: 61bb str r3, [r7, #24]
- uint32_t cr3its = READ_REG(huart->Instance->CR3);
- 8007dc8: 687b ldr r3, [r7, #4]
- 8007dca: 681b ldr r3, [r3, #0]
- 8007dcc: 689b ldr r3, [r3, #8]
- 8007dce: 617b str r3, [r7, #20]
-
- uint32_t errorflags;
- uint32_t errorcode;
-
- /* If no error occurs */
- errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE));
- 8007dd0: 69fb ldr r3, [r7, #28]
- 8007dd2: f003 030f and.w r3, r3, #15
- 8007dd6: 613b str r3, [r7, #16]
- if (errorflags == 0U)
- 8007dd8: 693b ldr r3, [r7, #16]
- 8007dda: 2b00 cmp r3, #0
- 8007ddc: d113 bne.n 8007e06 <HAL_UART_IRQHandler+0x56>
- {
- /* UART in mode Receiver ---------------------------------------------------*/
- if (((isrflags & USART_ISR_RXNE) != 0U)
- 8007dde: 69fb ldr r3, [r7, #28]
- 8007de0: f003 0320 and.w r3, r3, #32
- 8007de4: 2b00 cmp r3, #0
- 8007de6: d00e beq.n 8007e06 <HAL_UART_IRQHandler+0x56>
- && ((cr1its & USART_CR1_RXNEIE) != 0U))
- 8007de8: 69bb ldr r3, [r7, #24]
- 8007dea: f003 0320 and.w r3, r3, #32
- 8007dee: 2b00 cmp r3, #0
- 8007df0: d009 beq.n 8007e06 <HAL_UART_IRQHandler+0x56>
- {
- if (huart->RxISR != NULL)
- 8007df2: 687b ldr r3, [r7, #4]
- 8007df4: 6e1b ldr r3, [r3, #96] ; 0x60
- 8007df6: 2b00 cmp r3, #0
- 8007df8: f000 80eb beq.w 8007fd2 <HAL_UART_IRQHandler+0x222>
- {
- huart->RxISR(huart);
- 8007dfc: 687b ldr r3, [r7, #4]
- 8007dfe: 6e1b ldr r3, [r3, #96] ; 0x60
- 8007e00: 6878 ldr r0, [r7, #4]
- 8007e02: 4798 blx r3
- }
- return;
- 8007e04: e0e5 b.n 8007fd2 <HAL_UART_IRQHandler+0x222>
- }
- }
-
- /* If some errors occur */
- if ((errorflags != 0U)
- 8007e06: 693b ldr r3, [r7, #16]
- 8007e08: 2b00 cmp r3, #0
- 8007e0a: f000 80c0 beq.w 8007f8e <HAL_UART_IRQHandler+0x1de>
- && (((cr3its & USART_CR3_EIE) != 0U)
- 8007e0e: 697b ldr r3, [r7, #20]
- 8007e10: f003 0301 and.w r3, r3, #1
- 8007e14: 2b00 cmp r3, #0
- 8007e16: d105 bne.n 8007e24 <HAL_UART_IRQHandler+0x74>
- || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != 0U)))
- 8007e18: 69bb ldr r3, [r7, #24]
- 8007e1a: f403 7390 and.w r3, r3, #288 ; 0x120
- 8007e1e: 2b00 cmp r3, #0
- 8007e20: f000 80b5 beq.w 8007f8e <HAL_UART_IRQHandler+0x1de>
- {
- /* UART parity error interrupt occurred -------------------------------------*/
- if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))
- 8007e24: 69fb ldr r3, [r7, #28]
- 8007e26: f003 0301 and.w r3, r3, #1
- 8007e2a: 2b00 cmp r3, #0
- 8007e2c: d00e beq.n 8007e4c <HAL_UART_IRQHandler+0x9c>
- 8007e2e: 69bb ldr r3, [r7, #24]
- 8007e30: f403 7380 and.w r3, r3, #256 ; 0x100
- 8007e34: 2b00 cmp r3, #0
- 8007e36: d009 beq.n 8007e4c <HAL_UART_IRQHandler+0x9c>
- {
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);
- 8007e38: 687b ldr r3, [r7, #4]
- 8007e3a: 681b ldr r3, [r3, #0]
- 8007e3c: 2201 movs r2, #1
- 8007e3e: 621a str r2, [r3, #32]
-
- huart->ErrorCode |= HAL_UART_ERROR_PE;
- 8007e40: 687b ldr r3, [r7, #4]
- 8007e42: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8007e44: f043 0201 orr.w r2, r3, #1
- 8007e48: 687b ldr r3, [r7, #4]
- 8007e4a: 67da str r2, [r3, #124] ; 0x7c
- }
-
- /* UART frame error interrupt occurred --------------------------------------*/
- if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
- 8007e4c: 69fb ldr r3, [r7, #28]
- 8007e4e: f003 0302 and.w r3, r3, #2
- 8007e52: 2b00 cmp r3, #0
- 8007e54: d00e beq.n 8007e74 <HAL_UART_IRQHandler+0xc4>
- 8007e56: 697b ldr r3, [r7, #20]
- 8007e58: f003 0301 and.w r3, r3, #1
- 8007e5c: 2b00 cmp r3, #0
- 8007e5e: d009 beq.n 8007e74 <HAL_UART_IRQHandler+0xc4>
- {
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);
- 8007e60: 687b ldr r3, [r7, #4]
- 8007e62: 681b ldr r3, [r3, #0]
- 8007e64: 2202 movs r2, #2
- 8007e66: 621a str r2, [r3, #32]
-
- huart->ErrorCode |= HAL_UART_ERROR_FE;
- 8007e68: 687b ldr r3, [r7, #4]
- 8007e6a: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8007e6c: f043 0204 orr.w r2, r3, #4
- 8007e70: 687b ldr r3, [r7, #4]
- 8007e72: 67da str r2, [r3, #124] ; 0x7c
- }
-
- /* UART noise error interrupt occurred --------------------------------------*/
- if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
- 8007e74: 69fb ldr r3, [r7, #28]
- 8007e76: f003 0304 and.w r3, r3, #4
- 8007e7a: 2b00 cmp r3, #0
- 8007e7c: d00e beq.n 8007e9c <HAL_UART_IRQHandler+0xec>
- 8007e7e: 697b ldr r3, [r7, #20]
- 8007e80: f003 0301 and.w r3, r3, #1
- 8007e84: 2b00 cmp r3, #0
- 8007e86: d009 beq.n 8007e9c <HAL_UART_IRQHandler+0xec>
- {
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);
- 8007e88: 687b ldr r3, [r7, #4]
- 8007e8a: 681b ldr r3, [r3, #0]
- 8007e8c: 2204 movs r2, #4
- 8007e8e: 621a str r2, [r3, #32]
-
- huart->ErrorCode |= HAL_UART_ERROR_NE;
- 8007e90: 687b ldr r3, [r7, #4]
- 8007e92: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8007e94: f043 0202 orr.w r2, r3, #2
- 8007e98: 687b ldr r3, [r7, #4]
- 8007e9a: 67da str r2, [r3, #124] ; 0x7c
- }
-
- /* UART Over-Run interrupt occurred -----------------------------------------*/
- if (((isrflags & USART_ISR_ORE) != 0U)
- 8007e9c: 69fb ldr r3, [r7, #28]
- 8007e9e: f003 0308 and.w r3, r3, #8
- 8007ea2: 2b00 cmp r3, #0
- 8007ea4: d013 beq.n 8007ece <HAL_UART_IRQHandler+0x11e>
- && (((cr1its & USART_CR1_RXNEIE) != 0U) ||
- 8007ea6: 69bb ldr r3, [r7, #24]
- 8007ea8: f003 0320 and.w r3, r3, #32
- 8007eac: 2b00 cmp r3, #0
- 8007eae: d104 bne.n 8007eba <HAL_UART_IRQHandler+0x10a>
- ((cr3its & USART_CR3_EIE) != 0U)))
- 8007eb0: 697b ldr r3, [r7, #20]
- 8007eb2: f003 0301 and.w r3, r3, #1
- && (((cr1its & USART_CR1_RXNEIE) != 0U) ||
- 8007eb6: 2b00 cmp r3, #0
- 8007eb8: d009 beq.n 8007ece <HAL_UART_IRQHandler+0x11e>
- {
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
- 8007eba: 687b ldr r3, [r7, #4]
- 8007ebc: 681b ldr r3, [r3, #0]
- 8007ebe: 2208 movs r2, #8
- 8007ec0: 621a str r2, [r3, #32]
-
- huart->ErrorCode |= HAL_UART_ERROR_ORE;
- 8007ec2: 687b ldr r3, [r7, #4]
- 8007ec4: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8007ec6: f043 0208 orr.w r2, r3, #8
- 8007eca: 687b ldr r3, [r7, #4]
- 8007ecc: 67da str r2, [r3, #124] ; 0x7c
- }
-
- /* Call UART Error Call back function if need be --------------------------*/
- if (huart->ErrorCode != HAL_UART_ERROR_NONE)
- 8007ece: 687b ldr r3, [r7, #4]
- 8007ed0: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8007ed2: 2b00 cmp r3, #0
- 8007ed4: d07f beq.n 8007fd6 <HAL_UART_IRQHandler+0x226>
- {
- /* UART in mode Receiver ---------------------------------------------------*/
- if (((isrflags & USART_ISR_RXNE) != 0U)
- 8007ed6: 69fb ldr r3, [r7, #28]
- 8007ed8: f003 0320 and.w r3, r3, #32
- 8007edc: 2b00 cmp r3, #0
- 8007ede: d00c beq.n 8007efa <HAL_UART_IRQHandler+0x14a>
- && ((cr1its & USART_CR1_RXNEIE) != 0U))
- 8007ee0: 69bb ldr r3, [r7, #24]
- 8007ee2: f003 0320 and.w r3, r3, #32
- 8007ee6: 2b00 cmp r3, #0
- 8007ee8: d007 beq.n 8007efa <HAL_UART_IRQHandler+0x14a>
- {
- if (huart->RxISR != NULL)
- 8007eea: 687b ldr r3, [r7, #4]
- 8007eec: 6e1b ldr r3, [r3, #96] ; 0x60
- 8007eee: 2b00 cmp r3, #0
- 8007ef0: d003 beq.n 8007efa <HAL_UART_IRQHandler+0x14a>
- {
- huart->RxISR(huart);
- 8007ef2: 687b ldr r3, [r7, #4]
- 8007ef4: 6e1b ldr r3, [r3, #96] ; 0x60
- 8007ef6: 6878 ldr r0, [r7, #4]
- 8007ef8: 4798 blx r3
- }
- }
-
- /* If Overrun error occurs, or if any error occurs in DMA mode reception,
- consider error as blocking */
- errorcode = huart->ErrorCode;
- 8007efa: 687b ldr r3, [r7, #4]
- 8007efc: 6fdb ldr r3, [r3, #124] ; 0x7c
- 8007efe: 60fb str r3, [r7, #12]
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
- 8007f00: 687b ldr r3, [r7, #4]
- 8007f02: 681b ldr r3, [r3, #0]
- 8007f04: 689b ldr r3, [r3, #8]
- 8007f06: f003 0340 and.w r3, r3, #64 ; 0x40
- 8007f0a: 2b40 cmp r3, #64 ; 0x40
- 8007f0c: d004 beq.n 8007f18 <HAL_UART_IRQHandler+0x168>
- ((errorcode & HAL_UART_ERROR_ORE) != 0U))
- 8007f0e: 68fb ldr r3, [r7, #12]
- 8007f10: f003 0308 and.w r3, r3, #8
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
- 8007f14: 2b00 cmp r3, #0
- 8007f16: d031 beq.n 8007f7c <HAL_UART_IRQHandler+0x1cc>
- {
- /* Blocking error : transfer is aborted
- Set the UART state ready to be able to start again the process,
- Disable Rx Interrupts, and disable Rx DMA request, if ongoing */
- UART_EndRxTransfer(huart);
- 8007f18: 6878 ldr r0, [r7, #4]
- 8007f1a: f000 fc36 bl 800878a <UART_EndRxTransfer>
-
- /* Disable the UART DMA Rx request if enabled */
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 8007f1e: 687b ldr r3, [r7, #4]
- 8007f20: 681b ldr r3, [r3, #0]
- 8007f22: 689b ldr r3, [r3, #8]
- 8007f24: f003 0340 and.w r3, r3, #64 ; 0x40
- 8007f28: 2b40 cmp r3, #64 ; 0x40
- 8007f2a: d123 bne.n 8007f74 <HAL_UART_IRQHandler+0x1c4>
- {
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
- 8007f2c: 687b ldr r3, [r7, #4]
- 8007f2e: 681b ldr r3, [r3, #0]
- 8007f30: 689a ldr r2, [r3, #8]
- 8007f32: 687b ldr r3, [r7, #4]
- 8007f34: 681b ldr r3, [r3, #0]
- 8007f36: f022 0240 bic.w r2, r2, #64 ; 0x40
- 8007f3a: 609a str r2, [r3, #8]
-
- /* Abort the UART DMA Rx channel */
- if (huart->hdmarx != NULL)
- 8007f3c: 687b ldr r3, [r7, #4]
- 8007f3e: 6edb ldr r3, [r3, #108] ; 0x6c
- 8007f40: 2b00 cmp r3, #0
- 8007f42: d013 beq.n 8007f6c <HAL_UART_IRQHandler+0x1bc>
- {
- /* Set the UART DMA Abort callback :
- will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */
- huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError;
- 8007f44: 687b ldr r3, [r7, #4]
- 8007f46: 6edb ldr r3, [r3, #108] ; 0x6c
- 8007f48: 4a26 ldr r2, [pc, #152] ; (8007fe4 <HAL_UART_IRQHandler+0x234>)
- 8007f4a: 651a str r2, [r3, #80] ; 0x50
-
- /* Abort DMA RX */
- if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)
- 8007f4c: 687b ldr r3, [r7, #4]
- 8007f4e: 6edb ldr r3, [r3, #108] ; 0x6c
- 8007f50: 4618 mov r0, r3
- 8007f52: f7fd fa5c bl 800540e <HAL_DMA_Abort_IT>
- 8007f56: 4603 mov r3, r0
- 8007f58: 2b00 cmp r3, #0
- 8007f5a: d016 beq.n 8007f8a <HAL_UART_IRQHandler+0x1da>
- {
- /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */
- huart->hdmarx->XferAbortCallback(huart->hdmarx);
- 8007f5c: 687b ldr r3, [r7, #4]
- 8007f5e: 6edb ldr r3, [r3, #108] ; 0x6c
- 8007f60: 6d1b ldr r3, [r3, #80] ; 0x50
- 8007f62: 687a ldr r2, [r7, #4]
- 8007f64: 6ed2 ldr r2, [r2, #108] ; 0x6c
- 8007f66: 4610 mov r0, r2
- 8007f68: 4798 blx r3
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 8007f6a: e00e b.n 8007f8a <HAL_UART_IRQHandler+0x1da>
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
- /*Call registered error callback*/
- huart->ErrorCallback(huart);
-#else
- /*Call legacy weak error callback*/
- HAL_UART_ErrorCallback(huart);
- 8007f6c: 6878 ldr r0, [r7, #4]
- 8007f6e: f000 f845 bl 8007ffc <HAL_UART_ErrorCallback>
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 8007f72: e00a b.n 8007f8a <HAL_UART_IRQHandler+0x1da>
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
- /*Call registered error callback*/
- huart->ErrorCallback(huart);
-#else
- /*Call legacy weak error callback*/
- HAL_UART_ErrorCallback(huart);
- 8007f74: 6878 ldr r0, [r7, #4]
- 8007f76: f000 f841 bl 8007ffc <HAL_UART_ErrorCallback>
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 8007f7a: e006 b.n 8007f8a <HAL_UART_IRQHandler+0x1da>
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
- /*Call registered error callback*/
- huart->ErrorCallback(huart);
-#else
- /*Call legacy weak error callback*/
- HAL_UART_ErrorCallback(huart);
- 8007f7c: 6878 ldr r0, [r7, #4]
- 8007f7e: f000 f83d bl 8007ffc <HAL_UART_ErrorCallback>
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
- huart->ErrorCode = HAL_UART_ERROR_NONE;
- 8007f82: 687b ldr r3, [r7, #4]
- 8007f84: 2200 movs r2, #0
- 8007f86: 67da str r2, [r3, #124] ; 0x7c
- }
- }
- return;
- 8007f88: e025 b.n 8007fd6 <HAL_UART_IRQHandler+0x226>
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 8007f8a: bf00 nop
- return;
- 8007f8c: e023 b.n 8007fd6 <HAL_UART_IRQHandler+0x226>
-
- } /* End if some error occurs */
-
- /* UART in mode Transmitter ------------------------------------------------*/
- if (((isrflags & USART_ISR_TXE) != 0U)
- 8007f8e: 69fb ldr r3, [r7, #28]
- 8007f90: f003 0380 and.w r3, r3, #128 ; 0x80
- 8007f94: 2b00 cmp r3, #0
- 8007f96: d00d beq.n 8007fb4 <HAL_UART_IRQHandler+0x204>
- && ((cr1its & USART_CR1_TXEIE) != 0U))
- 8007f98: 69bb ldr r3, [r7, #24]
- 8007f9a: f003 0380 and.w r3, r3, #128 ; 0x80
- 8007f9e: 2b00 cmp r3, #0
- 8007fa0: d008 beq.n 8007fb4 <HAL_UART_IRQHandler+0x204>
- {
- if (huart->TxISR != NULL)
- 8007fa2: 687b ldr r3, [r7, #4]
- 8007fa4: 6e5b ldr r3, [r3, #100] ; 0x64
- 8007fa6: 2b00 cmp r3, #0
- 8007fa8: d017 beq.n 8007fda <HAL_UART_IRQHandler+0x22a>
- {
- huart->TxISR(huart);
- 8007faa: 687b ldr r3, [r7, #4]
- 8007fac: 6e5b ldr r3, [r3, #100] ; 0x64
- 8007fae: 6878 ldr r0, [r7, #4]
- 8007fb0: 4798 blx r3
- }
- return;
- 8007fb2: e012 b.n 8007fda <HAL_UART_IRQHandler+0x22a>
- }
-
- /* UART in mode Transmitter (transmission end) -----------------------------*/
- if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U))
- 8007fb4: 69fb ldr r3, [r7, #28]
- 8007fb6: f003 0340 and.w r3, r3, #64 ; 0x40
- 8007fba: 2b00 cmp r3, #0
- 8007fbc: d00e beq.n 8007fdc <HAL_UART_IRQHandler+0x22c>
- 8007fbe: 69bb ldr r3, [r7, #24]
- 8007fc0: f003 0340 and.w r3, r3, #64 ; 0x40
- 8007fc4: 2b00 cmp r3, #0
- 8007fc6: d009 beq.n 8007fdc <HAL_UART_IRQHandler+0x22c>
- {
- UART_EndTransmit_IT(huart);
- 8007fc8: 6878 ldr r0, [r7, #4]
- 8007fca: f000 fc14 bl 80087f6 <UART_EndTransmit_IT>
- return;
- 8007fce: bf00 nop
- 8007fd0: e004 b.n 8007fdc <HAL_UART_IRQHandler+0x22c>
- return;
- 8007fd2: bf00 nop
- 8007fd4: e002 b.n 8007fdc <HAL_UART_IRQHandler+0x22c>
- return;
- 8007fd6: bf00 nop
- 8007fd8: e000 b.n 8007fdc <HAL_UART_IRQHandler+0x22c>
- return;
- 8007fda: bf00 nop
- }
-
-}
- 8007fdc: 3720 adds r7, #32
- 8007fde: 46bd mov sp, r7
- 8007fe0: bd80 pop {r7, pc}
- 8007fe2: bf00 nop
- 8007fe4: 080087cb .word 0x080087cb
-
-08007fe8 <HAL_UART_TxCpltCallback>:
- * @brief Tx Transfer completed callback.
- * @param huart UART handle.
- * @retval None
- */
-__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
-{
- 8007fe8: b480 push {r7}
- 8007fea: b083 sub sp, #12
- 8007fec: af00 add r7, sp, #0
- 8007fee: 6078 str r0, [r7, #4]
- UNUSED(huart);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_UART_TxCpltCallback can be implemented in the user file.
- */
-}
- 8007ff0: bf00 nop
- 8007ff2: 370c adds r7, #12
- 8007ff4: 46bd mov sp, r7
- 8007ff6: f85d 7b04 ldr.w r7, [sp], #4
- 8007ffa: 4770 bx lr
-
-08007ffc <HAL_UART_ErrorCallback>:
- * @brief UART error callback.
- * @param huart UART handle.
- * @retval None
- */
-__weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
-{
- 8007ffc: b480 push {r7}
- 8007ffe: b083 sub sp, #12
- 8008000: af00 add r7, sp, #0
- 8008002: 6078 str r0, [r7, #4]
- UNUSED(huart);
-
- /* NOTE : This function should not be modified, when the callback is needed,
- the HAL_UART_ErrorCallback can be implemented in the user file.
- */
-}
- 8008004: bf00 nop
- 8008006: 370c adds r7, #12
- 8008008: 46bd mov sp, r7
- 800800a: f85d 7b04 ldr.w r7, [sp], #4
- 800800e: 4770 bx lr
-
-08008010 <UART_SetConfig>:
- * @brief Configure the UART peripheral.
- * @param huart UART handle.
- * @retval HAL status
- */
-HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
-{
- 8008010: b580 push {r7, lr}
- 8008012: b088 sub sp, #32
- 8008014: af00 add r7, sp, #0
- 8008016: 6078 str r0, [r7, #4]
- uint32_t tmpreg;
- uint16_t brrtemp;
- UART_ClockSourceTypeDef clocksource;
- uint32_t usartdiv = 0x00000000U;
- 8008018: 2300 movs r3, #0
- 800801a: 61bb str r3, [r7, #24]
- HAL_StatusTypeDef ret = HAL_OK;
- 800801c: 2300 movs r3, #0
- 800801e: 75fb strb r3, [r7, #23]
- * the UART Word Length, Parity, Mode and oversampling:
- * set the M bits according to huart->Init.WordLength value
- * set PCE and PS bits according to huart->Init.Parity value
- * set TE and RE bits according to huart->Init.Mode value
- * set OVER8 bit according to huart->Init.OverSampling value */
- tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
- 8008020: 687b ldr r3, [r7, #4]
- 8008022: 689a ldr r2, [r3, #8]
- 8008024: 687b ldr r3, [r7, #4]
- 8008026: 691b ldr r3, [r3, #16]
- 8008028: 431a orrs r2, r3
- 800802a: 687b ldr r3, [r7, #4]
- 800802c: 695b ldr r3, [r3, #20]
- 800802e: 431a orrs r2, r3
- 8008030: 687b ldr r3, [r7, #4]
- 8008032: 69db ldr r3, [r3, #28]
- 8008034: 4313 orrs r3, r2
- 8008036: 613b str r3, [r7, #16]
- MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
- 8008038: 687b ldr r3, [r7, #4]
- 800803a: 681b ldr r3, [r3, #0]
- 800803c: 681a ldr r2, [r3, #0]
- 800803e: 4bb1 ldr r3, [pc, #708] ; (8008304 <UART_SetConfig+0x2f4>)
- 8008040: 4013 ands r3, r2
- 8008042: 687a ldr r2, [r7, #4]
- 8008044: 6812 ldr r2, [r2, #0]
- 8008046: 6939 ldr r1, [r7, #16]
- 8008048: 430b orrs r3, r1
- 800804a: 6013 str r3, [r2, #0]
-
- /*-------------------------- USART CR2 Configuration -----------------------*/
- /* Configure the UART Stop Bits: Set STOP[13:12] bits according
- * to huart->Init.StopBits value */
- MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
- 800804c: 687b ldr r3, [r7, #4]
- 800804e: 681b ldr r3, [r3, #0]
- 8008050: 685b ldr r3, [r3, #4]
- 8008052: f423 5140 bic.w r1, r3, #12288 ; 0x3000
- 8008056: 687b ldr r3, [r7, #4]
- 8008058: 68da ldr r2, [r3, #12]
- 800805a: 687b ldr r3, [r7, #4]
- 800805c: 681b ldr r3, [r3, #0]
- 800805e: 430a orrs r2, r1
- 8008060: 605a str r2, [r3, #4]
- /* Configure
- * - UART HardWare Flow Control: set CTSE and RTSE bits according
- * to huart->Init.HwFlowCtl value
- * - one-bit sampling method versus three samples' majority rule according
- * to huart->Init.OneBitSampling (not applicable to LPUART) */
- tmpreg = (uint32_t)huart->Init.HwFlowCtl;
- 8008062: 687b ldr r3, [r7, #4]
- 8008064: 699b ldr r3, [r3, #24]
- 8008066: 613b str r3, [r7, #16]
-
- tmpreg |= huart->Init.OneBitSampling;
- 8008068: 687b ldr r3, [r7, #4]
- 800806a: 6a1b ldr r3, [r3, #32]
- 800806c: 693a ldr r2, [r7, #16]
- 800806e: 4313 orrs r3, r2
- 8008070: 613b str r3, [r7, #16]
- MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
- 8008072: 687b ldr r3, [r7, #4]
- 8008074: 681b ldr r3, [r3, #0]
- 8008076: 689b ldr r3, [r3, #8]
- 8008078: f423 6130 bic.w r1, r3, #2816 ; 0xb00
- 800807c: 687b ldr r3, [r7, #4]
- 800807e: 681b ldr r3, [r3, #0]
- 8008080: 693a ldr r2, [r7, #16]
- 8008082: 430a orrs r2, r1
- 8008084: 609a str r2, [r3, #8]
-
-
- /*-------------------------- USART BRR Configuration -----------------------*/
- UART_GETCLOCKSOURCE(huart, clocksource);
- 8008086: 687b ldr r3, [r7, #4]
- 8008088: 681b ldr r3, [r3, #0]
- 800808a: 4a9f ldr r2, [pc, #636] ; (8008308 <UART_SetConfig+0x2f8>)
- 800808c: 4293 cmp r3, r2
- 800808e: d121 bne.n 80080d4 <UART_SetConfig+0xc4>
- 8008090: 4b9e ldr r3, [pc, #632] ; (800830c <UART_SetConfig+0x2fc>)
- 8008092: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8008096: f003 0303 and.w r3, r3, #3
- 800809a: 2b03 cmp r3, #3
- 800809c: d816 bhi.n 80080cc <UART_SetConfig+0xbc>
- 800809e: a201 add r2, pc, #4 ; (adr r2, 80080a4 <UART_SetConfig+0x94>)
- 80080a0: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 80080a4: 080080b5 .word 0x080080b5
- 80080a8: 080080c1 .word 0x080080c1
- 80080ac: 080080bb .word 0x080080bb
- 80080b0: 080080c7 .word 0x080080c7
- 80080b4: 2301 movs r3, #1
- 80080b6: 77fb strb r3, [r7, #31]
- 80080b8: e151 b.n 800835e <UART_SetConfig+0x34e>
- 80080ba: 2302 movs r3, #2
- 80080bc: 77fb strb r3, [r7, #31]
- 80080be: e14e b.n 800835e <UART_SetConfig+0x34e>
- 80080c0: 2304 movs r3, #4
- 80080c2: 77fb strb r3, [r7, #31]
- 80080c4: e14b b.n 800835e <UART_SetConfig+0x34e>
- 80080c6: 2308 movs r3, #8
- 80080c8: 77fb strb r3, [r7, #31]
- 80080ca: e148 b.n 800835e <UART_SetConfig+0x34e>
- 80080cc: 2310 movs r3, #16
- 80080ce: 77fb strb r3, [r7, #31]
- 80080d0: bf00 nop
- 80080d2: e144 b.n 800835e <UART_SetConfig+0x34e>
- 80080d4: 687b ldr r3, [r7, #4]
- 80080d6: 681b ldr r3, [r3, #0]
- 80080d8: 4a8d ldr r2, [pc, #564] ; (8008310 <UART_SetConfig+0x300>)
- 80080da: 4293 cmp r3, r2
- 80080dc: d134 bne.n 8008148 <UART_SetConfig+0x138>
- 80080de: 4b8b ldr r3, [pc, #556] ; (800830c <UART_SetConfig+0x2fc>)
- 80080e0: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80080e4: f003 030c and.w r3, r3, #12
- 80080e8: 2b0c cmp r3, #12
- 80080ea: d829 bhi.n 8008140 <UART_SetConfig+0x130>
- 80080ec: a201 add r2, pc, #4 ; (adr r2, 80080f4 <UART_SetConfig+0xe4>)
- 80080ee: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 80080f2: bf00 nop
- 80080f4: 08008129 .word 0x08008129
- 80080f8: 08008141 .word 0x08008141
- 80080fc: 08008141 .word 0x08008141
- 8008100: 08008141 .word 0x08008141
- 8008104: 08008135 .word 0x08008135
- 8008108: 08008141 .word 0x08008141
- 800810c: 08008141 .word 0x08008141
- 8008110: 08008141 .word 0x08008141
- 8008114: 0800812f .word 0x0800812f
- 8008118: 08008141 .word 0x08008141
- 800811c: 08008141 .word 0x08008141
- 8008120: 08008141 .word 0x08008141
- 8008124: 0800813b .word 0x0800813b
- 8008128: 2300 movs r3, #0
- 800812a: 77fb strb r3, [r7, #31]
- 800812c: e117 b.n 800835e <UART_SetConfig+0x34e>
- 800812e: 2302 movs r3, #2
- 8008130: 77fb strb r3, [r7, #31]
- 8008132: e114 b.n 800835e <UART_SetConfig+0x34e>
- 8008134: 2304 movs r3, #4
- 8008136: 77fb strb r3, [r7, #31]
- 8008138: e111 b.n 800835e <UART_SetConfig+0x34e>
- 800813a: 2308 movs r3, #8
- 800813c: 77fb strb r3, [r7, #31]
- 800813e: e10e b.n 800835e <UART_SetConfig+0x34e>
- 8008140: 2310 movs r3, #16
- 8008142: 77fb strb r3, [r7, #31]
- 8008144: bf00 nop
- 8008146: e10a b.n 800835e <UART_SetConfig+0x34e>
- 8008148: 687b ldr r3, [r7, #4]
- 800814a: 681b ldr r3, [r3, #0]
- 800814c: 4a71 ldr r2, [pc, #452] ; (8008314 <UART_SetConfig+0x304>)
- 800814e: 4293 cmp r3, r2
- 8008150: d120 bne.n 8008194 <UART_SetConfig+0x184>
- 8008152: 4b6e ldr r3, [pc, #440] ; (800830c <UART_SetConfig+0x2fc>)
- 8008154: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8008158: f003 0330 and.w r3, r3, #48 ; 0x30
- 800815c: 2b10 cmp r3, #16
- 800815e: d00f beq.n 8008180 <UART_SetConfig+0x170>
- 8008160: 2b10 cmp r3, #16
- 8008162: d802 bhi.n 800816a <UART_SetConfig+0x15a>
- 8008164: 2b00 cmp r3, #0
- 8008166: d005 beq.n 8008174 <UART_SetConfig+0x164>
- 8008168: e010 b.n 800818c <UART_SetConfig+0x17c>
- 800816a: 2b20 cmp r3, #32
- 800816c: d005 beq.n 800817a <UART_SetConfig+0x16a>
- 800816e: 2b30 cmp r3, #48 ; 0x30
- 8008170: d009 beq.n 8008186 <UART_SetConfig+0x176>
- 8008172: e00b b.n 800818c <UART_SetConfig+0x17c>
- 8008174: 2300 movs r3, #0
- 8008176: 77fb strb r3, [r7, #31]
- 8008178: e0f1 b.n 800835e <UART_SetConfig+0x34e>
- 800817a: 2302 movs r3, #2
- 800817c: 77fb strb r3, [r7, #31]
- 800817e: e0ee b.n 800835e <UART_SetConfig+0x34e>
- 8008180: 2304 movs r3, #4
- 8008182: 77fb strb r3, [r7, #31]
- 8008184: e0eb b.n 800835e <UART_SetConfig+0x34e>
- 8008186: 2308 movs r3, #8
- 8008188: 77fb strb r3, [r7, #31]
- 800818a: e0e8 b.n 800835e <UART_SetConfig+0x34e>
- 800818c: 2310 movs r3, #16
- 800818e: 77fb strb r3, [r7, #31]
- 8008190: bf00 nop
- 8008192: e0e4 b.n 800835e <UART_SetConfig+0x34e>
- 8008194: 687b ldr r3, [r7, #4]
- 8008196: 681b ldr r3, [r3, #0]
- 8008198: 4a5f ldr r2, [pc, #380] ; (8008318 <UART_SetConfig+0x308>)
- 800819a: 4293 cmp r3, r2
- 800819c: d120 bne.n 80081e0 <UART_SetConfig+0x1d0>
- 800819e: 4b5b ldr r3, [pc, #364] ; (800830c <UART_SetConfig+0x2fc>)
- 80081a0: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80081a4: f003 03c0 and.w r3, r3, #192 ; 0xc0
- 80081a8: 2b40 cmp r3, #64 ; 0x40
- 80081aa: d00f beq.n 80081cc <UART_SetConfig+0x1bc>
- 80081ac: 2b40 cmp r3, #64 ; 0x40
- 80081ae: d802 bhi.n 80081b6 <UART_SetConfig+0x1a6>
- 80081b0: 2b00 cmp r3, #0
- 80081b2: d005 beq.n 80081c0 <UART_SetConfig+0x1b0>
- 80081b4: e010 b.n 80081d8 <UART_SetConfig+0x1c8>
- 80081b6: 2b80 cmp r3, #128 ; 0x80
- 80081b8: d005 beq.n 80081c6 <UART_SetConfig+0x1b6>
- 80081ba: 2bc0 cmp r3, #192 ; 0xc0
- 80081bc: d009 beq.n 80081d2 <UART_SetConfig+0x1c2>
- 80081be: e00b b.n 80081d8 <UART_SetConfig+0x1c8>
- 80081c0: 2300 movs r3, #0
- 80081c2: 77fb strb r3, [r7, #31]
- 80081c4: e0cb b.n 800835e <UART_SetConfig+0x34e>
- 80081c6: 2302 movs r3, #2
- 80081c8: 77fb strb r3, [r7, #31]
- 80081ca: e0c8 b.n 800835e <UART_SetConfig+0x34e>
- 80081cc: 2304 movs r3, #4
- 80081ce: 77fb strb r3, [r7, #31]
- 80081d0: e0c5 b.n 800835e <UART_SetConfig+0x34e>
- 80081d2: 2308 movs r3, #8
- 80081d4: 77fb strb r3, [r7, #31]
- 80081d6: e0c2 b.n 800835e <UART_SetConfig+0x34e>
- 80081d8: 2310 movs r3, #16
- 80081da: 77fb strb r3, [r7, #31]
- 80081dc: bf00 nop
- 80081de: e0be b.n 800835e <UART_SetConfig+0x34e>
- 80081e0: 687b ldr r3, [r7, #4]
- 80081e2: 681b ldr r3, [r3, #0]
- 80081e4: 4a4d ldr r2, [pc, #308] ; (800831c <UART_SetConfig+0x30c>)
- 80081e6: 4293 cmp r3, r2
- 80081e8: d124 bne.n 8008234 <UART_SetConfig+0x224>
- 80081ea: 4b48 ldr r3, [pc, #288] ; (800830c <UART_SetConfig+0x2fc>)
- 80081ec: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80081f0: f403 7340 and.w r3, r3, #768 ; 0x300
- 80081f4: f5b3 7f80 cmp.w r3, #256 ; 0x100
- 80081f8: d012 beq.n 8008220 <UART_SetConfig+0x210>
- 80081fa: f5b3 7f80 cmp.w r3, #256 ; 0x100
- 80081fe: d802 bhi.n 8008206 <UART_SetConfig+0x1f6>
- 8008200: 2b00 cmp r3, #0
- 8008202: d007 beq.n 8008214 <UART_SetConfig+0x204>
- 8008204: e012 b.n 800822c <UART_SetConfig+0x21c>
- 8008206: f5b3 7f00 cmp.w r3, #512 ; 0x200
- 800820a: d006 beq.n 800821a <UART_SetConfig+0x20a>
- 800820c: f5b3 7f40 cmp.w r3, #768 ; 0x300
- 8008210: d009 beq.n 8008226 <UART_SetConfig+0x216>
- 8008212: e00b b.n 800822c <UART_SetConfig+0x21c>
- 8008214: 2300 movs r3, #0
- 8008216: 77fb strb r3, [r7, #31]
- 8008218: e0a1 b.n 800835e <UART_SetConfig+0x34e>
- 800821a: 2302 movs r3, #2
- 800821c: 77fb strb r3, [r7, #31]
- 800821e: e09e b.n 800835e <UART_SetConfig+0x34e>
- 8008220: 2304 movs r3, #4
- 8008222: 77fb strb r3, [r7, #31]
- 8008224: e09b b.n 800835e <UART_SetConfig+0x34e>
- 8008226: 2308 movs r3, #8
- 8008228: 77fb strb r3, [r7, #31]
- 800822a: e098 b.n 800835e <UART_SetConfig+0x34e>
- 800822c: 2310 movs r3, #16
- 800822e: 77fb strb r3, [r7, #31]
- 8008230: bf00 nop
- 8008232: e094 b.n 800835e <UART_SetConfig+0x34e>
- 8008234: 687b ldr r3, [r7, #4]
- 8008236: 681b ldr r3, [r3, #0]
- 8008238: 4a39 ldr r2, [pc, #228] ; (8008320 <UART_SetConfig+0x310>)
- 800823a: 4293 cmp r3, r2
- 800823c: d124 bne.n 8008288 <UART_SetConfig+0x278>
- 800823e: 4b33 ldr r3, [pc, #204] ; (800830c <UART_SetConfig+0x2fc>)
- 8008240: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8008244: f403 6340 and.w r3, r3, #3072 ; 0xc00
- 8008248: f5b3 6f80 cmp.w r3, #1024 ; 0x400
- 800824c: d012 beq.n 8008274 <UART_SetConfig+0x264>
- 800824e: f5b3 6f80 cmp.w r3, #1024 ; 0x400
- 8008252: d802 bhi.n 800825a <UART_SetConfig+0x24a>
- 8008254: 2b00 cmp r3, #0
- 8008256: d007 beq.n 8008268 <UART_SetConfig+0x258>
- 8008258: e012 b.n 8008280 <UART_SetConfig+0x270>
- 800825a: f5b3 6f00 cmp.w r3, #2048 ; 0x800
- 800825e: d006 beq.n 800826e <UART_SetConfig+0x25e>
- 8008260: f5b3 6f40 cmp.w r3, #3072 ; 0xc00
- 8008264: d009 beq.n 800827a <UART_SetConfig+0x26a>
- 8008266: e00b b.n 8008280 <UART_SetConfig+0x270>
- 8008268: 2301 movs r3, #1
- 800826a: 77fb strb r3, [r7, #31]
- 800826c: e077 b.n 800835e <UART_SetConfig+0x34e>
- 800826e: 2302 movs r3, #2
- 8008270: 77fb strb r3, [r7, #31]
- 8008272: e074 b.n 800835e <UART_SetConfig+0x34e>
- 8008274: 2304 movs r3, #4
- 8008276: 77fb strb r3, [r7, #31]
- 8008278: e071 b.n 800835e <UART_SetConfig+0x34e>
- 800827a: 2308 movs r3, #8
- 800827c: 77fb strb r3, [r7, #31]
- 800827e: e06e b.n 800835e <UART_SetConfig+0x34e>
- 8008280: 2310 movs r3, #16
- 8008282: 77fb strb r3, [r7, #31]
- 8008284: bf00 nop
- 8008286: e06a b.n 800835e <UART_SetConfig+0x34e>
- 8008288: 687b ldr r3, [r7, #4]
- 800828a: 681b ldr r3, [r3, #0]
- 800828c: 4a25 ldr r2, [pc, #148] ; (8008324 <UART_SetConfig+0x314>)
- 800828e: 4293 cmp r3, r2
- 8008290: d124 bne.n 80082dc <UART_SetConfig+0x2cc>
- 8008292: 4b1e ldr r3, [pc, #120] ; (800830c <UART_SetConfig+0x2fc>)
- 8008294: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 8008298: f403 5340 and.w r3, r3, #12288 ; 0x3000
- 800829c: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
- 80082a0: d012 beq.n 80082c8 <UART_SetConfig+0x2b8>
- 80082a2: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
- 80082a6: d802 bhi.n 80082ae <UART_SetConfig+0x29e>
- 80082a8: 2b00 cmp r3, #0
- 80082aa: d007 beq.n 80082bc <UART_SetConfig+0x2ac>
- 80082ac: e012 b.n 80082d4 <UART_SetConfig+0x2c4>
- 80082ae: f5b3 5f00 cmp.w r3, #8192 ; 0x2000
- 80082b2: d006 beq.n 80082c2 <UART_SetConfig+0x2b2>
- 80082b4: f5b3 5f40 cmp.w r3, #12288 ; 0x3000
- 80082b8: d009 beq.n 80082ce <UART_SetConfig+0x2be>
- 80082ba: e00b b.n 80082d4 <UART_SetConfig+0x2c4>
- 80082bc: 2300 movs r3, #0
- 80082be: 77fb strb r3, [r7, #31]
- 80082c0: e04d b.n 800835e <UART_SetConfig+0x34e>
- 80082c2: 2302 movs r3, #2
- 80082c4: 77fb strb r3, [r7, #31]
- 80082c6: e04a b.n 800835e <UART_SetConfig+0x34e>
- 80082c8: 2304 movs r3, #4
- 80082ca: 77fb strb r3, [r7, #31]
- 80082cc: e047 b.n 800835e <UART_SetConfig+0x34e>
- 80082ce: 2308 movs r3, #8
- 80082d0: 77fb strb r3, [r7, #31]
- 80082d2: e044 b.n 800835e <UART_SetConfig+0x34e>
- 80082d4: 2310 movs r3, #16
- 80082d6: 77fb strb r3, [r7, #31]
- 80082d8: bf00 nop
- 80082da: e040 b.n 800835e <UART_SetConfig+0x34e>
- 80082dc: 687b ldr r3, [r7, #4]
- 80082de: 681b ldr r3, [r3, #0]
- 80082e0: 4a11 ldr r2, [pc, #68] ; (8008328 <UART_SetConfig+0x318>)
- 80082e2: 4293 cmp r3, r2
- 80082e4: d139 bne.n 800835a <UART_SetConfig+0x34a>
- 80082e6: 4b09 ldr r3, [pc, #36] ; (800830c <UART_SetConfig+0x2fc>)
- 80082e8: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90
- 80082ec: f403 4340 and.w r3, r3, #49152 ; 0xc000
- 80082f0: f5b3 4f80 cmp.w r3, #16384 ; 0x4000
- 80082f4: d027 beq.n 8008346 <UART_SetConfig+0x336>
- 80082f6: f5b3 4f80 cmp.w r3, #16384 ; 0x4000
- 80082fa: d817 bhi.n 800832c <UART_SetConfig+0x31c>
- 80082fc: 2b00 cmp r3, #0
- 80082fe: d01c beq.n 800833a <UART_SetConfig+0x32a>
- 8008300: e027 b.n 8008352 <UART_SetConfig+0x342>
- 8008302: bf00 nop
- 8008304: efff69f3 .word 0xefff69f3
- 8008308: 40011000 .word 0x40011000
- 800830c: 40023800 .word 0x40023800
- 8008310: 40004400 .word 0x40004400
- 8008314: 40004800 .word 0x40004800
- 8008318: 40004c00 .word 0x40004c00
- 800831c: 40005000 .word 0x40005000
- 8008320: 40011400 .word 0x40011400
- 8008324: 40007800 .word 0x40007800
- 8008328: 40007c00 .word 0x40007c00
- 800832c: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
- 8008330: d006 beq.n 8008340 <UART_SetConfig+0x330>
- 8008332: f5b3 4f40 cmp.w r3, #49152 ; 0xc000
- 8008336: d009 beq.n 800834c <UART_SetConfig+0x33c>
- 8008338: e00b b.n 8008352 <UART_SetConfig+0x342>
- 800833a: 2300 movs r3, #0
- 800833c: 77fb strb r3, [r7, #31]
- 800833e: e00e b.n 800835e <UART_SetConfig+0x34e>
- 8008340: 2302 movs r3, #2
- 8008342: 77fb strb r3, [r7, #31]
- 8008344: e00b b.n 800835e <UART_SetConfig+0x34e>
- 8008346: 2304 movs r3, #4
- 8008348: 77fb strb r3, [r7, #31]
- 800834a: e008 b.n 800835e <UART_SetConfig+0x34e>
- 800834c: 2308 movs r3, #8
- 800834e: 77fb strb r3, [r7, #31]
- 8008350: e005 b.n 800835e <UART_SetConfig+0x34e>
- 8008352: 2310 movs r3, #16
- 8008354: 77fb strb r3, [r7, #31]
- 8008356: bf00 nop
- 8008358: e001 b.n 800835e <UART_SetConfig+0x34e>
- 800835a: 2310 movs r3, #16
- 800835c: 77fb strb r3, [r7, #31]
-
- if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
- 800835e: 687b ldr r3, [r7, #4]
- 8008360: 69db ldr r3, [r3, #28]
- 8008362: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
- 8008366: d17c bne.n 8008462 <UART_SetConfig+0x452>
- {
- switch (clocksource)
- 8008368: 7ffb ldrb r3, [r7, #31]
- 800836a: 2b08 cmp r3, #8
- 800836c: d859 bhi.n 8008422 <UART_SetConfig+0x412>
- 800836e: a201 add r2, pc, #4 ; (adr r2, 8008374 <UART_SetConfig+0x364>)
- 8008370: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 8008374: 08008399 .word 0x08008399
- 8008378: 080083b7 .word 0x080083b7
- 800837c: 080083d5 .word 0x080083d5
- 8008380: 08008423 .word 0x08008423
- 8008384: 080083ed .word 0x080083ed
- 8008388: 08008423 .word 0x08008423
- 800838c: 08008423 .word 0x08008423
- 8008390: 08008423 .word 0x08008423
- 8008394: 0800840b .word 0x0800840b
- {
- case UART_CLOCKSOURCE_PCLK1:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
- 8008398: f7fd fe50 bl 800603c <HAL_RCC_GetPCLK1Freq>
- 800839c: 4603 mov r3, r0
- 800839e: 005a lsls r2, r3, #1
- 80083a0: 687b ldr r3, [r7, #4]
- 80083a2: 685b ldr r3, [r3, #4]
- 80083a4: 085b lsrs r3, r3, #1
- 80083a6: 441a add r2, r3
- 80083a8: 687b ldr r3, [r7, #4]
- 80083aa: 685b ldr r3, [r3, #4]
- 80083ac: fbb2 f3f3 udiv r3, r2, r3
- 80083b0: b29b uxth r3, r3
- 80083b2: 61bb str r3, [r7, #24]
- break;
- 80083b4: e038 b.n 8008428 <UART_SetConfig+0x418>
- case UART_CLOCKSOURCE_PCLK2:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
- 80083b6: f7fd fe55 bl 8006064 <HAL_RCC_GetPCLK2Freq>
- 80083ba: 4603 mov r3, r0
- 80083bc: 005a lsls r2, r3, #1
- 80083be: 687b ldr r3, [r7, #4]
- 80083c0: 685b ldr r3, [r3, #4]
- 80083c2: 085b lsrs r3, r3, #1
- 80083c4: 441a add r2, r3
- 80083c6: 687b ldr r3, [r7, #4]
- 80083c8: 685b ldr r3, [r3, #4]
- 80083ca: fbb2 f3f3 udiv r3, r2, r3
- 80083ce: b29b uxth r3, r3
- 80083d0: 61bb str r3, [r7, #24]
- break;
- 80083d2: e029 b.n 8008428 <UART_SetConfig+0x418>
- case UART_CLOCKSOURCE_HSI:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HSI_VALUE, huart->Init.BaudRate));
- 80083d4: 687b ldr r3, [r7, #4]
- 80083d6: 685b ldr r3, [r3, #4]
- 80083d8: 085a lsrs r2, r3, #1
- 80083da: 4b5d ldr r3, [pc, #372] ; (8008550 <UART_SetConfig+0x540>)
- 80083dc: 4413 add r3, r2
- 80083de: 687a ldr r2, [r7, #4]
- 80083e0: 6852 ldr r2, [r2, #4]
- 80083e2: fbb3 f3f2 udiv r3, r3, r2
- 80083e6: b29b uxth r3, r3
- 80083e8: 61bb str r3, [r7, #24]
- break;
- 80083ea: e01d b.n 8008428 <UART_SetConfig+0x418>
- case UART_CLOCKSOURCE_SYSCLK:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
- 80083ec: f7fd fd68 bl 8005ec0 <HAL_RCC_GetSysClockFreq>
- 80083f0: 4603 mov r3, r0
- 80083f2: 005a lsls r2, r3, #1
- 80083f4: 687b ldr r3, [r7, #4]
- 80083f6: 685b ldr r3, [r3, #4]
- 80083f8: 085b lsrs r3, r3, #1
- 80083fa: 441a add r2, r3
- 80083fc: 687b ldr r3, [r7, #4]
- 80083fe: 685b ldr r3, [r3, #4]
- 8008400: fbb2 f3f3 udiv r3, r2, r3
- 8008404: b29b uxth r3, r3
- 8008406: 61bb str r3, [r7, #24]
- break;
- 8008408: e00e b.n 8008428 <UART_SetConfig+0x418>
- case UART_CLOCKSOURCE_LSE:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(LSE_VALUE, huart->Init.BaudRate));
- 800840a: 687b ldr r3, [r7, #4]
- 800840c: 685b ldr r3, [r3, #4]
- 800840e: 085b lsrs r3, r3, #1
- 8008410: f503 3280 add.w r2, r3, #65536 ; 0x10000
- 8008414: 687b ldr r3, [r7, #4]
- 8008416: 685b ldr r3, [r3, #4]
- 8008418: fbb2 f3f3 udiv r3, r2, r3
- 800841c: b29b uxth r3, r3
- 800841e: 61bb str r3, [r7, #24]
- break;
- 8008420: e002 b.n 8008428 <UART_SetConfig+0x418>
- case UART_CLOCKSOURCE_UNDEFINED:
- default:
- ret = HAL_ERROR;
- 8008422: 2301 movs r3, #1
- 8008424: 75fb strb r3, [r7, #23]
- break;
- 8008426: bf00 nop
- }
-
- /* USARTDIV must be greater than or equal to 0d16 */
- if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
- 8008428: 69bb ldr r3, [r7, #24]
- 800842a: 2b0f cmp r3, #15
- 800842c: d916 bls.n 800845c <UART_SetConfig+0x44c>
- 800842e: 69bb ldr r3, [r7, #24]
- 8008430: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
- 8008434: d212 bcs.n 800845c <UART_SetConfig+0x44c>
- {
- brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
- 8008436: 69bb ldr r3, [r7, #24]
- 8008438: b29b uxth r3, r3
- 800843a: f023 030f bic.w r3, r3, #15
- 800843e: 81fb strh r3, [r7, #14]
- brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
- 8008440: 69bb ldr r3, [r7, #24]
- 8008442: 085b lsrs r3, r3, #1
- 8008444: b29b uxth r3, r3
- 8008446: f003 0307 and.w r3, r3, #7
- 800844a: b29a uxth r2, r3
- 800844c: 89fb ldrh r3, [r7, #14]
- 800844e: 4313 orrs r3, r2
- 8008450: 81fb strh r3, [r7, #14]
- huart->Instance->BRR = brrtemp;
- 8008452: 687b ldr r3, [r7, #4]
- 8008454: 681b ldr r3, [r3, #0]
- 8008456: 89fa ldrh r2, [r7, #14]
- 8008458: 60da str r2, [r3, #12]
- 800845a: e06e b.n 800853a <UART_SetConfig+0x52a>
- }
- else
- {
- ret = HAL_ERROR;
- 800845c: 2301 movs r3, #1
- 800845e: 75fb strb r3, [r7, #23]
- 8008460: e06b b.n 800853a <UART_SetConfig+0x52a>
- }
- }
- else
- {
- switch (clocksource)
- 8008462: 7ffb ldrb r3, [r7, #31]
- 8008464: 2b08 cmp r3, #8
- 8008466: d857 bhi.n 8008518 <UART_SetConfig+0x508>
- 8008468: a201 add r2, pc, #4 ; (adr r2, 8008470 <UART_SetConfig+0x460>)
- 800846a: f852 f023 ldr.w pc, [r2, r3, lsl #2]
- 800846e: bf00 nop
- 8008470: 08008495 .word 0x08008495
- 8008474: 080084b1 .word 0x080084b1
- 8008478: 080084cd .word 0x080084cd
- 800847c: 08008519 .word 0x08008519
- 8008480: 080084e5 .word 0x080084e5
- 8008484: 08008519 .word 0x08008519
- 8008488: 08008519 .word 0x08008519
- 800848c: 08008519 .word 0x08008519
- 8008490: 08008501 .word 0x08008501
- {
- case UART_CLOCKSOURCE_PCLK1:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
- 8008494: f7fd fdd2 bl 800603c <HAL_RCC_GetPCLK1Freq>
- 8008498: 4602 mov r2, r0
- 800849a: 687b ldr r3, [r7, #4]
- 800849c: 685b ldr r3, [r3, #4]
- 800849e: 085b lsrs r3, r3, #1
- 80084a0: 441a add r2, r3
- 80084a2: 687b ldr r3, [r7, #4]
- 80084a4: 685b ldr r3, [r3, #4]
- 80084a6: fbb2 f3f3 udiv r3, r2, r3
- 80084aa: b29b uxth r3, r3
- 80084ac: 61bb str r3, [r7, #24]
- break;
- 80084ae: e036 b.n 800851e <UART_SetConfig+0x50e>
- case UART_CLOCKSOURCE_PCLK2:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
- 80084b0: f7fd fdd8 bl 8006064 <HAL_RCC_GetPCLK2Freq>
- 80084b4: 4602 mov r2, r0
- 80084b6: 687b ldr r3, [r7, #4]
- 80084b8: 685b ldr r3, [r3, #4]
- 80084ba: 085b lsrs r3, r3, #1
- 80084bc: 441a add r2, r3
- 80084be: 687b ldr r3, [r7, #4]
- 80084c0: 685b ldr r3, [r3, #4]
- 80084c2: fbb2 f3f3 udiv r3, r2, r3
- 80084c6: b29b uxth r3, r3
- 80084c8: 61bb str r3, [r7, #24]
- break;
- 80084ca: e028 b.n 800851e <UART_SetConfig+0x50e>
- case UART_CLOCKSOURCE_HSI:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HSI_VALUE, huart->Init.BaudRate));
- 80084cc: 687b ldr r3, [r7, #4]
- 80084ce: 685b ldr r3, [r3, #4]
- 80084d0: 085a lsrs r2, r3, #1
- 80084d2: 4b20 ldr r3, [pc, #128] ; (8008554 <UART_SetConfig+0x544>)
- 80084d4: 4413 add r3, r2
- 80084d6: 687a ldr r2, [r7, #4]
- 80084d8: 6852 ldr r2, [r2, #4]
- 80084da: fbb3 f3f2 udiv r3, r3, r2
- 80084de: b29b uxth r3, r3
- 80084e0: 61bb str r3, [r7, #24]
- break;
- 80084e2: e01c b.n 800851e <UART_SetConfig+0x50e>
- case UART_CLOCKSOURCE_SYSCLK:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
- 80084e4: f7fd fcec bl 8005ec0 <HAL_RCC_GetSysClockFreq>
- 80084e8: 4602 mov r2, r0
- 80084ea: 687b ldr r3, [r7, #4]
- 80084ec: 685b ldr r3, [r3, #4]
- 80084ee: 085b lsrs r3, r3, #1
- 80084f0: 441a add r2, r3
- 80084f2: 687b ldr r3, [r7, #4]
- 80084f4: 685b ldr r3, [r3, #4]
- 80084f6: fbb2 f3f3 udiv r3, r2, r3
- 80084fa: b29b uxth r3, r3
- 80084fc: 61bb str r3, [r7, #24]
- break;
- 80084fe: e00e b.n 800851e <UART_SetConfig+0x50e>
- case UART_CLOCKSOURCE_LSE:
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(LSE_VALUE, huart->Init.BaudRate));
- 8008500: 687b ldr r3, [r7, #4]
- 8008502: 685b ldr r3, [r3, #4]
- 8008504: 085b lsrs r3, r3, #1
- 8008506: f503 4200 add.w r2, r3, #32768 ; 0x8000
- 800850a: 687b ldr r3, [r7, #4]
- 800850c: 685b ldr r3, [r3, #4]
- 800850e: fbb2 f3f3 udiv r3, r2, r3
- 8008512: b29b uxth r3, r3
- 8008514: 61bb str r3, [r7, #24]
- break;
- 8008516: e002 b.n 800851e <UART_SetConfig+0x50e>
- case UART_CLOCKSOURCE_UNDEFINED:
- default:
- ret = HAL_ERROR;
- 8008518: 2301 movs r3, #1
- 800851a: 75fb strb r3, [r7, #23]
- break;
- 800851c: bf00 nop
- }
-
- /* USARTDIV must be greater than or equal to 0d16 */
- if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
- 800851e: 69bb ldr r3, [r7, #24]
- 8008520: 2b0f cmp r3, #15
- 8008522: d908 bls.n 8008536 <UART_SetConfig+0x526>
- 8008524: 69bb ldr r3, [r7, #24]
- 8008526: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
- 800852a: d204 bcs.n 8008536 <UART_SetConfig+0x526>
- {
- huart->Instance->BRR = usartdiv;
- 800852c: 687b ldr r3, [r7, #4]
- 800852e: 681b ldr r3, [r3, #0]
- 8008530: 69ba ldr r2, [r7, #24]
- 8008532: 60da str r2, [r3, #12]
- 8008534: e001 b.n 800853a <UART_SetConfig+0x52a>
- }
- else
- {
- ret = HAL_ERROR;
- 8008536: 2301 movs r3, #1
- 8008538: 75fb strb r3, [r7, #23]
- }
- }
-
-
- /* Clear ISR function pointers */
- huart->RxISR = NULL;
- 800853a: 687b ldr r3, [r7, #4]
- 800853c: 2200 movs r2, #0
- 800853e: 661a str r2, [r3, #96] ; 0x60
- huart->TxISR = NULL;
- 8008540: 687b ldr r3, [r7, #4]
- 8008542: 2200 movs r2, #0
- 8008544: 665a str r2, [r3, #100] ; 0x64
-
- return ret;
- 8008546: 7dfb ldrb r3, [r7, #23]
-}
- 8008548: 4618 mov r0, r3
- 800854a: 3720 adds r7, #32
- 800854c: 46bd mov sp, r7
- 800854e: bd80 pop {r7, pc}
- 8008550: 01e84800 .word 0x01e84800
- 8008554: 00f42400 .word 0x00f42400
-
-08008558 <UART_AdvFeatureConfig>:
- * @brief Configure the UART peripheral advanced features.
- * @param huart UART handle.
- * @retval None
- */
-void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
-{
- 8008558: b480 push {r7}
- 800855a: b083 sub sp, #12
- 800855c: af00 add r7, sp, #0
- 800855e: 6078 str r0, [r7, #4]
- /* Check whether the set of advanced features to configure is properly set */
- assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit));
-
- /* if required, configure TX pin active level inversion */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))
- 8008560: 687b ldr r3, [r7, #4]
- 8008562: 6a5b ldr r3, [r3, #36] ; 0x24
- 8008564: f003 0301 and.w r3, r3, #1
- 8008568: 2b00 cmp r3, #0
- 800856a: d00a beq.n 8008582 <UART_AdvFeatureConfig+0x2a>
- {
- assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert));
- MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);
- 800856c: 687b ldr r3, [r7, #4]
- 800856e: 681b ldr r3, [r3, #0]
- 8008570: 685b ldr r3, [r3, #4]
- 8008572: f423 3100 bic.w r1, r3, #131072 ; 0x20000
- 8008576: 687b ldr r3, [r7, #4]
- 8008578: 6a9a ldr r2, [r3, #40] ; 0x28
- 800857a: 687b ldr r3, [r7, #4]
- 800857c: 681b ldr r3, [r3, #0]
- 800857e: 430a orrs r2, r1
- 8008580: 605a str r2, [r3, #4]
- }
-
- /* if required, configure RX pin active level inversion */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))
- 8008582: 687b ldr r3, [r7, #4]
- 8008584: 6a5b ldr r3, [r3, #36] ; 0x24
- 8008586: f003 0302 and.w r3, r3, #2
- 800858a: 2b00 cmp r3, #0
- 800858c: d00a beq.n 80085a4 <UART_AdvFeatureConfig+0x4c>
- {
- assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert));
- MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);
- 800858e: 687b ldr r3, [r7, #4]
- 8008590: 681b ldr r3, [r3, #0]
- 8008592: 685b ldr r3, [r3, #4]
- 8008594: f423 3180 bic.w r1, r3, #65536 ; 0x10000
- 8008598: 687b ldr r3, [r7, #4]
- 800859a: 6ada ldr r2, [r3, #44] ; 0x2c
- 800859c: 687b ldr r3, [r7, #4]
- 800859e: 681b ldr r3, [r3, #0]
- 80085a0: 430a orrs r2, r1
- 80085a2: 605a str r2, [r3, #4]
- }
-
- /* if required, configure data inversion */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))
- 80085a4: 687b ldr r3, [r7, #4]
- 80085a6: 6a5b ldr r3, [r3, #36] ; 0x24
- 80085a8: f003 0304 and.w r3, r3, #4
- 80085ac: 2b00 cmp r3, #0
- 80085ae: d00a beq.n 80085c6 <UART_AdvFeatureConfig+0x6e>
- {
- assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert));
- MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);
- 80085b0: 687b ldr r3, [r7, #4]
- 80085b2: 681b ldr r3, [r3, #0]
- 80085b4: 685b ldr r3, [r3, #4]
- 80085b6: f423 2180 bic.w r1, r3, #262144 ; 0x40000
- 80085ba: 687b ldr r3, [r7, #4]
- 80085bc: 6b1a ldr r2, [r3, #48] ; 0x30
- 80085be: 687b ldr r3, [r7, #4]
- 80085c0: 681b ldr r3, [r3, #0]
- 80085c2: 430a orrs r2, r1
- 80085c4: 605a str r2, [r3, #4]
- }
-
- /* if required, configure RX/TX pins swap */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))
- 80085c6: 687b ldr r3, [r7, #4]
- 80085c8: 6a5b ldr r3, [r3, #36] ; 0x24
- 80085ca: f003 0308 and.w r3, r3, #8
- 80085ce: 2b00 cmp r3, #0
- 80085d0: d00a beq.n 80085e8 <UART_AdvFeatureConfig+0x90>
- {
- assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap));
- MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);
- 80085d2: 687b ldr r3, [r7, #4]
- 80085d4: 681b ldr r3, [r3, #0]
- 80085d6: 685b ldr r3, [r3, #4]
- 80085d8: f423 4100 bic.w r1, r3, #32768 ; 0x8000
- 80085dc: 687b ldr r3, [r7, #4]
- 80085de: 6b5a ldr r2, [r3, #52] ; 0x34
- 80085e0: 687b ldr r3, [r7, #4]
- 80085e2: 681b ldr r3, [r3, #0]
- 80085e4: 430a orrs r2, r1
- 80085e6: 605a str r2, [r3, #4]
- }
-
- /* if required, configure RX overrun detection disabling */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))
- 80085e8: 687b ldr r3, [r7, #4]
- 80085ea: 6a5b ldr r3, [r3, #36] ; 0x24
- 80085ec: f003 0310 and.w r3, r3, #16
- 80085f0: 2b00 cmp r3, #0
- 80085f2: d00a beq.n 800860a <UART_AdvFeatureConfig+0xb2>
- {
- assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable));
- MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);
- 80085f4: 687b ldr r3, [r7, #4]
- 80085f6: 681b ldr r3, [r3, #0]
- 80085f8: 689b ldr r3, [r3, #8]
- 80085fa: f423 5180 bic.w r1, r3, #4096 ; 0x1000
- 80085fe: 687b ldr r3, [r7, #4]
- 8008600: 6b9a ldr r2, [r3, #56] ; 0x38
- 8008602: 687b ldr r3, [r7, #4]
- 8008604: 681b ldr r3, [r3, #0]
- 8008606: 430a orrs r2, r1
- 8008608: 609a str r2, [r3, #8]
- }
-
- /* if required, configure DMA disabling on reception error */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))
- 800860a: 687b ldr r3, [r7, #4]
- 800860c: 6a5b ldr r3, [r3, #36] ; 0x24
- 800860e: f003 0320 and.w r3, r3, #32
- 8008612: 2b00 cmp r3, #0
- 8008614: d00a beq.n 800862c <UART_AdvFeatureConfig+0xd4>
- {
- assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError));
- MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);
- 8008616: 687b ldr r3, [r7, #4]
- 8008618: 681b ldr r3, [r3, #0]
- 800861a: 689b ldr r3, [r3, #8]
- 800861c: f423 5100 bic.w r1, r3, #8192 ; 0x2000
- 8008620: 687b ldr r3, [r7, #4]
- 8008622: 6bda ldr r2, [r3, #60] ; 0x3c
- 8008624: 687b ldr r3, [r7, #4]
- 8008626: 681b ldr r3, [r3, #0]
- 8008628: 430a orrs r2, r1
- 800862a: 609a str r2, [r3, #8]
- }
-
- /* if required, configure auto Baud rate detection scheme */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))
- 800862c: 687b ldr r3, [r7, #4]
- 800862e: 6a5b ldr r3, [r3, #36] ; 0x24
- 8008630: f003 0340 and.w r3, r3, #64 ; 0x40
- 8008634: 2b00 cmp r3, #0
- 8008636: d01a beq.n 800866e <UART_AdvFeatureConfig+0x116>
- {
- assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance));
- assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable));
- MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);
- 8008638: 687b ldr r3, [r7, #4]
- 800863a: 681b ldr r3, [r3, #0]
- 800863c: 685b ldr r3, [r3, #4]
- 800863e: f423 1180 bic.w r1, r3, #1048576 ; 0x100000
- 8008642: 687b ldr r3, [r7, #4]
- 8008644: 6c1a ldr r2, [r3, #64] ; 0x40
- 8008646: 687b ldr r3, [r7, #4]
- 8008648: 681b ldr r3, [r3, #0]
- 800864a: 430a orrs r2, r1
- 800864c: 605a str r2, [r3, #4]
- /* set auto Baudrate detection parameters if detection is enabled */
- if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)
- 800864e: 687b ldr r3, [r7, #4]
- 8008650: 6c1b ldr r3, [r3, #64] ; 0x40
- 8008652: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000
- 8008656: d10a bne.n 800866e <UART_AdvFeatureConfig+0x116>
- {
- assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode));
- MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);
- 8008658: 687b ldr r3, [r7, #4]
- 800865a: 681b ldr r3, [r3, #0]
- 800865c: 685b ldr r3, [r3, #4]
- 800865e: f423 01c0 bic.w r1, r3, #6291456 ; 0x600000
- 8008662: 687b ldr r3, [r7, #4]
- 8008664: 6c5a ldr r2, [r3, #68] ; 0x44
- 8008666: 687b ldr r3, [r7, #4]
- 8008668: 681b ldr r3, [r3, #0]
- 800866a: 430a orrs r2, r1
- 800866c: 605a str r2, [r3, #4]
- }
- }
-
- /* if required, configure MSB first on communication line */
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))
- 800866e: 687b ldr r3, [r7, #4]
- 8008670: 6a5b ldr r3, [r3, #36] ; 0x24
- 8008672: f003 0380 and.w r3, r3, #128 ; 0x80
- 8008676: 2b00 cmp r3, #0
- 8008678: d00a beq.n 8008690 <UART_AdvFeatureConfig+0x138>
- {
- assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst));
- MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);
- 800867a: 687b ldr r3, [r7, #4]
- 800867c: 681b ldr r3, [r3, #0]
- 800867e: 685b ldr r3, [r3, #4]
- 8008680: f423 2100 bic.w r1, r3, #524288 ; 0x80000
- 8008684: 687b ldr r3, [r7, #4]
- 8008686: 6c9a ldr r2, [r3, #72] ; 0x48
- 8008688: 687b ldr r3, [r7, #4]
- 800868a: 681b ldr r3, [r3, #0]
- 800868c: 430a orrs r2, r1
- 800868e: 605a str r2, [r3, #4]
- }
-}
- 8008690: bf00 nop
- 8008692: 370c adds r7, #12
- 8008694: 46bd mov sp, r7
- 8008696: f85d 7b04 ldr.w r7, [sp], #4
- 800869a: 4770 bx lr
-
-0800869c <UART_CheckIdleState>:
- * @brief Check the UART Idle State.
- * @param huart UART handle.
- * @retval HAL status
- */
-HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
-{
- 800869c: b580 push {r7, lr}
- 800869e: b086 sub sp, #24
- 80086a0: af02 add r7, sp, #8
- 80086a2: 6078 str r0, [r7, #4]
- uint32_t tickstart;
-
- /* Initialize the UART ErrorCode */
- huart->ErrorCode = HAL_UART_ERROR_NONE;
- 80086a4: 687b ldr r3, [r7, #4]
- 80086a6: 2200 movs r2, #0
- 80086a8: 67da str r2, [r3, #124] ; 0x7c
-
- /* Init tickstart for timeout managment*/
- tickstart = HAL_GetTick();
- 80086aa: f7fc fd93 bl 80051d4 <HAL_GetTick>
- 80086ae: 60f8 str r0, [r7, #12]
-
- /* Check if the Transmitter is enabled */
- if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
- 80086b0: 687b ldr r3, [r7, #4]
- 80086b2: 681b ldr r3, [r3, #0]
- 80086b4: 681b ldr r3, [r3, #0]
- 80086b6: f003 0308 and.w r3, r3, #8
- 80086ba: 2b08 cmp r3, #8
- 80086bc: d10e bne.n 80086dc <UART_CheckIdleState+0x40>
- {
- /* Wait until TEACK flag is set */
- if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
- 80086be: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000
- 80086c2: 9300 str r3, [sp, #0]
- 80086c4: 68fb ldr r3, [r7, #12]
- 80086c6: 2200 movs r2, #0
- 80086c8: f44f 1100 mov.w r1, #2097152 ; 0x200000
- 80086cc: 6878 ldr r0, [r7, #4]
- 80086ce: f000 f814 bl 80086fa <UART_WaitOnFlagUntilTimeout>
- 80086d2: 4603 mov r3, r0
- 80086d4: 2b00 cmp r3, #0
- 80086d6: d001 beq.n 80086dc <UART_CheckIdleState+0x40>
- {
- /* Timeout occurred */
- return HAL_TIMEOUT;
- 80086d8: 2303 movs r3, #3
- 80086da: e00a b.n 80086f2 <UART_CheckIdleState+0x56>
- }
- }
-
- /* Initialize the UART State */
- huart->gState = HAL_UART_STATE_READY;
- 80086dc: 687b ldr r3, [r7, #4]
- 80086de: 2220 movs r2, #32
- 80086e0: 675a str r2, [r3, #116] ; 0x74
- huart->RxState = HAL_UART_STATE_READY;
- 80086e2: 687b ldr r3, [r7, #4]
- 80086e4: 2220 movs r2, #32
- 80086e6: 679a str r2, [r3, #120] ; 0x78
-
- /* Process Unlocked */
- __HAL_UNLOCK(huart);
- 80086e8: 687b ldr r3, [r7, #4]
- 80086ea: 2200 movs r2, #0
- 80086ec: f883 2070 strb.w r2, [r3, #112] ; 0x70
-
- return HAL_OK;
- 80086f0: 2300 movs r3, #0
-}
- 80086f2: 4618 mov r0, r3
- 80086f4: 3710 adds r7, #16
- 80086f6: 46bd mov sp, r7
- 80086f8: bd80 pop {r7, pc}
-
-080086fa <UART_WaitOnFlagUntilTimeout>:
- * @param Tickstart Tick start value
- * @param Timeout Timeout duration
- * @retval HAL status
- */
-HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
-{
- 80086fa: b580 push {r7, lr}
- 80086fc: b084 sub sp, #16
- 80086fe: af00 add r7, sp, #0
- 8008700: 60f8 str r0, [r7, #12]
- 8008702: 60b9 str r1, [r7, #8]
- 8008704: 603b str r3, [r7, #0]
- 8008706: 4613 mov r3, r2
- 8008708: 71fb strb r3, [r7, #7]
- /* Wait until flag is set */
- while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
- 800870a: e02a b.n 8008762 <UART_WaitOnFlagUntilTimeout+0x68>
- {
- /* Check for the Timeout */
- if (Timeout != HAL_MAX_DELAY)
- 800870c: 69bb ldr r3, [r7, #24]
- 800870e: f1b3 3fff cmp.w r3, #4294967295 ; 0xffffffff
- 8008712: d026 beq.n 8008762 <UART_WaitOnFlagUntilTimeout+0x68>
- {
- if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
- 8008714: f7fc fd5e bl 80051d4 <HAL_GetTick>
- 8008718: 4602 mov r2, r0
- 800871a: 683b ldr r3, [r7, #0]
- 800871c: 1ad3 subs r3, r2, r3
- 800871e: 69ba ldr r2, [r7, #24]
- 8008720: 429a cmp r2, r3
- 8008722: d302 bcc.n 800872a <UART_WaitOnFlagUntilTimeout+0x30>
- 8008724: 69bb ldr r3, [r7, #24]
- 8008726: 2b00 cmp r3, #0
- 8008728: d11b bne.n 8008762 <UART_WaitOnFlagUntilTimeout+0x68>
- {
- /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
- 800872a: 68fb ldr r3, [r7, #12]
- 800872c: 681b ldr r3, [r3, #0]
- 800872e: 681a ldr r2, [r3, #0]
- 8008730: 68fb ldr r3, [r7, #12]
- 8008732: 681b ldr r3, [r3, #0]
- 8008734: f422 72d0 bic.w r2, r2, #416 ; 0x1a0
- 8008738: 601a str r2, [r3, #0]
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 800873a: 68fb ldr r3, [r7, #12]
- 800873c: 681b ldr r3, [r3, #0]
- 800873e: 689a ldr r2, [r3, #8]
- 8008740: 68fb ldr r3, [r7, #12]
- 8008742: 681b ldr r3, [r3, #0]
- 8008744: f022 0201 bic.w r2, r2, #1
- 8008748: 609a str r2, [r3, #8]
-
- huart->gState = HAL_UART_STATE_READY;
- 800874a: 68fb ldr r3, [r7, #12]
- 800874c: 2220 movs r2, #32
- 800874e: 675a str r2, [r3, #116] ; 0x74
- huart->RxState = HAL_UART_STATE_READY;
- 8008750: 68fb ldr r3, [r7, #12]
- 8008752: 2220 movs r2, #32
- 8008754: 679a str r2, [r3, #120] ; 0x78
-
- /* Process Unlocked */
- __HAL_UNLOCK(huart);
- 8008756: 68fb ldr r3, [r7, #12]
- 8008758: 2200 movs r2, #0
- 800875a: f883 2070 strb.w r2, [r3, #112] ; 0x70
-
- return HAL_TIMEOUT;
- 800875e: 2303 movs r3, #3
- 8008760: e00f b.n 8008782 <UART_WaitOnFlagUntilTimeout+0x88>
- while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
- 8008762: 68fb ldr r3, [r7, #12]
- 8008764: 681b ldr r3, [r3, #0]
- 8008766: 69da ldr r2, [r3, #28]
- 8008768: 68bb ldr r3, [r7, #8]
- 800876a: 4013 ands r3, r2
- 800876c: 68ba ldr r2, [r7, #8]
- 800876e: 429a cmp r2, r3
- 8008770: bf0c ite eq
- 8008772: 2301 moveq r3, #1
- 8008774: 2300 movne r3, #0
- 8008776: b2db uxtb r3, r3
- 8008778: 461a mov r2, r3
- 800877a: 79fb ldrb r3, [r7, #7]
- 800877c: 429a cmp r2, r3
- 800877e: d0c5 beq.n 800870c <UART_WaitOnFlagUntilTimeout+0x12>
- }
- }
- }
- return HAL_OK;
- 8008780: 2300 movs r3, #0
-}
- 8008782: 4618 mov r0, r3
- 8008784: 3710 adds r7, #16
- 8008786: 46bd mov sp, r7
- 8008788: bd80 pop {r7, pc}
-
-0800878a <UART_EndRxTransfer>:
- * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).
- * @param huart UART handle.
- * @retval None
- */
-static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
-{
- 800878a: b480 push {r7}
- 800878c: b083 sub sp, #12
- 800878e: af00 add r7, sp, #0
- 8008790: 6078 str r0, [r7, #4]
- /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
- 8008792: 687b ldr r3, [r7, #4]
- 8008794: 681b ldr r3, [r3, #0]
- 8008796: 681a ldr r2, [r3, #0]
- 8008798: 687b ldr r3, [r7, #4]
- 800879a: 681b ldr r3, [r3, #0]
- 800879c: f422 7290 bic.w r2, r2, #288 ; 0x120
- 80087a0: 601a str r2, [r3, #0]
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 80087a2: 687b ldr r3, [r7, #4]
- 80087a4: 681b ldr r3, [r3, #0]
- 80087a6: 689a ldr r2, [r3, #8]
- 80087a8: 687b ldr r3, [r7, #4]
- 80087aa: 681b ldr r3, [r3, #0]
- 80087ac: f022 0201 bic.w r2, r2, #1
- 80087b0: 609a str r2, [r3, #8]
-
- /* At end of Rx process, restore huart->RxState to Ready */
- huart->RxState = HAL_UART_STATE_READY;
- 80087b2: 687b ldr r3, [r7, #4]
- 80087b4: 2220 movs r2, #32
- 80087b6: 679a str r2, [r3, #120] ; 0x78
-
- /* Reset RxIsr function pointer */
- huart->RxISR = NULL;
- 80087b8: 687b ldr r3, [r7, #4]
- 80087ba: 2200 movs r2, #0
- 80087bc: 661a str r2, [r3, #96] ; 0x60
-}
- 80087be: bf00 nop
- 80087c0: 370c adds r7, #12
- 80087c2: 46bd mov sp, r7
- 80087c4: f85d 7b04 ldr.w r7, [sp], #4
- 80087c8: 4770 bx lr
-
-080087ca <UART_DMAAbortOnError>:
- * (To be called at end of DMA Abort procedure following error occurrence).
- * @param hdma DMA handle.
- * @retval None
- */
-static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma)
-{
- 80087ca: b580 push {r7, lr}
- 80087cc: b084 sub sp, #16
- 80087ce: af00 add r7, sp, #0
- 80087d0: 6078 str r0, [r7, #4]
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
- 80087d2: 687b ldr r3, [r7, #4]
- 80087d4: 6b9b ldr r3, [r3, #56] ; 0x38
- 80087d6: 60fb str r3, [r7, #12]
- huart->RxXferCount = 0U;
- 80087d8: 68fb ldr r3, [r7, #12]
- 80087da: 2200 movs r2, #0
- 80087dc: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
- huart->TxXferCount = 0U;
- 80087e0: 68fb ldr r3, [r7, #12]
- 80087e2: 2200 movs r2, #0
- 80087e4: f8a3 2052 strh.w r2, [r3, #82] ; 0x52
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
- /*Call registered error callback*/
- huart->ErrorCallback(huart);
-#else
- /*Call legacy weak error callback*/
- HAL_UART_ErrorCallback(huart);
- 80087e8: 68f8 ldr r0, [r7, #12]
- 80087ea: f7ff fc07 bl 8007ffc <HAL_UART_ErrorCallback>
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
-}
- 80087ee: bf00 nop
- 80087f0: 3710 adds r7, #16
- 80087f2: 46bd mov sp, r7
- 80087f4: bd80 pop {r7, pc}
-
-080087f6 <UART_EndTransmit_IT>:
- * @param huart pointer to a UART_HandleTypeDef structure that contains
- * the configuration information for the specified UART module.
- * @retval None
- */
-static void UART_EndTransmit_IT(UART_HandleTypeDef *huart)
-{
- 80087f6: b580 push {r7, lr}
- 80087f8: b082 sub sp, #8
- 80087fa: af00 add r7, sp, #0
- 80087fc: 6078 str r0, [r7, #4]
- /* Disable the UART Transmit Complete Interrupt */
- CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);
- 80087fe: 687b ldr r3, [r7, #4]
- 8008800: 681b ldr r3, [r3, #0]
- 8008802: 681a ldr r2, [r3, #0]
- 8008804: 687b ldr r3, [r7, #4]
- 8008806: 681b ldr r3, [r3, #0]
- 8008808: f022 0240 bic.w r2, r2, #64 ; 0x40
- 800880c: 601a str r2, [r3, #0]
-
- /* Tx process is ended, restore huart->gState to Ready */
- huart->gState = HAL_UART_STATE_READY;
- 800880e: 687b ldr r3, [r7, #4]
- 8008810: 2220 movs r2, #32
- 8008812: 675a str r2, [r3, #116] ; 0x74
-
- /* Cleat TxISR function pointer */
- huart->TxISR = NULL;
- 8008814: 687b ldr r3, [r7, #4]
- 8008816: 2200 movs r2, #0
- 8008818: 665a str r2, [r3, #100] ; 0x64
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
- /*Call registered Tx complete callback*/
- huart->TxCpltCallback(huart);
-#else
- /*Call legacy weak Tx complete callback*/
- HAL_UART_TxCpltCallback(huart);
- 800881a: 6878 ldr r0, [r7, #4]
- 800881c: f7ff fbe4 bl 8007fe8 <HAL_UART_TxCpltCallback>
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
-}
- 8008820: bf00 nop
- 8008822: 3708 adds r7, #8
- 8008824: 46bd mov sp, r7
- 8008826: bd80 pop {r7, pc}
-
-08008828 <UART_RxISR_8BIT>:
- * @brief RX interrrupt handler for 7 or 8 bits data word length .
- * @param huart UART handle.
- * @retval None
- */
-static void UART_RxISR_8BIT(UART_HandleTypeDef *huart)
-{
- 8008828: b580 push {r7, lr}
- 800882a: b084 sub sp, #16
- 800882c: af00 add r7, sp, #0
- 800882e: 6078 str r0, [r7, #4]
- uint16_t uhMask = huart->Mask;
- 8008830: 687b ldr r3, [r7, #4]
- 8008832: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c
- 8008836: 81fb strh r3, [r7, #14]
- uint16_t uhdata;
-
- /* Check that a Rx process is ongoing */
- if (huart->RxState == HAL_UART_STATE_BUSY_RX)
- 8008838: 687b ldr r3, [r7, #4]
- 800883a: 6f9b ldr r3, [r3, #120] ; 0x78
- 800883c: 2b22 cmp r3, #34 ; 0x22
- 800883e: d13a bne.n 80088b6 <UART_RxISR_8BIT+0x8e>
- {
- uhdata = (uint16_t) READ_REG(huart->Instance->RDR);
- 8008840: 687b ldr r3, [r7, #4]
- 8008842: 681b ldr r3, [r3, #0]
- 8008844: 6a5b ldr r3, [r3, #36] ; 0x24
- 8008846: 81bb strh r3, [r7, #12]
- *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask);
- 8008848: 89bb ldrh r3, [r7, #12]
- 800884a: b2d9 uxtb r1, r3
- 800884c: 89fb ldrh r3, [r7, #14]
- 800884e: b2da uxtb r2, r3
- 8008850: 687b ldr r3, [r7, #4]
- 8008852: 6d5b ldr r3, [r3, #84] ; 0x54
- 8008854: 400a ands r2, r1
- 8008856: b2d2 uxtb r2, r2
- 8008858: 701a strb r2, [r3, #0]
- huart->pRxBuffPtr++;
- 800885a: 687b ldr r3, [r7, #4]
- 800885c: 6d5b ldr r3, [r3, #84] ; 0x54
- 800885e: 1c5a adds r2, r3, #1
- 8008860: 687b ldr r3, [r7, #4]
- 8008862: 655a str r2, [r3, #84] ; 0x54
- huart->RxXferCount--;
- 8008864: 687b ldr r3, [r7, #4]
- 8008866: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
- 800886a: b29b uxth r3, r3
- 800886c: 3b01 subs r3, #1
- 800886e: b29a uxth r2, r3
- 8008870: 687b ldr r3, [r7, #4]
- 8008872: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
-
- if (huart->RxXferCount == 0U)
- 8008876: 687b ldr r3, [r7, #4]
- 8008878: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
- 800887c: b29b uxth r3, r3
- 800887e: 2b00 cmp r3, #0
- 8008880: d121 bne.n 80088c6 <UART_RxISR_8BIT+0x9e>
- {
- /* Disable the UART Parity Error Interrupt and RXNE interrupts */
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
- 8008882: 687b ldr r3, [r7, #4]
- 8008884: 681b ldr r3, [r3, #0]
- 8008886: 681a ldr r2, [r3, #0]
- 8008888: 687b ldr r3, [r7, #4]
- 800888a: 681b ldr r3, [r3, #0]
- 800888c: f422 7290 bic.w r2, r2, #288 ; 0x120
- 8008890: 601a str r2, [r3, #0]
-
- /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 8008892: 687b ldr r3, [r7, #4]
- 8008894: 681b ldr r3, [r3, #0]
- 8008896: 689a ldr r2, [r3, #8]
- 8008898: 687b ldr r3, [r7, #4]
- 800889a: 681b ldr r3, [r3, #0]
- 800889c: f022 0201 bic.w r2, r2, #1
- 80088a0: 609a str r2, [r3, #8]
-
- /* Rx process is completed, restore huart->RxState to Ready */
- huart->RxState = HAL_UART_STATE_READY;
- 80088a2: 687b ldr r3, [r7, #4]
- 80088a4: 2220 movs r2, #32
- 80088a6: 679a str r2, [r3, #120] ; 0x78
-
- /* Clear RxISR function pointer */
- huart->RxISR = NULL;
- 80088a8: 687b ldr r3, [r7, #4]
- 80088aa: 2200 movs r2, #0
- 80088ac: 661a str r2, [r3, #96] ; 0x60
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
- /*Call registered Rx complete callback*/
- huart->RxCpltCallback(huart);
-#else
- /*Call legacy weak Rx complete callback*/
- HAL_UART_RxCpltCallback(huart);
- 80088ae: 6878 ldr r0, [r7, #4]
- 80088b0: f7f8 ff00 bl 80016b4 <HAL_UART_RxCpltCallback>
- else
- {
- /* Clear RXNE interrupt flag */
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
- }
-}
- 80088b4: e007 b.n 80088c6 <UART_RxISR_8BIT+0x9e>
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
- 80088b6: 687b ldr r3, [r7, #4]
- 80088b8: 681b ldr r3, [r3, #0]
- 80088ba: 699a ldr r2, [r3, #24]
- 80088bc: 687b ldr r3, [r7, #4]
- 80088be: 681b ldr r3, [r3, #0]
- 80088c0: f042 0208 orr.w r2, r2, #8
- 80088c4: 619a str r2, [r3, #24]
-}
- 80088c6: bf00 nop
- 80088c8: 3710 adds r7, #16
- 80088ca: 46bd mov sp, r7
- 80088cc: bd80 pop {r7, pc}
-
-080088ce <UART_RxISR_16BIT>:
- * interruptions have been enabled by HAL_UART_Receive_IT()
- * @param huart UART handle.
- * @retval None
- */
-static void UART_RxISR_16BIT(UART_HandleTypeDef *huart)
-{
- 80088ce: b580 push {r7, lr}
- 80088d0: b084 sub sp, #16
- 80088d2: af00 add r7, sp, #0
- 80088d4: 6078 str r0, [r7, #4]
- uint16_t *tmp;
- uint16_t uhMask = huart->Mask;
- 80088d6: 687b ldr r3, [r7, #4]
- 80088d8: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c
- 80088dc: 81fb strh r3, [r7, #14]
- uint16_t uhdata;
-
- /* Check that a Rx process is ongoing */
- if (huart->RxState == HAL_UART_STATE_BUSY_RX)
- 80088de: 687b ldr r3, [r7, #4]
- 80088e0: 6f9b ldr r3, [r3, #120] ; 0x78
- 80088e2: 2b22 cmp r3, #34 ; 0x22
- 80088e4: d13a bne.n 800895c <UART_RxISR_16BIT+0x8e>
- {
- uhdata = (uint16_t) READ_REG(huart->Instance->RDR);
- 80088e6: 687b ldr r3, [r7, #4]
- 80088e8: 681b ldr r3, [r3, #0]
- 80088ea: 6a5b ldr r3, [r3, #36] ; 0x24
- 80088ec: 81bb strh r3, [r7, #12]
- tmp = (uint16_t *) huart->pRxBuffPtr ;
- 80088ee: 687b ldr r3, [r7, #4]
- 80088f0: 6d5b ldr r3, [r3, #84] ; 0x54
- 80088f2: 60bb str r3, [r7, #8]
- *tmp = (uint16_t)(uhdata & uhMask);
- 80088f4: 89ba ldrh r2, [r7, #12]
- 80088f6: 89fb ldrh r3, [r7, #14]
- 80088f8: 4013 ands r3, r2
- 80088fa: b29a uxth r2, r3
- 80088fc: 68bb ldr r3, [r7, #8]
- 80088fe: 801a strh r2, [r3, #0]
- huart->pRxBuffPtr += 2U;
- 8008900: 687b ldr r3, [r7, #4]
- 8008902: 6d5b ldr r3, [r3, #84] ; 0x54
- 8008904: 1c9a adds r2, r3, #2
- 8008906: 687b ldr r3, [r7, #4]
- 8008908: 655a str r2, [r3, #84] ; 0x54
- huart->RxXferCount--;
- 800890a: 687b ldr r3, [r7, #4]
- 800890c: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
- 8008910: b29b uxth r3, r3
- 8008912: 3b01 subs r3, #1
- 8008914: b29a uxth r2, r3
- 8008916: 687b ldr r3, [r7, #4]
- 8008918: f8a3 205a strh.w r2, [r3, #90] ; 0x5a
-
- if (huart->RxXferCount == 0U)
- 800891c: 687b ldr r3, [r7, #4]
- 800891e: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a
- 8008922: b29b uxth r3, r3
- 8008924: 2b00 cmp r3, #0
- 8008926: d121 bne.n 800896c <UART_RxISR_16BIT+0x9e>
- {
- /* Disable the UART Parity Error Interrupt and RXNE interrupt*/
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
- 8008928: 687b ldr r3, [r7, #4]
- 800892a: 681b ldr r3, [r3, #0]
- 800892c: 681a ldr r2, [r3, #0]
- 800892e: 687b ldr r3, [r7, #4]
- 8008930: 681b ldr r3, [r3, #0]
- 8008932: f422 7290 bic.w r2, r2, #288 ; 0x120
- 8008936: 601a str r2, [r3, #0]
-
- /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 8008938: 687b ldr r3, [r7, #4]
- 800893a: 681b ldr r3, [r3, #0]
- 800893c: 689a ldr r2, [r3, #8]
- 800893e: 687b ldr r3, [r7, #4]
- 8008940: 681b ldr r3, [r3, #0]
- 8008942: f022 0201 bic.w r2, r2, #1
- 8008946: 609a str r2, [r3, #8]
-
- /* Rx process is completed, restore huart->RxState to Ready */
- huart->RxState = HAL_UART_STATE_READY;
- 8008948: 687b ldr r3, [r7, #4]
- 800894a: 2220 movs r2, #32
- 800894c: 679a str r2, [r3, #120] ; 0x78
-
- /* Clear RxISR function pointer */
- huart->RxISR = NULL;
- 800894e: 687b ldr r3, [r7, #4]
- 8008950: 2200 movs r2, #0
- 8008952: 661a str r2, [r3, #96] ; 0x60
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
- /*Call registered Rx complete callback*/
- huart->RxCpltCallback(huart);
-#else
- /*Call legacy weak Rx complete callback*/
- HAL_UART_RxCpltCallback(huart);
- 8008954: 6878 ldr r0, [r7, #4]
- 8008956: f7f8 fead bl 80016b4 <HAL_UART_RxCpltCallback>
- else
- {
- /* Clear RXNE interrupt flag */
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
- }
-}
- 800895a: e007 b.n 800896c <UART_RxISR_16BIT+0x9e>
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
- 800895c: 687b ldr r3, [r7, #4]
- 800895e: 681b ldr r3, [r3, #0]
- 8008960: 699a ldr r2, [r3, #24]
- 8008962: 687b ldr r3, [r7, #4]
- 8008964: 681b ldr r3, [r3, #0]
- 8008966: f042 0208 orr.w r2, r2, #8
- 800896a: 619a str r2, [r3, #24]
-}
- 800896c: bf00 nop
- 800896e: 3710 adds r7, #16
- 8008970: 46bd mov sp, r7
- 8008972: bd80 pop {r7, pc}
-
-08008974 <__libc_init_array>:
- 8008974: b570 push {r4, r5, r6, lr}
- 8008976: 4e0d ldr r6, [pc, #52] ; (80089ac <__libc_init_array+0x38>)
- 8008978: 4c0d ldr r4, [pc, #52] ; (80089b0 <__libc_init_array+0x3c>)
- 800897a: 1ba4 subs r4, r4, r6
- 800897c: 10a4 asrs r4, r4, #2
- 800897e: 2500 movs r5, #0
- 8008980: 42a5 cmp r5, r4
- 8008982: d109 bne.n 8008998 <__libc_init_array+0x24>
- 8008984: 4e0b ldr r6, [pc, #44] ; (80089b4 <__libc_init_array+0x40>)
- 8008986: 4c0c ldr r4, [pc, #48] ; (80089b8 <__libc_init_array+0x44>)
- 8008988: f000 f820 bl 80089cc <_init>
- 800898c: 1ba4 subs r4, r4, r6
- 800898e: 10a4 asrs r4, r4, #2
- 8008990: 2500 movs r5, #0
- 8008992: 42a5 cmp r5, r4
- 8008994: d105 bne.n 80089a2 <__libc_init_array+0x2e>
- 8008996: bd70 pop {r4, r5, r6, pc}
- 8008998: f856 3025 ldr.w r3, [r6, r5, lsl #2]
- 800899c: 4798 blx r3
- 800899e: 3501 adds r5, #1
- 80089a0: e7ee b.n 8008980 <__libc_init_array+0xc>
- 80089a2: f856 3025 ldr.w r3, [r6, r5, lsl #2]
- 80089a6: 4798 blx r3
- 80089a8: 3501 adds r5, #1
- 80089aa: e7f2 b.n 8008992 <__libc_init_array+0x1e>
- 80089ac: 08008cec .word 0x08008cec
- 80089b0: 08008cec .word 0x08008cec
- 80089b4: 08008cec .word 0x08008cec
- 80089b8: 08008cf4 .word 0x08008cf4
-
-080089bc <memset>:
- 80089bc: 4402 add r2, r0
- 80089be: 4603 mov r3, r0
- 80089c0: 4293 cmp r3, r2
- 80089c2: d100 bne.n 80089c6 <memset+0xa>
- 80089c4: 4770 bx lr
- 80089c6: f803 1b01 strb.w r1, [r3], #1
- 80089ca: e7f9 b.n 80089c0 <memset+0x4>
-
-080089cc <_init>:
- 80089cc: b5f8 push {r3, r4, r5, r6, r7, lr}
- 80089ce: bf00 nop
- 80089d0: bcf8 pop {r3, r4, r5, r6, r7}
- 80089d2: bc08 pop {r3}
- 80089d4: 469e mov lr, r3
- 80089d6: 4770 bx lr
-
-080089d8 <_fini>:
- 80089d8: b5f8 push {r3, r4, r5, r6, r7, lr}
- 80089da: bf00 nop
- 80089dc: bcf8 pop {r3, r4, r5, r6, r7}
- 80089de: bc08 pop {r3}
- 80089e0: 469e mov lr, r3
- 80089e2: 4770 bx lr
+++ /dev/null
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-ELF_SRCS :=
-C_UPPER_SRCS :=
-CXX_SRCS :=
-C++_SRCS :=
-OBJ_SRCS :=
-S_SRCS :=
-CC_SRCS :=
-C_SRCS :=
-CPP_SRCS :=
-S_UPPER_SRCS :=
-O_SRCS :=
-CC_DEPS :=
-SIZE_OUTPUT :=
-OBJDUMP_LIST :=
-C++_DEPS :=
-EXECUTABLES :=
-OBJS :=
-C_UPPER_DEPS :=
-CXX_DEPS :=
-C_DEPS :=
-CPP_DEPS :=
-
-# Every subdirectory with source files must be described here
-SUBDIRS := \
-Core/Src \
-Core/Startup \
-Drivers/STM32F7xx_HAL_Driver/Src \
-
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f767xx.h\r
- * @author MCD Application Team\r
- * @brief CMSIS Cortex-M7 Device Peripheral Access Layer Header File.\r
- *\r
- * This file contains:\r
- * - Data structures and the address mapping for all peripherals\r
- * - Peripheral's registers declarations and bits definition\r
- * - Macros to access peripheral\92s registers hardware\r
- *\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>\r
- *\r
- * Redistribution and use in source and binary forms, with or without modification,\r
- * are permitted provided that the following conditions are met:\r
- * 1. Redistributions of source code must retain the above copyright notice,\r
- * this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright notice,\r
- * this list of conditions and the following disclaimer in the documentation\r
- * and/or other materials provided with the distribution.\r
- * 3. Neither the name of STMicroelectronics nor the names of its contributors\r
- * may be used to endorse or promote products derived from this software\r
- * without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/** @addtogroup CMSIS_Device\r
- * @{\r
- */\r
-\r
-/** @addtogroup stm32f767xx\r
- * @{\r
- */\r
-\r
-#ifndef __STM32F767xx_H\r
-#define __STM32F767xx_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif /* __cplusplus */\r
-\r
-/** @addtogroup Configuration_section_for_CMSIS\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief STM32F7xx Interrupt Number Definition, according to the selected device\r
- * in @ref Library_configuration_section\r
- */\r
-typedef enum\r
-{\r
-/****** Cortex-M7 Processor Exceptions Numbers ****************************************************************/\r
- NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */\r
- MemoryManagement_IRQn = -12, /*!< 4 Cortex-M7 Memory Management Interrupt */\r
- BusFault_IRQn = -11, /*!< 5 Cortex-M7 Bus Fault Interrupt */\r
- UsageFault_IRQn = -10, /*!< 6 Cortex-M7 Usage Fault Interrupt */\r
- SVCall_IRQn = -5, /*!< 11 Cortex-M7 SV Call Interrupt */\r
- DebugMonitor_IRQn = -4, /*!< 12 Cortex-M7 Debug Monitor Interrupt */\r
- PendSV_IRQn = -2, /*!< 14 Cortex-M7 Pend SV Interrupt */\r
- SysTick_IRQn = -1, /*!< 15 Cortex-M7 System Tick Interrupt */\r
-/****** STM32 specific Interrupt Numbers **********************************************************************/\r
- WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */\r
- PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */\r
- TAMP_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts through the EXTI line */\r
- RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */\r
- FLASH_IRQn = 4, /*!< FLASH global Interrupt */\r
- RCC_IRQn = 5, /*!< RCC global Interrupt */\r
- EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */\r
- EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */\r
- EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */\r
- EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */\r
- EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */\r
- DMA1_Stream0_IRQn = 11, /*!< DMA1 Stream 0 global Interrupt */\r
- DMA1_Stream1_IRQn = 12, /*!< DMA1 Stream 1 global Interrupt */\r
- DMA1_Stream2_IRQn = 13, /*!< DMA1 Stream 2 global Interrupt */\r
- DMA1_Stream3_IRQn = 14, /*!< DMA1 Stream 3 global Interrupt */\r
- DMA1_Stream4_IRQn = 15, /*!< DMA1 Stream 4 global Interrupt */\r
- DMA1_Stream5_IRQn = 16, /*!< DMA1 Stream 5 global Interrupt */\r
- DMA1_Stream6_IRQn = 17, /*!< DMA1 Stream 6 global Interrupt */\r
- ADC_IRQn = 18, /*!< ADC1, ADC2 and ADC3 global Interrupts */\r
- CAN1_TX_IRQn = 19, /*!< CAN1 TX Interrupt */\r
- CAN1_RX0_IRQn = 20, /*!< CAN1 RX0 Interrupt */\r
- CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */\r
- CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */\r
- EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */\r
- TIM1_BRK_TIM9_IRQn = 24, /*!< TIM1 Break interrupt and TIM9 global interrupt */\r
- TIM1_UP_TIM10_IRQn = 25, /*!< TIM1 Update Interrupt and TIM10 global interrupt */\r
- TIM1_TRG_COM_TIM11_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt */\r
- TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */\r
- TIM2_IRQn = 28, /*!< TIM2 global Interrupt */\r
- TIM3_IRQn = 29, /*!< TIM3 global Interrupt */\r
- TIM4_IRQn = 30, /*!< TIM4 global Interrupt */\r
- I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */\r
- I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */\r
- I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */\r
- I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */\r
- SPI1_IRQn = 35, /*!< SPI1 global Interrupt */\r
- SPI2_IRQn = 36, /*!< SPI2 global Interrupt */\r
- USART1_IRQn = 37, /*!< USART1 global Interrupt */\r
- USART2_IRQn = 38, /*!< USART2 global Interrupt */\r
- USART3_IRQn = 39, /*!< USART3 global Interrupt */\r
- EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */\r
- RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */\r
- OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS Wakeup through EXTI line interrupt */\r
- TIM8_BRK_TIM12_IRQn = 43, /*!< TIM8 Break Interrupt and TIM12 global interrupt */\r
- TIM8_UP_TIM13_IRQn = 44, /*!< TIM8 Update Interrupt and TIM13 global interrupt */\r
- TIM8_TRG_COM_TIM14_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */\r
- TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */\r
- DMA1_Stream7_IRQn = 47, /*!< DMA1 Stream7 Interrupt */\r
- FMC_IRQn = 48, /*!< FMC global Interrupt */\r
- SDMMC1_IRQn = 49, /*!< SDMMC1 global Interrupt */\r
- TIM5_IRQn = 50, /*!< TIM5 global Interrupt */\r
- SPI3_IRQn = 51, /*!< SPI3 global Interrupt */\r
- UART4_IRQn = 52, /*!< UART4 global Interrupt */\r
- UART5_IRQn = 53, /*!< UART5 global Interrupt */\r
- TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2 underrun error interrupts */\r
- TIM7_IRQn = 55, /*!< TIM7 global interrupt */\r
- DMA2_Stream0_IRQn = 56, /*!< DMA2 Stream 0 global Interrupt */\r
- DMA2_Stream1_IRQn = 57, /*!< DMA2 Stream 1 global Interrupt */\r
- DMA2_Stream2_IRQn = 58, /*!< DMA2 Stream 2 global Interrupt */\r
- DMA2_Stream3_IRQn = 59, /*!< DMA2 Stream 3 global Interrupt */\r
- DMA2_Stream4_IRQn = 60, /*!< DMA2 Stream 4 global Interrupt */\r
- ETH_IRQn = 61, /*!< Ethernet global Interrupt */\r
- ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */\r
- CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */\r
- CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */\r
- CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */\r
- CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */\r
- OTG_FS_IRQn = 67, /*!< USB OTG FS global Interrupt */\r
- DMA2_Stream5_IRQn = 68, /*!< DMA2 Stream 5 global interrupt */\r
- DMA2_Stream6_IRQn = 69, /*!< DMA2 Stream 6 global interrupt */\r
- DMA2_Stream7_IRQn = 70, /*!< DMA2 Stream 7 global interrupt */\r
- USART6_IRQn = 71, /*!< USART6 global interrupt */\r
- I2C3_EV_IRQn = 72, /*!< I2C3 event interrupt */\r
- I2C3_ER_IRQn = 73, /*!< I2C3 error interrupt */\r
- OTG_HS_EP1_OUT_IRQn = 74, /*!< USB OTG HS End Point 1 Out global interrupt */\r
- OTG_HS_EP1_IN_IRQn = 75, /*!< USB OTG HS End Point 1 In global interrupt */\r
- OTG_HS_WKUP_IRQn = 76, /*!< USB OTG HS Wakeup through EXTI interrupt */\r
- OTG_HS_IRQn = 77, /*!< USB OTG HS global interrupt */\r
- DCMI_IRQn = 78, /*!< DCMI global interrupt */\r
- RNG_IRQn = 80, /*!< RNG global interrupt */\r
- FPU_IRQn = 81, /*!< FPU global interrupt */\r
- UART7_IRQn = 82, /*!< UART7 global interrupt */\r
- UART8_IRQn = 83, /*!< UART8 global interrupt */\r
- SPI4_IRQn = 84, /*!< SPI4 global Interrupt */\r
- SPI5_IRQn = 85, /*!< SPI5 global Interrupt */\r
- SPI6_IRQn = 86, /*!< SPI6 global Interrupt */\r
- SAI1_IRQn = 87, /*!< SAI1 global Interrupt */\r
- LTDC_IRQn = 88, /*!< LTDC global Interrupt */\r
- LTDC_ER_IRQn = 89, /*!< LTDC Error global Interrupt */\r
- DMA2D_IRQn = 90, /*!< DMA2D global Interrupt */\r
- SAI2_IRQn = 91, /*!< SAI2 global Interrupt */\r
- QUADSPI_IRQn = 92, /*!< Quad SPI global interrupt */\r
- LPTIM1_IRQn = 93, /*!< LP TIM1 interrupt */\r
- CEC_IRQn = 94, /*!< HDMI-CEC global Interrupt */\r
- I2C4_EV_IRQn = 95, /*!< I2C4 Event Interrupt */\r
- I2C4_ER_IRQn = 96, /*!< I2C4 Error Interrupt */\r
- SPDIF_RX_IRQn = 97, /*!< SPDIF-RX global Interrupt */\r
- DFSDM1_FLT0_IRQn = 99, /*!< DFSDM1 Filter 0 global Interrupt */\r
- DFSDM1_FLT1_IRQn = 100, /*!< DFSDM1 Filter 1 global Interrupt */\r
- DFSDM1_FLT2_IRQn = 101, /*!< DFSDM1 Filter 2 global Interrupt */\r
- DFSDM1_FLT3_IRQn = 102, /*!< DFSDM1 Filter 3 global Interrupt */\r
- SDMMC2_IRQn = 103, /*!< SDMMC2 global Interrupt */\r
- CAN3_TX_IRQn = 104, /*!< CAN3 TX Interrupt */\r
- CAN3_RX0_IRQn = 105, /*!< CAN3 RX0 Interrupt */\r
- CAN3_RX1_IRQn = 106, /*!< CAN3 RX1 Interrupt */\r
- CAN3_SCE_IRQn = 107, /*!< CAN3 SCE Interrupt */\r
- JPEG_IRQn = 108, /*!< JPEG global Interrupt */\r
- MDIOS_IRQn = 109 /*!< MDIO Slave global Interrupt */\r
-} IRQn_Type;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @brief Configuration of the Cortex-M7 Processor and Core Peripherals\r
- */\r
-#define __CM7_REV 0x0100U /*!< Cortex-M7 revision r1p0 */\r
-#define __MPU_PRESENT 1 /*!< CM7 provides an MPU */\r
-#define __NVIC_PRIO_BITS 4 /*!< CM7 uses 4 Bits for the Priority Levels */\r
-#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */\r
-#define __FPU_PRESENT 1 /*!< FPU present */\r
-#define __ICACHE_PRESENT 1 /*!< CM7 instruction cache present */\r
-#define __DCACHE_PRESENT 1 /*!< CM7 data cache present */\r
-#include "core_cm7.h" /*!< Cortex-M7 processor and core peripherals */\r
-\r
-\r
-#include "system_stm32f7xx.h"\r
-#include <stdint.h>\r
-\r
-/** @addtogroup Peripheral_registers_structures\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Analog to Digital Converter\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t SR; /*!< ADC status register, Address offset: 0x00 */\r
- __IO uint32_t CR1; /*!< ADC control register 1, Address offset: 0x04 */\r
- __IO uint32_t CR2; /*!< ADC control register 2, Address offset: 0x08 */\r
- __IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x0C */\r
- __IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x10 */\r
- __IO uint32_t JOFR1; /*!< ADC injected channel data offset register 1, Address offset: 0x14 */\r
- __IO uint32_t JOFR2; /*!< ADC injected channel data offset register 2, Address offset: 0x18 */\r
- __IO uint32_t JOFR3; /*!< ADC injected channel data offset register 3, Address offset: 0x1C */\r
- __IO uint32_t JOFR4; /*!< ADC injected channel data offset register 4, Address offset: 0x20 */\r
- __IO uint32_t HTR; /*!< ADC watchdog higher threshold register, Address offset: 0x24 */\r
- __IO uint32_t LTR; /*!< ADC watchdog lower threshold register, Address offset: 0x28 */\r
- __IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x2C */\r
- __IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x30 */\r
- __IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x34 */\r
- __IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x38*/\r
- __IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x3C */\r
- __IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x40 */\r
- __IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x44 */\r
- __IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x48 */\r
- __IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x4C */\r
-} ADC_TypeDef;\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CSR; /*!< ADC Common status register, Address offset: ADC1 base address + 0x300 */\r
- __IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */\r
- __IO uint32_t CDR; /*!< ADC common regular data register for dual\r
- AND triple modes, Address offset: ADC1 base address + 0x308 */\r
-} ADC_Common_TypeDef;\r
-\r
-\r
-/**\r
- * @brief Controller Area Network TxMailBox\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t TIR; /*!< CAN TX mailbox identifier register */\r
- __IO uint32_t TDTR; /*!< CAN mailbox data length control and time stamp register */\r
- __IO uint32_t TDLR; /*!< CAN mailbox data low register */\r
- __IO uint32_t TDHR; /*!< CAN mailbox data high register */\r
-} CAN_TxMailBox_TypeDef;\r
-\r
-/**\r
- * @brief Controller Area Network FIFOMailBox\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t RIR; /*!< CAN receive FIFO mailbox identifier register */\r
- __IO uint32_t RDTR; /*!< CAN receive FIFO mailbox data length control and time stamp register */\r
- __IO uint32_t RDLR; /*!< CAN receive FIFO mailbox data low register */\r
- __IO uint32_t RDHR; /*!< CAN receive FIFO mailbox data high register */\r
-} CAN_FIFOMailBox_TypeDef;\r
-\r
-/**\r
- * @brief Controller Area Network FilterRegister\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t FR1; /*!< CAN Filter bank register 1 */\r
- __IO uint32_t FR2; /*!< CAN Filter bank register 1 */\r
-} CAN_FilterRegister_TypeDef;\r
-\r
-/**\r
- * @brief Controller Area Network\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t MCR; /*!< CAN master control register, Address offset: 0x00 */\r
- __IO uint32_t MSR; /*!< CAN master status register, Address offset: 0x04 */\r
- __IO uint32_t TSR; /*!< CAN transmit status register, Address offset: 0x08 */\r
- __IO uint32_t RF0R; /*!< CAN receive FIFO 0 register, Address offset: 0x0C */\r
- __IO uint32_t RF1R; /*!< CAN receive FIFO 1 register, Address offset: 0x10 */\r
- __IO uint32_t IER; /*!< CAN interrupt enable register, Address offset: 0x14 */\r
- __IO uint32_t ESR; /*!< CAN error status register, Address offset: 0x18 */\r
- __IO uint32_t BTR; /*!< CAN bit timing register, Address offset: 0x1C */\r
- uint32_t RESERVED0[88]; /*!< Reserved, 0x020 - 0x17F */\r
- CAN_TxMailBox_TypeDef sTxMailBox[3]; /*!< CAN Tx MailBox, Address offset: 0x180 - 0x1AC */\r
- CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; /*!< CAN FIFO MailBox, Address offset: 0x1B0 - 0x1CC */\r
- uint32_t RESERVED1[12]; /*!< Reserved, 0x1D0 - 0x1FF */\r
- __IO uint32_t FMR; /*!< CAN filter master register, Address offset: 0x200 */\r
- __IO uint32_t FM1R; /*!< CAN filter mode register, Address offset: 0x204 */\r
- uint32_t RESERVED2; /*!< Reserved, 0x208 */\r
- __IO uint32_t FS1R; /*!< CAN filter scale register, Address offset: 0x20C */\r
- uint32_t RESERVED3; /*!< Reserved, 0x210 */\r
- __IO uint32_t FFA1R; /*!< CAN filter FIFO assignment register, Address offset: 0x214 */\r
- uint32_t RESERVED4; /*!< Reserved, 0x218 */\r
- __IO uint32_t FA1R; /*!< CAN filter activation register, Address offset: 0x21C */\r
- uint32_t RESERVED5[8]; /*!< Reserved, 0x220-0x23F */\r
- CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register, Address offset: 0x240-0x31C */\r
-} CAN_TypeDef;\r
-\r
-/**\r
- * @brief HDMI-CEC\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< CEC control register, Address offset:0x00 */\r
- __IO uint32_t CFGR; /*!< CEC configuration register, Address offset:0x04 */\r
- __IO uint32_t TXDR; /*!< CEC Tx data register , Address offset:0x08 */\r
- __IO uint32_t RXDR; /*!< CEC Rx Data Register, Address offset:0x0C */\r
- __IO uint32_t ISR; /*!< CEC Interrupt and Status Register, Address offset:0x10 */\r
- __IO uint32_t IER; /*!< CEC interrupt enable register, Address offset:0x14 */\r
-}CEC_TypeDef;\r
-\r
-/**\r
- * @brief CRC calculation unit\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */\r
- __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */\r
- uint8_t RESERVED0; /*!< Reserved, 0x05 */\r
- uint16_t RESERVED1; /*!< Reserved, 0x06 */\r
- __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */\r
- uint32_t RESERVED2; /*!< Reserved, 0x0C */\r
- __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */\r
- __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */\r
-} CRC_TypeDef;\r
-\r
-/**\r
- * @brief Digital to Analog Converter\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */\r
- __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */\r
- __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */\r
- __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */\r
- __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */\r
- __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */\r
- __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */\r
- __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */\r
- __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */\r
- __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */\r
- __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */\r
- __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */\r
- __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */\r
- __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */\r
-} DAC_TypeDef;\r
-\r
-/**\r
- * @brief DFSDM module registers\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t FLTCR1; /*!< DFSDM control register1, Address offset: 0x100 */\r
- __IO uint32_t FLTCR2; /*!< DFSDM control register2, Address offset: 0x104 */\r
- __IO uint32_t FLTISR; /*!< DFSDM interrupt and status register, Address offset: 0x108 */\r
- __IO uint32_t FLTICR; /*!< DFSDM interrupt flag clear register, Address offset: 0x10C */\r
- __IO uint32_t FLTJCHGR; /*!< DFSDM injected channel group selection register, Address offset: 0x110 */\r
- __IO uint32_t FLTFCR; /*!< DFSDM filter control register, Address offset: 0x114 */\r
- __IO uint32_t FLTJDATAR; /*!< DFSDM data register for injected group, Address offset: 0x118 */\r
- __IO uint32_t FLTRDATAR; /*!< DFSDM data register for regular group, Address offset: 0x11C */\r
- __IO uint32_t FLTAWHTR; /*!< DFSDM analog watchdog high threshold register, Address offset: 0x120 */\r
- __IO uint32_t FLTAWLTR; /*!< DFSDM analog watchdog low threshold register, Address offset: 0x124 */\r
- __IO uint32_t FLTAWSR; /*!< DFSDM analog watchdog status register Address offset: 0x128 */\r
- __IO uint32_t FLTAWCFR; /*!< DFSDM analog watchdog clear flag register Address offset: 0x12C */\r
- __IO uint32_t FLTEXMAX; /*!< DFSDM extreme detector maximum register, Address offset: 0x130 */\r
- __IO uint32_t FLTEXMIN; /*!< DFSDM extreme detector minimum register Address offset: 0x134 */\r
- __IO uint32_t FLTCNVTIMR; /*!< DFSDM conversion timer, Address offset: 0x138 */\r
-} DFSDM_Filter_TypeDef;\r
-\r
-/**\r
- * @brief DFSDM channel configuration registers\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t CHCFGR1; /*!< DFSDM channel configuration register1, Address offset: 0x00 */\r
- __IO uint32_t CHCFGR2; /*!< DFSDM channel configuration register2, Address offset: 0x04 */\r
- __IO uint32_t CHAWSCDR; /*!< DFSDM channel analog watchdog and\r
- short circuit detector register, Address offset: 0x08 */\r
- __IO uint32_t CHWDATAR; /*!< DFSDM channel watchdog filter data register, Address offset: 0x0C */\r
- __IO uint32_t CHDATINR; /*!< DFSDM channel data input register, Address offset: 0x10 */\r
-} DFSDM_Channel_TypeDef;\r
-\r
-/**\r
- * @brief Debug MCU\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */\r
- __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */\r
- __IO uint32_t APB1FZ; /*!< Debug MCU APB1 freeze register, Address offset: 0x08 */\r
- __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x0C */\r
-}DBGMCU_TypeDef;\r
-\r
-/**\r
- * @brief DCMI\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */\r
- __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */\r
- __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */\r
- __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */\r
- __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */\r
- __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */\r
- __IO uint32_t ESCR; /*!< DCMI embedded synchronization code register, Address offset: 0x18 */\r
- __IO uint32_t ESUR; /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */\r
- __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */\r
- __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */\r
- __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */\r
-} DCMI_TypeDef;\r
-\r
-/**\r
- * @brief DMA Controller\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< DMA stream x configuration register */\r
- __IO uint32_t NDTR; /*!< DMA stream x number of data register */\r
- __IO uint32_t PAR; /*!< DMA stream x peripheral address register */\r
- __IO uint32_t M0AR; /*!< DMA stream x memory 0 address register */\r
- __IO uint32_t M1AR; /*!< DMA stream x memory 1 address register */\r
- __IO uint32_t FCR; /*!< DMA stream x FIFO control register */\r
-} DMA_Stream_TypeDef;\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t LISR; /*!< DMA low interrupt status register, Address offset: 0x00 */\r
- __IO uint32_t HISR; /*!< DMA high interrupt status register, Address offset: 0x04 */\r
- __IO uint32_t LIFCR; /*!< DMA low interrupt flag clear register, Address offset: 0x08 */\r
- __IO uint32_t HIFCR; /*!< DMA high interrupt flag clear register, Address offset: 0x0C */\r
-} DMA_TypeDef;\r
-\r
-/**\r
- * @brief DMA2D Controller\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< DMA2D Control Register, Address offset: 0x00 */\r
- __IO uint32_t ISR; /*!< DMA2D Interrupt Status Register, Address offset: 0x04 */\r
- __IO uint32_t IFCR; /*!< DMA2D Interrupt Flag Clear Register, Address offset: 0x08 */\r
- __IO uint32_t FGMAR; /*!< DMA2D Foreground Memory Address Register, Address offset: 0x0C */\r
- __IO uint32_t FGOR; /*!< DMA2D Foreground Offset Register, Address offset: 0x10 */\r
- __IO uint32_t BGMAR; /*!< DMA2D Background Memory Address Register, Address offset: 0x14 */\r
- __IO uint32_t BGOR; /*!< DMA2D Background Offset Register, Address offset: 0x18 */\r
- __IO uint32_t FGPFCCR; /*!< DMA2D Foreground PFC Control Register, Address offset: 0x1C */\r
- __IO uint32_t FGCOLR; /*!< DMA2D Foreground Color Register, Address offset: 0x20 */\r
- __IO uint32_t BGPFCCR; /*!< DMA2D Background PFC Control Register, Address offset: 0x24 */\r
- __IO uint32_t BGCOLR; /*!< DMA2D Background Color Register, Address offset: 0x28 */\r
- __IO uint32_t FGCMAR; /*!< DMA2D Foreground CLUT Memory Address Register, Address offset: 0x2C */\r
- __IO uint32_t BGCMAR; /*!< DMA2D Background CLUT Memory Address Register, Address offset: 0x30 */\r
- __IO uint32_t OPFCCR; /*!< DMA2D Output PFC Control Register, Address offset: 0x34 */\r
- __IO uint32_t OCOLR; /*!< DMA2D Output Color Register, Address offset: 0x38 */\r
- __IO uint32_t OMAR; /*!< DMA2D Output Memory Address Register, Address offset: 0x3C */\r
- __IO uint32_t OOR; /*!< DMA2D Output Offset Register, Address offset: 0x40 */\r
- __IO uint32_t NLR; /*!< DMA2D Number of Line Register, Address offset: 0x44 */\r
- __IO uint32_t LWR; /*!< DMA2D Line Watermark Register, Address offset: 0x48 */\r
- __IO uint32_t AMTCR; /*!< DMA2D AHB Master Timer Configuration Register, Address offset: 0x4C */\r
- uint32_t RESERVED[236]; /*!< Reserved, 0x50-0x3FF */\r
- __IO uint32_t FGCLUT[256]; /*!< DMA2D Foreground CLUT, Address offset:400-7FF */\r
- __IO uint32_t BGCLUT[256]; /*!< DMA2D Background CLUT, Address offset:800-BFF */\r
-} DMA2D_TypeDef;\r
-\r
-\r
-/**\r
- * @brief Ethernet MAC\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t MACCR;\r
- __IO uint32_t MACFFR;\r
- __IO uint32_t MACHTHR;\r
- __IO uint32_t MACHTLR;\r
- __IO uint32_t MACMIIAR;\r
- __IO uint32_t MACMIIDR;\r
- __IO uint32_t MACFCR;\r
- __IO uint32_t MACVLANTR; /* 8 */\r
- uint32_t RESERVED0[2];\r
- __IO uint32_t MACRWUFFR; /* 11 */\r
- __IO uint32_t MACPMTCSR;\r
- uint32_t RESERVED1;\r
- __IO uint32_t MACDBGR;\r
- __IO uint32_t MACSR; /* 15 */\r
- __IO uint32_t MACIMR;\r
- __IO uint32_t MACA0HR;\r
- __IO uint32_t MACA0LR;\r
- __IO uint32_t MACA1HR;\r
- __IO uint32_t MACA1LR;\r
- __IO uint32_t MACA2HR;\r
- __IO uint32_t MACA2LR;\r
- __IO uint32_t MACA3HR;\r
- __IO uint32_t MACA3LR; /* 24 */\r
- uint32_t RESERVED2[40];\r
- __IO uint32_t MMCCR; /* 65 */\r
- __IO uint32_t MMCRIR;\r
- __IO uint32_t MMCTIR;\r
- __IO uint32_t MMCRIMR;\r
- __IO uint32_t MMCTIMR; /* 69 */\r
- uint32_t RESERVED3[14];\r
- __IO uint32_t MMCTGFSCCR; /* 84 */\r
- __IO uint32_t MMCTGFMSCCR;\r
- uint32_t RESERVED4[5];\r
- __IO uint32_t MMCTGFCR;\r
- uint32_t RESERVED5[10];\r
- __IO uint32_t MMCRFCECR;\r
- __IO uint32_t MMCRFAECR;\r
- uint32_t RESERVED6[10];\r
- __IO uint32_t MMCRGUFCR;\r
- uint32_t RESERVED7[334];\r
- __IO uint32_t PTPTSCR;\r
- __IO uint32_t PTPSSIR;\r
- __IO uint32_t PTPTSHR;\r
- __IO uint32_t PTPTSLR;\r
- __IO uint32_t PTPTSHUR;\r
- __IO uint32_t PTPTSLUR;\r
- __IO uint32_t PTPTSAR;\r
- __IO uint32_t PTPTTHR;\r
- __IO uint32_t PTPTTLR;\r
- __IO uint32_t RESERVED8;\r
- __IO uint32_t PTPTSSR;\r
- uint32_t RESERVED9[565];\r
- __IO uint32_t DMABMR;\r
- __IO uint32_t DMATPDR;\r
- __IO uint32_t DMARPDR;\r
- __IO uint32_t DMARDLAR;\r
- __IO uint32_t DMATDLAR;\r
- __IO uint32_t DMASR;\r
- __IO uint32_t DMAOMR;\r
- __IO uint32_t DMAIER;\r
- __IO uint32_t DMAMFBOCR;\r
- __IO uint32_t DMARSWTR;\r
- uint32_t RESERVED10[8];\r
- __IO uint32_t DMACHTDR;\r
- __IO uint32_t DMACHRDR;\r
- __IO uint32_t DMACHTBAR;\r
- __IO uint32_t DMACHRBAR;\r
-} ETH_TypeDef;\r
-\r
-/**\r
- * @brief External Interrupt/Event Controller\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t IMR; /*!< EXTI Interrupt mask register, Address offset: 0x00 */\r
- __IO uint32_t EMR; /*!< EXTI Event mask register, Address offset: 0x04 */\r
- __IO uint32_t RTSR; /*!< EXTI Rising trigger selection register, Address offset: 0x08 */\r
- __IO uint32_t FTSR; /*!< EXTI Falling trigger selection register, Address offset: 0x0C */\r
- __IO uint32_t SWIER; /*!< EXTI Software interrupt event register, Address offset: 0x10 */\r
- __IO uint32_t PR; /*!< EXTI Pending register, Address offset: 0x14 */\r
-} EXTI_TypeDef;\r
-\r
-/**\r
- * @brief FLASH Registers\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */\r
- __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x04 */\r
- __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x08 */\r
- __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x0C */\r
- __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x10 */\r
- __IO uint32_t OPTCR; /*!< FLASH option control register , Address offset: 0x14 */\r
- __IO uint32_t OPTCR1; /*!< FLASH option control register 1 , Address offset: 0x18 */\r
-} FLASH_TypeDef;\r
-\r
-\r
-\r
-/**\r
- * @brief Flexible Memory Controller\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t BTCR[8]; /*!< NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */\r
-} FMC_Bank1_TypeDef;\r
-\r
-/**\r
- * @brief Flexible Memory Controller Bank1E\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t BWTR[7]; /*!< NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */\r
-} FMC_Bank1E_TypeDef;\r
-\r
-/**\r
- * @brief Flexible Memory Controller Bank3\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t PCR; /*!< NAND Flash control register, Address offset: 0x80 */\r
- __IO uint32_t SR; /*!< NAND Flash FIFO status and interrupt register, Address offset: 0x84 */\r
- __IO uint32_t PMEM; /*!< NAND Flash Common memory space timing register, Address offset: 0x88 */\r
- __IO uint32_t PATT; /*!< NAND Flash Attribute memory space timing register, Address offset: 0x8C */\r
- uint32_t RESERVED0; /*!< Reserved, 0x90 */\r
- __IO uint32_t ECCR; /*!< NAND Flash ECC result registers, Address offset: 0x94 */\r
-} FMC_Bank3_TypeDef;\r
-\r
-/**\r
- * @brief Flexible Memory Controller Bank5_6\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t SDCR[2]; /*!< SDRAM Control registers , Address offset: 0x140-0x144 */\r
- __IO uint32_t SDTR[2]; /*!< SDRAM Timing registers , Address offset: 0x148-0x14C */\r
- __IO uint32_t SDCMR; /*!< SDRAM Command Mode register, Address offset: 0x150 */\r
- __IO uint32_t SDRTR; /*!< SDRAM Refresh Timer register, Address offset: 0x154 */\r
- __IO uint32_t SDSR; /*!< SDRAM Status register, Address offset: 0x158 */\r
-} FMC_Bank5_6_TypeDef;\r
-\r
-\r
-/**\r
- * @brief General Purpose I/O\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */\r
- __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */\r
- __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */\r
- __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */\r
- __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */\r
- __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */\r
- __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */\r
- __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */\r
- __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */\r
-} GPIO_TypeDef;\r
-\r
-/**\r
- * @brief System configuration controller\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */\r
- __IO uint32_t PMC; /*!< SYSCFG peripheral mode configuration register, Address offset: 0x04 */\r
- __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */\r
- uint32_t RESERVED; /*!< Reserved, 0x18 */\r
- __IO uint32_t CBR; /*!< SYSCFG Class B register, Address offset: 0x1C */\r
- __IO uint32_t CMPCR; /*!< SYSCFG Compensation cell control register, Address offset: 0x20 */\r
-} SYSCFG_TypeDef;\r
-\r
-/**\r
- * @brief Inter-integrated Circuit Interface\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */\r
- __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */\r
- __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */\r
- __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */\r
- __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */\r
- __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */\r
- __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */\r
- __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */\r
- __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */\r
- __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */\r
- __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */\r
-} I2C_TypeDef;\r
-\r
-/**\r
- * @brief Independent WATCHDOG\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */\r
- __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */\r
- __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */\r
- __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */\r
- __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */\r
-} IWDG_TypeDef;\r
-\r
-\r
-/**\r
- * @brief LCD-TFT Display Controller\r
- */\r
-\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[2]; /*!< Reserved, 0x00-0x04 */\r
- __IO uint32_t SSCR; /*!< LTDC Synchronization Size Configuration Register, Address offset: 0x08 */\r
- __IO uint32_t BPCR; /*!< LTDC Back Porch Configuration Register, Address offset: 0x0C */\r
- __IO uint32_t AWCR; /*!< LTDC Active Width Configuration Register, Address offset: 0x10 */\r
- __IO uint32_t TWCR; /*!< LTDC Total Width Configuration Register, Address offset: 0x14 */\r
- __IO uint32_t GCR; /*!< LTDC Global Control Register, Address offset: 0x18 */\r
- uint32_t RESERVED1[2]; /*!< Reserved, 0x1C-0x20 */\r
- __IO uint32_t SRCR; /*!< LTDC Shadow Reload Configuration Register, Address offset: 0x24 */\r
- uint32_t RESERVED2[1]; /*!< Reserved, 0x28 */\r
- __IO uint32_t BCCR; /*!< LTDC Background Color Configuration Register, Address offset: 0x2C */\r
- uint32_t RESERVED3[1]; /*!< Reserved, 0x30 */\r
- __IO uint32_t IER; /*!< LTDC Interrupt Enable Register, Address offset: 0x34 */\r
- __IO uint32_t ISR; /*!< LTDC Interrupt Status Register, Address offset: 0x38 */\r
- __IO uint32_t ICR; /*!< LTDC Interrupt Clear Register, Address offset: 0x3C */\r
- __IO uint32_t LIPCR; /*!< LTDC Line Interrupt Position Configuration Register, Address offset: 0x40 */\r
- __IO uint32_t CPSR; /*!< LTDC Current Position Status Register, Address offset: 0x44 */\r
- __IO uint32_t CDSR; /*!< LTDC Current Display Status Register, Address offset: 0x48 */\r
-} LTDC_TypeDef;\r
-\r
-/**\r
- * @brief LCD-TFT Display layer x Controller\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< LTDC Layerx Control Register Address offset: 0x84 */\r
- __IO uint32_t WHPCR; /*!< LTDC Layerx Window Horizontal Position Configuration Register Address offset: 0x88 */\r
- __IO uint32_t WVPCR; /*!< LTDC Layerx Window Vertical Position Configuration Register Address offset: 0x8C */\r
- __IO uint32_t CKCR; /*!< LTDC Layerx Color Keying Configuration Register Address offset: 0x90 */\r
- __IO uint32_t PFCR; /*!< LTDC Layerx Pixel Format Configuration Register Address offset: 0x94 */\r
- __IO uint32_t CACR; /*!< LTDC Layerx Constant Alpha Configuration Register Address offset: 0x98 */\r
- __IO uint32_t DCCR; /*!< LTDC Layerx Default Color Configuration Register Address offset: 0x9C */\r
- __IO uint32_t BFCR; /*!< LTDC Layerx Blending Factors Configuration Register Address offset: 0xA0 */\r
- uint32_t RESERVED0[2]; /*!< Reserved */\r
- __IO uint32_t CFBAR; /*!< LTDC Layerx Color Frame Buffer Address Register Address offset: 0xAC */\r
- __IO uint32_t CFBLR; /*!< LTDC Layerx Color Frame Buffer Length Register Address offset: 0xB0 */\r
- __IO uint32_t CFBLNR; /*!< LTDC Layerx ColorFrame Buffer Line Number Register Address offset: 0xB4 */\r
- uint32_t RESERVED1[3]; /*!< Reserved */\r
- __IO uint32_t CLUTWR; /*!< LTDC Layerx CLUT Write Register Address offset: 0x144 */\r
-\r
-} LTDC_Layer_TypeDef;\r
-\r
-/**\r
- * @brief Power Control\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR1; /*!< PWR power control register 1, Address offset: 0x00 */\r
- __IO uint32_t CSR1; /*!< PWR power control/status register 2, Address offset: 0x04 */\r
- __IO uint32_t CR2; /*!< PWR power control register 2, Address offset: 0x08 */\r
- __IO uint32_t CSR2; /*!< PWR power control/status register 2, Address offset: 0x0C */\r
-} PWR_TypeDef;\r
-\r
-\r
-/**\r
- * @brief Reset and Clock Control\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */\r
- __IO uint32_t PLLCFGR; /*!< RCC PLL configuration register, Address offset: 0x04 */\r
- __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */\r
- __IO uint32_t CIR; /*!< RCC clock interrupt register, Address offset: 0x0C */\r
- __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x10 */\r
- __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x14 */\r
- __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x18 */\r
- uint32_t RESERVED0; /*!< Reserved, 0x1C */\r
- __IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x20 */\r
- __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x24 */\r
- uint32_t RESERVED1[2]; /*!< Reserved, 0x28-0x2C */\r
- __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clock register, Address offset: 0x30 */\r
- __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clock register, Address offset: 0x34 */\r
- __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clock register, Address offset: 0x38 */\r
- uint32_t RESERVED2; /*!< Reserved, 0x3C */\r
- __IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x40 */\r
- __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x44 */\r
- uint32_t RESERVED3[2]; /*!< Reserved, 0x48-0x4C */\r
- __IO uint32_t AHB1LPENR; /*!< RCC AHB1 peripheral clock enable in low power mode register, Address offset: 0x50 */\r
- __IO uint32_t AHB2LPENR; /*!< RCC AHB2 peripheral clock enable in low power mode register, Address offset: 0x54 */\r
- __IO uint32_t AHB3LPENR; /*!< RCC AHB3 peripheral clock enable in low power mode register, Address offset: 0x58 */\r
- uint32_t RESERVED4; /*!< Reserved, 0x5C */\r
- __IO uint32_t APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x60 */\r
- __IO uint32_t APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x64 */\r
- uint32_t RESERVED5[2]; /*!< Reserved, 0x68-0x6C */\r
- __IO uint32_t BDCR; /*!< RCC Backup domain control register, Address offset: 0x70 */\r
- __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x74 */\r
- uint32_t RESERVED6[2]; /*!< Reserved, 0x78-0x7C */\r
- __IO uint32_t SSCGR; /*!< RCC spread spectrum clock generation register, Address offset: 0x80 */\r
- __IO uint32_t PLLI2SCFGR; /*!< RCC PLLI2S configuration register, Address offset: 0x84 */\r
- __IO uint32_t PLLSAICFGR; /*!< RCC PLLSAI configuration register, Address offset: 0x88 */\r
- __IO uint32_t DCKCFGR1; /*!< RCC Dedicated Clocks configuration register1, Address offset: 0x8C */\r
- __IO uint32_t DCKCFGR2; /*!< RCC Dedicated Clocks configuration register 2, Address offset: 0x90 */\r
-\r
-} RCC_TypeDef;\r
-\r
-/**\r
- * @brief Real-Time Clock\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */\r
- __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */\r
- __IO uint32_t CR; /*!< RTC control register, Address offset: 0x08 */\r
- __IO uint32_t ISR; /*!< RTC initialization and status register, Address offset: 0x0C */\r
- __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */\r
- __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */\r
- uint32_t reserved; /*!< Reserved */\r
- __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */\r
- __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */\r
- __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */\r
- __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x28 */\r
- __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */\r
- __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */\r
- __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */\r
- __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */\r
- __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x3C */\r
- __IO uint32_t TAMPCR; /*!< RTC tamper configuration register, Address offset: 0x40 */\r
- __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */\r
- __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */\r
- __IO uint32_t OR; /*!< RTC option register, Address offset: 0x4C */\r
- __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */\r
- __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */\r
- __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */\r
- __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */\r
- __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */\r
- __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */\r
- __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */\r
- __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */\r
- __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */\r
- __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */\r
- __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */\r
- __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */\r
- __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */\r
- __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */\r
- __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */\r
- __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */\r
- __IO uint32_t BKP16R; /*!< RTC backup register 16, Address offset: 0x90 */\r
- __IO uint32_t BKP17R; /*!< RTC backup register 17, Address offset: 0x94 */\r
- __IO uint32_t BKP18R; /*!< RTC backup register 18, Address offset: 0x98 */\r
- __IO uint32_t BKP19R; /*!< RTC backup register 19, Address offset: 0x9C */\r
- __IO uint32_t BKP20R; /*!< RTC backup register 20, Address offset: 0xA0 */\r
- __IO uint32_t BKP21R; /*!< RTC backup register 21, Address offset: 0xA4 */\r
- __IO uint32_t BKP22R; /*!< RTC backup register 22, Address offset: 0xA8 */\r
- __IO uint32_t BKP23R; /*!< RTC backup register 23, Address offset: 0xAC */\r
- __IO uint32_t BKP24R; /*!< RTC backup register 24, Address offset: 0xB0 */\r
- __IO uint32_t BKP25R; /*!< RTC backup register 25, Address offset: 0xB4 */\r
- __IO uint32_t BKP26R; /*!< RTC backup register 26, Address offset: 0xB8 */\r
- __IO uint32_t BKP27R; /*!< RTC backup register 27, Address offset: 0xBC */\r
- __IO uint32_t BKP28R; /*!< RTC backup register 28, Address offset: 0xC0 */\r
- __IO uint32_t BKP29R; /*!< RTC backup register 29, Address offset: 0xC4 */\r
- __IO uint32_t BKP30R; /*!< RTC backup register 30, Address offset: 0xC8 */\r
- __IO uint32_t BKP31R; /*!< RTC backup register 31, Address offset: 0xCC */\r
-} RTC_TypeDef;\r
-\r
-\r
-/**\r
- * @brief Serial Audio Interface\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */\r
-} SAI_TypeDef;\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */\r
- __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */\r
- __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */\r
- __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */\r
- __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */\r
- __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */\r
- __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */\r
- __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */\r
-} SAI_Block_TypeDef;\r
-\r
-/**\r
- * @brief SPDIF-RX Interface\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< Control register, Address offset: 0x00 */\r
- __IO uint32_t IMR; /*!< Interrupt mask register, Address offset: 0x04 */\r
- __IO uint32_t SR; /*!< Status register, Address offset: 0x08 */\r
- __IO uint32_t IFCR; /*!< Interrupt Flag Clear register, Address offset: 0x0C */\r
- __IO uint32_t DR; /*!< Data input register, Address offset: 0x10 */\r
- __IO uint32_t CSR; /*!< Channel Status register, Address offset: 0x14 */\r
- __IO uint32_t DIR; /*!< Debug Information register, Address offset: 0x18 */\r
-} SPDIFRX_TypeDef;\r
-\r
-/**\r
- * @brief SD host Interface\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */\r
- __IO uint32_t CLKCR; /*!< SDMMClock control register, Address offset: 0x04 */\r
- __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */\r
- __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */\r
- __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */\r
- __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */\r
- __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */\r
- __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */\r
- __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */\r
- __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */\r
- __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */\r
- __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */\r
- __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */\r
- __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */\r
- __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */\r
- __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */\r
- uint32_t RESERVED0[2]; /*!< Reserved, 0x40-0x44 */\r
- __I uint32_t FIFOCNT; /*!< SDMMC FIFO counter register, Address offset: 0x48 */\r
- uint32_t RESERVED1[13]; /*!< Reserved, 0x4C-0x7C */\r
- __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */\r
-} SDMMC_TypeDef;\r
-\r
-/**\r
- * @brief Serial Peripheral Interface\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR1; /*!< SPI control register 1 (not used in I2S mode), Address offset: 0x00 */\r
- __IO uint32_t CR2; /*!< SPI control register 2, Address offset: 0x04 */\r
- __IO uint32_t SR; /*!< SPI status register, Address offset: 0x08 */\r
- __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */\r
- __IO uint32_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */\r
- __IO uint32_t RXCRCR; /*!< SPI RX CRC register (not used in I2S mode), Address offset: 0x14 */\r
- __IO uint32_t TXCRCR; /*!< SPI TX CRC register (not used in I2S mode), Address offset: 0x18 */\r
- __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */\r
- __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */\r
-} SPI_TypeDef;\r
-\r
-/**\r
- * @brief QUAD Serial Peripheral Interface\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< QUADSPI Control register, Address offset: 0x00 */\r
- __IO uint32_t DCR; /*!< QUADSPI Device Configuration register, Address offset: 0x04 */\r
- __IO uint32_t SR; /*!< QUADSPI Status register, Address offset: 0x08 */\r
- __IO uint32_t FCR; /*!< QUADSPI Flag Clear register, Address offset: 0x0C */\r
- __IO uint32_t DLR; /*!< QUADSPI Data Length register, Address offset: 0x10 */\r
- __IO uint32_t CCR; /*!< QUADSPI Communication Configuration register, Address offset: 0x14 */\r
- __IO uint32_t AR; /*!< QUADSPI Address register, Address offset: 0x18 */\r
- __IO uint32_t ABR; /*!< QUADSPI Alternate Bytes register, Address offset: 0x1C */\r
- __IO uint32_t DR; /*!< QUADSPI Data register, Address offset: 0x20 */\r
- __IO uint32_t PSMKR; /*!< QUADSPI Polling Status Mask register, Address offset: 0x24 */\r
- __IO uint32_t PSMAR; /*!< QUADSPI Polling Status Match register, Address offset: 0x28 */\r
- __IO uint32_t PIR; /*!< QUADSPI Polling Interval register, Address offset: 0x2C */\r
- __IO uint32_t LPTR; /*!< QUADSPI Low Power Timeout register, Address offset: 0x30 */\r
-} QUADSPI_TypeDef;\r
-\r
-/**\r
- * @brief TIM\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */\r
- __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */\r
- __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */\r
- __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */\r
- __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */\r
- __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */\r
- __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */\r
- __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */\r
- __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */\r
- __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */\r
- __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */\r
- __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */\r
- __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */\r
- __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */\r
- __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */\r
- __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */\r
- __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */\r
- __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */\r
- __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */\r
- __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */\r
- __IO uint32_t OR; /*!< TIM option register, Address offset: 0x50 */\r
- __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x54 */\r
- __IO uint32_t CCR5; /*!< TIM capture/compare mode register5, Address offset: 0x58 */\r
- __IO uint32_t CCR6; /*!< TIM capture/compare mode register6, Address offset: 0x5C */\r
- __IO uint32_t AF1; /*!< TIM Alternate function option register 1, Address offset: 0x60 */\r
- __IO uint32_t AF2; /*!< TIM Alternate function option register 2, Address offset: 0x64 */\r
-\r
-} TIM_TypeDef;\r
-\r
-/**\r
- * @brief LPTIMIMER\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */\r
- __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */\r
- __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */\r
- __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */\r
- __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */\r
- __IO uint32_t CMP; /*!< LPTIM Compare register, Address offset: 0x14 */\r
- __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */\r
- __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */\r
-} LPTIM_TypeDef;\r
-\r
-\r
-/**\r
- * @brief Universal Synchronous Asynchronous Receiver Transmitter\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */\r
- __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */\r
- __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */\r
- __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */\r
- __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */\r
- __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */\r
- __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */\r
- __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */\r
- __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */\r
- __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */\r
- __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */\r
-} USART_TypeDef;\r
-\r
-\r
-/**\r
- * @brief Window WATCHDOG\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */\r
- __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */\r
- __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */\r
-} WWDG_TypeDef;\r
-\r
-\r
-/**\r
- * @brief RNG\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */\r
- __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */\r
- __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */\r
-} RNG_TypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @brief USB_OTG_Core_Registers\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t GOTGCTL; /*!< USB_OTG Control and Status Register 000h */\r
- __IO uint32_t GOTGINT; /*!< USB_OTG Interrupt Register 004h */\r
- __IO uint32_t GAHBCFG; /*!< Core AHB Configuration Register 008h */\r
- __IO uint32_t GUSBCFG; /*!< Core USB Configuration Register 00Ch */\r
- __IO uint32_t GRSTCTL; /*!< Core Reset Register 010h */\r
- __IO uint32_t GINTSTS; /*!< Core Interrupt Register 014h */\r
- __IO uint32_t GINTMSK; /*!< Core Interrupt Mask Register 018h */\r
- __IO uint32_t GRXSTSR; /*!< Receive Sts Q Read Register 01Ch */\r
- __IO uint32_t GRXSTSP; /*!< Receive Sts Q Read & POP Register 020h */\r
- __IO uint32_t GRXFSIZ; /*!< Receive FIFO Size Register 024h */\r
- __IO uint32_t DIEPTXF0_HNPTXFSIZ; /*!< EP0 / Non Periodic Tx FIFO Size Register 028h */\r
- __IO uint32_t HNPTXSTS; /*!< Non Periodic Tx FIFO/Queue Sts reg 02Ch */\r
- uint32_t Reserved30[2]; /*!< Reserved 030h */\r
- __IO uint32_t GCCFG; /*!< General Purpose IO Register 038h */\r
- __IO uint32_t CID; /*!< User ID Register 03Ch */\r
- uint32_t Reserved5[3]; /*!< Reserved 040h-048h */\r
- __IO uint32_t GHWCFG3; /*!< User HW config3 04Ch */\r
- uint32_t Reserved6; /*!< Reserved 050h */\r
- __IO uint32_t GLPMCFG; /*!< LPM Register 054h */\r
- uint32_t Reserved7; /*!< Reserved 058h */\r
- __IO uint32_t GDFIFOCFG; /*!< DFIFO Software Config Register 05Ch */\r
- uint32_t Reserved43[40]; /*!< Reserved 60h-0FFh */\r
- __IO uint32_t HPTXFSIZ; /*!< Host Periodic Tx FIFO Size Reg 100h */\r
- __IO uint32_t DIEPTXF[0x0F]; /*!< dev Periodic Transmit FIFO 104h-13Ch */\r
-} USB_OTG_GlobalTypeDef;\r
-\r
-\r
-/**\r
- * @brief USB_OTG_device_Registers\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t DCFG; /*!< dev Configuration Register 800h */\r
- __IO uint32_t DCTL; /*!< dev Control Register 804h */\r
- __IO uint32_t DSTS; /*!< dev Status Register (RO) 808h */\r
- uint32_t Reserved0C; /*!< Reserved 80Ch */\r
- __IO uint32_t DIEPMSK; /*!< dev IN Endpoint Mask 810h */\r
- __IO uint32_t DOEPMSK; /*!< dev OUT Endpoint Mask 814h */\r
- __IO uint32_t DAINT; /*!< dev All Endpoints Itr Reg 818h */\r
- __IO uint32_t DAINTMSK; /*!< dev All Endpoints Itr Mask 81Ch */\r
- uint32_t Reserved20; /*!< Reserved 820h */\r
- uint32_t Reserved9; /*!< Reserved 824h */\r
- __IO uint32_t DVBUSDIS; /*!< dev VBUS discharge Register 828h */\r
- __IO uint32_t DVBUSPULSE; /*!< dev VBUS Pulse Register 82Ch */\r
- __IO uint32_t DTHRCTL; /*!< dev threshold 830h */\r
- __IO uint32_t DIEPEMPMSK; /*!< dev empty msk 834h */\r
- __IO uint32_t DEACHINT; /*!< dedicated EP interrupt 838h */\r
- __IO uint32_t DEACHMSK; /*!< dedicated EP msk 83Ch */\r
- uint32_t Reserved40; /*!< dedicated EP mask 840h */\r
- __IO uint32_t DINEP1MSK; /*!< dedicated EP mask 844h */\r
- uint32_t Reserved44[15]; /*!< Reserved 844-87Ch */\r
- __IO uint32_t DOUTEP1MSK; /*!< dedicated EP msk 884h */\r
-} USB_OTG_DeviceTypeDef;\r
-\r
-\r
-/**\r
- * @brief USB_OTG_IN_Endpoint-Specific_Register\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t DIEPCTL; /*!< dev IN Endpoint Control Reg 900h + (ep_num * 20h) + 00h */\r
- uint32_t Reserved04; /*!< Reserved 900h + (ep_num * 20h) + 04h */\r
- __IO uint32_t DIEPINT; /*!< dev IN Endpoint Itr Reg 900h + (ep_num * 20h) + 08h */\r
- uint32_t Reserved0C; /*!< Reserved 900h + (ep_num * 20h) + 0Ch */\r
- __IO uint32_t DIEPTSIZ; /*!< IN Endpoint Txfer Size 900h + (ep_num * 20h) + 10h */\r
- __IO uint32_t DIEPDMA; /*!< IN Endpoint DMA Address Reg 900h + (ep_num * 20h) + 14h */\r
- __IO uint32_t DTXFSTS; /*!< IN Endpoint Tx FIFO Status Reg 900h + (ep_num * 20h) + 18h */\r
- uint32_t Reserved18; /*!< Reserved 900h+(ep_num*20h)+1Ch-900h+ (ep_num * 20h) + 1Ch */\r
-} USB_OTG_INEndpointTypeDef;\r
-\r
-\r
-/**\r
- * @brief USB_OTG_OUT_Endpoint-Specific_Registers\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t DOEPCTL; /*!< dev OUT Endpoint Control Reg B00h + (ep_num * 20h) + 00h */\r
- uint32_t Reserved04; /*!< Reserved B00h + (ep_num * 20h) + 04h */\r
- __IO uint32_t DOEPINT; /*!< dev OUT Endpoint Itr Reg B00h + (ep_num * 20h) + 08h */\r
- uint32_t Reserved0C; /*!< Reserved B00h + (ep_num * 20h) + 0Ch */\r
- __IO uint32_t DOEPTSIZ; /*!< dev OUT Endpoint Txfer Size B00h + (ep_num * 20h) + 10h */\r
- __IO uint32_t DOEPDMA; /*!< dev OUT Endpoint DMA Address B00h + (ep_num * 20h) + 14h */\r
- uint32_t Reserved18[2]; /*!< Reserved B00h + (ep_num * 20h) + 18h - B00h + (ep_num * 20h) + 1Ch */\r
-} USB_OTG_OUTEndpointTypeDef;\r
-\r
-\r
-/**\r
- * @brief USB_OTG_Host_Mode_Register_Structures\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t HCFG; /*!< Host Configuration Register 400h */\r
- __IO uint32_t HFIR; /*!< Host Frame Interval Register 404h */\r
- __IO uint32_t HFNUM; /*!< Host Frame Nbr/Frame Remaining 408h */\r
- uint32_t Reserved40C; /*!< Reserved 40Ch */\r
- __IO uint32_t HPTXSTS; /*!< Host Periodic Tx FIFO/ Queue Status 410h */\r
- __IO uint32_t HAINT; /*!< Host All Channels Interrupt Register 414h */\r
- __IO uint32_t HAINTMSK; /*!< Host All Channels Interrupt Mask 418h */\r
-} USB_OTG_HostTypeDef;\r
-\r
-/**\r
- * @brief USB_OTG_Host_Channel_Specific_Registers\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t HCCHAR; /*!< Host Channel Characteristics Register 500h */\r
- __IO uint32_t HCSPLT; /*!< Host Channel Split Control Register 504h */\r
- __IO uint32_t HCINT; /*!< Host Channel Interrupt Register 508h */\r
- __IO uint32_t HCINTMSK; /*!< Host Channel Interrupt Mask Register 50Ch */\r
- __IO uint32_t HCTSIZ; /*!< Host Channel Transfer Size Register 510h */\r
- __IO uint32_t HCDMA; /*!< Host Channel DMA Address Register 514h */\r
- uint32_t Reserved[2]; /*!< Reserved */\r
-} USB_OTG_HostChannelTypeDef;\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @brief JPEG Codec\r
- */\r
-typedef struct\r
-{\r
- __IO uint32_t CONFR0; /*!< JPEG Codec Control Register (JPEG_CONFR0), Address offset: 00h */\r
- __IO uint32_t CONFR1; /*!< JPEG Codec Control Register (JPEG_CONFR1), Address offset: 04h */\r
- __IO uint32_t CONFR2; /*!< JPEG Codec Control Register (JPEG_CONFR2), Address offset: 08h */\r
- __IO uint32_t CONFR3; /*!< JPEG Codec Control Register (JPEG_CONFR3), Address offset: 0Ch */\r
- __IO uint32_t CONFR4; /*!< JPEG Codec Control Register (JPEG_CONFR4), Address offset: 10h */\r
- __IO uint32_t CONFR5; /*!< JPEG Codec Control Register (JPEG_CONFR5), Address offset: 14h */\r
- __IO uint32_t CONFR6; /*!< JPEG Codec Control Register (JPEG_CONFR6), Address offset: 18h */\r
- __IO uint32_t CONFR7; /*!< JPEG Codec Control Register (JPEG_CONFR7), Address offset: 1Ch */\r
- uint32_t Reserved20[4]; /* Reserved Address offset: 20h-2Ch */\r
- __IO uint32_t CR; /*!< JPEG Control Register (JPEG_CR), Address offset: 30h */\r
- __IO uint32_t SR; /*!< JPEG Status Register (JPEG_SR), Address offset: 34h */\r
- __IO uint32_t CFR; /*!< JPEG Clear Flag Register (JPEG_CFR), Address offset: 38h */\r
- uint32_t Reserved3c; /* Reserved Address offset: 3Ch */\r
- __IO uint32_t DIR; /*!< JPEG Data Input Register (JPEG_DIR), Address offset: 40h */\r
- __IO uint32_t DOR; /*!< JPEG Data Output Register (JPEG_DOR), Address offset: 44h */\r
- uint32_t Reserved48[2]; /* Reserved Address offset: 48h-4Ch */\r
- __IO uint32_t QMEM0[16]; /*!< JPEG quantization tables 0, Address offset: 50h-8Ch */\r
- __IO uint32_t QMEM1[16]; /*!< JPEG quantization tables 1, Address offset: 90h-CCh */\r
- __IO uint32_t QMEM2[16]; /*!< JPEG quantization tables 2, Address offset: D0h-10Ch */\r
- __IO uint32_t QMEM3[16]; /*!< JPEG quantization tables 3, Address offset: 110h-14Ch */\r
- __IO uint32_t HUFFMIN[16]; /*!< JPEG HuffMin tables, Address offset: 150h-18Ch */\r
- __IO uint32_t HUFFBASE[32]; /*!< JPEG HuffSymb tables, Address offset: 190h-20Ch */\r
- __IO uint32_t HUFFSYMB[84]; /*!< JPEG HUFFSYMB tables, Address offset: 210h-35Ch */\r
- __IO uint32_t DHTMEM[103]; /*!< JPEG DHTMem tables, Address offset: 360h-4F8h */\r
- uint32_t Reserved4FC; /* Reserved Address offset: 4FCh */\r
- __IO uint32_t HUFFENC_AC0[88]; /*!< JPEG encoder, AC Huffman table 0, Address offset: 500h-65Ch */\r
- __IO uint32_t HUFFENC_AC1[88]; /*!< JPEG encoder, AC Huffman table 1, Address offset: 660h-7BCh */\r
- __IO uint32_t HUFFENC_DC0[8]; /*!< JPEG encoder, DC Huffman table 0, Address offset: 7C0h-7DCh */\r
- __IO uint32_t HUFFENC_DC1[8]; /*!< JPEG encoder, DC Huffman table 1, Address offset: 7E0h-7FCh */\r
-\r
-} JPEG_TypeDef;\r
-\r
-/**\r
- * @brief MDIOS\r
- */\r
-\r
-typedef struct\r
-{\r
- __IO uint32_t CR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 00h */\r
- __IO uint32_t WRFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 04h */\r
- __IO uint32_t CWRFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 08h */\r
- __IO uint32_t RDFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 0Ch */\r
- __IO uint32_t CRDFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 10h */\r
- __IO uint32_t SR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 14h */\r
- __IO uint32_t CLRFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 18h */\r
- uint32_t RESERVED0[57]; /* Reserved Address offset: 1Ch */\r
- __IO uint32_t DINR0; /*!< MDIOS Input Data Register (MDIOS_DINR0), Address offset: 100h */\r
- __IO uint32_t DINR1; /*!< MDIOS Input Data Register (MDIOS_DINR1), Address offset: 104h */\r
- __IO uint32_t DINR2; /*!< MDIOS Input Data Register (MDIOS_DINR2), Address offset: 108h */\r
- __IO uint32_t DINR3; /*!< MDIOS Input Data Register (MDIOS_DINR3), Address offset: 10Ch */\r
- __IO uint32_t DINR4; /*!< MDIOS Input Data Register (MDIOS_DINR4), Address offset: 110h */\r
- __IO uint32_t DINR5; /*!< MDIOS Input Data Register (MDIOS_DINR5), Address offset: 114h */\r
- __IO uint32_t DINR6; /*!< MDIOS Input Data Register (MDIOS_DINR6), Address offset: 118h */\r
- __IO uint32_t DINR7; /*!< MDIOS Input Data Register (MDIOS_DINR7), Address offset: 11Ch */\r
- __IO uint32_t DINR8; /*!< MDIOS Input Data Register (MDIOS_DINR8), Address offset: 120h */\r
- __IO uint32_t DINR9; /*!< MDIOS Input Data Register (MDIOS_DINR9), Address offset: 124h */\r
- __IO uint32_t DINR10; /*!< MDIOS Input Data Register (MDIOS_DINR10), Address offset: 128h */\r
- __IO uint32_t DINR11; /*!< MDIOS Input Data Register (MDIOS_DINR11), Address offset: 12Ch */\r
- __IO uint32_t DINR12; /*!< MDIOS Input Data Register (MDIOS_DINR12), Address offset: 130h */\r
- __IO uint32_t DINR13; /*!< MDIOS Input Data Register (MDIOS_DINR13), Address offset: 134h */\r
- __IO uint32_t DINR14; /*!< MDIOS Input Data Register (MDIOS_DINR14), Address offset: 138h */\r
- __IO uint32_t DINR15; /*!< MDIOS Input Data Register (MDIOS_DINR15), Address offset: 13Ch */\r
- __IO uint32_t DINR16; /*!< MDIOS Input Data Register (MDIOS_DINR16), Address offset: 140h */\r
- __IO uint32_t DINR17; /*!< MDIOS Input Data Register (MDIOS_DINR17), Address offset: 144h */\r
- __IO uint32_t DINR18; /*!< MDIOS Input Data Register (MDIOS_DINR18), Address offset: 148h */\r
- __IO uint32_t DINR19; /*!< MDIOS Input Data Register (MDIOS_DINR19), Address offset: 14Ch */\r
- __IO uint32_t DINR20; /*!< MDIOS Input Data Register (MDIOS_DINR20), Address offset: 150h */\r
- __IO uint32_t DINR21; /*!< MDIOS Input Data Register (MDIOS_DINR21), Address offset: 154h */\r
- __IO uint32_t DINR22; /*!< MDIOS Input Data Register (MDIOS_DINR22), Address offset: 158h */\r
- __IO uint32_t DINR23; /*!< MDIOS Input Data Register (MDIOS_DINR23), Address offset: 15Ch */\r
- __IO uint32_t DINR24; /*!< MDIOS Input Data Register (MDIOS_DINR24), Address offset: 160h */\r
- __IO uint32_t DINR25; /*!< MDIOS Input Data Register (MDIOS_DINR25), Address offset: 164h */\r
- __IO uint32_t DINR26; /*!< MDIOS Input Data Register (MDIOS_DINR26), Address offset: 168h */\r
- __IO uint32_t DINR27; /*!< MDIOS Input Data Register (MDIOS_DINR27), Address offset: 16Ch */\r
- __IO uint32_t DINR28; /*!< MDIOS Input Data Register (MDIOS_DINR28), Address offset: 170h */\r
- __IO uint32_t DINR29; /*!< MDIOS Input Data Register (MDIOS_DINR29), Address offset: 174h */\r
- __IO uint32_t DINR30; /*!< MDIOS Input Data Register (MDIOS_DINR30), Address offset: 178h */\r
- __IO uint32_t DINR31; /*!< MDIOS Input Data Register (MDIOS_DINR31), Address offset: 17Ch */\r
- __IO uint32_t DOUTR0; /*!< MDIOS Output Data Register (MDIOS_DOUTR0), Address offset: 180h */\r
- __IO uint32_t DOUTR1; /*!< MDIOS Output Data Register (MDIOS_DOUTR1), Address offset: 184h */\r
- __IO uint32_t DOUTR2; /*!< MDIOS Output Data Register (MDIOS_DOUTR2), Address offset: 188h */\r
- __IO uint32_t DOUTR3; /*!< MDIOS Output Data Register (MDIOS_DOUTR3), Address offset: 18Ch */\r
- __IO uint32_t DOUTR4; /*!< MDIOS Output Data Register (MDIOS_DOUTR4), Address offset: 190h */\r
- __IO uint32_t DOUTR5; /*!< MDIOS Output Data Register (MDIOS_DOUTR5), Address offset: 194h */\r
- __IO uint32_t DOUTR6; /*!< MDIOS Output Data Register (MDIOS_DOUTR6), Address offset: 198h */\r
- __IO uint32_t DOUTR7; /*!< MDIOS Output Data Register (MDIOS_DOUTR7), Address offset: 19Ch */\r
- __IO uint32_t DOUTR8; /*!< MDIOS Output Data Register (MDIOS_DOUTR8), Address offset: 1A0h */\r
- __IO uint32_t DOUTR9; /*!< MDIOS Output Data Register (MDIOS_DOUTR9), Address offset: 1A4h */\r
- __IO uint32_t DOUTR10; /*!< MDIOS Output Data Register (MDIOS_DOUTR10), Address offset: 1A8h */\r
- __IO uint32_t DOUTR11; /*!< MDIOS Output Data Register (MDIOS_DOUTR11), Address offset: 1ACh */\r
- __IO uint32_t DOUTR12; /*!< MDIOS Output Data Register (MDIOS_DOUTR12), Address offset: 1B0h */\r
- __IO uint32_t DOUTR13; /*!< MDIOS Output Data Register (MDIOS_DOUTR13), Address offset: 1B4h */\r
- __IO uint32_t DOUTR14; /*!< MDIOS Output Data Register (MDIOS_DOUTR14), Address offset: 1B8h */\r
- __IO uint32_t DOUTR15; /*!< MDIOS Output Data Register (MDIOS_DOUTR15), Address offset: 1BCh */\r
- __IO uint32_t DOUTR16; /*!< MDIOS Output Data Register (MDIOS_DOUTR16), Address offset: 1C0h */\r
- __IO uint32_t DOUTR17; /*!< MDIOS Output Data Register (MDIOS_DOUTR17), Address offset: 1C4h */\r
- __IO uint32_t DOUTR18; /*!< MDIOS Output Data Register (MDIOS_DOUTR18), Address offset: 1C8h */\r
- __IO uint32_t DOUTR19; /*!< MDIOS Output Data Register (MDIOS_DOUTR19), Address offset: 1CCh */\r
- __IO uint32_t DOUTR20; /*!< MDIOS Output Data Register (MDIOS_DOUTR20), Address offset: 1D0h */\r
- __IO uint32_t DOUTR21; /*!< MDIOS Output Data Register (MDIOS_DOUTR21), Address offset: 1D4h */\r
- __IO uint32_t DOUTR22; /*!< MDIOS Output Data Register (MDIOS_DOUTR22), Address offset: 1D8h */\r
- __IO uint32_t DOUTR23; /*!< MDIOS Output Data Register (MDIOS_DOUTR23), Address offset: 1DCh */\r
- __IO uint32_t DOUTR24; /*!< MDIOS Output Data Register (MDIOS_DOUTR24), Address offset: 1E0h */\r
- __IO uint32_t DOUTR25; /*!< MDIOS Output Data Register (MDIOS_DOUTR25), Address offset: 1E4h */\r
- __IO uint32_t DOUTR26; /*!< MDIOS Output Data Register (MDIOS_DOUTR26), Address offset: 1E8h */\r
- __IO uint32_t DOUTR27; /*!< MDIOS Output Data Register (MDIOS_DOUTR27), Address offset: 1ECh */\r
- __IO uint32_t DOUTR28; /*!< MDIOS Output Data Register (MDIOS_DOUTR28), Address offset: 1F0h */\r
- __IO uint32_t DOUTR29; /*!< MDIOS Output Data Register (MDIOS_DOUTR29), Address offset: 1F4h */\r
- __IO uint32_t DOUTR30; /*!< MDIOS Output Data Register (MDIOS_DOUTR30), Address offset: 1F8h */\r
- __IO uint32_t DOUTR31; /*!< MDIOS Output Data Register (MDIOS_DOUTR31), Address offset: 1FCh */\r
-} MDIOS_TypeDef;\r
-\r
-\r
-/** @addtogroup Peripheral_memory_map\r
- * @{\r
- */\r
-#define RAMITCM_BASE 0x00000000UL /*!< Base address of : 16KB RAM reserved for CPU execution/instruction accessible over ITCM */\r
-#define FLASHITCM_BASE 0x00200000UL /*!< Base address of : (up to 2 MB) embedded FLASH memory accessible over ITCM */\r
-#define FLASHAXI_BASE 0x08000000UL /*!< Base address of : (up to 2 MB) embedded FLASH memory accessible over AXI */\r
-#define RAMDTCM_BASE 0x20000000UL /*!< Base address of : 128KB system data RAM accessible over DTCM */\r
-#define PERIPH_BASE 0x40000000UL /*!< Base address of : AHB/ABP Peripherals */\r
-#define BKPSRAM_BASE 0x40024000UL /*!< Base address of : Backup SRAM(4 KB) */\r
-#define QSPI_BASE 0x90000000UL /*!< Base address of : QSPI memories accessible over AXI */\r
-#define FMC_R_BASE 0xA0000000UL /*!< Base address of : FMC Control registers */\r
-#define QSPI_R_BASE 0xA0001000UL /*!< Base address of : QSPI Control registers */\r
-#define SRAM1_BASE 0x20020000UL /*!< Base address of : 368KB RAM1 accessible over AXI/AHB */\r
-#define SRAM2_BASE 0x2007C000UL /*!< Base address of : 16KB RAM2 accessible over AXI/AHB */\r
-#define FLASH_END 0x081FFFFFUL /*!< FLASH end address */\r
-#define FLASH_OTP_BASE 0x1FF0F000UL /*!< Base address of : (up to 1024 Bytes) embedded FLASH OTP Area */\r
-#define FLASH_OTP_END 0x1FF0F41FUL /*!< End address of : (up to 1024 Bytes) embedded FLASH OTP Area */\r
-\r
-/* Legacy define */\r
-#define FLASH_BASE FLASHAXI_BASE\r
-\r
-/*!< Peripheral memory map */\r
-#define APB1PERIPH_BASE PERIPH_BASE\r
-#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL)\r
-#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL)\r
-#define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000UL)\r
-\r
-/*!< APB1 peripherals */\r
-#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL)\r
-#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL)\r
-#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL)\r
-#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00UL)\r
-#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL)\r
-#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL)\r
-#define TIM12_BASE (APB1PERIPH_BASE + 0x1800UL)\r
-#define TIM13_BASE (APB1PERIPH_BASE + 0x1C00UL)\r
-#define TIM14_BASE (APB1PERIPH_BASE + 0x2000UL)\r
-#define LPTIM1_BASE (APB1PERIPH_BASE + 0x2400UL)\r
-#define RTC_BASE (APB1PERIPH_BASE + 0x2800UL)\r
-#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00UL)\r
-#define IWDG_BASE (APB1PERIPH_BASE + 0x3000UL)\r
-#define CAN3_BASE (APB1PERIPH_BASE + 0x3400UL)\r
-#define SPI2_BASE (APB1PERIPH_BASE + 0x3800UL)\r
-#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00UL)\r
-#define SPDIFRX_BASE (APB1PERIPH_BASE + 0x4000UL)\r
-#define USART2_BASE (APB1PERIPH_BASE + 0x4400UL)\r
-#define USART3_BASE (APB1PERIPH_BASE + 0x4800UL)\r
-#define UART4_BASE (APB1PERIPH_BASE + 0x4C00UL)\r
-#define UART5_BASE (APB1PERIPH_BASE + 0x5000UL)\r
-#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL)\r
-#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL)\r
-#define I2C3_BASE (APB1PERIPH_BASE + 0x5C00UL)\r
-#define I2C4_BASE (APB1PERIPH_BASE + 0x6000UL)\r
-#define CAN1_BASE (APB1PERIPH_BASE + 0x6400UL)\r
-#define CAN2_BASE (APB1PERIPH_BASE + 0x6800UL)\r
-#define CEC_BASE (APB1PERIPH_BASE + 0x6C00UL)\r
-#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL)\r
-#define DAC_BASE (APB1PERIPH_BASE + 0x7400UL)\r
-#define UART7_BASE (APB1PERIPH_BASE + 0x7800UL)\r
-#define UART8_BASE (APB1PERIPH_BASE + 0x7C00UL)\r
-\r
-/*!< APB2 peripherals */\r
-#define TIM1_BASE (APB2PERIPH_BASE + 0x0000UL)\r
-#define TIM8_BASE (APB2PERIPH_BASE + 0x0400UL)\r
-#define USART1_BASE (APB2PERIPH_BASE + 0x1000UL)\r
-#define USART6_BASE (APB2PERIPH_BASE + 0x1400UL)\r
-#define SDMMC2_BASE (APB2PERIPH_BASE + 0x1C00UL)\r
-#define ADC1_BASE (APB2PERIPH_BASE + 0x2000UL)\r
-#define ADC2_BASE (APB2PERIPH_BASE + 0x2100UL)\r
-#define ADC3_BASE (APB2PERIPH_BASE + 0x2200UL)\r
-#define ADC_BASE (APB2PERIPH_BASE + 0x2300UL)\r
-#define SDMMC1_BASE (APB2PERIPH_BASE + 0x2C00UL)\r
-#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL)\r
-#define SPI4_BASE (APB2PERIPH_BASE + 0x3400UL)\r
-#define SYSCFG_BASE (APB2PERIPH_BASE + 0x3800UL)\r
-#define EXTI_BASE (APB2PERIPH_BASE + 0x3C00UL)\r
-#define TIM9_BASE (APB2PERIPH_BASE + 0x4000UL)\r
-#define TIM10_BASE (APB2PERIPH_BASE + 0x4400UL)\r
-#define TIM11_BASE (APB2PERIPH_BASE + 0x4800UL)\r
-#define SPI5_BASE (APB2PERIPH_BASE + 0x5000UL)\r
-#define SPI6_BASE (APB2PERIPH_BASE + 0x5400UL)\r
-#define SAI1_BASE (APB2PERIPH_BASE + 0x5800UL)\r
-#define SAI2_BASE (APB2PERIPH_BASE + 0x5C00UL)\r
-#define SAI1_Block_A_BASE (SAI1_BASE + 0x004UL)\r
-#define SAI1_Block_B_BASE (SAI1_BASE + 0x024UL)\r
-#define SAI2_Block_A_BASE (SAI2_BASE + 0x004UL)\r
-#define SAI2_Block_B_BASE (SAI2_BASE + 0x024UL)\r
-#define LTDC_BASE (APB2PERIPH_BASE + 0x6800UL)\r
-#define LTDC_Layer1_BASE (LTDC_BASE + 0x0084UL)\r
-#define LTDC_Layer2_BASE (LTDC_BASE + 0x0104UL)\r
-#define DFSDM1_BASE (APB2PERIPH_BASE + 0x7400UL)\r
-#define DFSDM1_Channel0_BASE (DFSDM1_BASE + 0x00UL)\r
-#define DFSDM1_Channel1_BASE (DFSDM1_BASE + 0x20UL)\r
-#define DFSDM1_Channel2_BASE (DFSDM1_BASE + 0x40UL)\r
-#define DFSDM1_Channel3_BASE (DFSDM1_BASE + 0x60UL)\r
-#define DFSDM1_Channel4_BASE (DFSDM1_BASE + 0x80UL)\r
-#define DFSDM1_Channel5_BASE (DFSDM1_BASE + 0xA0UL)\r
-#define DFSDM1_Channel6_BASE (DFSDM1_BASE + 0xC0UL)\r
-#define DFSDM1_Channel7_BASE (DFSDM1_BASE + 0xE0UL)\r
-#define DFSDM1_Filter0_BASE (DFSDM1_BASE + 0x100UL)\r
-#define DFSDM1_Filter1_BASE (DFSDM1_BASE + 0x180UL)\r
-#define DFSDM1_Filter2_BASE (DFSDM1_BASE + 0x200UL)\r
-#define DFSDM1_Filter3_BASE (DFSDM1_BASE + 0x280UL)\r
-#define MDIOS_BASE (APB2PERIPH_BASE + 0x7800UL)\r
-/*!< AHB1 peripherals */\r
-#define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000UL)\r
-#define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400UL)\r
-#define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800UL)\r
-#define GPIOD_BASE (AHB1PERIPH_BASE + 0x0C00UL)\r
-#define GPIOE_BASE (AHB1PERIPH_BASE + 0x1000UL)\r
-#define GPIOF_BASE (AHB1PERIPH_BASE + 0x1400UL)\r
-#define GPIOG_BASE (AHB1PERIPH_BASE + 0x1800UL)\r
-#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00UL)\r
-#define GPIOI_BASE (AHB1PERIPH_BASE + 0x2000UL)\r
-#define GPIOJ_BASE (AHB1PERIPH_BASE + 0x2400UL)\r
-#define GPIOK_BASE (AHB1PERIPH_BASE + 0x2800UL)\r
-#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL)\r
-#define RCC_BASE (AHB1PERIPH_BASE + 0x3800UL)\r
-#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x3C00UL)\r
-#define UID_BASE 0x1FF0F420UL /*!< Unique device ID register base address */\r
-#define FLASHSIZE_BASE 0x1FF0F442UL /*!< FLASH Size register base address */\r
-#define PACKAGE_BASE 0x1FF0F7E0UL /*!< Package size register base address */\r
-/* Legacy define */\r
-#define PACKAGESIZE_BASE PACKAGE_BASE\r
-\r
-#define DMA1_BASE (AHB1PERIPH_BASE + 0x6000UL)\r
-#define DMA1_Stream0_BASE (DMA1_BASE + 0x010UL)\r
-#define DMA1_Stream1_BASE (DMA1_BASE + 0x028UL)\r
-#define DMA1_Stream2_BASE (DMA1_BASE + 0x040UL)\r
-#define DMA1_Stream3_BASE (DMA1_BASE + 0x058UL)\r
-#define DMA1_Stream4_BASE (DMA1_BASE + 0x070UL)\r
-#define DMA1_Stream5_BASE (DMA1_BASE + 0x088UL)\r
-#define DMA1_Stream6_BASE (DMA1_BASE + 0x0A0UL)\r
-#define DMA1_Stream7_BASE (DMA1_BASE + 0x0B8UL)\r
-#define DMA2_BASE (AHB1PERIPH_BASE + 0x6400UL)\r
-#define DMA2_Stream0_BASE (DMA2_BASE + 0x010UL)\r
-#define DMA2_Stream1_BASE (DMA2_BASE + 0x028UL)\r
-#define DMA2_Stream2_BASE (DMA2_BASE + 0x040UL)\r
-#define DMA2_Stream3_BASE (DMA2_BASE + 0x058UL)\r
-#define DMA2_Stream4_BASE (DMA2_BASE + 0x070UL)\r
-#define DMA2_Stream5_BASE (DMA2_BASE + 0x088UL)\r
-#define DMA2_Stream6_BASE (DMA2_BASE + 0x0A0UL)\r
-#define DMA2_Stream7_BASE (DMA2_BASE + 0x0B8UL)\r
-#define ETH_BASE (AHB1PERIPH_BASE + 0x8000UL)\r
-#define ETH_MAC_BASE (ETH_BASE)\r
-#define ETH_MMC_BASE (ETH_BASE + 0x0100UL)\r
-#define ETH_PTP_BASE (ETH_BASE + 0x0700UL)\r
-#define ETH_DMA_BASE (ETH_BASE + 0x1000UL)\r
-#define DMA2D_BASE (AHB1PERIPH_BASE + 0xB000UL)\r
-/*!< AHB2 peripherals */\r
-#define DCMI_BASE (AHB2PERIPH_BASE + 0x50000UL)\r
-#define JPEG_BASE (AHB2PERIPH_BASE + 0x51000UL)\r
-#define RNG_BASE (AHB2PERIPH_BASE + 0x60800UL)\r
-/*!< FMC Bankx registers base address */\r
-#define FMC_Bank1_R_BASE (FMC_R_BASE + 0x0000UL)\r
-#define FMC_Bank1E_R_BASE (FMC_R_BASE + 0x0104UL)\r
-#define FMC_Bank3_R_BASE (FMC_R_BASE + 0x0080UL)\r
-#define FMC_Bank5_6_R_BASE (FMC_R_BASE + 0x0140UL)\r
-\r
-/* Debug MCU registers base address */\r
-#define DBGMCU_BASE 0xE0042000UL\r
-\r
-/*!< USB registers base address */\r
-#define USB_OTG_HS_PERIPH_BASE 0x40040000UL\r
-#define USB_OTG_FS_PERIPH_BASE 0x50000000UL\r
-\r
-#define USB_OTG_GLOBAL_BASE 0x0000UL\r
-#define USB_OTG_DEVICE_BASE 0x0800UL\r
-#define USB_OTG_IN_ENDPOINT_BASE 0x0900UL\r
-#define USB_OTG_OUT_ENDPOINT_BASE 0x0B00UL\r
-#define USB_OTG_EP_REG_SIZE 0x0020UL\r
-#define USB_OTG_HOST_BASE 0x0400UL\r
-#define USB_OTG_HOST_PORT_BASE 0x0440UL\r
-#define USB_OTG_HOST_CHANNEL_BASE 0x0500UL\r
-#define USB_OTG_HOST_CHANNEL_SIZE 0x0020UL\r
-#define USB_OTG_PCGCCTL_BASE 0x0E00UL\r
-#define USB_OTG_FIFO_BASE 0x1000UL\r
-#define USB_OTG_FIFO_SIZE 0x1000UL\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup Peripheral_declaration\r
- * @{\r
- */\r
-#define TIM2 ((TIM_TypeDef *) TIM2_BASE)\r
-#define TIM3 ((TIM_TypeDef *) TIM3_BASE)\r
-#define TIM4 ((TIM_TypeDef *) TIM4_BASE)\r
-#define TIM5 ((TIM_TypeDef *) TIM5_BASE)\r
-#define TIM6 ((TIM_TypeDef *) TIM6_BASE)\r
-#define TIM7 ((TIM_TypeDef *) TIM7_BASE)\r
-#define TIM12 ((TIM_TypeDef *) TIM12_BASE)\r
-#define TIM13 ((TIM_TypeDef *) TIM13_BASE)\r
-#define TIM14 ((TIM_TypeDef *) TIM14_BASE)\r
-#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE)\r
-#define RTC ((RTC_TypeDef *) RTC_BASE)\r
-#define WWDG ((WWDG_TypeDef *) WWDG_BASE)\r
-#define IWDG ((IWDG_TypeDef *) IWDG_BASE)\r
-#define SPI2 ((SPI_TypeDef *) SPI2_BASE)\r
-#define SPI3 ((SPI_TypeDef *) SPI3_BASE)\r
-#define SPDIFRX ((SPDIFRX_TypeDef *) SPDIFRX_BASE)\r
-#define USART2 ((USART_TypeDef *) USART2_BASE)\r
-#define USART3 ((USART_TypeDef *) USART3_BASE)\r
-#define UART4 ((USART_TypeDef *) UART4_BASE)\r
-#define UART5 ((USART_TypeDef *) UART5_BASE)\r
-#define I2C1 ((I2C_TypeDef *) I2C1_BASE)\r
-#define I2C2 ((I2C_TypeDef *) I2C2_BASE)\r
-#define I2C3 ((I2C_TypeDef *) I2C3_BASE)\r
-#define I2C4 ((I2C_TypeDef *) I2C4_BASE)\r
-#define CAN1 ((CAN_TypeDef *) CAN1_BASE)\r
-#define CAN2 ((CAN_TypeDef *) CAN2_BASE)\r
-#define CEC ((CEC_TypeDef *) CEC_BASE)\r
-#define PWR ((PWR_TypeDef *) PWR_BASE)\r
-#define DAC1 ((DAC_TypeDef *) DAC_BASE)\r
-#define DAC ((DAC_TypeDef *) DAC_BASE) /* Kept for legacy purpose */\r
-#define UART7 ((USART_TypeDef *) UART7_BASE)\r
-#define UART8 ((USART_TypeDef *) UART8_BASE)\r
-#define TIM1 ((TIM_TypeDef *) TIM1_BASE)\r
-#define TIM8 ((TIM_TypeDef *) TIM8_BASE)\r
-#define USART1 ((USART_TypeDef *) USART1_BASE)\r
-#define USART6 ((USART_TypeDef *) USART6_BASE)\r
-#define ADC ((ADC_Common_TypeDef *) ADC_BASE)\r
-#define ADC1 ((ADC_TypeDef *) ADC1_BASE)\r
-#define ADC2 ((ADC_TypeDef *) ADC2_BASE)\r
-#define ADC3 ((ADC_TypeDef *) ADC3_BASE)\r
-#define ADC123_COMMON ((ADC_Common_TypeDef *) ADC_BASE)\r
-#define SDMMC1 ((SDMMC_TypeDef *) SDMMC1_BASE)\r
-#define SPI1 ((SPI_TypeDef *) SPI1_BASE)\r
-#define SPI4 ((SPI_TypeDef *) SPI4_BASE)\r
-#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE)\r
-#define EXTI ((EXTI_TypeDef *) EXTI_BASE)\r
-#define TIM9 ((TIM_TypeDef *) TIM9_BASE)\r
-#define TIM10 ((TIM_TypeDef *) TIM10_BASE)\r
-#define TIM11 ((TIM_TypeDef *) TIM11_BASE)\r
-#define SPI5 ((SPI_TypeDef *) SPI5_BASE)\r
-#define SPI6 ((SPI_TypeDef *) SPI6_BASE)\r
-#define SAI1 ((SAI_TypeDef *) SAI1_BASE)\r
-#define SAI2 ((SAI_TypeDef *) SAI2_BASE)\r
-#define SAI1_Block_A ((SAI_Block_TypeDef *)SAI1_Block_A_BASE)\r
-#define SAI1_Block_B ((SAI_Block_TypeDef *)SAI1_Block_B_BASE)\r
-#define SAI2_Block_A ((SAI_Block_TypeDef *)SAI2_Block_A_BASE)\r
-#define SAI2_Block_B ((SAI_Block_TypeDef *)SAI2_Block_B_BASE)\r
-#define LTDC ((LTDC_TypeDef *)LTDC_BASE)\r
-#define LTDC_Layer1 ((LTDC_Layer_TypeDef *)LTDC_Layer1_BASE)\r
-#define LTDC_Layer2 ((LTDC_Layer_TypeDef *)LTDC_Layer2_BASE)\r
-#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)\r
-#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE)\r
-#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)\r
-#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE)\r
-#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE)\r
-#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE)\r
-#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE)\r
-#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE)\r
-#define GPIOI ((GPIO_TypeDef *) GPIOI_BASE)\r
-#define GPIOJ ((GPIO_TypeDef *) GPIOJ_BASE)\r
-#define GPIOK ((GPIO_TypeDef *) GPIOK_BASE)\r
-#define CRC ((CRC_TypeDef *) CRC_BASE)\r
-#define RCC ((RCC_TypeDef *) RCC_BASE)\r
-#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE)\r
-#define DMA1 ((DMA_TypeDef *) DMA1_BASE)\r
-#define DMA1_Stream0 ((DMA_Stream_TypeDef *) DMA1_Stream0_BASE)\r
-#define DMA1_Stream1 ((DMA_Stream_TypeDef *) DMA1_Stream1_BASE)\r
-#define DMA1_Stream2 ((DMA_Stream_TypeDef *) DMA1_Stream2_BASE)\r
-#define DMA1_Stream3 ((DMA_Stream_TypeDef *) DMA1_Stream3_BASE)\r
-#define DMA1_Stream4 ((DMA_Stream_TypeDef *) DMA1_Stream4_BASE)\r
-#define DMA1_Stream5 ((DMA_Stream_TypeDef *) DMA1_Stream5_BASE)\r
-#define DMA1_Stream6 ((DMA_Stream_TypeDef *) DMA1_Stream6_BASE)\r
-#define DMA1_Stream7 ((DMA_Stream_TypeDef *) DMA1_Stream7_BASE)\r
-#define DMA2 ((DMA_TypeDef *) DMA2_BASE)\r
-#define DMA2_Stream0 ((DMA_Stream_TypeDef *) DMA2_Stream0_BASE)\r
-#define DMA2_Stream1 ((DMA_Stream_TypeDef *) DMA2_Stream1_BASE)\r
-#define DMA2_Stream2 ((DMA_Stream_TypeDef *) DMA2_Stream2_BASE)\r
-#define DMA2_Stream3 ((DMA_Stream_TypeDef *) DMA2_Stream3_BASE)\r
-#define DMA2_Stream4 ((DMA_Stream_TypeDef *) DMA2_Stream4_BASE)\r
-#define DMA2_Stream5 ((DMA_Stream_TypeDef *) DMA2_Stream5_BASE)\r
-#define DMA2_Stream6 ((DMA_Stream_TypeDef *) DMA2_Stream6_BASE)\r
-#define DMA2_Stream7 ((DMA_Stream_TypeDef *) DMA2_Stream7_BASE)\r
-#define ETH ((ETH_TypeDef *) ETH_BASE)\r
-#define DMA2D ((DMA2D_TypeDef *)DMA2D_BASE)\r
-#define DCMI ((DCMI_TypeDef *) DCMI_BASE)\r
-#define RNG ((RNG_TypeDef *) RNG_BASE)\r
-#define FMC_Bank1 ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE)\r
-#define FMC_Bank1E ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE)\r
-#define FMC_Bank3 ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE)\r
-#define FMC_Bank5_6 ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_R_BASE)\r
-#define QUADSPI ((QUADSPI_TypeDef *) QSPI_R_BASE)\r
-#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE)\r
-#define USB_OTG_FS ((USB_OTG_GlobalTypeDef *) USB_OTG_FS_PERIPH_BASE)\r
-#define USB_OTG_HS ((USB_OTG_GlobalTypeDef *) USB_OTG_HS_PERIPH_BASE)\r
-#define CAN3 ((CAN_TypeDef *) CAN3_BASE)\r
-#define SDMMC2 ((SDMMC_TypeDef *) SDMMC2_BASE)\r
-#define MDIOS ((MDIOS_TypeDef *) MDIOS_BASE)\r
-#define DFSDM1_Channel0 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel0_BASE)\r
-#define DFSDM1_Channel1 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel1_BASE)\r
-#define DFSDM1_Channel2 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel2_BASE)\r
-#define DFSDM1_Channel3 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel3_BASE)\r
-#define DFSDM1_Channel4 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel4_BASE)\r
-#define DFSDM1_Channel5 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel5_BASE)\r
-#define DFSDM1_Channel6 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel6_BASE)\r
-#define DFSDM1_Channel7 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel7_BASE)\r
-#define DFSDM1_Filter0 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter0_BASE)\r
-#define DFSDM1_Filter1 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter1_BASE)\r
-#define DFSDM1_Filter2 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter2_BASE)\r
-#define DFSDM1_Filter3 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter3_BASE)\r
-#define JPEG ((JPEG_TypeDef *) JPEG_BASE)\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup Exported_constants\r
- * @{\r
- */\r
-\r
- /** @addtogroup Peripheral_Registers_Bits_Definition\r
- * @{\r
- */\r
-\r
-/******************************************************************************/\r
-/* Peripheral Registers_Bits_Definition */\r
-/******************************************************************************/\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Analog to Digital Converter */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for ADC_SR register ********************/\r
-#define ADC_SR_AWD_Pos (0U) \r
-#define ADC_SR_AWD_Msk (0x1UL << ADC_SR_AWD_Pos) /*!< 0x00000001 */\r
-#define ADC_SR_AWD ADC_SR_AWD_Msk /*!<Analog watchdog flag */\r
-#define ADC_SR_EOC_Pos (1U) \r
-#define ADC_SR_EOC_Msk (0x1UL << ADC_SR_EOC_Pos) /*!< 0x00000002 */\r
-#define ADC_SR_EOC ADC_SR_EOC_Msk /*!<End of conversion */\r
-#define ADC_SR_JEOC_Pos (2U) \r
-#define ADC_SR_JEOC_Msk (0x1UL << ADC_SR_JEOC_Pos) /*!< 0x00000004 */\r
-#define ADC_SR_JEOC ADC_SR_JEOC_Msk /*!<Injected channel end of conversion */\r
-#define ADC_SR_JSTRT_Pos (3U) \r
-#define ADC_SR_JSTRT_Msk (0x1UL << ADC_SR_JSTRT_Pos) /*!< 0x00000008 */\r
-#define ADC_SR_JSTRT ADC_SR_JSTRT_Msk /*!<Injected channel Start flag */\r
-#define ADC_SR_STRT_Pos (4U) \r
-#define ADC_SR_STRT_Msk (0x1UL << ADC_SR_STRT_Pos) /*!< 0x00000010 */\r
-#define ADC_SR_STRT ADC_SR_STRT_Msk /*!<Regular channel Start flag */\r
-#define ADC_SR_OVR_Pos (5U) \r
-#define ADC_SR_OVR_Msk (0x1UL << ADC_SR_OVR_Pos) /*!< 0x00000020 */\r
-#define ADC_SR_OVR ADC_SR_OVR_Msk /*!<Overrun flag */\r
-\r
-/******************* Bit definition for ADC_CR1 register ********************/\r
-#define ADC_CR1_AWDCH_Pos (0U) \r
-#define ADC_CR1_AWDCH_Msk (0x1FUL << ADC_CR1_AWDCH_Pos) /*!< 0x0000001F */\r
-#define ADC_CR1_AWDCH ADC_CR1_AWDCH_Msk /*!<AWDCH[4:0] bits (Analog watchdog channel select bits) */\r
-#define ADC_CR1_AWDCH_0 (0x01UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000001 */\r
-#define ADC_CR1_AWDCH_1 (0x02UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000002 */\r
-#define ADC_CR1_AWDCH_2 (0x04UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000004 */\r
-#define ADC_CR1_AWDCH_3 (0x08UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000008 */\r
-#define ADC_CR1_AWDCH_4 (0x10UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000010 */\r
-#define ADC_CR1_EOCIE_Pos (5U) \r
-#define ADC_CR1_EOCIE_Msk (0x1UL << ADC_CR1_EOCIE_Pos) /*!< 0x00000020 */\r
-#define ADC_CR1_EOCIE ADC_CR1_EOCIE_Msk /*!<Interrupt enable for EOC */\r
-#define ADC_CR1_AWDIE_Pos (6U) \r
-#define ADC_CR1_AWDIE_Msk (0x1UL << ADC_CR1_AWDIE_Pos) /*!< 0x00000040 */\r
-#define ADC_CR1_AWDIE ADC_CR1_AWDIE_Msk /*!<AAnalog Watchdog interrupt enable */\r
-#define ADC_CR1_JEOCIE_Pos (7U) \r
-#define ADC_CR1_JEOCIE_Msk (0x1UL << ADC_CR1_JEOCIE_Pos) /*!< 0x00000080 */\r
-#define ADC_CR1_JEOCIE ADC_CR1_JEOCIE_Msk /*!<Interrupt enable for injected channels */\r
-#define ADC_CR1_SCAN_Pos (8U) \r
-#define ADC_CR1_SCAN_Msk (0x1UL << ADC_CR1_SCAN_Pos) /*!< 0x00000100 */\r
-#define ADC_CR1_SCAN ADC_CR1_SCAN_Msk /*!<Scan mode */\r
-#define ADC_CR1_AWDSGL_Pos (9U) \r
-#define ADC_CR1_AWDSGL_Msk (0x1UL << ADC_CR1_AWDSGL_Pos) /*!< 0x00000200 */\r
-#define ADC_CR1_AWDSGL ADC_CR1_AWDSGL_Msk /*!<Enable the watchdog on a single channel in scan mode */\r
-#define ADC_CR1_JAUTO_Pos (10U) \r
-#define ADC_CR1_JAUTO_Msk (0x1UL << ADC_CR1_JAUTO_Pos) /*!< 0x00000400 */\r
-#define ADC_CR1_JAUTO ADC_CR1_JAUTO_Msk /*!<Automatic injected group conversion */\r
-#define ADC_CR1_DISCEN_Pos (11U) \r
-#define ADC_CR1_DISCEN_Msk (0x1UL << ADC_CR1_DISCEN_Pos) /*!< 0x00000800 */\r
-#define ADC_CR1_DISCEN ADC_CR1_DISCEN_Msk /*!<Discontinuous mode on regular channels */\r
-#define ADC_CR1_JDISCEN_Pos (12U) \r
-#define ADC_CR1_JDISCEN_Msk (0x1UL << ADC_CR1_JDISCEN_Pos) /*!< 0x00001000 */\r
-#define ADC_CR1_JDISCEN ADC_CR1_JDISCEN_Msk /*!<Discontinuous mode on injected channels */\r
-#define ADC_CR1_DISCNUM_Pos (13U) \r
-#define ADC_CR1_DISCNUM_Msk (0x7UL << ADC_CR1_DISCNUM_Pos) /*!< 0x0000E000 */\r
-#define ADC_CR1_DISCNUM ADC_CR1_DISCNUM_Msk /*!<DISCNUM[2:0] bits (Discontinuous mode channel count) */\r
-#define ADC_CR1_DISCNUM_0 (0x1UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00002000 */\r
-#define ADC_CR1_DISCNUM_1 (0x2UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00004000 */\r
-#define ADC_CR1_DISCNUM_2 (0x4UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00008000 */\r
-#define ADC_CR1_JAWDEN_Pos (22U) \r
-#define ADC_CR1_JAWDEN_Msk (0x1UL << ADC_CR1_JAWDEN_Pos) /*!< 0x00400000 */\r
-#define ADC_CR1_JAWDEN ADC_CR1_JAWDEN_Msk /*!<Analog watchdog enable on injected channels */\r
-#define ADC_CR1_AWDEN_Pos (23U) \r
-#define ADC_CR1_AWDEN_Msk (0x1UL << ADC_CR1_AWDEN_Pos) /*!< 0x00800000 */\r
-#define ADC_CR1_AWDEN ADC_CR1_AWDEN_Msk /*!<Analog watchdog enable on regular channels */\r
-#define ADC_CR1_RES_Pos (24U) \r
-#define ADC_CR1_RES_Msk (0x3UL << ADC_CR1_RES_Pos) /*!< 0x03000000 */\r
-#define ADC_CR1_RES ADC_CR1_RES_Msk /*!<RES[2:0] bits (Resolution) */\r
-#define ADC_CR1_RES_0 (0x1UL << ADC_CR1_RES_Pos) /*!< 0x01000000 */\r
-#define ADC_CR1_RES_1 (0x2UL << ADC_CR1_RES_Pos) /*!< 0x02000000 */\r
-#define ADC_CR1_OVRIE_Pos (26U) \r
-#define ADC_CR1_OVRIE_Msk (0x1UL << ADC_CR1_OVRIE_Pos) /*!< 0x04000000 */\r
-#define ADC_CR1_OVRIE ADC_CR1_OVRIE_Msk /*!<overrun interrupt enable */\r
-\r
-/******************* Bit definition for ADC_CR2 register ********************/\r
-#define ADC_CR2_ADON_Pos (0U) \r
-#define ADC_CR2_ADON_Msk (0x1UL << ADC_CR2_ADON_Pos) /*!< 0x00000001 */\r
-#define ADC_CR2_ADON ADC_CR2_ADON_Msk /*!<A/D Converter ON / OFF */\r
-#define ADC_CR2_CONT_Pos (1U) \r
-#define ADC_CR2_CONT_Msk (0x1UL << ADC_CR2_CONT_Pos) /*!< 0x00000002 */\r
-#define ADC_CR2_CONT ADC_CR2_CONT_Msk /*!<Continuous Conversion */\r
-#define ADC_CR2_DMA_Pos (8U) \r
-#define ADC_CR2_DMA_Msk (0x1UL << ADC_CR2_DMA_Pos) /*!< 0x00000100 */\r
-#define ADC_CR2_DMA ADC_CR2_DMA_Msk /*!<Direct Memory access mode */\r
-#define ADC_CR2_DDS_Pos (9U) \r
-#define ADC_CR2_DDS_Msk (0x1UL << ADC_CR2_DDS_Pos) /*!< 0x00000200 */\r
-#define ADC_CR2_DDS ADC_CR2_DDS_Msk /*!<DMA disable selection (Single ADC) */\r
-#define ADC_CR2_EOCS_Pos (10U) \r
-#define ADC_CR2_EOCS_Msk (0x1UL << ADC_CR2_EOCS_Pos) /*!< 0x00000400 */\r
-#define ADC_CR2_EOCS ADC_CR2_EOCS_Msk /*!<End of conversion selection */\r
-#define ADC_CR2_ALIGN_Pos (11U) \r
-#define ADC_CR2_ALIGN_Msk (0x1UL << ADC_CR2_ALIGN_Pos) /*!< 0x00000800 */\r
-#define ADC_CR2_ALIGN ADC_CR2_ALIGN_Msk /*!<Data Alignment */\r
-#define ADC_CR2_JEXTSEL_Pos (16U) \r
-#define ADC_CR2_JEXTSEL_Msk (0xFUL << ADC_CR2_JEXTSEL_Pos) /*!< 0x000F0000 */\r
-#define ADC_CR2_JEXTSEL ADC_CR2_JEXTSEL_Msk /*!<JEXTSEL[3:0] bits (External event select for injected group) */\r
-#define ADC_CR2_JEXTSEL_0 (0x1UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00010000 */\r
-#define ADC_CR2_JEXTSEL_1 (0x2UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00020000 */\r
-#define ADC_CR2_JEXTSEL_2 (0x4UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00040000 */\r
-#define ADC_CR2_JEXTSEL_3 (0x8UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00080000 */\r
-#define ADC_CR2_JEXTEN_Pos (20U) \r
-#define ADC_CR2_JEXTEN_Msk (0x3UL << ADC_CR2_JEXTEN_Pos) /*!< 0x00300000 */\r
-#define ADC_CR2_JEXTEN ADC_CR2_JEXTEN_Msk /*!<JEXTEN[1:0] bits (External Trigger Conversion mode for injected channelsp) */\r
-#define ADC_CR2_JEXTEN_0 (0x1UL << ADC_CR2_JEXTEN_Pos) /*!< 0x00100000 */\r
-#define ADC_CR2_JEXTEN_1 (0x2UL << ADC_CR2_JEXTEN_Pos) /*!< 0x00200000 */\r
-#define ADC_CR2_JSWSTART_Pos (22U) \r
-#define ADC_CR2_JSWSTART_Msk (0x1UL << ADC_CR2_JSWSTART_Pos) /*!< 0x00400000 */\r
-#define ADC_CR2_JSWSTART ADC_CR2_JSWSTART_Msk /*!<Start Conversion of injected channels */\r
-#define ADC_CR2_EXTSEL_Pos (24U) \r
-#define ADC_CR2_EXTSEL_Msk (0xFUL << ADC_CR2_EXTSEL_Pos) /*!< 0x0F000000 */\r
-#define ADC_CR2_EXTSEL ADC_CR2_EXTSEL_Msk /*!<EXTSEL[3:0] bits (External Event Select for regular group) */\r
-#define ADC_CR2_EXTSEL_0 (0x1UL << ADC_CR2_EXTSEL_Pos) /*!< 0x01000000 */\r
-#define ADC_CR2_EXTSEL_1 (0x2UL << ADC_CR2_EXTSEL_Pos) /*!< 0x02000000 */\r
-#define ADC_CR2_EXTSEL_2 (0x4UL << ADC_CR2_EXTSEL_Pos) /*!< 0x04000000 */\r
-#define ADC_CR2_EXTSEL_3 (0x8UL << ADC_CR2_EXTSEL_Pos) /*!< 0x08000000 */\r
-#define ADC_CR2_EXTEN_Pos (28U) \r
-#define ADC_CR2_EXTEN_Msk (0x3UL << ADC_CR2_EXTEN_Pos) /*!< 0x30000000 */\r
-#define ADC_CR2_EXTEN ADC_CR2_EXTEN_Msk /*!<EXTEN[1:0] bits (External Trigger Conversion mode for regular channelsp) */\r
-#define ADC_CR2_EXTEN_0 (0x1UL << ADC_CR2_EXTEN_Pos) /*!< 0x10000000 */\r
-#define ADC_CR2_EXTEN_1 (0x2UL << ADC_CR2_EXTEN_Pos) /*!< 0x20000000 */\r
-#define ADC_CR2_SWSTART_Pos (30U) \r
-#define ADC_CR2_SWSTART_Msk (0x1UL << ADC_CR2_SWSTART_Pos) /*!< 0x40000000 */\r
-#define ADC_CR2_SWSTART ADC_CR2_SWSTART_Msk /*!<Start Conversion of regular channels */\r
-\r
-/****************** Bit definition for ADC_SMPR1 register *******************/\r
-#define ADC_SMPR1_SMP10_Pos (0U) \r
-#define ADC_SMPR1_SMP10_Msk (0x7UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000007 */\r
-#define ADC_SMPR1_SMP10 ADC_SMPR1_SMP10_Msk /*!<SMP10[2:0] bits (Channel 10 Sample time selection) */\r
-#define ADC_SMPR1_SMP10_0 (0x1UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000001 */\r
-#define ADC_SMPR1_SMP10_1 (0x2UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000002 */\r
-#define ADC_SMPR1_SMP10_2 (0x4UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000004 */\r
-#define ADC_SMPR1_SMP11_Pos (3U) \r
-#define ADC_SMPR1_SMP11_Msk (0x7UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000038 */\r
-#define ADC_SMPR1_SMP11 ADC_SMPR1_SMP11_Msk /*!<SMP11[2:0] bits (Channel 11 Sample time selection) */\r
-#define ADC_SMPR1_SMP11_0 (0x1UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000008 */\r
-#define ADC_SMPR1_SMP11_1 (0x2UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000010 */\r
-#define ADC_SMPR1_SMP11_2 (0x4UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000020 */\r
-#define ADC_SMPR1_SMP12_Pos (6U) \r
-#define ADC_SMPR1_SMP12_Msk (0x7UL << ADC_SMPR1_SMP12_Pos) /*!< 0x000001C0 */\r
-#define ADC_SMPR1_SMP12 ADC_SMPR1_SMP12_Msk /*!<SMP12[2:0] bits (Channel 12 Sample time selection) */\r
-#define ADC_SMPR1_SMP12_0 (0x1UL << ADC_SMPR1_SMP12_Pos) /*!< 0x00000040 */\r
-#define ADC_SMPR1_SMP12_1 (0x2UL << ADC_SMPR1_SMP12_Pos) /*!< 0x00000080 */\r
-#define ADC_SMPR1_SMP12_2 (0x4UL << ADC_SMPR1_SMP12_Pos) /*!< 0x00000100 */\r
-#define ADC_SMPR1_SMP13_Pos (9U) \r
-#define ADC_SMPR1_SMP13_Msk (0x7UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000E00 */\r
-#define ADC_SMPR1_SMP13 ADC_SMPR1_SMP13_Msk /*!<SMP13[2:0] bits (Channel 13 Sample time selection) */\r
-#define ADC_SMPR1_SMP13_0 (0x1UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000200 */\r
-#define ADC_SMPR1_SMP13_1 (0x2UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000400 */\r
-#define ADC_SMPR1_SMP13_2 (0x4UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000800 */\r
-#define ADC_SMPR1_SMP14_Pos (12U) \r
-#define ADC_SMPR1_SMP14_Msk (0x7UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00007000 */\r
-#define ADC_SMPR1_SMP14 ADC_SMPR1_SMP14_Msk /*!<SMP14[2:0] bits (Channel 14 Sample time selection) */\r
-#define ADC_SMPR1_SMP14_0 (0x1UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00001000 */\r
-#define ADC_SMPR1_SMP14_1 (0x2UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00002000 */\r
-#define ADC_SMPR1_SMP14_2 (0x4UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00004000 */\r
-#define ADC_SMPR1_SMP15_Pos (15U) \r
-#define ADC_SMPR1_SMP15_Msk (0x7UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00038000 */\r
-#define ADC_SMPR1_SMP15 ADC_SMPR1_SMP15_Msk /*!<SMP15[2:0] bits (Channel 15 Sample time selection) */\r
-#define ADC_SMPR1_SMP15_0 (0x1UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00008000 */\r
-#define ADC_SMPR1_SMP15_1 (0x2UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00010000 */\r
-#define ADC_SMPR1_SMP15_2 (0x4UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00020000 */\r
-#define ADC_SMPR1_SMP16_Pos (18U) \r
-#define ADC_SMPR1_SMP16_Msk (0x7UL << ADC_SMPR1_SMP16_Pos) /*!< 0x001C0000 */\r
-#define ADC_SMPR1_SMP16 ADC_SMPR1_SMP16_Msk /*!<SMP16[2:0] bits (Channel 16 Sample time selection) */\r
-#define ADC_SMPR1_SMP16_0 (0x1UL << ADC_SMPR1_SMP16_Pos) /*!< 0x00040000 */\r
-#define ADC_SMPR1_SMP16_1 (0x2UL << ADC_SMPR1_SMP16_Pos) /*!< 0x00080000 */\r
-#define ADC_SMPR1_SMP16_2 (0x4UL << ADC_SMPR1_SMP16_Pos) /*!< 0x00100000 */\r
-#define ADC_SMPR1_SMP17_Pos (21U) \r
-#define ADC_SMPR1_SMP17_Msk (0x7UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00E00000 */\r
-#define ADC_SMPR1_SMP17 ADC_SMPR1_SMP17_Msk /*!<SMP17[2:0] bits (Channel 17 Sample time selection) */\r
-#define ADC_SMPR1_SMP17_0 (0x1UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00200000 */\r
-#define ADC_SMPR1_SMP17_1 (0x2UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00400000 */\r
-#define ADC_SMPR1_SMP17_2 (0x4UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00800000 */\r
-#define ADC_SMPR1_SMP18_Pos (24U) \r
-#define ADC_SMPR1_SMP18_Msk (0x7UL << ADC_SMPR1_SMP18_Pos) /*!< 0x07000000 */\r
-#define ADC_SMPR1_SMP18 ADC_SMPR1_SMP18_Msk /*!<SMP18[2:0] bits (Channel 18 Sample time selection) */\r
-#define ADC_SMPR1_SMP18_0 (0x1UL << ADC_SMPR1_SMP18_Pos) /*!< 0x01000000 */\r
-#define ADC_SMPR1_SMP18_1 (0x2UL << ADC_SMPR1_SMP18_Pos) /*!< 0x02000000 */\r
-#define ADC_SMPR1_SMP18_2 (0x4UL << ADC_SMPR1_SMP18_Pos) /*!< 0x04000000 */\r
-\r
-/****************** Bit definition for ADC_SMPR2 register *******************/\r
-#define ADC_SMPR2_SMP0_Pos (0U) \r
-#define ADC_SMPR2_SMP0_Msk (0x7UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000007 */\r
-#define ADC_SMPR2_SMP0 ADC_SMPR2_SMP0_Msk /*!<SMP0[2:0] bits (Channel 0 Sample time selection) */\r
-#define ADC_SMPR2_SMP0_0 (0x1UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000001 */\r
-#define ADC_SMPR2_SMP0_1 (0x2UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000002 */\r
-#define ADC_SMPR2_SMP0_2 (0x4UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000004 */\r
-#define ADC_SMPR2_SMP1_Pos (3U) \r
-#define ADC_SMPR2_SMP1_Msk (0x7UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000038 */\r
-#define ADC_SMPR2_SMP1 ADC_SMPR2_SMP1_Msk /*!<SMP1[2:0] bits (Channel 1 Sample time selection) */\r
-#define ADC_SMPR2_SMP1_0 (0x1UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000008 */\r
-#define ADC_SMPR2_SMP1_1 (0x2UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000010 */\r
-#define ADC_SMPR2_SMP1_2 (0x4UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000020 */\r
-#define ADC_SMPR2_SMP2_Pos (6U) \r
-#define ADC_SMPR2_SMP2_Msk (0x7UL << ADC_SMPR2_SMP2_Pos) /*!< 0x000001C0 */\r
-#define ADC_SMPR2_SMP2 ADC_SMPR2_SMP2_Msk /*!<SMP2[2:0] bits (Channel 2 Sample time selection) */\r
-#define ADC_SMPR2_SMP2_0 (0x1UL << ADC_SMPR2_SMP2_Pos) /*!< 0x00000040 */\r
-#define ADC_SMPR2_SMP2_1 (0x2UL << ADC_SMPR2_SMP2_Pos) /*!< 0x00000080 */\r
-#define ADC_SMPR2_SMP2_2 (0x4UL << ADC_SMPR2_SMP2_Pos) /*!< 0x00000100 */\r
-#define ADC_SMPR2_SMP3_Pos (9U) \r
-#define ADC_SMPR2_SMP3_Msk (0x7UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000E00 */\r
-#define ADC_SMPR2_SMP3 ADC_SMPR2_SMP3_Msk /*!<SMP3[2:0] bits (Channel 3 Sample time selection) */\r
-#define ADC_SMPR2_SMP3_0 (0x1UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000200 */\r
-#define ADC_SMPR2_SMP3_1 (0x2UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000400 */\r
-#define ADC_SMPR2_SMP3_2 (0x4UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000800 */\r
-#define ADC_SMPR2_SMP4_Pos (12U) \r
-#define ADC_SMPR2_SMP4_Msk (0x7UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00007000 */\r
-#define ADC_SMPR2_SMP4 ADC_SMPR2_SMP4_Msk /*!<SMP4[2:0] bits (Channel 4 Sample time selection) */\r
-#define ADC_SMPR2_SMP4_0 (0x1UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00001000 */\r
-#define ADC_SMPR2_SMP4_1 (0x2UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00002000 */\r
-#define ADC_SMPR2_SMP4_2 (0x4UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00004000 */\r
-#define ADC_SMPR2_SMP5_Pos (15U) \r
-#define ADC_SMPR2_SMP5_Msk (0x7UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00038000 */\r
-#define ADC_SMPR2_SMP5 ADC_SMPR2_SMP5_Msk /*!<SMP5[2:0] bits (Channel 5 Sample time selection) */\r
-#define ADC_SMPR2_SMP5_0 (0x1UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00008000 */\r
-#define ADC_SMPR2_SMP5_1 (0x2UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00010000 */\r
-#define ADC_SMPR2_SMP5_2 (0x4UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00020000 */\r
-#define ADC_SMPR2_SMP6_Pos (18U) \r
-#define ADC_SMPR2_SMP6_Msk (0x7UL << ADC_SMPR2_SMP6_Pos) /*!< 0x001C0000 */\r
-#define ADC_SMPR2_SMP6 ADC_SMPR2_SMP6_Msk /*!<SMP6[2:0] bits (Channel 6 Sample time selection) */\r
-#define ADC_SMPR2_SMP6_0 (0x1UL << ADC_SMPR2_SMP6_Pos) /*!< 0x00040000 */\r
-#define ADC_SMPR2_SMP6_1 (0x2UL << ADC_SMPR2_SMP6_Pos) /*!< 0x00080000 */\r
-#define ADC_SMPR2_SMP6_2 (0x4UL << ADC_SMPR2_SMP6_Pos) /*!< 0x00100000 */\r
-#define ADC_SMPR2_SMP7_Pos (21U) \r
-#define ADC_SMPR2_SMP7_Msk (0x7UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00E00000 */\r
-#define ADC_SMPR2_SMP7 ADC_SMPR2_SMP7_Msk /*!<SMP7[2:0] bits (Channel 7 Sample time selection) */\r
-#define ADC_SMPR2_SMP7_0 (0x1UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00200000 */\r
-#define ADC_SMPR2_SMP7_1 (0x2UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00400000 */\r
-#define ADC_SMPR2_SMP7_2 (0x4UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00800000 */\r
-#define ADC_SMPR2_SMP8_Pos (24U) \r
-#define ADC_SMPR2_SMP8_Msk (0x7UL << ADC_SMPR2_SMP8_Pos) /*!< 0x07000000 */\r
-#define ADC_SMPR2_SMP8 ADC_SMPR2_SMP8_Msk /*!<SMP8[2:0] bits (Channel 8 Sample time selection) */\r
-#define ADC_SMPR2_SMP8_0 (0x1UL << ADC_SMPR2_SMP8_Pos) /*!< 0x01000000 */\r
-#define ADC_SMPR2_SMP8_1 (0x2UL << ADC_SMPR2_SMP8_Pos) /*!< 0x02000000 */\r
-#define ADC_SMPR2_SMP8_2 (0x4UL << ADC_SMPR2_SMP8_Pos) /*!< 0x04000000 */\r
-#define ADC_SMPR2_SMP9_Pos (27U) \r
-#define ADC_SMPR2_SMP9_Msk (0x7UL << ADC_SMPR2_SMP9_Pos) /*!< 0x38000000 */\r
-#define ADC_SMPR2_SMP9 ADC_SMPR2_SMP9_Msk /*!<SMP9[2:0] bits (Channel 9 Sample time selection) */\r
-#define ADC_SMPR2_SMP9_0 (0x1UL << ADC_SMPR2_SMP9_Pos) /*!< 0x08000000 */\r
-#define ADC_SMPR2_SMP9_1 (0x2UL << ADC_SMPR2_SMP9_Pos) /*!< 0x10000000 */\r
-#define ADC_SMPR2_SMP9_2 (0x4UL << ADC_SMPR2_SMP9_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for ADC_JOFR1 register *******************/\r
-#define ADC_JOFR1_JOFFSET1_Pos (0U) \r
-#define ADC_JOFR1_JOFFSET1_Msk (0xFFFUL << ADC_JOFR1_JOFFSET1_Pos) /*!< 0x00000FFF */\r
-#define ADC_JOFR1_JOFFSET1 ADC_JOFR1_JOFFSET1_Msk /*!<Data offset for injected channel 1 */\r
-\r
-/****************** Bit definition for ADC_JOFR2 register *******************/\r
-#define ADC_JOFR2_JOFFSET2_Pos (0U) \r
-#define ADC_JOFR2_JOFFSET2_Msk (0xFFFUL << ADC_JOFR2_JOFFSET2_Pos) /*!< 0x00000FFF */\r
-#define ADC_JOFR2_JOFFSET2 ADC_JOFR2_JOFFSET2_Msk /*!<Data offset for injected channel 2 */\r
-\r
-/****************** Bit definition for ADC_JOFR3 register *******************/\r
-#define ADC_JOFR3_JOFFSET3_Pos (0U) \r
-#define ADC_JOFR3_JOFFSET3_Msk (0xFFFUL << ADC_JOFR3_JOFFSET3_Pos) /*!< 0x00000FFF */\r
-#define ADC_JOFR3_JOFFSET3 ADC_JOFR3_JOFFSET3_Msk /*!<Data offset for injected channel 3 */\r
-\r
-/****************** Bit definition for ADC_JOFR4 register *******************/\r
-#define ADC_JOFR4_JOFFSET4_Pos (0U) \r
-#define ADC_JOFR4_JOFFSET4_Msk (0xFFFUL << ADC_JOFR4_JOFFSET4_Pos) /*!< 0x00000FFF */\r
-#define ADC_JOFR4_JOFFSET4 ADC_JOFR4_JOFFSET4_Msk /*!<Data offset for injected channel 4 */\r
-\r
-/******************* Bit definition for ADC_HTR register ********************/\r
-#define ADC_HTR_HT_Pos (0U) \r
-#define ADC_HTR_HT_Msk (0xFFFUL << ADC_HTR_HT_Pos) /*!< 0x00000FFF */\r
-#define ADC_HTR_HT ADC_HTR_HT_Msk /*!<Analog watchdog high threshold */\r
-\r
-/******************* Bit definition for ADC_LTR register ********************/\r
-#define ADC_LTR_LT_Pos (0U) \r
-#define ADC_LTR_LT_Msk (0xFFFUL << ADC_LTR_LT_Pos) /*!< 0x00000FFF */\r
-#define ADC_LTR_LT ADC_LTR_LT_Msk /*!<Analog watchdog low threshold */\r
-\r
-/******************* Bit definition for ADC_SQR1 register *******************/\r
-#define ADC_SQR1_SQ13_Pos (0U) \r
-#define ADC_SQR1_SQ13_Msk (0x1FUL << ADC_SQR1_SQ13_Pos) /*!< 0x0000001F */\r
-#define ADC_SQR1_SQ13 ADC_SQR1_SQ13_Msk /*!<SQ13[4:0] bits (13th conversion in regular sequence) */\r
-#define ADC_SQR1_SQ13_0 (0x01UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000001 */\r
-#define ADC_SQR1_SQ13_1 (0x02UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000002 */\r
-#define ADC_SQR1_SQ13_2 (0x04UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000004 */\r
-#define ADC_SQR1_SQ13_3 (0x08UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000008 */\r
-#define ADC_SQR1_SQ13_4 (0x10UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000010 */\r
-#define ADC_SQR1_SQ14_Pos (5U) \r
-#define ADC_SQR1_SQ14_Msk (0x1FUL << ADC_SQR1_SQ14_Pos) /*!< 0x000003E0 */\r
-#define ADC_SQR1_SQ14 ADC_SQR1_SQ14_Msk /*!<SQ14[4:0] bits (14th conversion in regular sequence) */\r
-#define ADC_SQR1_SQ14_0 (0x01UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000020 */\r
-#define ADC_SQR1_SQ14_1 (0x02UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000040 */\r
-#define ADC_SQR1_SQ14_2 (0x04UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000080 */\r
-#define ADC_SQR1_SQ14_3 (0x08UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000100 */\r
-#define ADC_SQR1_SQ14_4 (0x10UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000200 */\r
-#define ADC_SQR1_SQ15_Pos (10U) \r
-#define ADC_SQR1_SQ15_Msk (0x1FUL << ADC_SQR1_SQ15_Pos) /*!< 0x00007C00 */\r
-#define ADC_SQR1_SQ15 ADC_SQR1_SQ15_Msk /*!<SQ15[4:0] bits (15th conversion in regular sequence) */\r
-#define ADC_SQR1_SQ15_0 (0x01UL << ADC_SQR1_SQ15_Pos) /*!< 0x00000400 */\r
-#define ADC_SQR1_SQ15_1 (0x02UL << ADC_SQR1_SQ15_Pos) /*!< 0x00000800 */\r
-#define ADC_SQR1_SQ15_2 (0x04UL << ADC_SQR1_SQ15_Pos) /*!< 0x00001000 */\r
-#define ADC_SQR1_SQ15_3 (0x08UL << ADC_SQR1_SQ15_Pos) /*!< 0x00002000 */\r
-#define ADC_SQR1_SQ15_4 (0x10UL << ADC_SQR1_SQ15_Pos) /*!< 0x00004000 */\r
-#define ADC_SQR1_SQ16_Pos (15U) \r
-#define ADC_SQR1_SQ16_Msk (0x1FUL << ADC_SQR1_SQ16_Pos) /*!< 0x000F8000 */\r
-#define ADC_SQR1_SQ16 ADC_SQR1_SQ16_Msk /*!<SQ16[4:0] bits (16th conversion in regular sequence) */\r
-#define ADC_SQR1_SQ16_0 (0x01UL << ADC_SQR1_SQ16_Pos) /*!< 0x00008000 */\r
-#define ADC_SQR1_SQ16_1 (0x02UL << ADC_SQR1_SQ16_Pos) /*!< 0x00010000 */\r
-#define ADC_SQR1_SQ16_2 (0x04UL << ADC_SQR1_SQ16_Pos) /*!< 0x00020000 */\r
-#define ADC_SQR1_SQ16_3 (0x08UL << ADC_SQR1_SQ16_Pos) /*!< 0x00040000 */\r
-#define ADC_SQR1_SQ16_4 (0x10UL << ADC_SQR1_SQ16_Pos) /*!< 0x00080000 */\r
-#define ADC_SQR1_L_Pos (20U) \r
-#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x00F00000 */\r
-#define ADC_SQR1_L ADC_SQR1_L_Msk /*!<L[3:0] bits (Regular channel sequence length) */\r
-#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00100000 */\r
-#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00200000 */\r
-#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00400000 */\r
-#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00800000 */\r
-\r
-/******************* Bit definition for ADC_SQR2 register *******************/\r
-#define ADC_SQR2_SQ7_Pos (0U) \r
-#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0000001F */\r
-#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!<SQ7[4:0] bits (7th conversion in regular sequence) */\r
-#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000001 */\r
-#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000002 */\r
-#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000004 */\r
-#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000008 */\r
-#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000010 */\r
-#define ADC_SQR2_SQ8_Pos (5U) \r
-#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x000003E0 */\r
-#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!<SQ8[4:0] bits (8th conversion in regular sequence) */\r
-#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000020 */\r
-#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000040 */\r
-#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000080 */\r
-#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000100 */\r
-#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000200 */\r
-#define ADC_SQR2_SQ9_Pos (10U) \r
-#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x00007C00 */\r
-#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!<SQ9[4:0] bits (9th conversion in regular sequence) */\r
-#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x00000400 */\r
-#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x00000800 */\r
-#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x00001000 */\r
-#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x00002000 */\r
-#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x00004000 */\r
-#define ADC_SQR2_SQ10_Pos (15U) \r
-#define ADC_SQR2_SQ10_Msk (0x1FUL << ADC_SQR2_SQ10_Pos) /*!< 0x000F8000 */\r
-#define ADC_SQR2_SQ10 ADC_SQR2_SQ10_Msk /*!<SQ10[4:0] bits (10th conversion in regular sequence) */\r
-#define ADC_SQR2_SQ10_0 (0x01UL << ADC_SQR2_SQ10_Pos) /*!< 0x00008000 */\r
-#define ADC_SQR2_SQ10_1 (0x02UL << ADC_SQR2_SQ10_Pos) /*!< 0x00010000 */\r
-#define ADC_SQR2_SQ10_2 (0x04UL << ADC_SQR2_SQ10_Pos) /*!< 0x00020000 */\r
-#define ADC_SQR2_SQ10_3 (0x08UL << ADC_SQR2_SQ10_Pos) /*!< 0x00040000 */\r
-#define ADC_SQR2_SQ10_4 (0x10UL << ADC_SQR2_SQ10_Pos) /*!< 0x00080000 */\r
-#define ADC_SQR2_SQ11_Pos (20U) \r
-#define ADC_SQR2_SQ11_Msk (0x1FUL << ADC_SQR2_SQ11_Pos) /*!< 0x01F00000 */\r
-#define ADC_SQR2_SQ11 ADC_SQR2_SQ11_Msk /*!<SQ11[4:0] bits (11th conversion in regular sequence) */\r
-#define ADC_SQR2_SQ11_0 (0x01UL << ADC_SQR2_SQ11_Pos) /*!< 0x00100000 */\r
-#define ADC_SQR2_SQ11_1 (0x02UL << ADC_SQR2_SQ11_Pos) /*!< 0x00200000 */\r
-#define ADC_SQR2_SQ11_2 (0x04UL << ADC_SQR2_SQ11_Pos) /*!< 0x00400000 */\r
-#define ADC_SQR2_SQ11_3 (0x08UL << ADC_SQR2_SQ11_Pos) /*!< 0x00800000 */\r
-#define ADC_SQR2_SQ11_4 (0x10UL << ADC_SQR2_SQ11_Pos) /*!< 0x01000000 */\r
-#define ADC_SQR2_SQ12_Pos (25U) \r
-#define ADC_SQR2_SQ12_Msk (0x1FUL << ADC_SQR2_SQ12_Pos) /*!< 0x3E000000 */\r
-#define ADC_SQR2_SQ12 ADC_SQR2_SQ12_Msk /*!<SQ12[4:0] bits (12th conversion in regular sequence) */\r
-#define ADC_SQR2_SQ12_0 (0x01UL << ADC_SQR2_SQ12_Pos) /*!< 0x02000000 */\r
-#define ADC_SQR2_SQ12_1 (0x02UL << ADC_SQR2_SQ12_Pos) /*!< 0x04000000 */\r
-#define ADC_SQR2_SQ12_2 (0x04UL << ADC_SQR2_SQ12_Pos) /*!< 0x08000000 */\r
-#define ADC_SQR2_SQ12_3 (0x08UL << ADC_SQR2_SQ12_Pos) /*!< 0x10000000 */\r
-#define ADC_SQR2_SQ12_4 (0x10UL << ADC_SQR2_SQ12_Pos) /*!< 0x20000000 */\r
-\r
-/******************* Bit definition for ADC_SQR3 register *******************/\r
-#define ADC_SQR3_SQ1_Pos (0U) \r
-#define ADC_SQR3_SQ1_Msk (0x1FUL << ADC_SQR3_SQ1_Pos) /*!< 0x0000001F */\r
-#define ADC_SQR3_SQ1 ADC_SQR3_SQ1_Msk /*!<SQ1[4:0] bits (1st conversion in regular sequence) */\r
-#define ADC_SQR3_SQ1_0 (0x01UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000001 */\r
-#define ADC_SQR3_SQ1_1 (0x02UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000002 */\r
-#define ADC_SQR3_SQ1_2 (0x04UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000004 */\r
-#define ADC_SQR3_SQ1_3 (0x08UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000008 */\r
-#define ADC_SQR3_SQ1_4 (0x10UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000010 */\r
-#define ADC_SQR3_SQ2_Pos (5U) \r
-#define ADC_SQR3_SQ2_Msk (0x1FUL << ADC_SQR3_SQ2_Pos) /*!< 0x000003E0 */\r
-#define ADC_SQR3_SQ2 ADC_SQR3_SQ2_Msk /*!<SQ2[4:0] bits (2nd conversion in regular sequence) */\r
-#define ADC_SQR3_SQ2_0 (0x01UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000020 */\r
-#define ADC_SQR3_SQ2_1 (0x02UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000040 */\r
-#define ADC_SQR3_SQ2_2 (0x04UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000080 */\r
-#define ADC_SQR3_SQ2_3 (0x08UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000100 */\r
-#define ADC_SQR3_SQ2_4 (0x10UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000200 */\r
-#define ADC_SQR3_SQ3_Pos (10U) \r
-#define ADC_SQR3_SQ3_Msk (0x1FUL << ADC_SQR3_SQ3_Pos) /*!< 0x00007C00 */\r
-#define ADC_SQR3_SQ3 ADC_SQR3_SQ3_Msk /*!<SQ3[4:0] bits (3rd conversion in regular sequence) */\r
-#define ADC_SQR3_SQ3_0 (0x01UL << ADC_SQR3_SQ3_Pos) /*!< 0x00000400 */\r
-#define ADC_SQR3_SQ3_1 (0x02UL << ADC_SQR3_SQ3_Pos) /*!< 0x00000800 */\r
-#define ADC_SQR3_SQ3_2 (0x04UL << ADC_SQR3_SQ3_Pos) /*!< 0x00001000 */\r
-#define ADC_SQR3_SQ3_3 (0x08UL << ADC_SQR3_SQ3_Pos) /*!< 0x00002000 */\r
-#define ADC_SQR3_SQ3_4 (0x10UL << ADC_SQR3_SQ3_Pos) /*!< 0x00004000 */\r
-#define ADC_SQR3_SQ4_Pos (15U) \r
-#define ADC_SQR3_SQ4_Msk (0x1FUL << ADC_SQR3_SQ4_Pos) /*!< 0x000F8000 */\r
-#define ADC_SQR3_SQ4 ADC_SQR3_SQ4_Msk /*!<SQ4[4:0] bits (4th conversion in regular sequence) */\r
-#define ADC_SQR3_SQ4_0 (0x01UL << ADC_SQR3_SQ4_Pos) /*!< 0x00008000 */\r
-#define ADC_SQR3_SQ4_1 (0x02UL << ADC_SQR3_SQ4_Pos) /*!< 0x00010000 */\r
-#define ADC_SQR3_SQ4_2 (0x04UL << ADC_SQR3_SQ4_Pos) /*!< 0x00020000 */\r
-#define ADC_SQR3_SQ4_3 (0x08UL << ADC_SQR3_SQ4_Pos) /*!< 0x00040000 */\r
-#define ADC_SQR3_SQ4_4 (0x10UL << ADC_SQR3_SQ4_Pos) /*!< 0x00080000 */\r
-#define ADC_SQR3_SQ5_Pos (20U) \r
-#define ADC_SQR3_SQ5_Msk (0x1FUL << ADC_SQR3_SQ5_Pos) /*!< 0x01F00000 */\r
-#define ADC_SQR3_SQ5 ADC_SQR3_SQ5_Msk /*!<SQ5[4:0] bits (5th conversion in regular sequence) */\r
-#define ADC_SQR3_SQ5_0 (0x01UL << ADC_SQR3_SQ5_Pos) /*!< 0x00100000 */\r
-#define ADC_SQR3_SQ5_1 (0x02UL << ADC_SQR3_SQ5_Pos) /*!< 0x00200000 */\r
-#define ADC_SQR3_SQ5_2 (0x04UL << ADC_SQR3_SQ5_Pos) /*!< 0x00400000 */\r
-#define ADC_SQR3_SQ5_3 (0x08UL << ADC_SQR3_SQ5_Pos) /*!< 0x00800000 */\r
-#define ADC_SQR3_SQ5_4 (0x10UL << ADC_SQR3_SQ5_Pos) /*!< 0x01000000 */\r
-#define ADC_SQR3_SQ6_Pos (25U) \r
-#define ADC_SQR3_SQ6_Msk (0x1FUL << ADC_SQR3_SQ6_Pos) /*!< 0x3E000000 */\r
-#define ADC_SQR3_SQ6 ADC_SQR3_SQ6_Msk /*!<SQ6[4:0] bits (6th conversion in regular sequence) */\r
-#define ADC_SQR3_SQ6_0 (0x01UL << ADC_SQR3_SQ6_Pos) /*!< 0x02000000 */\r
-#define ADC_SQR3_SQ6_1 (0x02UL << ADC_SQR3_SQ6_Pos) /*!< 0x04000000 */\r
-#define ADC_SQR3_SQ6_2 (0x04UL << ADC_SQR3_SQ6_Pos) /*!< 0x08000000 */\r
-#define ADC_SQR3_SQ6_3 (0x08UL << ADC_SQR3_SQ6_Pos) /*!< 0x10000000 */\r
-#define ADC_SQR3_SQ6_4 (0x10UL << ADC_SQR3_SQ6_Pos) /*!< 0x20000000 */\r
-\r
-/******************* Bit definition for ADC_JSQR register *******************/\r
-#define ADC_JSQR_JSQ1_Pos (0U) \r
-#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x0000001F */\r
-#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!<JSQ1[4:0] bits (1st conversion in injected sequence) */\r
-#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000001 */\r
-#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000002 */\r
-#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000004 */\r
-#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000008 */\r
-#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000010 */\r
-#define ADC_JSQR_JSQ2_Pos (5U) \r
-#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x000003E0 */\r
-#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!<JSQ2[4:0] bits (2nd conversion in injected sequence) */\r
-#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000020 */\r
-#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000040 */\r
-#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000080 */\r
-#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000100 */\r
-#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000200 */\r
-#define ADC_JSQR_JSQ3_Pos (10U) \r
-#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x00007C00 */\r
-#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!<JSQ3[4:0] bits (3rd conversion in injected sequence) */\r
-#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00000400 */\r
-#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00000800 */\r
-#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00001000 */\r
-#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00002000 */\r
-#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00004000 */\r
-#define ADC_JSQR_JSQ4_Pos (15U) \r
-#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0x000F8000 */\r
-#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!<JSQ4[4:0] bits (4th conversion in injected sequence) */\r
-#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00008000 */\r
-#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00010000 */\r
-#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00020000 */\r
-#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00040000 */\r
-#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00080000 */\r
-#define ADC_JSQR_JL_Pos (20U) \r
-#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00300000 */\r
-#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!<JL[1:0] bits (Injected Sequence length) */\r
-#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00100000 */\r
-#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00200000 */\r
-\r
-/******************* Bit definition for ADC_JDR1 register *******************/\r
-#define ADC_JDR1_JDATA ((uint16_t)0xFFFFU) /*!<Injected data */\r
-\r
-/******************* Bit definition for ADC_JDR2 register *******************/\r
-#define ADC_JDR2_JDATA ((uint16_t)0xFFFFU) /*!<Injected data */\r
-\r
-/******************* Bit definition for ADC_JDR3 register *******************/\r
-#define ADC_JDR3_JDATA ((uint16_t)0xFFFFU) /*!<Injected data */\r
-\r
-/******************* Bit definition for ADC_JDR4 register *******************/\r
-#define ADC_JDR4_JDATA ((uint16_t)0xFFFFU) /*!<Injected data */\r
-\r
-/******************** Bit definition for ADC_DR register ********************/\r
-#define ADC_DR_DATA_Pos (0U) \r
-#define ADC_DR_DATA_Msk (0xFFFFUL << ADC_DR_DATA_Pos) /*!< 0x0000FFFF */\r
-#define ADC_DR_DATA ADC_DR_DATA_Msk /*!<Regular data */\r
-#define ADC_DR_ADC2DATA_Pos (16U) \r
-#define ADC_DR_ADC2DATA_Msk (0xFFFFUL << ADC_DR_ADC2DATA_Pos) /*!< 0xFFFF0000 */\r
-#define ADC_DR_ADC2DATA ADC_DR_ADC2DATA_Msk /*!<ADC2 data */\r
-\r
-/******************* Bit definition for ADC_CSR register ********************/\r
-#define ADC_CSR_AWD1_Pos (0U) \r
-#define ADC_CSR_AWD1_Msk (0x1UL << ADC_CSR_AWD1_Pos) /*!< 0x00000001 */\r
-#define ADC_CSR_AWD1 ADC_CSR_AWD1_Msk /*!<ADC1 Analog watchdog flag */\r
-#define ADC_CSR_EOC1_Pos (1U) \r
-#define ADC_CSR_EOC1_Msk (0x1UL << ADC_CSR_EOC1_Pos) /*!< 0x00000002 */\r
-#define ADC_CSR_EOC1 ADC_CSR_EOC1_Msk /*!<ADC1 End of conversion */\r
-#define ADC_CSR_JEOC1_Pos (2U) \r
-#define ADC_CSR_JEOC1_Msk (0x1UL << ADC_CSR_JEOC1_Pos) /*!< 0x00000004 */\r
-#define ADC_CSR_JEOC1 ADC_CSR_JEOC1_Msk /*!<ADC1 Injected channel end of conversion */\r
-#define ADC_CSR_JSTRT1_Pos (3U) \r
-#define ADC_CSR_JSTRT1_Msk (0x1UL << ADC_CSR_JSTRT1_Pos) /*!< 0x00000008 */\r
-#define ADC_CSR_JSTRT1 ADC_CSR_JSTRT1_Msk /*!<ADC1 Injected channel Start flag */\r
-#define ADC_CSR_STRT1_Pos (4U) \r
-#define ADC_CSR_STRT1_Msk (0x1UL << ADC_CSR_STRT1_Pos) /*!< 0x00000010 */\r
-#define ADC_CSR_STRT1 ADC_CSR_STRT1_Msk /*!<ADC1 Regular channel Start flag */\r
-#define ADC_CSR_OVR1_Pos (5U) \r
-#define ADC_CSR_OVR1_Msk (0x1UL << ADC_CSR_OVR1_Pos) /*!< 0x00000020 */\r
-#define ADC_CSR_OVR1 ADC_CSR_OVR1_Msk /*!<ADC1 Overrun flag */\r
-#define ADC_CSR_AWD2_Pos (8U) \r
-#define ADC_CSR_AWD2_Msk (0x1UL << ADC_CSR_AWD2_Pos) /*!< 0x00000100 */\r
-#define ADC_CSR_AWD2 ADC_CSR_AWD2_Msk /*!<ADC2 Analog watchdog flag */\r
-#define ADC_CSR_EOC2_Pos (9U) \r
-#define ADC_CSR_EOC2_Msk (0x1UL << ADC_CSR_EOC2_Pos) /*!< 0x00000200 */\r
-#define ADC_CSR_EOC2 ADC_CSR_EOC2_Msk /*!<ADC2 End of conversion */\r
-#define ADC_CSR_JEOC2_Pos (10U) \r
-#define ADC_CSR_JEOC2_Msk (0x1UL << ADC_CSR_JEOC2_Pos) /*!< 0x00000400 */\r
-#define ADC_CSR_JEOC2 ADC_CSR_JEOC2_Msk /*!<ADC2 Injected channel end of conversion */\r
-#define ADC_CSR_JSTRT2_Pos (11U) \r
-#define ADC_CSR_JSTRT2_Msk (0x1UL << ADC_CSR_JSTRT2_Pos) /*!< 0x00000800 */\r
-#define ADC_CSR_JSTRT2 ADC_CSR_JSTRT2_Msk /*!<ADC2 Injected channel Start flag */\r
-#define ADC_CSR_STRT2_Pos (12U) \r
-#define ADC_CSR_STRT2_Msk (0x1UL << ADC_CSR_STRT2_Pos) /*!< 0x00001000 */\r
-#define ADC_CSR_STRT2 ADC_CSR_STRT2_Msk /*!<ADC2 Regular channel Start flag */\r
-#define ADC_CSR_OVR2_Pos (13U) \r
-#define ADC_CSR_OVR2_Msk (0x1UL << ADC_CSR_OVR2_Pos) /*!< 0x00002000 */\r
-#define ADC_CSR_OVR2 ADC_CSR_OVR2_Msk /*!<ADC2 Overrun flag */\r
-#define ADC_CSR_AWD3_Pos (16U) \r
-#define ADC_CSR_AWD3_Msk (0x1UL << ADC_CSR_AWD3_Pos) /*!< 0x00010000 */\r
-#define ADC_CSR_AWD3 ADC_CSR_AWD3_Msk /*!<ADC3 Analog watchdog flag */\r
-#define ADC_CSR_EOC3_Pos (17U) \r
-#define ADC_CSR_EOC3_Msk (0x1UL << ADC_CSR_EOC3_Pos) /*!< 0x00020000 */\r
-#define ADC_CSR_EOC3 ADC_CSR_EOC3_Msk /*!<ADC3 End of conversion */\r
-#define ADC_CSR_JEOC3_Pos (18U) \r
-#define ADC_CSR_JEOC3_Msk (0x1UL << ADC_CSR_JEOC3_Pos) /*!< 0x00040000 */\r
-#define ADC_CSR_JEOC3 ADC_CSR_JEOC3_Msk /*!<ADC3 Injected channel end of conversion */\r
-#define ADC_CSR_JSTRT3_Pos (19U) \r
-#define ADC_CSR_JSTRT3_Msk (0x1UL << ADC_CSR_JSTRT3_Pos) /*!< 0x00080000 */\r
-#define ADC_CSR_JSTRT3 ADC_CSR_JSTRT3_Msk /*!<ADC3 Injected channel Start flag */\r
-#define ADC_CSR_STRT3_Pos (20U) \r
-#define ADC_CSR_STRT3_Msk (0x1UL << ADC_CSR_STRT3_Pos) /*!< 0x00100000 */\r
-#define ADC_CSR_STRT3 ADC_CSR_STRT3_Msk /*!<ADC3 Regular channel Start flag */\r
-#define ADC_CSR_OVR3_Pos (21U) \r
-#define ADC_CSR_OVR3_Msk (0x1UL << ADC_CSR_OVR3_Pos) /*!< 0x00200000 */\r
-#define ADC_CSR_OVR3 ADC_CSR_OVR3_Msk /*!<ADC3 Overrun flag */\r
-\r
-/* Legacy defines */\r
-#define ADC_CSR_DOVR1 ADC_CSR_OVR1\r
-#define ADC_CSR_DOVR2 ADC_CSR_OVR2\r
-#define ADC_CSR_DOVR3 ADC_CSR_OVR3\r
-\r
-\r
-/******************* Bit definition for ADC_CCR register ********************/\r
-#define ADC_CCR_MULTI_Pos (0U) \r
-#define ADC_CCR_MULTI_Msk (0x1FUL << ADC_CCR_MULTI_Pos) /*!< 0x0000001F */\r
-#define ADC_CCR_MULTI ADC_CCR_MULTI_Msk /*!<MULTI[4:0] bits (Multi-ADC mode selection) */\r
-#define ADC_CCR_MULTI_0 (0x01UL << ADC_CCR_MULTI_Pos) /*!< 0x00000001 */\r
-#define ADC_CCR_MULTI_1 (0x02UL << ADC_CCR_MULTI_Pos) /*!< 0x00000002 */\r
-#define ADC_CCR_MULTI_2 (0x04UL << ADC_CCR_MULTI_Pos) /*!< 0x00000004 */\r
-#define ADC_CCR_MULTI_3 (0x08UL << ADC_CCR_MULTI_Pos) /*!< 0x00000008 */\r
-#define ADC_CCR_MULTI_4 (0x10UL << ADC_CCR_MULTI_Pos) /*!< 0x00000010 */\r
-#define ADC_CCR_DELAY_Pos (8U) \r
-#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */\r
-#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!<DELAY[3:0] bits (Delay between 2 sampling phases) */\r
-#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */\r
-#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */\r
-#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */\r
-#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */\r
-#define ADC_CCR_DDS_Pos (13U) \r
-#define ADC_CCR_DDS_Msk (0x1UL << ADC_CCR_DDS_Pos) /*!< 0x00002000 */\r
-#define ADC_CCR_DDS ADC_CCR_DDS_Msk /*!<DMA disable selection (Multi-ADC mode) */\r
-#define ADC_CCR_DMA_Pos (14U) \r
-#define ADC_CCR_DMA_Msk (0x3UL << ADC_CCR_DMA_Pos) /*!< 0x0000C000 */\r
-#define ADC_CCR_DMA ADC_CCR_DMA_Msk /*!<DMA[1:0] bits (Direct Memory Access mode for multimode) */\r
-#define ADC_CCR_DMA_0 (0x1UL << ADC_CCR_DMA_Pos) /*!< 0x00004000 */\r
-#define ADC_CCR_DMA_1 (0x2UL << ADC_CCR_DMA_Pos) /*!< 0x00008000 */\r
-#define ADC_CCR_ADCPRE_Pos (16U) \r
-#define ADC_CCR_ADCPRE_Msk (0x3UL << ADC_CCR_ADCPRE_Pos) /*!< 0x00030000 */\r
-#define ADC_CCR_ADCPRE ADC_CCR_ADCPRE_Msk /*!<ADCPRE[1:0] bits (ADC prescaler) */\r
-#define ADC_CCR_ADCPRE_0 (0x1UL << ADC_CCR_ADCPRE_Pos) /*!< 0x00010000 */\r
-#define ADC_CCR_ADCPRE_1 (0x2UL << ADC_CCR_ADCPRE_Pos) /*!< 0x00020000 */\r
-#define ADC_CCR_VBATE_Pos (22U) \r
-#define ADC_CCR_VBATE_Msk (0x1UL << ADC_CCR_VBATE_Pos) /*!< 0x00400000 */\r
-#define ADC_CCR_VBATE ADC_CCR_VBATE_Msk /*!<VBAT Enable */\r
-#define ADC_CCR_TSVREFE_Pos (23U) \r
-#define ADC_CCR_TSVREFE_Msk (0x1UL << ADC_CCR_TSVREFE_Pos) /*!< 0x00800000 */\r
-#define ADC_CCR_TSVREFE ADC_CCR_TSVREFE_Msk /*!<Temperature Sensor and VREFINT Enable */\r
-\r
-/******************* Bit definition for ADC_CDR register ********************/\r
-#define ADC_CDR_DATA1_Pos (0U) \r
-#define ADC_CDR_DATA1_Msk (0xFFFFUL << ADC_CDR_DATA1_Pos) /*!< 0x0000FFFF */\r
-#define ADC_CDR_DATA1 ADC_CDR_DATA1_Msk /*!<1st data of a pair of regular conversions */\r
-#define ADC_CDR_DATA2_Pos (16U) \r
-#define ADC_CDR_DATA2_Msk (0xFFFFUL << ADC_CDR_DATA2_Pos) /*!< 0xFFFF0000 */\r
-#define ADC_CDR_DATA2 ADC_CDR_DATA2_Msk /*!<2nd data of a pair of regular conversions */\r
-\r
-/* Legacy defines */\r
-#define ADC_CDR_RDATA_MST ADC_CDR_DATA1\r
-#define ADC_CDR_RDATA_SLV ADC_CDR_DATA2\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Controller Area Network */\r
-/* */\r
-/******************************************************************************/\r
-/*!<CAN control and status registers */\r
-/******************* Bit definition for CAN_MCR register ********************/\r
-#define CAN_MCR_INRQ_Pos (0U) \r
-#define CAN_MCR_INRQ_Msk (0x1UL << CAN_MCR_INRQ_Pos) /*!< 0x00000001 */\r
-#define CAN_MCR_INRQ CAN_MCR_INRQ_Msk /*!<Initialization Request */\r
-#define CAN_MCR_SLEEP_Pos (1U) \r
-#define CAN_MCR_SLEEP_Msk (0x1UL << CAN_MCR_SLEEP_Pos) /*!< 0x00000002 */\r
-#define CAN_MCR_SLEEP CAN_MCR_SLEEP_Msk /*!<Sleep Mode Request */\r
-#define CAN_MCR_TXFP_Pos (2U) \r
-#define CAN_MCR_TXFP_Msk (0x1UL << CAN_MCR_TXFP_Pos) /*!< 0x00000004 */\r
-#define CAN_MCR_TXFP CAN_MCR_TXFP_Msk /*!<Transmit FIFO Priority */\r
-#define CAN_MCR_RFLM_Pos (3U) \r
-#define CAN_MCR_RFLM_Msk (0x1UL << CAN_MCR_RFLM_Pos) /*!< 0x00000008 */\r
-#define CAN_MCR_RFLM CAN_MCR_RFLM_Msk /*!<Receive FIFO Locked Mode */\r
-#define CAN_MCR_NART_Pos (4U) \r
-#define CAN_MCR_NART_Msk (0x1UL << CAN_MCR_NART_Pos) /*!< 0x00000010 */\r
-#define CAN_MCR_NART CAN_MCR_NART_Msk /*!<No Automatic Retransmission */\r
-#define CAN_MCR_AWUM_Pos (5U) \r
-#define CAN_MCR_AWUM_Msk (0x1UL << CAN_MCR_AWUM_Pos) /*!< 0x00000020 */\r
-#define CAN_MCR_AWUM CAN_MCR_AWUM_Msk /*!<Automatic Wakeup Mode */\r
-#define CAN_MCR_ABOM_Pos (6U) \r
-#define CAN_MCR_ABOM_Msk (0x1UL << CAN_MCR_ABOM_Pos) /*!< 0x00000040 */\r
-#define CAN_MCR_ABOM CAN_MCR_ABOM_Msk /*!<Automatic Bus-Off Management */\r
-#define CAN_MCR_TTCM_Pos (7U) \r
-#define CAN_MCR_TTCM_Msk (0x1UL << CAN_MCR_TTCM_Pos) /*!< 0x00000080 */\r
-#define CAN_MCR_TTCM CAN_MCR_TTCM_Msk /*!<Time Triggered Communication Mode */\r
-#define CAN_MCR_RESET_Pos (15U) \r
-#define CAN_MCR_RESET_Msk (0x1UL << CAN_MCR_RESET_Pos) /*!< 0x00008000 */\r
-#define CAN_MCR_RESET CAN_MCR_RESET_Msk /*!<bxCAN software master reset */\r
-\r
-/******************* Bit definition for CAN_MSR register ********************/\r
-#define CAN_MSR_INAK_Pos (0U) \r
-#define CAN_MSR_INAK_Msk (0x1UL << CAN_MSR_INAK_Pos) /*!< 0x00000001 */\r
-#define CAN_MSR_INAK CAN_MSR_INAK_Msk /*!<Initialization Acknowledge */\r
-#define CAN_MSR_SLAK_Pos (1U) \r
-#define CAN_MSR_SLAK_Msk (0x1UL << CAN_MSR_SLAK_Pos) /*!< 0x00000002 */\r
-#define CAN_MSR_SLAK CAN_MSR_SLAK_Msk /*!<Sleep Acknowledge */\r
-#define CAN_MSR_ERRI_Pos (2U) \r
-#define CAN_MSR_ERRI_Msk (0x1UL << CAN_MSR_ERRI_Pos) /*!< 0x00000004 */\r
-#define CAN_MSR_ERRI CAN_MSR_ERRI_Msk /*!<Error Interrupt */\r
-#define CAN_MSR_WKUI_Pos (3U) \r
-#define CAN_MSR_WKUI_Msk (0x1UL << CAN_MSR_WKUI_Pos) /*!< 0x00000008 */\r
-#define CAN_MSR_WKUI CAN_MSR_WKUI_Msk /*!<Wakeup Interrupt */\r
-#define CAN_MSR_SLAKI_Pos (4U) \r
-#define CAN_MSR_SLAKI_Msk (0x1UL << CAN_MSR_SLAKI_Pos) /*!< 0x00000010 */\r
-#define CAN_MSR_SLAKI CAN_MSR_SLAKI_Msk /*!<Sleep Acknowledge Interrupt */\r
-#define CAN_MSR_TXM_Pos (8U) \r
-#define CAN_MSR_TXM_Msk (0x1UL << CAN_MSR_TXM_Pos) /*!< 0x00000100 */\r
-#define CAN_MSR_TXM CAN_MSR_TXM_Msk /*!<Transmit Mode */\r
-#define CAN_MSR_RXM_Pos (9U) \r
-#define CAN_MSR_RXM_Msk (0x1UL << CAN_MSR_RXM_Pos) /*!< 0x00000200 */\r
-#define CAN_MSR_RXM CAN_MSR_RXM_Msk /*!<Receive Mode */\r
-#define CAN_MSR_SAMP_Pos (10U) \r
-#define CAN_MSR_SAMP_Msk (0x1UL << CAN_MSR_SAMP_Pos) /*!< 0x00000400 */\r
-#define CAN_MSR_SAMP CAN_MSR_SAMP_Msk /*!<Last Sample Point */\r
-#define CAN_MSR_RX_Pos (11U) \r
-#define CAN_MSR_RX_Msk (0x1UL << CAN_MSR_RX_Pos) /*!< 0x00000800 */\r
-#define CAN_MSR_RX CAN_MSR_RX_Msk /*!<CAN Rx Signal */\r
-\r
-/******************* Bit definition for CAN_TSR register ********************/\r
-#define CAN_TSR_RQCP0_Pos (0U) \r
-#define CAN_TSR_RQCP0_Msk (0x1UL << CAN_TSR_RQCP0_Pos) /*!< 0x00000001 */\r
-#define CAN_TSR_RQCP0 CAN_TSR_RQCP0_Msk /*!<Request Completed Mailbox0 */\r
-#define CAN_TSR_TXOK0_Pos (1U) \r
-#define CAN_TSR_TXOK0_Msk (0x1UL << CAN_TSR_TXOK0_Pos) /*!< 0x00000002 */\r
-#define CAN_TSR_TXOK0 CAN_TSR_TXOK0_Msk /*!<Transmission OK of Mailbox0 */\r
-#define CAN_TSR_ALST0_Pos (2U) \r
-#define CAN_TSR_ALST0_Msk (0x1UL << CAN_TSR_ALST0_Pos) /*!< 0x00000004 */\r
-#define CAN_TSR_ALST0 CAN_TSR_ALST0_Msk /*!<Arbitration Lost for Mailbox0 */\r
-#define CAN_TSR_TERR0_Pos (3U) \r
-#define CAN_TSR_TERR0_Msk (0x1UL << CAN_TSR_TERR0_Pos) /*!< 0x00000008 */\r
-#define CAN_TSR_TERR0 CAN_TSR_TERR0_Msk /*!<Transmission Error of Mailbox0 */\r
-#define CAN_TSR_ABRQ0_Pos (7U) \r
-#define CAN_TSR_ABRQ0_Msk (0x1UL << CAN_TSR_ABRQ0_Pos) /*!< 0x00000080 */\r
-#define CAN_TSR_ABRQ0 CAN_TSR_ABRQ0_Msk /*!<Abort Request for Mailbox0 */\r
-#define CAN_TSR_RQCP1_Pos (8U) \r
-#define CAN_TSR_RQCP1_Msk (0x1UL << CAN_TSR_RQCP1_Pos) /*!< 0x00000100 */\r
-#define CAN_TSR_RQCP1 CAN_TSR_RQCP1_Msk /*!<Request Completed Mailbox1 */\r
-#define CAN_TSR_TXOK1_Pos (9U) \r
-#define CAN_TSR_TXOK1_Msk (0x1UL << CAN_TSR_TXOK1_Pos) /*!< 0x00000200 */\r
-#define CAN_TSR_TXOK1 CAN_TSR_TXOK1_Msk /*!<Transmission OK of Mailbox1 */\r
-#define CAN_TSR_ALST1_Pos (10U) \r
-#define CAN_TSR_ALST1_Msk (0x1UL << CAN_TSR_ALST1_Pos) /*!< 0x00000400 */\r
-#define CAN_TSR_ALST1 CAN_TSR_ALST1_Msk /*!<Arbitration Lost for Mailbox1 */\r
-#define CAN_TSR_TERR1_Pos (11U) \r
-#define CAN_TSR_TERR1_Msk (0x1UL << CAN_TSR_TERR1_Pos) /*!< 0x00000800 */\r
-#define CAN_TSR_TERR1 CAN_TSR_TERR1_Msk /*!<Transmission Error of Mailbox1 */\r
-#define CAN_TSR_ABRQ1_Pos (15U) \r
-#define CAN_TSR_ABRQ1_Msk (0x1UL << CAN_TSR_ABRQ1_Pos) /*!< 0x00008000 */\r
-#define CAN_TSR_ABRQ1 CAN_TSR_ABRQ1_Msk /*!<Abort Request for Mailbox 1 */\r
-#define CAN_TSR_RQCP2_Pos (16U) \r
-#define CAN_TSR_RQCP2_Msk (0x1UL << CAN_TSR_RQCP2_Pos) /*!< 0x00010000 */\r
-#define CAN_TSR_RQCP2 CAN_TSR_RQCP2_Msk /*!<Request Completed Mailbox2 */\r
-#define CAN_TSR_TXOK2_Pos (17U) \r
-#define CAN_TSR_TXOK2_Msk (0x1UL << CAN_TSR_TXOK2_Pos) /*!< 0x00020000 */\r
-#define CAN_TSR_TXOK2 CAN_TSR_TXOK2_Msk /*!<Transmission OK of Mailbox 2 */\r
-#define CAN_TSR_ALST2_Pos (18U) \r
-#define CAN_TSR_ALST2_Msk (0x1UL << CAN_TSR_ALST2_Pos) /*!< 0x00040000 */\r
-#define CAN_TSR_ALST2 CAN_TSR_ALST2_Msk /*!<Arbitration Lost for mailbox 2 */\r
-#define CAN_TSR_TERR2_Pos (19U) \r
-#define CAN_TSR_TERR2_Msk (0x1UL << CAN_TSR_TERR2_Pos) /*!< 0x00080000 */\r
-#define CAN_TSR_TERR2 CAN_TSR_TERR2_Msk /*!<Transmission Error of Mailbox 2 */\r
-#define CAN_TSR_ABRQ2_Pos (23U) \r
-#define CAN_TSR_ABRQ2_Msk (0x1UL << CAN_TSR_ABRQ2_Pos) /*!< 0x00800000 */\r
-#define CAN_TSR_ABRQ2 CAN_TSR_ABRQ2_Msk /*!<Abort Request for Mailbox 2 */\r
-#define CAN_TSR_CODE_Pos (24U) \r
-#define CAN_TSR_CODE_Msk (0x3UL << CAN_TSR_CODE_Pos) /*!< 0x03000000 */\r
-#define CAN_TSR_CODE CAN_TSR_CODE_Msk /*!<Mailbox Code */\r
-\r
-#define CAN_TSR_TME_Pos (26U) \r
-#define CAN_TSR_TME_Msk (0x7UL << CAN_TSR_TME_Pos) /*!< 0x1C000000 */\r
-#define CAN_TSR_TME CAN_TSR_TME_Msk /*!<TME[2:0] bits */\r
-#define CAN_TSR_TME0_Pos (26U) \r
-#define CAN_TSR_TME0_Msk (0x1UL << CAN_TSR_TME0_Pos) /*!< 0x04000000 */\r
-#define CAN_TSR_TME0 CAN_TSR_TME0_Msk /*!<Transmit Mailbox 0 Empty */\r
-#define CAN_TSR_TME1_Pos (27U) \r
-#define CAN_TSR_TME1_Msk (0x1UL << CAN_TSR_TME1_Pos) /*!< 0x08000000 */\r
-#define CAN_TSR_TME1 CAN_TSR_TME1_Msk /*!<Transmit Mailbox 1 Empty */\r
-#define CAN_TSR_TME2_Pos (28U) \r
-#define CAN_TSR_TME2_Msk (0x1UL << CAN_TSR_TME2_Pos) /*!< 0x10000000 */\r
-#define CAN_TSR_TME2 CAN_TSR_TME2_Msk /*!<Transmit Mailbox 2 Empty */\r
-\r
-#define CAN_TSR_LOW_Pos (29U) \r
-#define CAN_TSR_LOW_Msk (0x7UL << CAN_TSR_LOW_Pos) /*!< 0xE0000000 */\r
-#define CAN_TSR_LOW CAN_TSR_LOW_Msk /*!<LOW[2:0] bits */\r
-#define CAN_TSR_LOW0_Pos (29U) \r
-#define CAN_TSR_LOW0_Msk (0x1UL << CAN_TSR_LOW0_Pos) /*!< 0x20000000 */\r
-#define CAN_TSR_LOW0 CAN_TSR_LOW0_Msk /*!<Lowest Priority Flag for Mailbox 0 */\r
-#define CAN_TSR_LOW1_Pos (30U) \r
-#define CAN_TSR_LOW1_Msk (0x1UL << CAN_TSR_LOW1_Pos) /*!< 0x40000000 */\r
-#define CAN_TSR_LOW1 CAN_TSR_LOW1_Msk /*!<Lowest Priority Flag for Mailbox 1 */\r
-#define CAN_TSR_LOW2_Pos (31U) \r
-#define CAN_TSR_LOW2_Msk (0x1UL << CAN_TSR_LOW2_Pos) /*!< 0x80000000 */\r
-#define CAN_TSR_LOW2 CAN_TSR_LOW2_Msk /*!<Lowest Priority Flag for Mailbox 2 */\r
-\r
-/******************* Bit definition for CAN_RF0R register *******************/\r
-#define CAN_RF0R_FMP0_Pos (0U) \r
-#define CAN_RF0R_FMP0_Msk (0x3UL << CAN_RF0R_FMP0_Pos) /*!< 0x00000003 */\r
-#define CAN_RF0R_FMP0 CAN_RF0R_FMP0_Msk /*!<FIFO 0 Message Pending */\r
-#define CAN_RF0R_FULL0_Pos (3U) \r
-#define CAN_RF0R_FULL0_Msk (0x1UL << CAN_RF0R_FULL0_Pos) /*!< 0x00000008 */\r
-#define CAN_RF0R_FULL0 CAN_RF0R_FULL0_Msk /*!<FIFO 0 Full */\r
-#define CAN_RF0R_FOVR0_Pos (4U) \r
-#define CAN_RF0R_FOVR0_Msk (0x1UL << CAN_RF0R_FOVR0_Pos) /*!< 0x00000010 */\r
-#define CAN_RF0R_FOVR0 CAN_RF0R_FOVR0_Msk /*!<FIFO 0 Overrun */\r
-#define CAN_RF0R_RFOM0_Pos (5U) \r
-#define CAN_RF0R_RFOM0_Msk (0x1UL << CAN_RF0R_RFOM0_Pos) /*!< 0x00000020 */\r
-#define CAN_RF0R_RFOM0 CAN_RF0R_RFOM0_Msk /*!<Release FIFO 0 Output Mailbox */\r
-\r
-/******************* Bit definition for CAN_RF1R register *******************/\r
-#define CAN_RF1R_FMP1_Pos (0U) \r
-#define CAN_RF1R_FMP1_Msk (0x3UL << CAN_RF1R_FMP1_Pos) /*!< 0x00000003 */\r
-#define CAN_RF1R_FMP1 CAN_RF1R_FMP1_Msk /*!<FIFO 1 Message Pending */\r
-#define CAN_RF1R_FULL1_Pos (3U) \r
-#define CAN_RF1R_FULL1_Msk (0x1UL << CAN_RF1R_FULL1_Pos) /*!< 0x00000008 */\r
-#define CAN_RF1R_FULL1 CAN_RF1R_FULL1_Msk /*!<FIFO 1 Full */\r
-#define CAN_RF1R_FOVR1_Pos (4U) \r
-#define CAN_RF1R_FOVR1_Msk (0x1UL << CAN_RF1R_FOVR1_Pos) /*!< 0x00000010 */\r
-#define CAN_RF1R_FOVR1 CAN_RF1R_FOVR1_Msk /*!<FIFO 1 Overrun */\r
-#define CAN_RF1R_RFOM1_Pos (5U) \r
-#define CAN_RF1R_RFOM1_Msk (0x1UL << CAN_RF1R_RFOM1_Pos) /*!< 0x00000020 */\r
-#define CAN_RF1R_RFOM1 CAN_RF1R_RFOM1_Msk /*!<Release FIFO 1 Output Mailbox */\r
-\r
-/******************** Bit definition for CAN_IER register *******************/\r
-#define CAN_IER_TMEIE_Pos (0U) \r
-#define CAN_IER_TMEIE_Msk (0x1UL << CAN_IER_TMEIE_Pos) /*!< 0x00000001 */\r
-#define CAN_IER_TMEIE CAN_IER_TMEIE_Msk /*!<Transmit Mailbox Empty Interrupt Enable */\r
-#define CAN_IER_FMPIE0_Pos (1U) \r
-#define CAN_IER_FMPIE0_Msk (0x1UL << CAN_IER_FMPIE0_Pos) /*!< 0x00000002 */\r
-#define CAN_IER_FMPIE0 CAN_IER_FMPIE0_Msk /*!<FIFO Message Pending Interrupt Enable */\r
-#define CAN_IER_FFIE0_Pos (2U) \r
-#define CAN_IER_FFIE0_Msk (0x1UL << CAN_IER_FFIE0_Pos) /*!< 0x00000004 */\r
-#define CAN_IER_FFIE0 CAN_IER_FFIE0_Msk /*!<FIFO Full Interrupt Enable */\r
-#define CAN_IER_FOVIE0_Pos (3U) \r
-#define CAN_IER_FOVIE0_Msk (0x1UL << CAN_IER_FOVIE0_Pos) /*!< 0x00000008 */\r
-#define CAN_IER_FOVIE0 CAN_IER_FOVIE0_Msk /*!<FIFO Overrun Interrupt Enable */\r
-#define CAN_IER_FMPIE1_Pos (4U) \r
-#define CAN_IER_FMPIE1_Msk (0x1UL << CAN_IER_FMPIE1_Pos) /*!< 0x00000010 */\r
-#define CAN_IER_FMPIE1 CAN_IER_FMPIE1_Msk /*!<FIFO Message Pending Interrupt Enable */\r
-#define CAN_IER_FFIE1_Pos (5U) \r
-#define CAN_IER_FFIE1_Msk (0x1UL << CAN_IER_FFIE1_Pos) /*!< 0x00000020 */\r
-#define CAN_IER_FFIE1 CAN_IER_FFIE1_Msk /*!<FIFO Full Interrupt Enable */\r
-#define CAN_IER_FOVIE1_Pos (6U) \r
-#define CAN_IER_FOVIE1_Msk (0x1UL << CAN_IER_FOVIE1_Pos) /*!< 0x00000040 */\r
-#define CAN_IER_FOVIE1 CAN_IER_FOVIE1_Msk /*!<FIFO Overrun Interrupt Enable */\r
-#define CAN_IER_EWGIE_Pos (8U) \r
-#define CAN_IER_EWGIE_Msk (0x1UL << CAN_IER_EWGIE_Pos) /*!< 0x00000100 */\r
-#define CAN_IER_EWGIE CAN_IER_EWGIE_Msk /*!<Error Warning Interrupt Enable */\r
-#define CAN_IER_EPVIE_Pos (9U) \r
-#define CAN_IER_EPVIE_Msk (0x1UL << CAN_IER_EPVIE_Pos) /*!< 0x00000200 */\r
-#define CAN_IER_EPVIE CAN_IER_EPVIE_Msk /*!<Error Passive Interrupt Enable */\r
-#define CAN_IER_BOFIE_Pos (10U) \r
-#define CAN_IER_BOFIE_Msk (0x1UL << CAN_IER_BOFIE_Pos) /*!< 0x00000400 */\r
-#define CAN_IER_BOFIE CAN_IER_BOFIE_Msk /*!<Bus-Off Interrupt Enable */\r
-#define CAN_IER_LECIE_Pos (11U) \r
-#define CAN_IER_LECIE_Msk (0x1UL << CAN_IER_LECIE_Pos) /*!< 0x00000800 */\r
-#define CAN_IER_LECIE CAN_IER_LECIE_Msk /*!<Last Error Code Interrupt Enable */\r
-#define CAN_IER_ERRIE_Pos (15U) \r
-#define CAN_IER_ERRIE_Msk (0x1UL << CAN_IER_ERRIE_Pos) /*!< 0x00008000 */\r
-#define CAN_IER_ERRIE CAN_IER_ERRIE_Msk /*!<Error Interrupt Enable */\r
-#define CAN_IER_WKUIE_Pos (16U) \r
-#define CAN_IER_WKUIE_Msk (0x1UL << CAN_IER_WKUIE_Pos) /*!< 0x00010000 */\r
-#define CAN_IER_WKUIE CAN_IER_WKUIE_Msk /*!<Wakeup Interrupt Enable */\r
-#define CAN_IER_SLKIE_Pos (17U) \r
-#define CAN_IER_SLKIE_Msk (0x1UL << CAN_IER_SLKIE_Pos) /*!< 0x00020000 */\r
-#define CAN_IER_SLKIE CAN_IER_SLKIE_Msk /*!<Sleep Interrupt Enable */\r
-\r
-/******************** Bit definition for CAN_ESR register *******************/\r
-#define CAN_ESR_EWGF_Pos (0U) \r
-#define CAN_ESR_EWGF_Msk (0x1UL << CAN_ESR_EWGF_Pos) /*!< 0x00000001 */\r
-#define CAN_ESR_EWGF CAN_ESR_EWGF_Msk /*!<Error Warning Flag */\r
-#define CAN_ESR_EPVF_Pos (1U) \r
-#define CAN_ESR_EPVF_Msk (0x1UL << CAN_ESR_EPVF_Pos) /*!< 0x00000002 */\r
-#define CAN_ESR_EPVF CAN_ESR_EPVF_Msk /*!<Error Passive Flag */\r
-#define CAN_ESR_BOFF_Pos (2U) \r
-#define CAN_ESR_BOFF_Msk (0x1UL << CAN_ESR_BOFF_Pos) /*!< 0x00000004 */\r
-#define CAN_ESR_BOFF CAN_ESR_BOFF_Msk /*!<Bus-Off Flag */\r
-\r
-#define CAN_ESR_LEC_Pos (4U) \r
-#define CAN_ESR_LEC_Msk (0x7UL << CAN_ESR_LEC_Pos) /*!< 0x00000070 */\r
-#define CAN_ESR_LEC CAN_ESR_LEC_Msk /*!<LEC[2:0] bits (Last Error Code) */\r
-#define CAN_ESR_LEC_0 (0x1UL << CAN_ESR_LEC_Pos) /*!< 0x00000010 */\r
-#define CAN_ESR_LEC_1 (0x2UL << CAN_ESR_LEC_Pos) /*!< 0x00000020 */\r
-#define CAN_ESR_LEC_2 (0x4UL << CAN_ESR_LEC_Pos) /*!< 0x00000040 */\r
-\r
-#define CAN_ESR_TEC_Pos (16U) \r
-#define CAN_ESR_TEC_Msk (0xFFUL << CAN_ESR_TEC_Pos) /*!< 0x00FF0000 */\r
-#define CAN_ESR_TEC CAN_ESR_TEC_Msk /*!<Least significant byte of the 9-bit Transmit Error Counter */\r
-#define CAN_ESR_REC_Pos (24U) \r
-#define CAN_ESR_REC_Msk (0xFFUL << CAN_ESR_REC_Pos) /*!< 0xFF000000 */\r
-#define CAN_ESR_REC CAN_ESR_REC_Msk /*!<Receive Error Counter */\r
-\r
-/******************* Bit definition for CAN_BTR register ********************/\r
-#define CAN_BTR_BRP_Pos (0U) \r
-#define CAN_BTR_BRP_Msk (0x3FFUL << CAN_BTR_BRP_Pos) /*!< 0x000003FF */\r
-#define CAN_BTR_BRP CAN_BTR_BRP_Msk /*!<Baud Rate Prescaler */\r
-#define CAN_BTR_TS1_Pos (16U) \r
-#define CAN_BTR_TS1_Msk (0xFUL << CAN_BTR_TS1_Pos) /*!< 0x000F0000 */\r
-#define CAN_BTR_TS1 CAN_BTR_TS1_Msk /*!<Time Segment 1 */\r
-#define CAN_BTR_TS1_0 (0x1UL << CAN_BTR_TS1_Pos) /*!< 0x00010000 */\r
-#define CAN_BTR_TS1_1 (0x2UL << CAN_BTR_TS1_Pos) /*!< 0x00020000 */\r
-#define CAN_BTR_TS1_2 (0x4UL << CAN_BTR_TS1_Pos) /*!< 0x00040000 */\r
-#define CAN_BTR_TS1_3 (0x8UL << CAN_BTR_TS1_Pos) /*!< 0x00080000 */\r
-#define CAN_BTR_TS2_Pos (20U) \r
-#define CAN_BTR_TS2_Msk (0x7UL << CAN_BTR_TS2_Pos) /*!< 0x00700000 */\r
-#define CAN_BTR_TS2 CAN_BTR_TS2_Msk /*!<Time Segment 2 */\r
-#define CAN_BTR_TS2_0 (0x1UL << CAN_BTR_TS2_Pos) /*!< 0x00100000 */\r
-#define CAN_BTR_TS2_1 (0x2UL << CAN_BTR_TS2_Pos) /*!< 0x00200000 */\r
-#define CAN_BTR_TS2_2 (0x4UL << CAN_BTR_TS2_Pos) /*!< 0x00400000 */\r
-#define CAN_BTR_SJW_Pos (24U) \r
-#define CAN_BTR_SJW_Msk (0x3UL << CAN_BTR_SJW_Pos) /*!< 0x03000000 */\r
-#define CAN_BTR_SJW CAN_BTR_SJW_Msk /*!<Resynchronization Jump Width */\r
-#define CAN_BTR_SJW_0 (0x1UL << CAN_BTR_SJW_Pos) /*!< 0x01000000 */\r
-#define CAN_BTR_SJW_1 (0x2UL << CAN_BTR_SJW_Pos) /*!< 0x02000000 */\r
-#define CAN_BTR_LBKM_Pos (30U) \r
-#define CAN_BTR_LBKM_Msk (0x1UL << CAN_BTR_LBKM_Pos) /*!< 0x40000000 */\r
-#define CAN_BTR_LBKM CAN_BTR_LBKM_Msk /*!<Loop Back Mode (Debug) */\r
-#define CAN_BTR_SILM_Pos (31U) \r
-#define CAN_BTR_SILM_Msk (0x1UL << CAN_BTR_SILM_Pos) /*!< 0x80000000 */\r
-#define CAN_BTR_SILM CAN_BTR_SILM_Msk /*!<Silent Mode */\r
-\r
-/*!<Mailbox registers */\r
-/****************** Bit definition for CAN_TI0R register ********************/\r
-#define CAN_TI0R_TXRQ_Pos (0U) \r
-#define CAN_TI0R_TXRQ_Msk (0x1UL << CAN_TI0R_TXRQ_Pos) /*!< 0x00000001 */\r
-#define CAN_TI0R_TXRQ CAN_TI0R_TXRQ_Msk /*!<Transmit Mailbox Request */\r
-#define CAN_TI0R_RTR_Pos (1U) \r
-#define CAN_TI0R_RTR_Msk (0x1UL << CAN_TI0R_RTR_Pos) /*!< 0x00000002 */\r
-#define CAN_TI0R_RTR CAN_TI0R_RTR_Msk /*!<Remote Transmission Request */\r
-#define CAN_TI0R_IDE_Pos (2U) \r
-#define CAN_TI0R_IDE_Msk (0x1UL << CAN_TI0R_IDE_Pos) /*!< 0x00000004 */\r
-#define CAN_TI0R_IDE CAN_TI0R_IDE_Msk /*!<Identifier Extension */\r
-#define CAN_TI0R_EXID_Pos (3U) \r
-#define CAN_TI0R_EXID_Msk (0x3FFFFUL << CAN_TI0R_EXID_Pos) /*!< 0x001FFFF8 */\r
-#define CAN_TI0R_EXID CAN_TI0R_EXID_Msk /*!<Extended Identifier */\r
-#define CAN_TI0R_STID_Pos (21U) \r
-#define CAN_TI0R_STID_Msk (0x7FFUL << CAN_TI0R_STID_Pos) /*!< 0xFFE00000 */\r
-#define CAN_TI0R_STID CAN_TI0R_STID_Msk /*!<Standard Identifier or Extended Identifier */\r
-\r
-/****************** Bit definition for CAN_TDT0R register *******************/\r
-#define CAN_TDT0R_DLC_Pos (0U) \r
-#define CAN_TDT0R_DLC_Msk (0xFUL << CAN_TDT0R_DLC_Pos) /*!< 0x0000000F */\r
-#define CAN_TDT0R_DLC CAN_TDT0R_DLC_Msk /*!<Data Length Code */\r
-#define CAN_TDT0R_TGT_Pos (8U) \r
-#define CAN_TDT0R_TGT_Msk (0x1UL << CAN_TDT0R_TGT_Pos) /*!< 0x00000100 */\r
-#define CAN_TDT0R_TGT CAN_TDT0R_TGT_Msk /*!<Transmit Global Time */\r
-#define CAN_TDT0R_TIME_Pos (16U) \r
-#define CAN_TDT0R_TIME_Msk (0xFFFFUL << CAN_TDT0R_TIME_Pos) /*!< 0xFFFF0000 */\r
-#define CAN_TDT0R_TIME CAN_TDT0R_TIME_Msk /*!<Message Time Stamp */\r
-\r
-/****************** Bit definition for CAN_TDL0R register *******************/\r
-#define CAN_TDL0R_DATA0_Pos (0U) \r
-#define CAN_TDL0R_DATA0_Msk (0xFFUL << CAN_TDL0R_DATA0_Pos) /*!< 0x000000FF */\r
-#define CAN_TDL0R_DATA0 CAN_TDL0R_DATA0_Msk /*!<Data byte 0 */\r
-#define CAN_TDL0R_DATA1_Pos (8U) \r
-#define CAN_TDL0R_DATA1_Msk (0xFFUL << CAN_TDL0R_DATA1_Pos) /*!< 0x0000FF00 */\r
-#define CAN_TDL0R_DATA1 CAN_TDL0R_DATA1_Msk /*!<Data byte 1 */\r
-#define CAN_TDL0R_DATA2_Pos (16U) \r
-#define CAN_TDL0R_DATA2_Msk (0xFFUL << CAN_TDL0R_DATA2_Pos) /*!< 0x00FF0000 */\r
-#define CAN_TDL0R_DATA2 CAN_TDL0R_DATA2_Msk /*!<Data byte 2 */\r
-#define CAN_TDL0R_DATA3_Pos (24U) \r
-#define CAN_TDL0R_DATA3_Msk (0xFFUL << CAN_TDL0R_DATA3_Pos) /*!< 0xFF000000 */\r
-#define CAN_TDL0R_DATA3 CAN_TDL0R_DATA3_Msk /*!<Data byte 3 */\r
-\r
-/****************** Bit definition for CAN_TDH0R register *******************/\r
-#define CAN_TDH0R_DATA4_Pos (0U) \r
-#define CAN_TDH0R_DATA4_Msk (0xFFUL << CAN_TDH0R_DATA4_Pos) /*!< 0x000000FF */\r
-#define CAN_TDH0R_DATA4 CAN_TDH0R_DATA4_Msk /*!<Data byte 4 */\r
-#define CAN_TDH0R_DATA5_Pos (8U) \r
-#define CAN_TDH0R_DATA5_Msk (0xFFUL << CAN_TDH0R_DATA5_Pos) /*!< 0x0000FF00 */\r
-#define CAN_TDH0R_DATA5 CAN_TDH0R_DATA5_Msk /*!<Data byte 5 */\r
-#define CAN_TDH0R_DATA6_Pos (16U) \r
-#define CAN_TDH0R_DATA6_Msk (0xFFUL << CAN_TDH0R_DATA6_Pos) /*!< 0x00FF0000 */\r
-#define CAN_TDH0R_DATA6 CAN_TDH0R_DATA6_Msk /*!<Data byte 6 */\r
-#define CAN_TDH0R_DATA7_Pos (24U) \r
-#define CAN_TDH0R_DATA7_Msk (0xFFUL << CAN_TDH0R_DATA7_Pos) /*!< 0xFF000000 */\r
-#define CAN_TDH0R_DATA7 CAN_TDH0R_DATA7_Msk /*!<Data byte 7 */\r
-\r
-/******************* Bit definition for CAN_TI1R register *******************/\r
-#define CAN_TI1R_TXRQ_Pos (0U) \r
-#define CAN_TI1R_TXRQ_Msk (0x1UL << CAN_TI1R_TXRQ_Pos) /*!< 0x00000001 */\r
-#define CAN_TI1R_TXRQ CAN_TI1R_TXRQ_Msk /*!<Transmit Mailbox Request */\r
-#define CAN_TI1R_RTR_Pos (1U) \r
-#define CAN_TI1R_RTR_Msk (0x1UL << CAN_TI1R_RTR_Pos) /*!< 0x00000002 */\r
-#define CAN_TI1R_RTR CAN_TI1R_RTR_Msk /*!<Remote Transmission Request */\r
-#define CAN_TI1R_IDE_Pos (2U) \r
-#define CAN_TI1R_IDE_Msk (0x1UL << CAN_TI1R_IDE_Pos) /*!< 0x00000004 */\r
-#define CAN_TI1R_IDE CAN_TI1R_IDE_Msk /*!<Identifier Extension */\r
-#define CAN_TI1R_EXID_Pos (3U) \r
-#define CAN_TI1R_EXID_Msk (0x3FFFFUL << CAN_TI1R_EXID_Pos) /*!< 0x001FFFF8 */\r
-#define CAN_TI1R_EXID CAN_TI1R_EXID_Msk /*!<Extended Identifier */\r
-#define CAN_TI1R_STID_Pos (21U) \r
-#define CAN_TI1R_STID_Msk (0x7FFUL << CAN_TI1R_STID_Pos) /*!< 0xFFE00000 */\r
-#define CAN_TI1R_STID CAN_TI1R_STID_Msk /*!<Standard Identifier or Extended Identifier */\r
-\r
-/******************* Bit definition for CAN_TDT1R register ******************/\r
-#define CAN_TDT1R_DLC_Pos (0U) \r
-#define CAN_TDT1R_DLC_Msk (0xFUL << CAN_TDT1R_DLC_Pos) /*!< 0x0000000F */\r
-#define CAN_TDT1R_DLC CAN_TDT1R_DLC_Msk /*!<Data Length Code */\r
-#define CAN_TDT1R_TGT_Pos (8U) \r
-#define CAN_TDT1R_TGT_Msk (0x1UL << CAN_TDT1R_TGT_Pos) /*!< 0x00000100 */\r
-#define CAN_TDT1R_TGT CAN_TDT1R_TGT_Msk /*!<Transmit Global Time */\r
-#define CAN_TDT1R_TIME_Pos (16U) \r
-#define CAN_TDT1R_TIME_Msk (0xFFFFUL << CAN_TDT1R_TIME_Pos) /*!< 0xFFFF0000 */\r
-#define CAN_TDT1R_TIME CAN_TDT1R_TIME_Msk /*!<Message Time Stamp */\r
-\r
-/******************* Bit definition for CAN_TDL1R register ******************/\r
-#define CAN_TDL1R_DATA0_Pos (0U) \r
-#define CAN_TDL1R_DATA0_Msk (0xFFUL << CAN_TDL1R_DATA0_Pos) /*!< 0x000000FF */\r
-#define CAN_TDL1R_DATA0 CAN_TDL1R_DATA0_Msk /*!<Data byte 0 */\r
-#define CAN_TDL1R_DATA1_Pos (8U) \r
-#define CAN_TDL1R_DATA1_Msk (0xFFUL << CAN_TDL1R_DATA1_Pos) /*!< 0x0000FF00 */\r
-#define CAN_TDL1R_DATA1 CAN_TDL1R_DATA1_Msk /*!<Data byte 1 */\r
-#define CAN_TDL1R_DATA2_Pos (16U) \r
-#define CAN_TDL1R_DATA2_Msk (0xFFUL << CAN_TDL1R_DATA2_Pos) /*!< 0x00FF0000 */\r
-#define CAN_TDL1R_DATA2 CAN_TDL1R_DATA2_Msk /*!<Data byte 2 */\r
-#define CAN_TDL1R_DATA3_Pos (24U) \r
-#define CAN_TDL1R_DATA3_Msk (0xFFUL << CAN_TDL1R_DATA3_Pos) /*!< 0xFF000000 */\r
-#define CAN_TDL1R_DATA3 CAN_TDL1R_DATA3_Msk /*!<Data byte 3 */\r
-\r
-/******************* Bit definition for CAN_TDH1R register ******************/\r
-#define CAN_TDH1R_DATA4_Pos (0U) \r
-#define CAN_TDH1R_DATA4_Msk (0xFFUL << CAN_TDH1R_DATA4_Pos) /*!< 0x000000FF */\r
-#define CAN_TDH1R_DATA4 CAN_TDH1R_DATA4_Msk /*!<Data byte 4 */\r
-#define CAN_TDH1R_DATA5_Pos (8U) \r
-#define CAN_TDH1R_DATA5_Msk (0xFFUL << CAN_TDH1R_DATA5_Pos) /*!< 0x0000FF00 */\r
-#define CAN_TDH1R_DATA5 CAN_TDH1R_DATA5_Msk /*!<Data byte 5 */\r
-#define CAN_TDH1R_DATA6_Pos (16U) \r
-#define CAN_TDH1R_DATA6_Msk (0xFFUL << CAN_TDH1R_DATA6_Pos) /*!< 0x00FF0000 */\r
-#define CAN_TDH1R_DATA6 CAN_TDH1R_DATA6_Msk /*!<Data byte 6 */\r
-#define CAN_TDH1R_DATA7_Pos (24U) \r
-#define CAN_TDH1R_DATA7_Msk (0xFFUL << CAN_TDH1R_DATA7_Pos) /*!< 0xFF000000 */\r
-#define CAN_TDH1R_DATA7 CAN_TDH1R_DATA7_Msk /*!<Data byte 7 */\r
-\r
-/******************* Bit definition for CAN_TI2R register *******************/\r
-#define CAN_TI2R_TXRQ_Pos (0U) \r
-#define CAN_TI2R_TXRQ_Msk (0x1UL << CAN_TI2R_TXRQ_Pos) /*!< 0x00000001 */\r
-#define CAN_TI2R_TXRQ CAN_TI2R_TXRQ_Msk /*!<Transmit Mailbox Request */\r
-#define CAN_TI2R_RTR_Pos (1U) \r
-#define CAN_TI2R_RTR_Msk (0x1UL << CAN_TI2R_RTR_Pos) /*!< 0x00000002 */\r
-#define CAN_TI2R_RTR CAN_TI2R_RTR_Msk /*!<Remote Transmission Request */\r
-#define CAN_TI2R_IDE_Pos (2U) \r
-#define CAN_TI2R_IDE_Msk (0x1UL << CAN_TI2R_IDE_Pos) /*!< 0x00000004 */\r
-#define CAN_TI2R_IDE CAN_TI2R_IDE_Msk /*!<Identifier Extension */\r
-#define CAN_TI2R_EXID_Pos (3U) \r
-#define CAN_TI2R_EXID_Msk (0x3FFFFUL << CAN_TI2R_EXID_Pos) /*!< 0x001FFFF8 */\r
-#define CAN_TI2R_EXID CAN_TI2R_EXID_Msk /*!<Extended identifier */\r
-#define CAN_TI2R_STID_Pos (21U) \r
-#define CAN_TI2R_STID_Msk (0x7FFUL << CAN_TI2R_STID_Pos) /*!< 0xFFE00000 */\r
-#define CAN_TI2R_STID CAN_TI2R_STID_Msk /*!<Standard Identifier or Extended Identifier */\r
-\r
-/******************* Bit definition for CAN_TDT2R register ******************/\r
-#define CAN_TDT2R_DLC_Pos (0U) \r
-#define CAN_TDT2R_DLC_Msk (0xFUL << CAN_TDT2R_DLC_Pos) /*!< 0x0000000F */\r
-#define CAN_TDT2R_DLC CAN_TDT2R_DLC_Msk /*!<Data Length Code */\r
-#define CAN_TDT2R_TGT_Pos (8U) \r
-#define CAN_TDT2R_TGT_Msk (0x1UL << CAN_TDT2R_TGT_Pos) /*!< 0x00000100 */\r
-#define CAN_TDT2R_TGT CAN_TDT2R_TGT_Msk /*!<Transmit Global Time */\r
-#define CAN_TDT2R_TIME_Pos (16U) \r
-#define CAN_TDT2R_TIME_Msk (0xFFFFUL << CAN_TDT2R_TIME_Pos) /*!< 0xFFFF0000 */\r
-#define CAN_TDT2R_TIME CAN_TDT2R_TIME_Msk /*!<Message Time Stamp */\r
-\r
-/******************* Bit definition for CAN_TDL2R register ******************/\r
-#define CAN_TDL2R_DATA0_Pos (0U) \r
-#define CAN_TDL2R_DATA0_Msk (0xFFUL << CAN_TDL2R_DATA0_Pos) /*!< 0x000000FF */\r
-#define CAN_TDL2R_DATA0 CAN_TDL2R_DATA0_Msk /*!<Data byte 0 */\r
-#define CAN_TDL2R_DATA1_Pos (8U) \r
-#define CAN_TDL2R_DATA1_Msk (0xFFUL << CAN_TDL2R_DATA1_Pos) /*!< 0x0000FF00 */\r
-#define CAN_TDL2R_DATA1 CAN_TDL2R_DATA1_Msk /*!<Data byte 1 */\r
-#define CAN_TDL2R_DATA2_Pos (16U) \r
-#define CAN_TDL2R_DATA2_Msk (0xFFUL << CAN_TDL2R_DATA2_Pos) /*!< 0x00FF0000 */\r
-#define CAN_TDL2R_DATA2 CAN_TDL2R_DATA2_Msk /*!<Data byte 2 */\r
-#define CAN_TDL2R_DATA3_Pos (24U) \r
-#define CAN_TDL2R_DATA3_Msk (0xFFUL << CAN_TDL2R_DATA3_Pos) /*!< 0xFF000000 */\r
-#define CAN_TDL2R_DATA3 CAN_TDL2R_DATA3_Msk /*!<Data byte 3 */\r
-\r
-/******************* Bit definition for CAN_TDH2R register ******************/\r
-#define CAN_TDH2R_DATA4_Pos (0U) \r
-#define CAN_TDH2R_DATA4_Msk (0xFFUL << CAN_TDH2R_DATA4_Pos) /*!< 0x000000FF */\r
-#define CAN_TDH2R_DATA4 CAN_TDH2R_DATA4_Msk /*!<Data byte 4 */\r
-#define CAN_TDH2R_DATA5_Pos (8U) \r
-#define CAN_TDH2R_DATA5_Msk (0xFFUL << CAN_TDH2R_DATA5_Pos) /*!< 0x0000FF00 */\r
-#define CAN_TDH2R_DATA5 CAN_TDH2R_DATA5_Msk /*!<Data byte 5 */\r
-#define CAN_TDH2R_DATA6_Pos (16U) \r
-#define CAN_TDH2R_DATA6_Msk (0xFFUL << CAN_TDH2R_DATA6_Pos) /*!< 0x00FF0000 */\r
-#define CAN_TDH2R_DATA6 CAN_TDH2R_DATA6_Msk /*!<Data byte 6 */\r
-#define CAN_TDH2R_DATA7_Pos (24U) \r
-#define CAN_TDH2R_DATA7_Msk (0xFFUL << CAN_TDH2R_DATA7_Pos) /*!< 0xFF000000 */\r
-#define CAN_TDH2R_DATA7 CAN_TDH2R_DATA7_Msk /*!<Data byte 7 */\r
-\r
-/******************* Bit definition for CAN_RI0R register *******************/\r
-#define CAN_RI0R_RTR_Pos (1U) \r
-#define CAN_RI0R_RTR_Msk (0x1UL << CAN_RI0R_RTR_Pos) /*!< 0x00000002 */\r
-#define CAN_RI0R_RTR CAN_RI0R_RTR_Msk /*!<Remote Transmission Request */\r
-#define CAN_RI0R_IDE_Pos (2U) \r
-#define CAN_RI0R_IDE_Msk (0x1UL << CAN_RI0R_IDE_Pos) /*!< 0x00000004 */\r
-#define CAN_RI0R_IDE CAN_RI0R_IDE_Msk /*!<Identifier Extension */\r
-#define CAN_RI0R_EXID_Pos (3U) \r
-#define CAN_RI0R_EXID_Msk (0x3FFFFUL << CAN_RI0R_EXID_Pos) /*!< 0x001FFFF8 */\r
-#define CAN_RI0R_EXID CAN_RI0R_EXID_Msk /*!<Extended Identifier */\r
-#define CAN_RI0R_STID_Pos (21U) \r
-#define CAN_RI0R_STID_Msk (0x7FFUL << CAN_RI0R_STID_Pos) /*!< 0xFFE00000 */\r
-#define CAN_RI0R_STID CAN_RI0R_STID_Msk /*!<Standard Identifier or Extended Identifier */\r
-\r
-/******************* Bit definition for CAN_RDT0R register ******************/\r
-#define CAN_RDT0R_DLC_Pos (0U) \r
-#define CAN_RDT0R_DLC_Msk (0xFUL << CAN_RDT0R_DLC_Pos) /*!< 0x0000000F */\r
-#define CAN_RDT0R_DLC CAN_RDT0R_DLC_Msk /*!<Data Length Code */\r
-#define CAN_RDT0R_FMI_Pos (8U) \r
-#define CAN_RDT0R_FMI_Msk (0xFFUL << CAN_RDT0R_FMI_Pos) /*!< 0x0000FF00 */\r
-#define CAN_RDT0R_FMI CAN_RDT0R_FMI_Msk /*!<Filter Match Index */\r
-#define CAN_RDT0R_TIME_Pos (16U) \r
-#define CAN_RDT0R_TIME_Msk (0xFFFFUL << CAN_RDT0R_TIME_Pos) /*!< 0xFFFF0000 */\r
-#define CAN_RDT0R_TIME CAN_RDT0R_TIME_Msk /*!<Message Time Stamp */\r
-\r
-/******************* Bit definition for CAN_RDL0R register ******************/\r
-#define CAN_RDL0R_DATA0_Pos (0U) \r
-#define CAN_RDL0R_DATA0_Msk (0xFFUL << CAN_RDL0R_DATA0_Pos) /*!< 0x000000FF */\r
-#define CAN_RDL0R_DATA0 CAN_RDL0R_DATA0_Msk /*!<Data byte 0 */\r
-#define CAN_RDL0R_DATA1_Pos (8U) \r
-#define CAN_RDL0R_DATA1_Msk (0xFFUL << CAN_RDL0R_DATA1_Pos) /*!< 0x0000FF00 */\r
-#define CAN_RDL0R_DATA1 CAN_RDL0R_DATA1_Msk /*!<Data byte 1 */\r
-#define CAN_RDL0R_DATA2_Pos (16U) \r
-#define CAN_RDL0R_DATA2_Msk (0xFFUL << CAN_RDL0R_DATA2_Pos) /*!< 0x00FF0000 */\r
-#define CAN_RDL0R_DATA2 CAN_RDL0R_DATA2_Msk /*!<Data byte 2 */\r
-#define CAN_RDL0R_DATA3_Pos (24U) \r
-#define CAN_RDL0R_DATA3_Msk (0xFFUL << CAN_RDL0R_DATA3_Pos) /*!< 0xFF000000 */\r
-#define CAN_RDL0R_DATA3 CAN_RDL0R_DATA3_Msk /*!<Data byte 3 */\r
-\r
-/******************* Bit definition for CAN_RDH0R register ******************/\r
-#define CAN_RDH0R_DATA4_Pos (0U) \r
-#define CAN_RDH0R_DATA4_Msk (0xFFUL << CAN_RDH0R_DATA4_Pos) /*!< 0x000000FF */\r
-#define CAN_RDH0R_DATA4 CAN_RDH0R_DATA4_Msk /*!<Data byte 4 */\r
-#define CAN_RDH0R_DATA5_Pos (8U) \r
-#define CAN_RDH0R_DATA5_Msk (0xFFUL << CAN_RDH0R_DATA5_Pos) /*!< 0x0000FF00 */\r
-#define CAN_RDH0R_DATA5 CAN_RDH0R_DATA5_Msk /*!<Data byte 5 */\r
-#define CAN_RDH0R_DATA6_Pos (16U) \r
-#define CAN_RDH0R_DATA6_Msk (0xFFUL << CAN_RDH0R_DATA6_Pos) /*!< 0x00FF0000 */\r
-#define CAN_RDH0R_DATA6 CAN_RDH0R_DATA6_Msk /*!<Data byte 6 */\r
-#define CAN_RDH0R_DATA7_Pos (24U) \r
-#define CAN_RDH0R_DATA7_Msk (0xFFUL << CAN_RDH0R_DATA7_Pos) /*!< 0xFF000000 */\r
-#define CAN_RDH0R_DATA7 CAN_RDH0R_DATA7_Msk /*!<Data byte 7 */\r
-\r
-/******************* Bit definition for CAN_RI1R register *******************/\r
-#define CAN_RI1R_RTR_Pos (1U) \r
-#define CAN_RI1R_RTR_Msk (0x1UL << CAN_RI1R_RTR_Pos) /*!< 0x00000002 */\r
-#define CAN_RI1R_RTR CAN_RI1R_RTR_Msk /*!<Remote Transmission Request */\r
-#define CAN_RI1R_IDE_Pos (2U) \r
-#define CAN_RI1R_IDE_Msk (0x1UL << CAN_RI1R_IDE_Pos) /*!< 0x00000004 */\r
-#define CAN_RI1R_IDE CAN_RI1R_IDE_Msk /*!<Identifier Extension */\r
-#define CAN_RI1R_EXID_Pos (3U) \r
-#define CAN_RI1R_EXID_Msk (0x3FFFFUL << CAN_RI1R_EXID_Pos) /*!< 0x001FFFF8 */\r
-#define CAN_RI1R_EXID CAN_RI1R_EXID_Msk /*!<Extended identifier */\r
-#define CAN_RI1R_STID_Pos (21U) \r
-#define CAN_RI1R_STID_Msk (0x7FFUL << CAN_RI1R_STID_Pos) /*!< 0xFFE00000 */\r
-#define CAN_RI1R_STID CAN_RI1R_STID_Msk /*!<Standard Identifier or Extended Identifier */\r
-\r
-/******************* Bit definition for CAN_RDT1R register ******************/\r
-#define CAN_RDT1R_DLC_Pos (0U) \r
-#define CAN_RDT1R_DLC_Msk (0xFUL << CAN_RDT1R_DLC_Pos) /*!< 0x0000000F */\r
-#define CAN_RDT1R_DLC CAN_RDT1R_DLC_Msk /*!<Data Length Code */\r
-#define CAN_RDT1R_FMI_Pos (8U) \r
-#define CAN_RDT1R_FMI_Msk (0xFFUL << CAN_RDT1R_FMI_Pos) /*!< 0x0000FF00 */\r
-#define CAN_RDT1R_FMI CAN_RDT1R_FMI_Msk /*!<Filter Match Index */\r
-#define CAN_RDT1R_TIME_Pos (16U) \r
-#define CAN_RDT1R_TIME_Msk (0xFFFFUL << CAN_RDT1R_TIME_Pos) /*!< 0xFFFF0000 */\r
-#define CAN_RDT1R_TIME CAN_RDT1R_TIME_Msk /*!<Message Time Stamp */\r
-\r
-/******************* Bit definition for CAN_RDL1R register ******************/\r
-#define CAN_RDL1R_DATA0_Pos (0U) \r
-#define CAN_RDL1R_DATA0_Msk (0xFFUL << CAN_RDL1R_DATA0_Pos) /*!< 0x000000FF */\r
-#define CAN_RDL1R_DATA0 CAN_RDL1R_DATA0_Msk /*!<Data byte 0 */\r
-#define CAN_RDL1R_DATA1_Pos (8U) \r
-#define CAN_RDL1R_DATA1_Msk (0xFFUL << CAN_RDL1R_DATA1_Pos) /*!< 0x0000FF00 */\r
-#define CAN_RDL1R_DATA1 CAN_RDL1R_DATA1_Msk /*!<Data byte 1 */\r
-#define CAN_RDL1R_DATA2_Pos (16U) \r
-#define CAN_RDL1R_DATA2_Msk (0xFFUL << CAN_RDL1R_DATA2_Pos) /*!< 0x00FF0000 */\r
-#define CAN_RDL1R_DATA2 CAN_RDL1R_DATA2_Msk /*!<Data byte 2 */\r
-#define CAN_RDL1R_DATA3_Pos (24U) \r
-#define CAN_RDL1R_DATA3_Msk (0xFFUL << CAN_RDL1R_DATA3_Pos) /*!< 0xFF000000 */\r
-#define CAN_RDL1R_DATA3 CAN_RDL1R_DATA3_Msk /*!<Data byte 3 */\r
-\r
-/******************* Bit definition for CAN_RDH1R register ******************/\r
-#define CAN_RDH1R_DATA4_Pos (0U) \r
-#define CAN_RDH1R_DATA4_Msk (0xFFUL << CAN_RDH1R_DATA4_Pos) /*!< 0x000000FF */\r
-#define CAN_RDH1R_DATA4 CAN_RDH1R_DATA4_Msk /*!<Data byte 4 */\r
-#define CAN_RDH1R_DATA5_Pos (8U) \r
-#define CAN_RDH1R_DATA5_Msk (0xFFUL << CAN_RDH1R_DATA5_Pos) /*!< 0x0000FF00 */\r
-#define CAN_RDH1R_DATA5 CAN_RDH1R_DATA5_Msk /*!<Data byte 5 */\r
-#define CAN_RDH1R_DATA6_Pos (16U) \r
-#define CAN_RDH1R_DATA6_Msk (0xFFUL << CAN_RDH1R_DATA6_Pos) /*!< 0x00FF0000 */\r
-#define CAN_RDH1R_DATA6 CAN_RDH1R_DATA6_Msk /*!<Data byte 6 */\r
-#define CAN_RDH1R_DATA7_Pos (24U) \r
-#define CAN_RDH1R_DATA7_Msk (0xFFUL << CAN_RDH1R_DATA7_Pos) /*!< 0xFF000000 */\r
-#define CAN_RDH1R_DATA7 CAN_RDH1R_DATA7_Msk /*!<Data byte 7 */\r
-\r
-/*!<CAN filter registers */\r
-/******************* Bit definition for CAN_FMR register ********************/\r
-#define CAN_FMR_FINIT ((uint8_t)0x01U) /*!<Filter Init Mode */\r
-#define CAN_FMR_CAN2SB_Pos (8U) \r
-#define CAN_FMR_CAN2SB_Msk (0x3FUL << CAN_FMR_CAN2SB_Pos) /*!< 0x00003F00 */\r
-#define CAN_FMR_CAN2SB CAN_FMR_CAN2SB_Msk /*!<CAN2 start bank */\r
-\r
-/******************* Bit definition for CAN_FM1R register *******************/\r
-#define CAN_FM1R_FBM_Pos (0U) \r
-#define CAN_FM1R_FBM_Msk (0x3FFFUL << CAN_FM1R_FBM_Pos) /*!< 0x00003FFF */\r
-#define CAN_FM1R_FBM CAN_FM1R_FBM_Msk /*!<Filter Mode */\r
-#define CAN_FM1R_FBM0_Pos (0U) \r
-#define CAN_FM1R_FBM0_Msk (0x1UL << CAN_FM1R_FBM0_Pos) /*!< 0x00000001 */\r
-#define CAN_FM1R_FBM0 CAN_FM1R_FBM0_Msk /*!<Filter Init Mode bit 0 */\r
-#define CAN_FM1R_FBM1_Pos (1U) \r
-#define CAN_FM1R_FBM1_Msk (0x1UL << CAN_FM1R_FBM1_Pos) /*!< 0x00000002 */\r
-#define CAN_FM1R_FBM1 CAN_FM1R_FBM1_Msk /*!<Filter Init Mode bit 1 */\r
-#define CAN_FM1R_FBM2_Pos (2U) \r
-#define CAN_FM1R_FBM2_Msk (0x1UL << CAN_FM1R_FBM2_Pos) /*!< 0x00000004 */\r
-#define CAN_FM1R_FBM2 CAN_FM1R_FBM2_Msk /*!<Filter Init Mode bit 2 */\r
-#define CAN_FM1R_FBM3_Pos (3U) \r
-#define CAN_FM1R_FBM3_Msk (0x1UL << CAN_FM1R_FBM3_Pos) /*!< 0x00000008 */\r
-#define CAN_FM1R_FBM3 CAN_FM1R_FBM3_Msk /*!<Filter Init Mode bit 3 */\r
-#define CAN_FM1R_FBM4_Pos (4U) \r
-#define CAN_FM1R_FBM4_Msk (0x1UL << CAN_FM1R_FBM4_Pos) /*!< 0x00000010 */\r
-#define CAN_FM1R_FBM4 CAN_FM1R_FBM4_Msk /*!<Filter Init Mode bit 4 */\r
-#define CAN_FM1R_FBM5_Pos (5U) \r
-#define CAN_FM1R_FBM5_Msk (0x1UL << CAN_FM1R_FBM5_Pos) /*!< 0x00000020 */\r
-#define CAN_FM1R_FBM5 CAN_FM1R_FBM5_Msk /*!<Filter Init Mode bit 5 */\r
-#define CAN_FM1R_FBM6_Pos (6U) \r
-#define CAN_FM1R_FBM6_Msk (0x1UL << CAN_FM1R_FBM6_Pos) /*!< 0x00000040 */\r
-#define CAN_FM1R_FBM6 CAN_FM1R_FBM6_Msk /*!<Filter Init Mode bit 6 */\r
-#define CAN_FM1R_FBM7_Pos (7U) \r
-#define CAN_FM1R_FBM7_Msk (0x1UL << CAN_FM1R_FBM7_Pos) /*!< 0x00000080 */\r
-#define CAN_FM1R_FBM7 CAN_FM1R_FBM7_Msk /*!<Filter Init Mode bit 7 */\r
-#define CAN_FM1R_FBM8_Pos (8U) \r
-#define CAN_FM1R_FBM8_Msk (0x1UL << CAN_FM1R_FBM8_Pos) /*!< 0x00000100 */\r
-#define CAN_FM1R_FBM8 CAN_FM1R_FBM8_Msk /*!<Filter Init Mode bit 8 */\r
-#define CAN_FM1R_FBM9_Pos (9U) \r
-#define CAN_FM1R_FBM9_Msk (0x1UL << CAN_FM1R_FBM9_Pos) /*!< 0x00000200 */\r
-#define CAN_FM1R_FBM9 CAN_FM1R_FBM9_Msk /*!<Filter Init Mode bit 9 */\r
-#define CAN_FM1R_FBM10_Pos (10U) \r
-#define CAN_FM1R_FBM10_Msk (0x1UL << CAN_FM1R_FBM10_Pos) /*!< 0x00000400 */\r
-#define CAN_FM1R_FBM10 CAN_FM1R_FBM10_Msk /*!<Filter Init Mode bit 10 */\r
-#define CAN_FM1R_FBM11_Pos (11U) \r
-#define CAN_FM1R_FBM11_Msk (0x1UL << CAN_FM1R_FBM11_Pos) /*!< 0x00000800 */\r
-#define CAN_FM1R_FBM11 CAN_FM1R_FBM11_Msk /*!<Filter Init Mode bit 11 */\r
-#define CAN_FM1R_FBM12_Pos (12U) \r
-#define CAN_FM1R_FBM12_Msk (0x1UL << CAN_FM1R_FBM12_Pos) /*!< 0x00001000 */\r
-#define CAN_FM1R_FBM12 CAN_FM1R_FBM12_Msk /*!<Filter Init Mode bit 12 */\r
-#define CAN_FM1R_FBM13_Pos (13U) \r
-#define CAN_FM1R_FBM13_Msk (0x1UL << CAN_FM1R_FBM13_Pos) /*!< 0x00002000 */\r
-#define CAN_FM1R_FBM13 CAN_FM1R_FBM13_Msk /*!<Filter Init Mode bit 13 */\r
-\r
-/******************* Bit definition for CAN_FS1R register *******************/\r
-#define CAN_FS1R_FSC_Pos (0U) \r
-#define CAN_FS1R_FSC_Msk (0x3FFFUL << CAN_FS1R_FSC_Pos) /*!< 0x00003FFF */\r
-#define CAN_FS1R_FSC CAN_FS1R_FSC_Msk /*!<Filter Scale Configuration */\r
-#define CAN_FS1R_FSC0_Pos (0U) \r
-#define CAN_FS1R_FSC0_Msk (0x1UL << CAN_FS1R_FSC0_Pos) /*!< 0x00000001 */\r
-#define CAN_FS1R_FSC0 CAN_FS1R_FSC0_Msk /*!<Filter Scale Configuration bit 0 */\r
-#define CAN_FS1R_FSC1_Pos (1U) \r
-#define CAN_FS1R_FSC1_Msk (0x1UL << CAN_FS1R_FSC1_Pos) /*!< 0x00000002 */\r
-#define CAN_FS1R_FSC1 CAN_FS1R_FSC1_Msk /*!<Filter Scale Configuration bit 1 */\r
-#define CAN_FS1R_FSC2_Pos (2U) \r
-#define CAN_FS1R_FSC2_Msk (0x1UL << CAN_FS1R_FSC2_Pos) /*!< 0x00000004 */\r
-#define CAN_FS1R_FSC2 CAN_FS1R_FSC2_Msk /*!<Filter Scale Configuration bit 2 */\r
-#define CAN_FS1R_FSC3_Pos (3U) \r
-#define CAN_FS1R_FSC3_Msk (0x1UL << CAN_FS1R_FSC3_Pos) /*!< 0x00000008 */\r
-#define CAN_FS1R_FSC3 CAN_FS1R_FSC3_Msk /*!<Filter Scale Configuration bit 3 */\r
-#define CAN_FS1R_FSC4_Pos (4U) \r
-#define CAN_FS1R_FSC4_Msk (0x1UL << CAN_FS1R_FSC4_Pos) /*!< 0x00000010 */\r
-#define CAN_FS1R_FSC4 CAN_FS1R_FSC4_Msk /*!<Filter Scale Configuration bit 4 */\r
-#define CAN_FS1R_FSC5_Pos (5U) \r
-#define CAN_FS1R_FSC5_Msk (0x1UL << CAN_FS1R_FSC5_Pos) /*!< 0x00000020 */\r
-#define CAN_FS1R_FSC5 CAN_FS1R_FSC5_Msk /*!<Filter Scale Configuration bit 5 */\r
-#define CAN_FS1R_FSC6_Pos (6U) \r
-#define CAN_FS1R_FSC6_Msk (0x1UL << CAN_FS1R_FSC6_Pos) /*!< 0x00000040 */\r
-#define CAN_FS1R_FSC6 CAN_FS1R_FSC6_Msk /*!<Filter Scale Configuration bit 6 */\r
-#define CAN_FS1R_FSC7_Pos (7U) \r
-#define CAN_FS1R_FSC7_Msk (0x1UL << CAN_FS1R_FSC7_Pos) /*!< 0x00000080 */\r
-#define CAN_FS1R_FSC7 CAN_FS1R_FSC7_Msk /*!<Filter Scale Configuration bit 7 */\r
-#define CAN_FS1R_FSC8_Pos (8U) \r
-#define CAN_FS1R_FSC8_Msk (0x1UL << CAN_FS1R_FSC8_Pos) /*!< 0x00000100 */\r
-#define CAN_FS1R_FSC8 CAN_FS1R_FSC8_Msk /*!<Filter Scale Configuration bit 8 */\r
-#define CAN_FS1R_FSC9_Pos (9U) \r
-#define CAN_FS1R_FSC9_Msk (0x1UL << CAN_FS1R_FSC9_Pos) /*!< 0x00000200 */\r
-#define CAN_FS1R_FSC9 CAN_FS1R_FSC9_Msk /*!<Filter Scale Configuration bit 9 */\r
-#define CAN_FS1R_FSC10_Pos (10U) \r
-#define CAN_FS1R_FSC10_Msk (0x1UL << CAN_FS1R_FSC10_Pos) /*!< 0x00000400 */\r
-#define CAN_FS1R_FSC10 CAN_FS1R_FSC10_Msk /*!<Filter Scale Configuration bit 10 */\r
-#define CAN_FS1R_FSC11_Pos (11U) \r
-#define CAN_FS1R_FSC11_Msk (0x1UL << CAN_FS1R_FSC11_Pos) /*!< 0x00000800 */\r
-#define CAN_FS1R_FSC11 CAN_FS1R_FSC11_Msk /*!<Filter Scale Configuration bit 11 */\r
-#define CAN_FS1R_FSC12_Pos (12U) \r
-#define CAN_FS1R_FSC12_Msk (0x1UL << CAN_FS1R_FSC12_Pos) /*!< 0x00001000 */\r
-#define CAN_FS1R_FSC12 CAN_FS1R_FSC12_Msk /*!<Filter Scale Configuration bit 12 */\r
-#define CAN_FS1R_FSC13_Pos (13U) \r
-#define CAN_FS1R_FSC13_Msk (0x1UL << CAN_FS1R_FSC13_Pos) /*!< 0x00002000 */\r
-#define CAN_FS1R_FSC13 CAN_FS1R_FSC13_Msk /*!<Filter Scale Configuration bit 13 */\r
-\r
-/****************** Bit definition for CAN_FFA1R register *******************/\r
-#define CAN_FFA1R_FFA_Pos (0U) \r
-#define CAN_FFA1R_FFA_Msk (0x3FFFUL << CAN_FFA1R_FFA_Pos) /*!< 0x00003FFF */\r
-#define CAN_FFA1R_FFA CAN_FFA1R_FFA_Msk /*!<Filter FIFO Assignment */\r
-#define CAN_FFA1R_FFA0_Pos (0U) \r
-#define CAN_FFA1R_FFA0_Msk (0x1UL << CAN_FFA1R_FFA0_Pos) /*!< 0x00000001 */\r
-#define CAN_FFA1R_FFA0 CAN_FFA1R_FFA0_Msk /*!<Filter FIFO Assignment for Filter 0 */\r
-#define CAN_FFA1R_FFA1_Pos (1U) \r
-#define CAN_FFA1R_FFA1_Msk (0x1UL << CAN_FFA1R_FFA1_Pos) /*!< 0x00000002 */\r
-#define CAN_FFA1R_FFA1 CAN_FFA1R_FFA1_Msk /*!<Filter FIFO Assignment for Filter 1 */\r
-#define CAN_FFA1R_FFA2_Pos (2U) \r
-#define CAN_FFA1R_FFA2_Msk (0x1UL << CAN_FFA1R_FFA2_Pos) /*!< 0x00000004 */\r
-#define CAN_FFA1R_FFA2 CAN_FFA1R_FFA2_Msk /*!<Filter FIFO Assignment for Filter 2 */\r
-#define CAN_FFA1R_FFA3_Pos (3U) \r
-#define CAN_FFA1R_FFA3_Msk (0x1UL << CAN_FFA1R_FFA3_Pos) /*!< 0x00000008 */\r
-#define CAN_FFA1R_FFA3 CAN_FFA1R_FFA3_Msk /*!<Filter FIFO Assignment for Filter 3 */\r
-#define CAN_FFA1R_FFA4_Pos (4U) \r
-#define CAN_FFA1R_FFA4_Msk (0x1UL << CAN_FFA1R_FFA4_Pos) /*!< 0x00000010 */\r
-#define CAN_FFA1R_FFA4 CAN_FFA1R_FFA4_Msk /*!<Filter FIFO Assignment for Filter 4 */\r
-#define CAN_FFA1R_FFA5_Pos (5U) \r
-#define CAN_FFA1R_FFA5_Msk (0x1UL << CAN_FFA1R_FFA5_Pos) /*!< 0x00000020 */\r
-#define CAN_FFA1R_FFA5 CAN_FFA1R_FFA5_Msk /*!<Filter FIFO Assignment for Filter 5 */\r
-#define CAN_FFA1R_FFA6_Pos (6U) \r
-#define CAN_FFA1R_FFA6_Msk (0x1UL << CAN_FFA1R_FFA6_Pos) /*!< 0x00000040 */\r
-#define CAN_FFA1R_FFA6 CAN_FFA1R_FFA6_Msk /*!<Filter FIFO Assignment for Filter 6 */\r
-#define CAN_FFA1R_FFA7_Pos (7U) \r
-#define CAN_FFA1R_FFA7_Msk (0x1UL << CAN_FFA1R_FFA7_Pos) /*!< 0x00000080 */\r
-#define CAN_FFA1R_FFA7 CAN_FFA1R_FFA7_Msk /*!<Filter FIFO Assignment for Filter 7 */\r
-#define CAN_FFA1R_FFA8_Pos (8U) \r
-#define CAN_FFA1R_FFA8_Msk (0x1UL << CAN_FFA1R_FFA8_Pos) /*!< 0x00000100 */\r
-#define CAN_FFA1R_FFA8 CAN_FFA1R_FFA8_Msk /*!<Filter FIFO Assignment for Filter 8 */\r
-#define CAN_FFA1R_FFA9_Pos (9U) \r
-#define CAN_FFA1R_FFA9_Msk (0x1UL << CAN_FFA1R_FFA9_Pos) /*!< 0x00000200 */\r
-#define CAN_FFA1R_FFA9 CAN_FFA1R_FFA9_Msk /*!<Filter FIFO Assignment for Filter 9 */\r
-#define CAN_FFA1R_FFA10_Pos (10U) \r
-#define CAN_FFA1R_FFA10_Msk (0x1UL << CAN_FFA1R_FFA10_Pos) /*!< 0x00000400 */\r
-#define CAN_FFA1R_FFA10 CAN_FFA1R_FFA10_Msk /*!<Filter FIFO Assignment for Filter 10 */\r
-#define CAN_FFA1R_FFA11_Pos (11U) \r
-#define CAN_FFA1R_FFA11_Msk (0x1UL << CAN_FFA1R_FFA11_Pos) /*!< 0x00000800 */\r
-#define CAN_FFA1R_FFA11 CAN_FFA1R_FFA11_Msk /*!<Filter FIFO Assignment for Filter 11 */\r
-#define CAN_FFA1R_FFA12_Pos (12U) \r
-#define CAN_FFA1R_FFA12_Msk (0x1UL << CAN_FFA1R_FFA12_Pos) /*!< 0x00001000 */\r
-#define CAN_FFA1R_FFA12 CAN_FFA1R_FFA12_Msk /*!<Filter FIFO Assignment for Filter 12 */\r
-#define CAN_FFA1R_FFA13_Pos (13U) \r
-#define CAN_FFA1R_FFA13_Msk (0x1UL << CAN_FFA1R_FFA13_Pos) /*!< 0x00002000 */\r
-#define CAN_FFA1R_FFA13 CAN_FFA1R_FFA13_Msk /*!<Filter FIFO Assignment for Filter 13 */\r
-\r
-/******************* Bit definition for CAN_FA1R register *******************/\r
-#define CAN_FA1R_FACT_Pos (0U) \r
-#define CAN_FA1R_FACT_Msk (0x3FFFUL << CAN_FA1R_FACT_Pos) /*!< 0x00003FFF */\r
-#define CAN_FA1R_FACT CAN_FA1R_FACT_Msk /*!<Filter Active */\r
-#define CAN_FA1R_FACT0_Pos (0U) \r
-#define CAN_FA1R_FACT0_Msk (0x1UL << CAN_FA1R_FACT0_Pos) /*!< 0x00000001 */\r
-#define CAN_FA1R_FACT0 CAN_FA1R_FACT0_Msk /*!<Filter 0 Active */\r
-#define CAN_FA1R_FACT1_Pos (1U) \r
-#define CAN_FA1R_FACT1_Msk (0x1UL << CAN_FA1R_FACT1_Pos) /*!< 0x00000002 */\r
-#define CAN_FA1R_FACT1 CAN_FA1R_FACT1_Msk /*!<Filter 1 Active */\r
-#define CAN_FA1R_FACT2_Pos (2U) \r
-#define CAN_FA1R_FACT2_Msk (0x1UL << CAN_FA1R_FACT2_Pos) /*!< 0x00000004 */\r
-#define CAN_FA1R_FACT2 CAN_FA1R_FACT2_Msk /*!<Filter 2 Active */\r
-#define CAN_FA1R_FACT3_Pos (3U) \r
-#define CAN_FA1R_FACT3_Msk (0x1UL << CAN_FA1R_FACT3_Pos) /*!< 0x00000008 */\r
-#define CAN_FA1R_FACT3 CAN_FA1R_FACT3_Msk /*!<Filter 3 Active */\r
-#define CAN_FA1R_FACT4_Pos (4U) \r
-#define CAN_FA1R_FACT4_Msk (0x1UL << CAN_FA1R_FACT4_Pos) /*!< 0x00000010 */\r
-#define CAN_FA1R_FACT4 CAN_FA1R_FACT4_Msk /*!<Filter 4 Active */\r
-#define CAN_FA1R_FACT5_Pos (5U) \r
-#define CAN_FA1R_FACT5_Msk (0x1UL << CAN_FA1R_FACT5_Pos) /*!< 0x00000020 */\r
-#define CAN_FA1R_FACT5 CAN_FA1R_FACT5_Msk /*!<Filter 5 Active */\r
-#define CAN_FA1R_FACT6_Pos (6U) \r
-#define CAN_FA1R_FACT6_Msk (0x1UL << CAN_FA1R_FACT6_Pos) /*!< 0x00000040 */\r
-#define CAN_FA1R_FACT6 CAN_FA1R_FACT6_Msk /*!<Filter 6 Active */\r
-#define CAN_FA1R_FACT7_Pos (7U) \r
-#define CAN_FA1R_FACT7_Msk (0x1UL << CAN_FA1R_FACT7_Pos) /*!< 0x00000080 */\r
-#define CAN_FA1R_FACT7 CAN_FA1R_FACT7_Msk /*!<Filter 7 Active */\r
-#define CAN_FA1R_FACT8_Pos (8U) \r
-#define CAN_FA1R_FACT8_Msk (0x1UL << CAN_FA1R_FACT8_Pos) /*!< 0x00000100 */\r
-#define CAN_FA1R_FACT8 CAN_FA1R_FACT8_Msk /*!<Filter 8 Active */\r
-#define CAN_FA1R_FACT9_Pos (9U) \r
-#define CAN_FA1R_FACT9_Msk (0x1UL << CAN_FA1R_FACT9_Pos) /*!< 0x00000200 */\r
-#define CAN_FA1R_FACT9 CAN_FA1R_FACT9_Msk /*!<Filter 9 Active */\r
-#define CAN_FA1R_FACT10_Pos (10U) \r
-#define CAN_FA1R_FACT10_Msk (0x1UL << CAN_FA1R_FACT10_Pos) /*!< 0x00000400 */\r
-#define CAN_FA1R_FACT10 CAN_FA1R_FACT10_Msk /*!<Filter 10 Active */\r
-#define CAN_FA1R_FACT11_Pos (11U) \r
-#define CAN_FA1R_FACT11_Msk (0x1UL << CAN_FA1R_FACT11_Pos) /*!< 0x00000800 */\r
-#define CAN_FA1R_FACT11 CAN_FA1R_FACT11_Msk /*!<Filter 11 Active */\r
-#define CAN_FA1R_FACT12_Pos (12U) \r
-#define CAN_FA1R_FACT12_Msk (0x1UL << CAN_FA1R_FACT12_Pos) /*!< 0x00001000 */\r
-#define CAN_FA1R_FACT12 CAN_FA1R_FACT12_Msk /*!<Filter 12 Active */\r
-#define CAN_FA1R_FACT13_Pos (13U) \r
-#define CAN_FA1R_FACT13_Msk (0x1UL << CAN_FA1R_FACT13_Pos) /*!< 0x00002000 */\r
-#define CAN_FA1R_FACT13 CAN_FA1R_FACT13_Msk /*!<Filter 13 Active */\r
-\r
-/******************* Bit definition for CAN_F0R1 register *******************/\r
-#define CAN_F0R1_FB0_Pos (0U) \r
-#define CAN_F0R1_FB0_Msk (0x1UL << CAN_F0R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F0R1_FB0 CAN_F0R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F0R1_FB1_Pos (1U) \r
-#define CAN_F0R1_FB1_Msk (0x1UL << CAN_F0R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F0R1_FB1 CAN_F0R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F0R1_FB2_Pos (2U) \r
-#define CAN_F0R1_FB2_Msk (0x1UL << CAN_F0R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F0R1_FB2 CAN_F0R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F0R1_FB3_Pos (3U) \r
-#define CAN_F0R1_FB3_Msk (0x1UL << CAN_F0R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F0R1_FB3 CAN_F0R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F0R1_FB4_Pos (4U) \r
-#define CAN_F0R1_FB4_Msk (0x1UL << CAN_F0R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F0R1_FB4 CAN_F0R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F0R1_FB5_Pos (5U) \r
-#define CAN_F0R1_FB5_Msk (0x1UL << CAN_F0R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F0R1_FB5 CAN_F0R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F0R1_FB6_Pos (6U) \r
-#define CAN_F0R1_FB6_Msk (0x1UL << CAN_F0R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F0R1_FB6 CAN_F0R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F0R1_FB7_Pos (7U) \r
-#define CAN_F0R1_FB7_Msk (0x1UL << CAN_F0R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F0R1_FB7 CAN_F0R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F0R1_FB8_Pos (8U) \r
-#define CAN_F0R1_FB8_Msk (0x1UL << CAN_F0R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F0R1_FB8 CAN_F0R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F0R1_FB9_Pos (9U) \r
-#define CAN_F0R1_FB9_Msk (0x1UL << CAN_F0R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F0R1_FB9 CAN_F0R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F0R1_FB10_Pos (10U) \r
-#define CAN_F0R1_FB10_Msk (0x1UL << CAN_F0R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F0R1_FB10 CAN_F0R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F0R1_FB11_Pos (11U) \r
-#define CAN_F0R1_FB11_Msk (0x1UL << CAN_F0R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F0R1_FB11 CAN_F0R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F0R1_FB12_Pos (12U) \r
-#define CAN_F0R1_FB12_Msk (0x1UL << CAN_F0R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F0R1_FB12 CAN_F0R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F0R1_FB13_Pos (13U) \r
-#define CAN_F0R1_FB13_Msk (0x1UL << CAN_F0R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F0R1_FB13 CAN_F0R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F0R1_FB14_Pos (14U) \r
-#define CAN_F0R1_FB14_Msk (0x1UL << CAN_F0R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F0R1_FB14 CAN_F0R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F0R1_FB15_Pos (15U) \r
-#define CAN_F0R1_FB15_Msk (0x1UL << CAN_F0R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F0R1_FB15 CAN_F0R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F0R1_FB16_Pos (16U) \r
-#define CAN_F0R1_FB16_Msk (0x1UL << CAN_F0R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F0R1_FB16 CAN_F0R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F0R1_FB17_Pos (17U) \r
-#define CAN_F0R1_FB17_Msk (0x1UL << CAN_F0R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F0R1_FB17 CAN_F0R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F0R1_FB18_Pos (18U) \r
-#define CAN_F0R1_FB18_Msk (0x1UL << CAN_F0R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F0R1_FB18 CAN_F0R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F0R1_FB19_Pos (19U) \r
-#define CAN_F0R1_FB19_Msk (0x1UL << CAN_F0R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F0R1_FB19 CAN_F0R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F0R1_FB20_Pos (20U) \r
-#define CAN_F0R1_FB20_Msk (0x1UL << CAN_F0R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F0R1_FB20 CAN_F0R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F0R1_FB21_Pos (21U) \r
-#define CAN_F0R1_FB21_Msk (0x1UL << CAN_F0R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F0R1_FB21 CAN_F0R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F0R1_FB22_Pos (22U) \r
-#define CAN_F0R1_FB22_Msk (0x1UL << CAN_F0R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F0R1_FB22 CAN_F0R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F0R1_FB23_Pos (23U) \r
-#define CAN_F0R1_FB23_Msk (0x1UL << CAN_F0R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F0R1_FB23 CAN_F0R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F0R1_FB24_Pos (24U) \r
-#define CAN_F0R1_FB24_Msk (0x1UL << CAN_F0R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F0R1_FB24 CAN_F0R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F0R1_FB25_Pos (25U) \r
-#define CAN_F0R1_FB25_Msk (0x1UL << CAN_F0R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F0R1_FB25 CAN_F0R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F0R1_FB26_Pos (26U) \r
-#define CAN_F0R1_FB26_Msk (0x1UL << CAN_F0R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F0R1_FB26 CAN_F0R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F0R1_FB27_Pos (27U) \r
-#define CAN_F0R1_FB27_Msk (0x1UL << CAN_F0R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F0R1_FB27 CAN_F0R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F0R1_FB28_Pos (28U) \r
-#define CAN_F0R1_FB28_Msk (0x1UL << CAN_F0R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F0R1_FB28 CAN_F0R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F0R1_FB29_Pos (29U) \r
-#define CAN_F0R1_FB29_Msk (0x1UL << CAN_F0R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F0R1_FB29 CAN_F0R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F0R1_FB30_Pos (30U) \r
-#define CAN_F0R1_FB30_Msk (0x1UL << CAN_F0R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F0R1_FB30 CAN_F0R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F0R1_FB31_Pos (31U) \r
-#define CAN_F0R1_FB31_Msk (0x1UL << CAN_F0R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F0R1_FB31 CAN_F0R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F1R1 register *******************/\r
-#define CAN_F1R1_FB0_Pos (0U) \r
-#define CAN_F1R1_FB0_Msk (0x1UL << CAN_F1R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F1R1_FB0 CAN_F1R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F1R1_FB1_Pos (1U) \r
-#define CAN_F1R1_FB1_Msk (0x1UL << CAN_F1R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F1R1_FB1 CAN_F1R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F1R1_FB2_Pos (2U) \r
-#define CAN_F1R1_FB2_Msk (0x1UL << CAN_F1R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F1R1_FB2 CAN_F1R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F1R1_FB3_Pos (3U) \r
-#define CAN_F1R1_FB3_Msk (0x1UL << CAN_F1R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F1R1_FB3 CAN_F1R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F1R1_FB4_Pos (4U) \r
-#define CAN_F1R1_FB4_Msk (0x1UL << CAN_F1R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F1R1_FB4 CAN_F1R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F1R1_FB5_Pos (5U) \r
-#define CAN_F1R1_FB5_Msk (0x1UL << CAN_F1R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F1R1_FB5 CAN_F1R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F1R1_FB6_Pos (6U) \r
-#define CAN_F1R1_FB6_Msk (0x1UL << CAN_F1R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F1R1_FB6 CAN_F1R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F1R1_FB7_Pos (7U) \r
-#define CAN_F1R1_FB7_Msk (0x1UL << CAN_F1R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F1R1_FB7 CAN_F1R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F1R1_FB8_Pos (8U) \r
-#define CAN_F1R1_FB8_Msk (0x1UL << CAN_F1R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F1R1_FB8 CAN_F1R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F1R1_FB9_Pos (9U) \r
-#define CAN_F1R1_FB9_Msk (0x1UL << CAN_F1R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F1R1_FB9 CAN_F1R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F1R1_FB10_Pos (10U) \r
-#define CAN_F1R1_FB10_Msk (0x1UL << CAN_F1R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F1R1_FB10 CAN_F1R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F1R1_FB11_Pos (11U) \r
-#define CAN_F1R1_FB11_Msk (0x1UL << CAN_F1R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F1R1_FB11 CAN_F1R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F1R1_FB12_Pos (12U) \r
-#define CAN_F1R1_FB12_Msk (0x1UL << CAN_F1R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F1R1_FB12 CAN_F1R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F1R1_FB13_Pos (13U) \r
-#define CAN_F1R1_FB13_Msk (0x1UL << CAN_F1R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F1R1_FB13 CAN_F1R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F1R1_FB14_Pos (14U) \r
-#define CAN_F1R1_FB14_Msk (0x1UL << CAN_F1R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F1R1_FB14 CAN_F1R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F1R1_FB15_Pos (15U) \r
-#define CAN_F1R1_FB15_Msk (0x1UL << CAN_F1R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F1R1_FB15 CAN_F1R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F1R1_FB16_Pos (16U) \r
-#define CAN_F1R1_FB16_Msk (0x1UL << CAN_F1R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F1R1_FB16 CAN_F1R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F1R1_FB17_Pos (17U) \r
-#define CAN_F1R1_FB17_Msk (0x1UL << CAN_F1R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F1R1_FB17 CAN_F1R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F1R1_FB18_Pos (18U) \r
-#define CAN_F1R1_FB18_Msk (0x1UL << CAN_F1R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F1R1_FB18 CAN_F1R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F1R1_FB19_Pos (19U) \r
-#define CAN_F1R1_FB19_Msk (0x1UL << CAN_F1R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F1R1_FB19 CAN_F1R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F1R1_FB20_Pos (20U) \r
-#define CAN_F1R1_FB20_Msk (0x1UL << CAN_F1R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F1R1_FB20 CAN_F1R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F1R1_FB21_Pos (21U) \r
-#define CAN_F1R1_FB21_Msk (0x1UL << CAN_F1R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F1R1_FB21 CAN_F1R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F1R1_FB22_Pos (22U) \r
-#define CAN_F1R1_FB22_Msk (0x1UL << CAN_F1R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F1R1_FB22 CAN_F1R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F1R1_FB23_Pos (23U) \r
-#define CAN_F1R1_FB23_Msk (0x1UL << CAN_F1R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F1R1_FB23 CAN_F1R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F1R1_FB24_Pos (24U) \r
-#define CAN_F1R1_FB24_Msk (0x1UL << CAN_F1R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F1R1_FB24 CAN_F1R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F1R1_FB25_Pos (25U) \r
-#define CAN_F1R1_FB25_Msk (0x1UL << CAN_F1R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F1R1_FB25 CAN_F1R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F1R1_FB26_Pos (26U) \r
-#define CAN_F1R1_FB26_Msk (0x1UL << CAN_F1R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F1R1_FB26 CAN_F1R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F1R1_FB27_Pos (27U) \r
-#define CAN_F1R1_FB27_Msk (0x1UL << CAN_F1R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F1R1_FB27 CAN_F1R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F1R1_FB28_Pos (28U) \r
-#define CAN_F1R1_FB28_Msk (0x1UL << CAN_F1R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F1R1_FB28 CAN_F1R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F1R1_FB29_Pos (29U) \r
-#define CAN_F1R1_FB29_Msk (0x1UL << CAN_F1R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F1R1_FB29 CAN_F1R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F1R1_FB30_Pos (30U) \r
-#define CAN_F1R1_FB30_Msk (0x1UL << CAN_F1R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F1R1_FB30 CAN_F1R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F1R1_FB31_Pos (31U) \r
-#define CAN_F1R1_FB31_Msk (0x1UL << CAN_F1R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F1R1_FB31 CAN_F1R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F2R1 register *******************/\r
-#define CAN_F2R1_FB0_Pos (0U) \r
-#define CAN_F2R1_FB0_Msk (0x1UL << CAN_F2R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F2R1_FB0 CAN_F2R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F2R1_FB1_Pos (1U) \r
-#define CAN_F2R1_FB1_Msk (0x1UL << CAN_F2R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F2R1_FB1 CAN_F2R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F2R1_FB2_Pos (2U) \r
-#define CAN_F2R1_FB2_Msk (0x1UL << CAN_F2R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F2R1_FB2 CAN_F2R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F2R1_FB3_Pos (3U) \r
-#define CAN_F2R1_FB3_Msk (0x1UL << CAN_F2R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F2R1_FB3 CAN_F2R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F2R1_FB4_Pos (4U) \r
-#define CAN_F2R1_FB4_Msk (0x1UL << CAN_F2R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F2R1_FB4 CAN_F2R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F2R1_FB5_Pos (5U) \r
-#define CAN_F2R1_FB5_Msk (0x1UL << CAN_F2R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F2R1_FB5 CAN_F2R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F2R1_FB6_Pos (6U) \r
-#define CAN_F2R1_FB6_Msk (0x1UL << CAN_F2R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F2R1_FB6 CAN_F2R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F2R1_FB7_Pos (7U) \r
-#define CAN_F2R1_FB7_Msk (0x1UL << CAN_F2R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F2R1_FB7 CAN_F2R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F2R1_FB8_Pos (8U) \r
-#define CAN_F2R1_FB8_Msk (0x1UL << CAN_F2R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F2R1_FB8 CAN_F2R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F2R1_FB9_Pos (9U) \r
-#define CAN_F2R1_FB9_Msk (0x1UL << CAN_F2R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F2R1_FB9 CAN_F2R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F2R1_FB10_Pos (10U) \r
-#define CAN_F2R1_FB10_Msk (0x1UL << CAN_F2R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F2R1_FB10 CAN_F2R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F2R1_FB11_Pos (11U) \r
-#define CAN_F2R1_FB11_Msk (0x1UL << CAN_F2R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F2R1_FB11 CAN_F2R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F2R1_FB12_Pos (12U) \r
-#define CAN_F2R1_FB12_Msk (0x1UL << CAN_F2R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F2R1_FB12 CAN_F2R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F2R1_FB13_Pos (13U) \r
-#define CAN_F2R1_FB13_Msk (0x1UL << CAN_F2R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F2R1_FB13 CAN_F2R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F2R1_FB14_Pos (14U) \r
-#define CAN_F2R1_FB14_Msk (0x1UL << CAN_F2R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F2R1_FB14 CAN_F2R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F2R1_FB15_Pos (15U) \r
-#define CAN_F2R1_FB15_Msk (0x1UL << CAN_F2R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F2R1_FB15 CAN_F2R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F2R1_FB16_Pos (16U) \r
-#define CAN_F2R1_FB16_Msk (0x1UL << CAN_F2R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F2R1_FB16 CAN_F2R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F2R1_FB17_Pos (17U) \r
-#define CAN_F2R1_FB17_Msk (0x1UL << CAN_F2R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F2R1_FB17 CAN_F2R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F2R1_FB18_Pos (18U) \r
-#define CAN_F2R1_FB18_Msk (0x1UL << CAN_F2R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F2R1_FB18 CAN_F2R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F2R1_FB19_Pos (19U) \r
-#define CAN_F2R1_FB19_Msk (0x1UL << CAN_F2R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F2R1_FB19 CAN_F2R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F2R1_FB20_Pos (20U) \r
-#define CAN_F2R1_FB20_Msk (0x1UL << CAN_F2R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F2R1_FB20 CAN_F2R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F2R1_FB21_Pos (21U) \r
-#define CAN_F2R1_FB21_Msk (0x1UL << CAN_F2R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F2R1_FB21 CAN_F2R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F2R1_FB22_Pos (22U) \r
-#define CAN_F2R1_FB22_Msk (0x1UL << CAN_F2R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F2R1_FB22 CAN_F2R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F2R1_FB23_Pos (23U) \r
-#define CAN_F2R1_FB23_Msk (0x1UL << CAN_F2R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F2R1_FB23 CAN_F2R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F2R1_FB24_Pos (24U) \r
-#define CAN_F2R1_FB24_Msk (0x1UL << CAN_F2R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F2R1_FB24 CAN_F2R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F2R1_FB25_Pos (25U) \r
-#define CAN_F2R1_FB25_Msk (0x1UL << CAN_F2R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F2R1_FB25 CAN_F2R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F2R1_FB26_Pos (26U) \r
-#define CAN_F2R1_FB26_Msk (0x1UL << CAN_F2R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F2R1_FB26 CAN_F2R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F2R1_FB27_Pos (27U) \r
-#define CAN_F2R1_FB27_Msk (0x1UL << CAN_F2R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F2R1_FB27 CAN_F2R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F2R1_FB28_Pos (28U) \r
-#define CAN_F2R1_FB28_Msk (0x1UL << CAN_F2R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F2R1_FB28 CAN_F2R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F2R1_FB29_Pos (29U) \r
-#define CAN_F2R1_FB29_Msk (0x1UL << CAN_F2R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F2R1_FB29 CAN_F2R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F2R1_FB30_Pos (30U) \r
-#define CAN_F2R1_FB30_Msk (0x1UL << CAN_F2R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F2R1_FB30 CAN_F2R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F2R1_FB31_Pos (31U) \r
-#define CAN_F2R1_FB31_Msk (0x1UL << CAN_F2R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F2R1_FB31 CAN_F2R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F3R1 register *******************/\r
-#define CAN_F3R1_FB0_Pos (0U) \r
-#define CAN_F3R1_FB0_Msk (0x1UL << CAN_F3R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F3R1_FB0 CAN_F3R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F3R1_FB1_Pos (1U) \r
-#define CAN_F3R1_FB1_Msk (0x1UL << CAN_F3R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F3R1_FB1 CAN_F3R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F3R1_FB2_Pos (2U) \r
-#define CAN_F3R1_FB2_Msk (0x1UL << CAN_F3R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F3R1_FB2 CAN_F3R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F3R1_FB3_Pos (3U) \r
-#define CAN_F3R1_FB3_Msk (0x1UL << CAN_F3R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F3R1_FB3 CAN_F3R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F3R1_FB4_Pos (4U) \r
-#define CAN_F3R1_FB4_Msk (0x1UL << CAN_F3R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F3R1_FB4 CAN_F3R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F3R1_FB5_Pos (5U) \r
-#define CAN_F3R1_FB5_Msk (0x1UL << CAN_F3R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F3R1_FB5 CAN_F3R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F3R1_FB6_Pos (6U) \r
-#define CAN_F3R1_FB6_Msk (0x1UL << CAN_F3R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F3R1_FB6 CAN_F3R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F3R1_FB7_Pos (7U) \r
-#define CAN_F3R1_FB7_Msk (0x1UL << CAN_F3R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F3R1_FB7 CAN_F3R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F3R1_FB8_Pos (8U) \r
-#define CAN_F3R1_FB8_Msk (0x1UL << CAN_F3R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F3R1_FB8 CAN_F3R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F3R1_FB9_Pos (9U) \r
-#define CAN_F3R1_FB9_Msk (0x1UL << CAN_F3R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F3R1_FB9 CAN_F3R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F3R1_FB10_Pos (10U) \r
-#define CAN_F3R1_FB10_Msk (0x1UL << CAN_F3R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F3R1_FB10 CAN_F3R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F3R1_FB11_Pos (11U) \r
-#define CAN_F3R1_FB11_Msk (0x1UL << CAN_F3R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F3R1_FB11 CAN_F3R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F3R1_FB12_Pos (12U) \r
-#define CAN_F3R1_FB12_Msk (0x1UL << CAN_F3R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F3R1_FB12 CAN_F3R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F3R1_FB13_Pos (13U) \r
-#define CAN_F3R1_FB13_Msk (0x1UL << CAN_F3R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F3R1_FB13 CAN_F3R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F3R1_FB14_Pos (14U) \r
-#define CAN_F3R1_FB14_Msk (0x1UL << CAN_F3R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F3R1_FB14 CAN_F3R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F3R1_FB15_Pos (15U) \r
-#define CAN_F3R1_FB15_Msk (0x1UL << CAN_F3R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F3R1_FB15 CAN_F3R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F3R1_FB16_Pos (16U) \r
-#define CAN_F3R1_FB16_Msk (0x1UL << CAN_F3R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F3R1_FB16 CAN_F3R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F3R1_FB17_Pos (17U) \r
-#define CAN_F3R1_FB17_Msk (0x1UL << CAN_F3R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F3R1_FB17 CAN_F3R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F3R1_FB18_Pos (18U) \r
-#define CAN_F3R1_FB18_Msk (0x1UL << CAN_F3R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F3R1_FB18 CAN_F3R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F3R1_FB19_Pos (19U) \r
-#define CAN_F3R1_FB19_Msk (0x1UL << CAN_F3R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F3R1_FB19 CAN_F3R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F3R1_FB20_Pos (20U) \r
-#define CAN_F3R1_FB20_Msk (0x1UL << CAN_F3R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F3R1_FB20 CAN_F3R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F3R1_FB21_Pos (21U) \r
-#define CAN_F3R1_FB21_Msk (0x1UL << CAN_F3R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F3R1_FB21 CAN_F3R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F3R1_FB22_Pos (22U) \r
-#define CAN_F3R1_FB22_Msk (0x1UL << CAN_F3R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F3R1_FB22 CAN_F3R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F3R1_FB23_Pos (23U) \r
-#define CAN_F3R1_FB23_Msk (0x1UL << CAN_F3R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F3R1_FB23 CAN_F3R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F3R1_FB24_Pos (24U) \r
-#define CAN_F3R1_FB24_Msk (0x1UL << CAN_F3R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F3R1_FB24 CAN_F3R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F3R1_FB25_Pos (25U) \r
-#define CAN_F3R1_FB25_Msk (0x1UL << CAN_F3R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F3R1_FB25 CAN_F3R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F3R1_FB26_Pos (26U) \r
-#define CAN_F3R1_FB26_Msk (0x1UL << CAN_F3R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F3R1_FB26 CAN_F3R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F3R1_FB27_Pos (27U) \r
-#define CAN_F3R1_FB27_Msk (0x1UL << CAN_F3R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F3R1_FB27 CAN_F3R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F3R1_FB28_Pos (28U) \r
-#define CAN_F3R1_FB28_Msk (0x1UL << CAN_F3R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F3R1_FB28 CAN_F3R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F3R1_FB29_Pos (29U) \r
-#define CAN_F3R1_FB29_Msk (0x1UL << CAN_F3R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F3R1_FB29 CAN_F3R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F3R1_FB30_Pos (30U) \r
-#define CAN_F3R1_FB30_Msk (0x1UL << CAN_F3R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F3R1_FB30 CAN_F3R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F3R1_FB31_Pos (31U) \r
-#define CAN_F3R1_FB31_Msk (0x1UL << CAN_F3R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F3R1_FB31 CAN_F3R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F4R1 register *******************/\r
-#define CAN_F4R1_FB0_Pos (0U) \r
-#define CAN_F4R1_FB0_Msk (0x1UL << CAN_F4R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F4R1_FB0 CAN_F4R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F4R1_FB1_Pos (1U) \r
-#define CAN_F4R1_FB1_Msk (0x1UL << CAN_F4R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F4R1_FB1 CAN_F4R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F4R1_FB2_Pos (2U) \r
-#define CAN_F4R1_FB2_Msk (0x1UL << CAN_F4R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F4R1_FB2 CAN_F4R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F4R1_FB3_Pos (3U) \r
-#define CAN_F4R1_FB3_Msk (0x1UL << CAN_F4R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F4R1_FB3 CAN_F4R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F4R1_FB4_Pos (4U) \r
-#define CAN_F4R1_FB4_Msk (0x1UL << CAN_F4R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F4R1_FB4 CAN_F4R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F4R1_FB5_Pos (5U) \r
-#define CAN_F4R1_FB5_Msk (0x1UL << CAN_F4R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F4R1_FB5 CAN_F4R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F4R1_FB6_Pos (6U) \r
-#define CAN_F4R1_FB6_Msk (0x1UL << CAN_F4R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F4R1_FB6 CAN_F4R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F4R1_FB7_Pos (7U) \r
-#define CAN_F4R1_FB7_Msk (0x1UL << CAN_F4R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F4R1_FB7 CAN_F4R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F4R1_FB8_Pos (8U) \r
-#define CAN_F4R1_FB8_Msk (0x1UL << CAN_F4R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F4R1_FB8 CAN_F4R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F4R1_FB9_Pos (9U) \r
-#define CAN_F4R1_FB9_Msk (0x1UL << CAN_F4R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F4R1_FB9 CAN_F4R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F4R1_FB10_Pos (10U) \r
-#define CAN_F4R1_FB10_Msk (0x1UL << CAN_F4R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F4R1_FB10 CAN_F4R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F4R1_FB11_Pos (11U) \r
-#define CAN_F4R1_FB11_Msk (0x1UL << CAN_F4R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F4R1_FB11 CAN_F4R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F4R1_FB12_Pos (12U) \r
-#define CAN_F4R1_FB12_Msk (0x1UL << CAN_F4R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F4R1_FB12 CAN_F4R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F4R1_FB13_Pos (13U) \r
-#define CAN_F4R1_FB13_Msk (0x1UL << CAN_F4R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F4R1_FB13 CAN_F4R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F4R1_FB14_Pos (14U) \r
-#define CAN_F4R1_FB14_Msk (0x1UL << CAN_F4R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F4R1_FB14 CAN_F4R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F4R1_FB15_Pos (15U) \r
-#define CAN_F4R1_FB15_Msk (0x1UL << CAN_F4R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F4R1_FB15 CAN_F4R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F4R1_FB16_Pos (16U) \r
-#define CAN_F4R1_FB16_Msk (0x1UL << CAN_F4R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F4R1_FB16 CAN_F4R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F4R1_FB17_Pos (17U) \r
-#define CAN_F4R1_FB17_Msk (0x1UL << CAN_F4R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F4R1_FB17 CAN_F4R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F4R1_FB18_Pos (18U) \r
-#define CAN_F4R1_FB18_Msk (0x1UL << CAN_F4R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F4R1_FB18 CAN_F4R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F4R1_FB19_Pos (19U) \r
-#define CAN_F4R1_FB19_Msk (0x1UL << CAN_F4R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F4R1_FB19 CAN_F4R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F4R1_FB20_Pos (20U) \r
-#define CAN_F4R1_FB20_Msk (0x1UL << CAN_F4R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F4R1_FB20 CAN_F4R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F4R1_FB21_Pos (21U) \r
-#define CAN_F4R1_FB21_Msk (0x1UL << CAN_F4R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F4R1_FB21 CAN_F4R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F4R1_FB22_Pos (22U) \r
-#define CAN_F4R1_FB22_Msk (0x1UL << CAN_F4R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F4R1_FB22 CAN_F4R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F4R1_FB23_Pos (23U) \r
-#define CAN_F4R1_FB23_Msk (0x1UL << CAN_F4R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F4R1_FB23 CAN_F4R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F4R1_FB24_Pos (24U) \r
-#define CAN_F4R1_FB24_Msk (0x1UL << CAN_F4R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F4R1_FB24 CAN_F4R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F4R1_FB25_Pos (25U) \r
-#define CAN_F4R1_FB25_Msk (0x1UL << CAN_F4R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F4R1_FB25 CAN_F4R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F4R1_FB26_Pos (26U) \r
-#define CAN_F4R1_FB26_Msk (0x1UL << CAN_F4R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F4R1_FB26 CAN_F4R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F4R1_FB27_Pos (27U) \r
-#define CAN_F4R1_FB27_Msk (0x1UL << CAN_F4R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F4R1_FB27 CAN_F4R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F4R1_FB28_Pos (28U) \r
-#define CAN_F4R1_FB28_Msk (0x1UL << CAN_F4R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F4R1_FB28 CAN_F4R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F4R1_FB29_Pos (29U) \r
-#define CAN_F4R1_FB29_Msk (0x1UL << CAN_F4R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F4R1_FB29 CAN_F4R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F4R1_FB30_Pos (30U) \r
-#define CAN_F4R1_FB30_Msk (0x1UL << CAN_F4R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F4R1_FB30 CAN_F4R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F4R1_FB31_Pos (31U) \r
-#define CAN_F4R1_FB31_Msk (0x1UL << CAN_F4R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F4R1_FB31 CAN_F4R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F5R1 register *******************/\r
-#define CAN_F5R1_FB0_Pos (0U) \r
-#define CAN_F5R1_FB0_Msk (0x1UL << CAN_F5R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F5R1_FB0 CAN_F5R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F5R1_FB1_Pos (1U) \r
-#define CAN_F5R1_FB1_Msk (0x1UL << CAN_F5R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F5R1_FB1 CAN_F5R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F5R1_FB2_Pos (2U) \r
-#define CAN_F5R1_FB2_Msk (0x1UL << CAN_F5R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F5R1_FB2 CAN_F5R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F5R1_FB3_Pos (3U) \r
-#define CAN_F5R1_FB3_Msk (0x1UL << CAN_F5R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F5R1_FB3 CAN_F5R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F5R1_FB4_Pos (4U) \r
-#define CAN_F5R1_FB4_Msk (0x1UL << CAN_F5R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F5R1_FB4 CAN_F5R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F5R1_FB5_Pos (5U) \r
-#define CAN_F5R1_FB5_Msk (0x1UL << CAN_F5R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F5R1_FB5 CAN_F5R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F5R1_FB6_Pos (6U) \r
-#define CAN_F5R1_FB6_Msk (0x1UL << CAN_F5R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F5R1_FB6 CAN_F5R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F5R1_FB7_Pos (7U) \r
-#define CAN_F5R1_FB7_Msk (0x1UL << CAN_F5R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F5R1_FB7 CAN_F5R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F5R1_FB8_Pos (8U) \r
-#define CAN_F5R1_FB8_Msk (0x1UL << CAN_F5R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F5R1_FB8 CAN_F5R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F5R1_FB9_Pos (9U) \r
-#define CAN_F5R1_FB9_Msk (0x1UL << CAN_F5R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F5R1_FB9 CAN_F5R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F5R1_FB10_Pos (10U) \r
-#define CAN_F5R1_FB10_Msk (0x1UL << CAN_F5R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F5R1_FB10 CAN_F5R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F5R1_FB11_Pos (11U) \r
-#define CAN_F5R1_FB11_Msk (0x1UL << CAN_F5R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F5R1_FB11 CAN_F5R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F5R1_FB12_Pos (12U) \r
-#define CAN_F5R1_FB12_Msk (0x1UL << CAN_F5R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F5R1_FB12 CAN_F5R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F5R1_FB13_Pos (13U) \r
-#define CAN_F5R1_FB13_Msk (0x1UL << CAN_F5R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F5R1_FB13 CAN_F5R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F5R1_FB14_Pos (14U) \r
-#define CAN_F5R1_FB14_Msk (0x1UL << CAN_F5R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F5R1_FB14 CAN_F5R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F5R1_FB15_Pos (15U) \r
-#define CAN_F5R1_FB15_Msk (0x1UL << CAN_F5R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F5R1_FB15 CAN_F5R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F5R1_FB16_Pos (16U) \r
-#define CAN_F5R1_FB16_Msk (0x1UL << CAN_F5R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F5R1_FB16 CAN_F5R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F5R1_FB17_Pos (17U) \r
-#define CAN_F5R1_FB17_Msk (0x1UL << CAN_F5R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F5R1_FB17 CAN_F5R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F5R1_FB18_Pos (18U) \r
-#define CAN_F5R1_FB18_Msk (0x1UL << CAN_F5R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F5R1_FB18 CAN_F5R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F5R1_FB19_Pos (19U) \r
-#define CAN_F5R1_FB19_Msk (0x1UL << CAN_F5R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F5R1_FB19 CAN_F5R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F5R1_FB20_Pos (20U) \r
-#define CAN_F5R1_FB20_Msk (0x1UL << CAN_F5R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F5R1_FB20 CAN_F5R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F5R1_FB21_Pos (21U) \r
-#define CAN_F5R1_FB21_Msk (0x1UL << CAN_F5R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F5R1_FB21 CAN_F5R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F5R1_FB22_Pos (22U) \r
-#define CAN_F5R1_FB22_Msk (0x1UL << CAN_F5R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F5R1_FB22 CAN_F5R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F5R1_FB23_Pos (23U) \r
-#define CAN_F5R1_FB23_Msk (0x1UL << CAN_F5R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F5R1_FB23 CAN_F5R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F5R1_FB24_Pos (24U) \r
-#define CAN_F5R1_FB24_Msk (0x1UL << CAN_F5R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F5R1_FB24 CAN_F5R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F5R1_FB25_Pos (25U) \r
-#define CAN_F5R1_FB25_Msk (0x1UL << CAN_F5R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F5R1_FB25 CAN_F5R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F5R1_FB26_Pos (26U) \r
-#define CAN_F5R1_FB26_Msk (0x1UL << CAN_F5R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F5R1_FB26 CAN_F5R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F5R1_FB27_Pos (27U) \r
-#define CAN_F5R1_FB27_Msk (0x1UL << CAN_F5R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F5R1_FB27 CAN_F5R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F5R1_FB28_Pos (28U) \r
-#define CAN_F5R1_FB28_Msk (0x1UL << CAN_F5R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F5R1_FB28 CAN_F5R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F5R1_FB29_Pos (29U) \r
-#define CAN_F5R1_FB29_Msk (0x1UL << CAN_F5R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F5R1_FB29 CAN_F5R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F5R1_FB30_Pos (30U) \r
-#define CAN_F5R1_FB30_Msk (0x1UL << CAN_F5R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F5R1_FB30 CAN_F5R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F5R1_FB31_Pos (31U) \r
-#define CAN_F5R1_FB31_Msk (0x1UL << CAN_F5R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F5R1_FB31 CAN_F5R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F6R1 register *******************/\r
-#define CAN_F6R1_FB0_Pos (0U) \r
-#define CAN_F6R1_FB0_Msk (0x1UL << CAN_F6R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F6R1_FB0 CAN_F6R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F6R1_FB1_Pos (1U) \r
-#define CAN_F6R1_FB1_Msk (0x1UL << CAN_F6R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F6R1_FB1 CAN_F6R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F6R1_FB2_Pos (2U) \r
-#define CAN_F6R1_FB2_Msk (0x1UL << CAN_F6R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F6R1_FB2 CAN_F6R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F6R1_FB3_Pos (3U) \r
-#define CAN_F6R1_FB3_Msk (0x1UL << CAN_F6R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F6R1_FB3 CAN_F6R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F6R1_FB4_Pos (4U) \r
-#define CAN_F6R1_FB4_Msk (0x1UL << CAN_F6R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F6R1_FB4 CAN_F6R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F6R1_FB5_Pos (5U) \r
-#define CAN_F6R1_FB5_Msk (0x1UL << CAN_F6R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F6R1_FB5 CAN_F6R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F6R1_FB6_Pos (6U) \r
-#define CAN_F6R1_FB6_Msk (0x1UL << CAN_F6R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F6R1_FB6 CAN_F6R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F6R1_FB7_Pos (7U) \r
-#define CAN_F6R1_FB7_Msk (0x1UL << CAN_F6R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F6R1_FB7 CAN_F6R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F6R1_FB8_Pos (8U) \r
-#define CAN_F6R1_FB8_Msk (0x1UL << CAN_F6R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F6R1_FB8 CAN_F6R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F6R1_FB9_Pos (9U) \r
-#define CAN_F6R1_FB9_Msk (0x1UL << CAN_F6R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F6R1_FB9 CAN_F6R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F6R1_FB10_Pos (10U) \r
-#define CAN_F6R1_FB10_Msk (0x1UL << CAN_F6R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F6R1_FB10 CAN_F6R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F6R1_FB11_Pos (11U) \r
-#define CAN_F6R1_FB11_Msk (0x1UL << CAN_F6R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F6R1_FB11 CAN_F6R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F6R1_FB12_Pos (12U) \r
-#define CAN_F6R1_FB12_Msk (0x1UL << CAN_F6R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F6R1_FB12 CAN_F6R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F6R1_FB13_Pos (13U) \r
-#define CAN_F6R1_FB13_Msk (0x1UL << CAN_F6R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F6R1_FB13 CAN_F6R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F6R1_FB14_Pos (14U) \r
-#define CAN_F6R1_FB14_Msk (0x1UL << CAN_F6R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F6R1_FB14 CAN_F6R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F6R1_FB15_Pos (15U) \r
-#define CAN_F6R1_FB15_Msk (0x1UL << CAN_F6R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F6R1_FB15 CAN_F6R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F6R1_FB16_Pos (16U) \r
-#define CAN_F6R1_FB16_Msk (0x1UL << CAN_F6R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F6R1_FB16 CAN_F6R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F6R1_FB17_Pos (17U) \r
-#define CAN_F6R1_FB17_Msk (0x1UL << CAN_F6R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F6R1_FB17 CAN_F6R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F6R1_FB18_Pos (18U) \r
-#define CAN_F6R1_FB18_Msk (0x1UL << CAN_F6R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F6R1_FB18 CAN_F6R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F6R1_FB19_Pos (19U) \r
-#define CAN_F6R1_FB19_Msk (0x1UL << CAN_F6R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F6R1_FB19 CAN_F6R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F6R1_FB20_Pos (20U) \r
-#define CAN_F6R1_FB20_Msk (0x1UL << CAN_F6R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F6R1_FB20 CAN_F6R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F6R1_FB21_Pos (21U) \r
-#define CAN_F6R1_FB21_Msk (0x1UL << CAN_F6R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F6R1_FB21 CAN_F6R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F6R1_FB22_Pos (22U) \r
-#define CAN_F6R1_FB22_Msk (0x1UL << CAN_F6R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F6R1_FB22 CAN_F6R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F6R1_FB23_Pos (23U) \r
-#define CAN_F6R1_FB23_Msk (0x1UL << CAN_F6R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F6R1_FB23 CAN_F6R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F6R1_FB24_Pos (24U) \r
-#define CAN_F6R1_FB24_Msk (0x1UL << CAN_F6R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F6R1_FB24 CAN_F6R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F6R1_FB25_Pos (25U) \r
-#define CAN_F6R1_FB25_Msk (0x1UL << CAN_F6R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F6R1_FB25 CAN_F6R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F6R1_FB26_Pos (26U) \r
-#define CAN_F6R1_FB26_Msk (0x1UL << CAN_F6R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F6R1_FB26 CAN_F6R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F6R1_FB27_Pos (27U) \r
-#define CAN_F6R1_FB27_Msk (0x1UL << CAN_F6R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F6R1_FB27 CAN_F6R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F6R1_FB28_Pos (28U) \r
-#define CAN_F6R1_FB28_Msk (0x1UL << CAN_F6R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F6R1_FB28 CAN_F6R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F6R1_FB29_Pos (29U) \r
-#define CAN_F6R1_FB29_Msk (0x1UL << CAN_F6R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F6R1_FB29 CAN_F6R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F6R1_FB30_Pos (30U) \r
-#define CAN_F6R1_FB30_Msk (0x1UL << CAN_F6R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F6R1_FB30 CAN_F6R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F6R1_FB31_Pos (31U) \r
-#define CAN_F6R1_FB31_Msk (0x1UL << CAN_F6R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F6R1_FB31 CAN_F6R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F7R1 register *******************/\r
-#define CAN_F7R1_FB0_Pos (0U) \r
-#define CAN_F7R1_FB0_Msk (0x1UL << CAN_F7R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F7R1_FB0 CAN_F7R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F7R1_FB1_Pos (1U) \r
-#define CAN_F7R1_FB1_Msk (0x1UL << CAN_F7R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F7R1_FB1 CAN_F7R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F7R1_FB2_Pos (2U) \r
-#define CAN_F7R1_FB2_Msk (0x1UL << CAN_F7R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F7R1_FB2 CAN_F7R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F7R1_FB3_Pos (3U) \r
-#define CAN_F7R1_FB3_Msk (0x1UL << CAN_F7R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F7R1_FB3 CAN_F7R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F7R1_FB4_Pos (4U) \r
-#define CAN_F7R1_FB4_Msk (0x1UL << CAN_F7R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F7R1_FB4 CAN_F7R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F7R1_FB5_Pos (5U) \r
-#define CAN_F7R1_FB5_Msk (0x1UL << CAN_F7R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F7R1_FB5 CAN_F7R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F7R1_FB6_Pos (6U) \r
-#define CAN_F7R1_FB6_Msk (0x1UL << CAN_F7R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F7R1_FB6 CAN_F7R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F7R1_FB7_Pos (7U) \r
-#define CAN_F7R1_FB7_Msk (0x1UL << CAN_F7R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F7R1_FB7 CAN_F7R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F7R1_FB8_Pos (8U) \r
-#define CAN_F7R1_FB8_Msk (0x1UL << CAN_F7R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F7R1_FB8 CAN_F7R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F7R1_FB9_Pos (9U) \r
-#define CAN_F7R1_FB9_Msk (0x1UL << CAN_F7R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F7R1_FB9 CAN_F7R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F7R1_FB10_Pos (10U) \r
-#define CAN_F7R1_FB10_Msk (0x1UL << CAN_F7R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F7R1_FB10 CAN_F7R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F7R1_FB11_Pos (11U) \r
-#define CAN_F7R1_FB11_Msk (0x1UL << CAN_F7R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F7R1_FB11 CAN_F7R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F7R1_FB12_Pos (12U) \r
-#define CAN_F7R1_FB12_Msk (0x1UL << CAN_F7R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F7R1_FB12 CAN_F7R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F7R1_FB13_Pos (13U) \r
-#define CAN_F7R1_FB13_Msk (0x1UL << CAN_F7R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F7R1_FB13 CAN_F7R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F7R1_FB14_Pos (14U) \r
-#define CAN_F7R1_FB14_Msk (0x1UL << CAN_F7R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F7R1_FB14 CAN_F7R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F7R1_FB15_Pos (15U) \r
-#define CAN_F7R1_FB15_Msk (0x1UL << CAN_F7R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F7R1_FB15 CAN_F7R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F7R1_FB16_Pos (16U) \r
-#define CAN_F7R1_FB16_Msk (0x1UL << CAN_F7R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F7R1_FB16 CAN_F7R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F7R1_FB17_Pos (17U) \r
-#define CAN_F7R1_FB17_Msk (0x1UL << CAN_F7R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F7R1_FB17 CAN_F7R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F7R1_FB18_Pos (18U) \r
-#define CAN_F7R1_FB18_Msk (0x1UL << CAN_F7R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F7R1_FB18 CAN_F7R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F7R1_FB19_Pos (19U) \r
-#define CAN_F7R1_FB19_Msk (0x1UL << CAN_F7R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F7R1_FB19 CAN_F7R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F7R1_FB20_Pos (20U) \r
-#define CAN_F7R1_FB20_Msk (0x1UL << CAN_F7R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F7R1_FB20 CAN_F7R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F7R1_FB21_Pos (21U) \r
-#define CAN_F7R1_FB21_Msk (0x1UL << CAN_F7R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F7R1_FB21 CAN_F7R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F7R1_FB22_Pos (22U) \r
-#define CAN_F7R1_FB22_Msk (0x1UL << CAN_F7R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F7R1_FB22 CAN_F7R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F7R1_FB23_Pos (23U) \r
-#define CAN_F7R1_FB23_Msk (0x1UL << CAN_F7R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F7R1_FB23 CAN_F7R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F7R1_FB24_Pos (24U) \r
-#define CAN_F7R1_FB24_Msk (0x1UL << CAN_F7R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F7R1_FB24 CAN_F7R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F7R1_FB25_Pos (25U) \r
-#define CAN_F7R1_FB25_Msk (0x1UL << CAN_F7R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F7R1_FB25 CAN_F7R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F7R1_FB26_Pos (26U) \r
-#define CAN_F7R1_FB26_Msk (0x1UL << CAN_F7R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F7R1_FB26 CAN_F7R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F7R1_FB27_Pos (27U) \r
-#define CAN_F7R1_FB27_Msk (0x1UL << CAN_F7R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F7R1_FB27 CAN_F7R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F7R1_FB28_Pos (28U) \r
-#define CAN_F7R1_FB28_Msk (0x1UL << CAN_F7R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F7R1_FB28 CAN_F7R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F7R1_FB29_Pos (29U) \r
-#define CAN_F7R1_FB29_Msk (0x1UL << CAN_F7R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F7R1_FB29 CAN_F7R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F7R1_FB30_Pos (30U) \r
-#define CAN_F7R1_FB30_Msk (0x1UL << CAN_F7R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F7R1_FB30 CAN_F7R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F7R1_FB31_Pos (31U) \r
-#define CAN_F7R1_FB31_Msk (0x1UL << CAN_F7R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F7R1_FB31 CAN_F7R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F8R1 register *******************/\r
-#define CAN_F8R1_FB0_Pos (0U) \r
-#define CAN_F8R1_FB0_Msk (0x1UL << CAN_F8R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F8R1_FB0 CAN_F8R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F8R1_FB1_Pos (1U) \r
-#define CAN_F8R1_FB1_Msk (0x1UL << CAN_F8R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F8R1_FB1 CAN_F8R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F8R1_FB2_Pos (2U) \r
-#define CAN_F8R1_FB2_Msk (0x1UL << CAN_F8R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F8R1_FB2 CAN_F8R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F8R1_FB3_Pos (3U) \r
-#define CAN_F8R1_FB3_Msk (0x1UL << CAN_F8R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F8R1_FB3 CAN_F8R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F8R1_FB4_Pos (4U) \r
-#define CAN_F8R1_FB4_Msk (0x1UL << CAN_F8R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F8R1_FB4 CAN_F8R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F8R1_FB5_Pos (5U) \r
-#define CAN_F8R1_FB5_Msk (0x1UL << CAN_F8R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F8R1_FB5 CAN_F8R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F8R1_FB6_Pos (6U) \r
-#define CAN_F8R1_FB6_Msk (0x1UL << CAN_F8R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F8R1_FB6 CAN_F8R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F8R1_FB7_Pos (7U) \r
-#define CAN_F8R1_FB7_Msk (0x1UL << CAN_F8R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F8R1_FB7 CAN_F8R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F8R1_FB8_Pos (8U) \r
-#define CAN_F8R1_FB8_Msk (0x1UL << CAN_F8R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F8R1_FB8 CAN_F8R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F8R1_FB9_Pos (9U) \r
-#define CAN_F8R1_FB9_Msk (0x1UL << CAN_F8R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F8R1_FB9 CAN_F8R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F8R1_FB10_Pos (10U) \r
-#define CAN_F8R1_FB10_Msk (0x1UL << CAN_F8R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F8R1_FB10 CAN_F8R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F8R1_FB11_Pos (11U) \r
-#define CAN_F8R1_FB11_Msk (0x1UL << CAN_F8R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F8R1_FB11 CAN_F8R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F8R1_FB12_Pos (12U) \r
-#define CAN_F8R1_FB12_Msk (0x1UL << CAN_F8R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F8R1_FB12 CAN_F8R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F8R1_FB13_Pos (13U) \r
-#define CAN_F8R1_FB13_Msk (0x1UL << CAN_F8R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F8R1_FB13 CAN_F8R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F8R1_FB14_Pos (14U) \r
-#define CAN_F8R1_FB14_Msk (0x1UL << CAN_F8R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F8R1_FB14 CAN_F8R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F8R1_FB15_Pos (15U) \r
-#define CAN_F8R1_FB15_Msk (0x1UL << CAN_F8R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F8R1_FB15 CAN_F8R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F8R1_FB16_Pos (16U) \r
-#define CAN_F8R1_FB16_Msk (0x1UL << CAN_F8R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F8R1_FB16 CAN_F8R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F8R1_FB17_Pos (17U) \r
-#define CAN_F8R1_FB17_Msk (0x1UL << CAN_F8R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F8R1_FB17 CAN_F8R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F8R1_FB18_Pos (18U) \r
-#define CAN_F8R1_FB18_Msk (0x1UL << CAN_F8R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F8R1_FB18 CAN_F8R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F8R1_FB19_Pos (19U) \r
-#define CAN_F8R1_FB19_Msk (0x1UL << CAN_F8R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F8R1_FB19 CAN_F8R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F8R1_FB20_Pos (20U) \r
-#define CAN_F8R1_FB20_Msk (0x1UL << CAN_F8R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F8R1_FB20 CAN_F8R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F8R1_FB21_Pos (21U) \r
-#define CAN_F8R1_FB21_Msk (0x1UL << CAN_F8R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F8R1_FB21 CAN_F8R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F8R1_FB22_Pos (22U) \r
-#define CAN_F8R1_FB22_Msk (0x1UL << CAN_F8R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F8R1_FB22 CAN_F8R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F8R1_FB23_Pos (23U) \r
-#define CAN_F8R1_FB23_Msk (0x1UL << CAN_F8R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F8R1_FB23 CAN_F8R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F8R1_FB24_Pos (24U) \r
-#define CAN_F8R1_FB24_Msk (0x1UL << CAN_F8R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F8R1_FB24 CAN_F8R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F8R1_FB25_Pos (25U) \r
-#define CAN_F8R1_FB25_Msk (0x1UL << CAN_F8R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F8R1_FB25 CAN_F8R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F8R1_FB26_Pos (26U) \r
-#define CAN_F8R1_FB26_Msk (0x1UL << CAN_F8R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F8R1_FB26 CAN_F8R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F8R1_FB27_Pos (27U) \r
-#define CAN_F8R1_FB27_Msk (0x1UL << CAN_F8R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F8R1_FB27 CAN_F8R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F8R1_FB28_Pos (28U) \r
-#define CAN_F8R1_FB28_Msk (0x1UL << CAN_F8R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F8R1_FB28 CAN_F8R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F8R1_FB29_Pos (29U) \r
-#define CAN_F8R1_FB29_Msk (0x1UL << CAN_F8R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F8R1_FB29 CAN_F8R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F8R1_FB30_Pos (30U) \r
-#define CAN_F8R1_FB30_Msk (0x1UL << CAN_F8R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F8R1_FB30 CAN_F8R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F8R1_FB31_Pos (31U) \r
-#define CAN_F8R1_FB31_Msk (0x1UL << CAN_F8R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F8R1_FB31 CAN_F8R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F9R1 register *******************/\r
-#define CAN_F9R1_FB0_Pos (0U) \r
-#define CAN_F9R1_FB0_Msk (0x1UL << CAN_F9R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F9R1_FB0 CAN_F9R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F9R1_FB1_Pos (1U) \r
-#define CAN_F9R1_FB1_Msk (0x1UL << CAN_F9R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F9R1_FB1 CAN_F9R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F9R1_FB2_Pos (2U) \r
-#define CAN_F9R1_FB2_Msk (0x1UL << CAN_F9R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F9R1_FB2 CAN_F9R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F9R1_FB3_Pos (3U) \r
-#define CAN_F9R1_FB3_Msk (0x1UL << CAN_F9R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F9R1_FB3 CAN_F9R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F9R1_FB4_Pos (4U) \r
-#define CAN_F9R1_FB4_Msk (0x1UL << CAN_F9R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F9R1_FB4 CAN_F9R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F9R1_FB5_Pos (5U) \r
-#define CAN_F9R1_FB5_Msk (0x1UL << CAN_F9R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F9R1_FB5 CAN_F9R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F9R1_FB6_Pos (6U) \r
-#define CAN_F9R1_FB6_Msk (0x1UL << CAN_F9R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F9R1_FB6 CAN_F9R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F9R1_FB7_Pos (7U) \r
-#define CAN_F9R1_FB7_Msk (0x1UL << CAN_F9R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F9R1_FB7 CAN_F9R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F9R1_FB8_Pos (8U) \r
-#define CAN_F9R1_FB8_Msk (0x1UL << CAN_F9R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F9R1_FB8 CAN_F9R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F9R1_FB9_Pos (9U) \r
-#define CAN_F9R1_FB9_Msk (0x1UL << CAN_F9R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F9R1_FB9 CAN_F9R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F9R1_FB10_Pos (10U) \r
-#define CAN_F9R1_FB10_Msk (0x1UL << CAN_F9R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F9R1_FB10 CAN_F9R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F9R1_FB11_Pos (11U) \r
-#define CAN_F9R1_FB11_Msk (0x1UL << CAN_F9R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F9R1_FB11 CAN_F9R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F9R1_FB12_Pos (12U) \r
-#define CAN_F9R1_FB12_Msk (0x1UL << CAN_F9R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F9R1_FB12 CAN_F9R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F9R1_FB13_Pos (13U) \r
-#define CAN_F9R1_FB13_Msk (0x1UL << CAN_F9R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F9R1_FB13 CAN_F9R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F9R1_FB14_Pos (14U) \r
-#define CAN_F9R1_FB14_Msk (0x1UL << CAN_F9R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F9R1_FB14 CAN_F9R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F9R1_FB15_Pos (15U) \r
-#define CAN_F9R1_FB15_Msk (0x1UL << CAN_F9R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F9R1_FB15 CAN_F9R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F9R1_FB16_Pos (16U) \r
-#define CAN_F9R1_FB16_Msk (0x1UL << CAN_F9R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F9R1_FB16 CAN_F9R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F9R1_FB17_Pos (17U) \r
-#define CAN_F9R1_FB17_Msk (0x1UL << CAN_F9R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F9R1_FB17 CAN_F9R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F9R1_FB18_Pos (18U) \r
-#define CAN_F9R1_FB18_Msk (0x1UL << CAN_F9R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F9R1_FB18 CAN_F9R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F9R1_FB19_Pos (19U) \r
-#define CAN_F9R1_FB19_Msk (0x1UL << CAN_F9R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F9R1_FB19 CAN_F9R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F9R1_FB20_Pos (20U) \r
-#define CAN_F9R1_FB20_Msk (0x1UL << CAN_F9R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F9R1_FB20 CAN_F9R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F9R1_FB21_Pos (21U) \r
-#define CAN_F9R1_FB21_Msk (0x1UL << CAN_F9R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F9R1_FB21 CAN_F9R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F9R1_FB22_Pos (22U) \r
-#define CAN_F9R1_FB22_Msk (0x1UL << CAN_F9R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F9R1_FB22 CAN_F9R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F9R1_FB23_Pos (23U) \r
-#define CAN_F9R1_FB23_Msk (0x1UL << CAN_F9R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F9R1_FB23 CAN_F9R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F9R1_FB24_Pos (24U) \r
-#define CAN_F9R1_FB24_Msk (0x1UL << CAN_F9R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F9R1_FB24 CAN_F9R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F9R1_FB25_Pos (25U) \r
-#define CAN_F9R1_FB25_Msk (0x1UL << CAN_F9R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F9R1_FB25 CAN_F9R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F9R1_FB26_Pos (26U) \r
-#define CAN_F9R1_FB26_Msk (0x1UL << CAN_F9R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F9R1_FB26 CAN_F9R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F9R1_FB27_Pos (27U) \r
-#define CAN_F9R1_FB27_Msk (0x1UL << CAN_F9R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F9R1_FB27 CAN_F9R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F9R1_FB28_Pos (28U) \r
-#define CAN_F9R1_FB28_Msk (0x1UL << CAN_F9R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F9R1_FB28 CAN_F9R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F9R1_FB29_Pos (29U) \r
-#define CAN_F9R1_FB29_Msk (0x1UL << CAN_F9R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F9R1_FB29 CAN_F9R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F9R1_FB30_Pos (30U) \r
-#define CAN_F9R1_FB30_Msk (0x1UL << CAN_F9R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F9R1_FB30 CAN_F9R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F9R1_FB31_Pos (31U) \r
-#define CAN_F9R1_FB31_Msk (0x1UL << CAN_F9R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F9R1_FB31 CAN_F9R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F10R1 register ******************/\r
-#define CAN_F10R1_FB0_Pos (0U) \r
-#define CAN_F10R1_FB0_Msk (0x1UL << CAN_F10R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F10R1_FB0 CAN_F10R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F10R1_FB1_Pos (1U) \r
-#define CAN_F10R1_FB1_Msk (0x1UL << CAN_F10R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F10R1_FB1 CAN_F10R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F10R1_FB2_Pos (2U) \r
-#define CAN_F10R1_FB2_Msk (0x1UL << CAN_F10R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F10R1_FB2 CAN_F10R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F10R1_FB3_Pos (3U) \r
-#define CAN_F10R1_FB3_Msk (0x1UL << CAN_F10R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F10R1_FB3 CAN_F10R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F10R1_FB4_Pos (4U) \r
-#define CAN_F10R1_FB4_Msk (0x1UL << CAN_F10R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F10R1_FB4 CAN_F10R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F10R1_FB5_Pos (5U) \r
-#define CAN_F10R1_FB5_Msk (0x1UL << CAN_F10R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F10R1_FB5 CAN_F10R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F10R1_FB6_Pos (6U) \r
-#define CAN_F10R1_FB6_Msk (0x1UL << CAN_F10R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F10R1_FB6 CAN_F10R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F10R1_FB7_Pos (7U) \r
-#define CAN_F10R1_FB7_Msk (0x1UL << CAN_F10R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F10R1_FB7 CAN_F10R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F10R1_FB8_Pos (8U) \r
-#define CAN_F10R1_FB8_Msk (0x1UL << CAN_F10R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F10R1_FB8 CAN_F10R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F10R1_FB9_Pos (9U) \r
-#define CAN_F10R1_FB9_Msk (0x1UL << CAN_F10R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F10R1_FB9 CAN_F10R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F10R1_FB10_Pos (10U) \r
-#define CAN_F10R1_FB10_Msk (0x1UL << CAN_F10R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F10R1_FB10 CAN_F10R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F10R1_FB11_Pos (11U) \r
-#define CAN_F10R1_FB11_Msk (0x1UL << CAN_F10R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F10R1_FB11 CAN_F10R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F10R1_FB12_Pos (12U) \r
-#define CAN_F10R1_FB12_Msk (0x1UL << CAN_F10R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F10R1_FB12 CAN_F10R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F10R1_FB13_Pos (13U) \r
-#define CAN_F10R1_FB13_Msk (0x1UL << CAN_F10R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F10R1_FB13 CAN_F10R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F10R1_FB14_Pos (14U) \r
-#define CAN_F10R1_FB14_Msk (0x1UL << CAN_F10R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F10R1_FB14 CAN_F10R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F10R1_FB15_Pos (15U) \r
-#define CAN_F10R1_FB15_Msk (0x1UL << CAN_F10R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F10R1_FB15 CAN_F10R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F10R1_FB16_Pos (16U) \r
-#define CAN_F10R1_FB16_Msk (0x1UL << CAN_F10R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F10R1_FB16 CAN_F10R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F10R1_FB17_Pos (17U) \r
-#define CAN_F10R1_FB17_Msk (0x1UL << CAN_F10R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F10R1_FB17 CAN_F10R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F10R1_FB18_Pos (18U) \r
-#define CAN_F10R1_FB18_Msk (0x1UL << CAN_F10R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F10R1_FB18 CAN_F10R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F10R1_FB19_Pos (19U) \r
-#define CAN_F10R1_FB19_Msk (0x1UL << CAN_F10R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F10R1_FB19 CAN_F10R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F10R1_FB20_Pos (20U) \r
-#define CAN_F10R1_FB20_Msk (0x1UL << CAN_F10R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F10R1_FB20 CAN_F10R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F10R1_FB21_Pos (21U) \r
-#define CAN_F10R1_FB21_Msk (0x1UL << CAN_F10R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F10R1_FB21 CAN_F10R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F10R1_FB22_Pos (22U) \r
-#define CAN_F10R1_FB22_Msk (0x1UL << CAN_F10R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F10R1_FB22 CAN_F10R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F10R1_FB23_Pos (23U) \r
-#define CAN_F10R1_FB23_Msk (0x1UL << CAN_F10R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F10R1_FB23 CAN_F10R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F10R1_FB24_Pos (24U) \r
-#define CAN_F10R1_FB24_Msk (0x1UL << CAN_F10R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F10R1_FB24 CAN_F10R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F10R1_FB25_Pos (25U) \r
-#define CAN_F10R1_FB25_Msk (0x1UL << CAN_F10R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F10R1_FB25 CAN_F10R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F10R1_FB26_Pos (26U) \r
-#define CAN_F10R1_FB26_Msk (0x1UL << CAN_F10R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F10R1_FB26 CAN_F10R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F10R1_FB27_Pos (27U) \r
-#define CAN_F10R1_FB27_Msk (0x1UL << CAN_F10R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F10R1_FB27 CAN_F10R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F10R1_FB28_Pos (28U) \r
-#define CAN_F10R1_FB28_Msk (0x1UL << CAN_F10R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F10R1_FB28 CAN_F10R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F10R1_FB29_Pos (29U) \r
-#define CAN_F10R1_FB29_Msk (0x1UL << CAN_F10R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F10R1_FB29 CAN_F10R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F10R1_FB30_Pos (30U) \r
-#define CAN_F10R1_FB30_Msk (0x1UL << CAN_F10R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F10R1_FB30 CAN_F10R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F10R1_FB31_Pos (31U) \r
-#define CAN_F10R1_FB31_Msk (0x1UL << CAN_F10R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F10R1_FB31 CAN_F10R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F11R1 register ******************/\r
-#define CAN_F11R1_FB0_Pos (0U) \r
-#define CAN_F11R1_FB0_Msk (0x1UL << CAN_F11R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F11R1_FB0 CAN_F11R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F11R1_FB1_Pos (1U) \r
-#define CAN_F11R1_FB1_Msk (0x1UL << CAN_F11R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F11R1_FB1 CAN_F11R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F11R1_FB2_Pos (2U) \r
-#define CAN_F11R1_FB2_Msk (0x1UL << CAN_F11R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F11R1_FB2 CAN_F11R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F11R1_FB3_Pos (3U) \r
-#define CAN_F11R1_FB3_Msk (0x1UL << CAN_F11R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F11R1_FB3 CAN_F11R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F11R1_FB4_Pos (4U) \r
-#define CAN_F11R1_FB4_Msk (0x1UL << CAN_F11R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F11R1_FB4 CAN_F11R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F11R1_FB5_Pos (5U) \r
-#define CAN_F11R1_FB5_Msk (0x1UL << CAN_F11R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F11R1_FB5 CAN_F11R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F11R1_FB6_Pos (6U) \r
-#define CAN_F11R1_FB6_Msk (0x1UL << CAN_F11R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F11R1_FB6 CAN_F11R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F11R1_FB7_Pos (7U) \r
-#define CAN_F11R1_FB7_Msk (0x1UL << CAN_F11R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F11R1_FB7 CAN_F11R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F11R1_FB8_Pos (8U) \r
-#define CAN_F11R1_FB8_Msk (0x1UL << CAN_F11R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F11R1_FB8 CAN_F11R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F11R1_FB9_Pos (9U) \r
-#define CAN_F11R1_FB9_Msk (0x1UL << CAN_F11R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F11R1_FB9 CAN_F11R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F11R1_FB10_Pos (10U) \r
-#define CAN_F11R1_FB10_Msk (0x1UL << CAN_F11R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F11R1_FB10 CAN_F11R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F11R1_FB11_Pos (11U) \r
-#define CAN_F11R1_FB11_Msk (0x1UL << CAN_F11R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F11R1_FB11 CAN_F11R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F11R1_FB12_Pos (12U) \r
-#define CAN_F11R1_FB12_Msk (0x1UL << CAN_F11R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F11R1_FB12 CAN_F11R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F11R1_FB13_Pos (13U) \r
-#define CAN_F11R1_FB13_Msk (0x1UL << CAN_F11R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F11R1_FB13 CAN_F11R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F11R1_FB14_Pos (14U) \r
-#define CAN_F11R1_FB14_Msk (0x1UL << CAN_F11R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F11R1_FB14 CAN_F11R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F11R1_FB15_Pos (15U) \r
-#define CAN_F11R1_FB15_Msk (0x1UL << CAN_F11R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F11R1_FB15 CAN_F11R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F11R1_FB16_Pos (16U) \r
-#define CAN_F11R1_FB16_Msk (0x1UL << CAN_F11R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F11R1_FB16 CAN_F11R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F11R1_FB17_Pos (17U) \r
-#define CAN_F11R1_FB17_Msk (0x1UL << CAN_F11R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F11R1_FB17 CAN_F11R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F11R1_FB18_Pos (18U) \r
-#define CAN_F11R1_FB18_Msk (0x1UL << CAN_F11R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F11R1_FB18 CAN_F11R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F11R1_FB19_Pos (19U) \r
-#define CAN_F11R1_FB19_Msk (0x1UL << CAN_F11R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F11R1_FB19 CAN_F11R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F11R1_FB20_Pos (20U) \r
-#define CAN_F11R1_FB20_Msk (0x1UL << CAN_F11R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F11R1_FB20 CAN_F11R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F11R1_FB21_Pos (21U) \r
-#define CAN_F11R1_FB21_Msk (0x1UL << CAN_F11R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F11R1_FB21 CAN_F11R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F11R1_FB22_Pos (22U) \r
-#define CAN_F11R1_FB22_Msk (0x1UL << CAN_F11R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F11R1_FB22 CAN_F11R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F11R1_FB23_Pos (23U) \r
-#define CAN_F11R1_FB23_Msk (0x1UL << CAN_F11R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F11R1_FB23 CAN_F11R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F11R1_FB24_Pos (24U) \r
-#define CAN_F11R1_FB24_Msk (0x1UL << CAN_F11R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F11R1_FB24 CAN_F11R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F11R1_FB25_Pos (25U) \r
-#define CAN_F11R1_FB25_Msk (0x1UL << CAN_F11R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F11R1_FB25 CAN_F11R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F11R1_FB26_Pos (26U) \r
-#define CAN_F11R1_FB26_Msk (0x1UL << CAN_F11R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F11R1_FB26 CAN_F11R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F11R1_FB27_Pos (27U) \r
-#define CAN_F11R1_FB27_Msk (0x1UL << CAN_F11R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F11R1_FB27 CAN_F11R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F11R1_FB28_Pos (28U) \r
-#define CAN_F11R1_FB28_Msk (0x1UL << CAN_F11R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F11R1_FB28 CAN_F11R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F11R1_FB29_Pos (29U) \r
-#define CAN_F11R1_FB29_Msk (0x1UL << CAN_F11R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F11R1_FB29 CAN_F11R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F11R1_FB30_Pos (30U) \r
-#define CAN_F11R1_FB30_Msk (0x1UL << CAN_F11R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F11R1_FB30 CAN_F11R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F11R1_FB31_Pos (31U) \r
-#define CAN_F11R1_FB31_Msk (0x1UL << CAN_F11R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F11R1_FB31 CAN_F11R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F12R1 register ******************/\r
-#define CAN_F12R1_FB0_Pos (0U) \r
-#define CAN_F12R1_FB0_Msk (0x1UL << CAN_F12R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F12R1_FB0 CAN_F12R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F12R1_FB1_Pos (1U) \r
-#define CAN_F12R1_FB1_Msk (0x1UL << CAN_F12R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F12R1_FB1 CAN_F12R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F12R1_FB2_Pos (2U) \r
-#define CAN_F12R1_FB2_Msk (0x1UL << CAN_F12R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F12R1_FB2 CAN_F12R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F12R1_FB3_Pos (3U) \r
-#define CAN_F12R1_FB3_Msk (0x1UL << CAN_F12R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F12R1_FB3 CAN_F12R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F12R1_FB4_Pos (4U) \r
-#define CAN_F12R1_FB4_Msk (0x1UL << CAN_F12R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F12R1_FB4 CAN_F12R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F12R1_FB5_Pos (5U) \r
-#define CAN_F12R1_FB5_Msk (0x1UL << CAN_F12R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F12R1_FB5 CAN_F12R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F12R1_FB6_Pos (6U) \r
-#define CAN_F12R1_FB6_Msk (0x1UL << CAN_F12R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F12R1_FB6 CAN_F12R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F12R1_FB7_Pos (7U) \r
-#define CAN_F12R1_FB7_Msk (0x1UL << CAN_F12R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F12R1_FB7 CAN_F12R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F12R1_FB8_Pos (8U) \r
-#define CAN_F12R1_FB8_Msk (0x1UL << CAN_F12R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F12R1_FB8 CAN_F12R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F12R1_FB9_Pos (9U) \r
-#define CAN_F12R1_FB9_Msk (0x1UL << CAN_F12R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F12R1_FB9 CAN_F12R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F12R1_FB10_Pos (10U) \r
-#define CAN_F12R1_FB10_Msk (0x1UL << CAN_F12R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F12R1_FB10 CAN_F12R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F12R1_FB11_Pos (11U) \r
-#define CAN_F12R1_FB11_Msk (0x1UL << CAN_F12R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F12R1_FB11 CAN_F12R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F12R1_FB12_Pos (12U) \r
-#define CAN_F12R1_FB12_Msk (0x1UL << CAN_F12R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F12R1_FB12 CAN_F12R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F12R1_FB13_Pos (13U) \r
-#define CAN_F12R1_FB13_Msk (0x1UL << CAN_F12R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F12R1_FB13 CAN_F12R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F12R1_FB14_Pos (14U) \r
-#define CAN_F12R1_FB14_Msk (0x1UL << CAN_F12R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F12R1_FB14 CAN_F12R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F12R1_FB15_Pos (15U) \r
-#define CAN_F12R1_FB15_Msk (0x1UL << CAN_F12R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F12R1_FB15 CAN_F12R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F12R1_FB16_Pos (16U) \r
-#define CAN_F12R1_FB16_Msk (0x1UL << CAN_F12R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F12R1_FB16 CAN_F12R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F12R1_FB17_Pos (17U) \r
-#define CAN_F12R1_FB17_Msk (0x1UL << CAN_F12R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F12R1_FB17 CAN_F12R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F12R1_FB18_Pos (18U) \r
-#define CAN_F12R1_FB18_Msk (0x1UL << CAN_F12R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F12R1_FB18 CAN_F12R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F12R1_FB19_Pos (19U) \r
-#define CAN_F12R1_FB19_Msk (0x1UL << CAN_F12R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F12R1_FB19 CAN_F12R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F12R1_FB20_Pos (20U) \r
-#define CAN_F12R1_FB20_Msk (0x1UL << CAN_F12R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F12R1_FB20 CAN_F12R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F12R1_FB21_Pos (21U) \r
-#define CAN_F12R1_FB21_Msk (0x1UL << CAN_F12R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F12R1_FB21 CAN_F12R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F12R1_FB22_Pos (22U) \r
-#define CAN_F12R1_FB22_Msk (0x1UL << CAN_F12R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F12R1_FB22 CAN_F12R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F12R1_FB23_Pos (23U) \r
-#define CAN_F12R1_FB23_Msk (0x1UL << CAN_F12R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F12R1_FB23 CAN_F12R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F12R1_FB24_Pos (24U) \r
-#define CAN_F12R1_FB24_Msk (0x1UL << CAN_F12R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F12R1_FB24 CAN_F12R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F12R1_FB25_Pos (25U) \r
-#define CAN_F12R1_FB25_Msk (0x1UL << CAN_F12R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F12R1_FB25 CAN_F12R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F12R1_FB26_Pos (26U) \r
-#define CAN_F12R1_FB26_Msk (0x1UL << CAN_F12R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F12R1_FB26 CAN_F12R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F12R1_FB27_Pos (27U) \r
-#define CAN_F12R1_FB27_Msk (0x1UL << CAN_F12R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F12R1_FB27 CAN_F12R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F12R1_FB28_Pos (28U) \r
-#define CAN_F12R1_FB28_Msk (0x1UL << CAN_F12R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F12R1_FB28 CAN_F12R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F12R1_FB29_Pos (29U) \r
-#define CAN_F12R1_FB29_Msk (0x1UL << CAN_F12R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F12R1_FB29 CAN_F12R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F12R1_FB30_Pos (30U) \r
-#define CAN_F12R1_FB30_Msk (0x1UL << CAN_F12R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F12R1_FB30 CAN_F12R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F12R1_FB31_Pos (31U) \r
-#define CAN_F12R1_FB31_Msk (0x1UL << CAN_F12R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F12R1_FB31 CAN_F12R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F13R1 register ******************/\r
-#define CAN_F13R1_FB0_Pos (0U) \r
-#define CAN_F13R1_FB0_Msk (0x1UL << CAN_F13R1_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F13R1_FB0 CAN_F13R1_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F13R1_FB1_Pos (1U) \r
-#define CAN_F13R1_FB1_Msk (0x1UL << CAN_F13R1_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F13R1_FB1 CAN_F13R1_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F13R1_FB2_Pos (2U) \r
-#define CAN_F13R1_FB2_Msk (0x1UL << CAN_F13R1_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F13R1_FB2 CAN_F13R1_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F13R1_FB3_Pos (3U) \r
-#define CAN_F13R1_FB3_Msk (0x1UL << CAN_F13R1_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F13R1_FB3 CAN_F13R1_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F13R1_FB4_Pos (4U) \r
-#define CAN_F13R1_FB4_Msk (0x1UL << CAN_F13R1_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F13R1_FB4 CAN_F13R1_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F13R1_FB5_Pos (5U) \r
-#define CAN_F13R1_FB5_Msk (0x1UL << CAN_F13R1_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F13R1_FB5 CAN_F13R1_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F13R1_FB6_Pos (6U) \r
-#define CAN_F13R1_FB6_Msk (0x1UL << CAN_F13R1_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F13R1_FB6 CAN_F13R1_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F13R1_FB7_Pos (7U) \r
-#define CAN_F13R1_FB7_Msk (0x1UL << CAN_F13R1_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F13R1_FB7 CAN_F13R1_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F13R1_FB8_Pos (8U) \r
-#define CAN_F13R1_FB8_Msk (0x1UL << CAN_F13R1_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F13R1_FB8 CAN_F13R1_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F13R1_FB9_Pos (9U) \r
-#define CAN_F13R1_FB9_Msk (0x1UL << CAN_F13R1_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F13R1_FB9 CAN_F13R1_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F13R1_FB10_Pos (10U) \r
-#define CAN_F13R1_FB10_Msk (0x1UL << CAN_F13R1_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F13R1_FB10 CAN_F13R1_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F13R1_FB11_Pos (11U) \r
-#define CAN_F13R1_FB11_Msk (0x1UL << CAN_F13R1_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F13R1_FB11 CAN_F13R1_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F13R1_FB12_Pos (12U) \r
-#define CAN_F13R1_FB12_Msk (0x1UL << CAN_F13R1_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F13R1_FB12 CAN_F13R1_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F13R1_FB13_Pos (13U) \r
-#define CAN_F13R1_FB13_Msk (0x1UL << CAN_F13R1_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F13R1_FB13 CAN_F13R1_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F13R1_FB14_Pos (14U) \r
-#define CAN_F13R1_FB14_Msk (0x1UL << CAN_F13R1_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F13R1_FB14 CAN_F13R1_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F13R1_FB15_Pos (15U) \r
-#define CAN_F13R1_FB15_Msk (0x1UL << CAN_F13R1_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F13R1_FB15 CAN_F13R1_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F13R1_FB16_Pos (16U) \r
-#define CAN_F13R1_FB16_Msk (0x1UL << CAN_F13R1_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F13R1_FB16 CAN_F13R1_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F13R1_FB17_Pos (17U) \r
-#define CAN_F13R1_FB17_Msk (0x1UL << CAN_F13R1_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F13R1_FB17 CAN_F13R1_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F13R1_FB18_Pos (18U) \r
-#define CAN_F13R1_FB18_Msk (0x1UL << CAN_F13R1_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F13R1_FB18 CAN_F13R1_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F13R1_FB19_Pos (19U) \r
-#define CAN_F13R1_FB19_Msk (0x1UL << CAN_F13R1_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F13R1_FB19 CAN_F13R1_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F13R1_FB20_Pos (20U) \r
-#define CAN_F13R1_FB20_Msk (0x1UL << CAN_F13R1_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F13R1_FB20 CAN_F13R1_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F13R1_FB21_Pos (21U) \r
-#define CAN_F13R1_FB21_Msk (0x1UL << CAN_F13R1_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F13R1_FB21 CAN_F13R1_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F13R1_FB22_Pos (22U) \r
-#define CAN_F13R1_FB22_Msk (0x1UL << CAN_F13R1_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F13R1_FB22 CAN_F13R1_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F13R1_FB23_Pos (23U) \r
-#define CAN_F13R1_FB23_Msk (0x1UL << CAN_F13R1_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F13R1_FB23 CAN_F13R1_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F13R1_FB24_Pos (24U) \r
-#define CAN_F13R1_FB24_Msk (0x1UL << CAN_F13R1_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F13R1_FB24 CAN_F13R1_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F13R1_FB25_Pos (25U) \r
-#define CAN_F13R1_FB25_Msk (0x1UL << CAN_F13R1_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F13R1_FB25 CAN_F13R1_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F13R1_FB26_Pos (26U) \r
-#define CAN_F13R1_FB26_Msk (0x1UL << CAN_F13R1_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F13R1_FB26 CAN_F13R1_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F13R1_FB27_Pos (27U) \r
-#define CAN_F13R1_FB27_Msk (0x1UL << CAN_F13R1_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F13R1_FB27 CAN_F13R1_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F13R1_FB28_Pos (28U) \r
-#define CAN_F13R1_FB28_Msk (0x1UL << CAN_F13R1_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F13R1_FB28 CAN_F13R1_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F13R1_FB29_Pos (29U) \r
-#define CAN_F13R1_FB29_Msk (0x1UL << CAN_F13R1_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F13R1_FB29 CAN_F13R1_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F13R1_FB30_Pos (30U) \r
-#define CAN_F13R1_FB30_Msk (0x1UL << CAN_F13R1_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F13R1_FB30 CAN_F13R1_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F13R1_FB31_Pos (31U) \r
-#define CAN_F13R1_FB31_Msk (0x1UL << CAN_F13R1_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F13R1_FB31 CAN_F13R1_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F0R2 register *******************/\r
-#define CAN_F0R2_FB0_Pos (0U) \r
-#define CAN_F0R2_FB0_Msk (0x1UL << CAN_F0R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F0R2_FB0 CAN_F0R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F0R2_FB1_Pos (1U) \r
-#define CAN_F0R2_FB1_Msk (0x1UL << CAN_F0R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F0R2_FB1 CAN_F0R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F0R2_FB2_Pos (2U) \r
-#define CAN_F0R2_FB2_Msk (0x1UL << CAN_F0R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F0R2_FB2 CAN_F0R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F0R2_FB3_Pos (3U) \r
-#define CAN_F0R2_FB3_Msk (0x1UL << CAN_F0R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F0R2_FB3 CAN_F0R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F0R2_FB4_Pos (4U) \r
-#define CAN_F0R2_FB4_Msk (0x1UL << CAN_F0R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F0R2_FB4 CAN_F0R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F0R2_FB5_Pos (5U) \r
-#define CAN_F0R2_FB5_Msk (0x1UL << CAN_F0R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F0R2_FB5 CAN_F0R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F0R2_FB6_Pos (6U) \r
-#define CAN_F0R2_FB6_Msk (0x1UL << CAN_F0R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F0R2_FB6 CAN_F0R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F0R2_FB7_Pos (7U) \r
-#define CAN_F0R2_FB7_Msk (0x1UL << CAN_F0R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F0R2_FB7 CAN_F0R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F0R2_FB8_Pos (8U) \r
-#define CAN_F0R2_FB8_Msk (0x1UL << CAN_F0R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F0R2_FB8 CAN_F0R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F0R2_FB9_Pos (9U) \r
-#define CAN_F0R2_FB9_Msk (0x1UL << CAN_F0R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F0R2_FB9 CAN_F0R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F0R2_FB10_Pos (10U) \r
-#define CAN_F0R2_FB10_Msk (0x1UL << CAN_F0R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F0R2_FB10 CAN_F0R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F0R2_FB11_Pos (11U) \r
-#define CAN_F0R2_FB11_Msk (0x1UL << CAN_F0R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F0R2_FB11 CAN_F0R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F0R2_FB12_Pos (12U) \r
-#define CAN_F0R2_FB12_Msk (0x1UL << CAN_F0R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F0R2_FB12 CAN_F0R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F0R2_FB13_Pos (13U) \r
-#define CAN_F0R2_FB13_Msk (0x1UL << CAN_F0R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F0R2_FB13 CAN_F0R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F0R2_FB14_Pos (14U) \r
-#define CAN_F0R2_FB14_Msk (0x1UL << CAN_F0R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F0R2_FB14 CAN_F0R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F0R2_FB15_Pos (15U) \r
-#define CAN_F0R2_FB15_Msk (0x1UL << CAN_F0R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F0R2_FB15 CAN_F0R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F0R2_FB16_Pos (16U) \r
-#define CAN_F0R2_FB16_Msk (0x1UL << CAN_F0R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F0R2_FB16 CAN_F0R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F0R2_FB17_Pos (17U) \r
-#define CAN_F0R2_FB17_Msk (0x1UL << CAN_F0R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F0R2_FB17 CAN_F0R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F0R2_FB18_Pos (18U) \r
-#define CAN_F0R2_FB18_Msk (0x1UL << CAN_F0R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F0R2_FB18 CAN_F0R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F0R2_FB19_Pos (19U) \r
-#define CAN_F0R2_FB19_Msk (0x1UL << CAN_F0R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F0R2_FB19 CAN_F0R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F0R2_FB20_Pos (20U) \r
-#define CAN_F0R2_FB20_Msk (0x1UL << CAN_F0R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F0R2_FB20 CAN_F0R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F0R2_FB21_Pos (21U) \r
-#define CAN_F0R2_FB21_Msk (0x1UL << CAN_F0R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F0R2_FB21 CAN_F0R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F0R2_FB22_Pos (22U) \r
-#define CAN_F0R2_FB22_Msk (0x1UL << CAN_F0R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F0R2_FB22 CAN_F0R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F0R2_FB23_Pos (23U) \r
-#define CAN_F0R2_FB23_Msk (0x1UL << CAN_F0R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F0R2_FB23 CAN_F0R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F0R2_FB24_Pos (24U) \r
-#define CAN_F0R2_FB24_Msk (0x1UL << CAN_F0R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F0R2_FB24 CAN_F0R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F0R2_FB25_Pos (25U) \r
-#define CAN_F0R2_FB25_Msk (0x1UL << CAN_F0R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F0R2_FB25 CAN_F0R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F0R2_FB26_Pos (26U) \r
-#define CAN_F0R2_FB26_Msk (0x1UL << CAN_F0R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F0R2_FB26 CAN_F0R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F0R2_FB27_Pos (27U) \r
-#define CAN_F0R2_FB27_Msk (0x1UL << CAN_F0R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F0R2_FB27 CAN_F0R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F0R2_FB28_Pos (28U) \r
-#define CAN_F0R2_FB28_Msk (0x1UL << CAN_F0R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F0R2_FB28 CAN_F0R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F0R2_FB29_Pos (29U) \r
-#define CAN_F0R2_FB29_Msk (0x1UL << CAN_F0R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F0R2_FB29 CAN_F0R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F0R2_FB30_Pos (30U) \r
-#define CAN_F0R2_FB30_Msk (0x1UL << CAN_F0R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F0R2_FB30 CAN_F0R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F0R2_FB31_Pos (31U) \r
-#define CAN_F0R2_FB31_Msk (0x1UL << CAN_F0R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F0R2_FB31 CAN_F0R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F1R2 register *******************/\r
-#define CAN_F1R2_FB0_Pos (0U) \r
-#define CAN_F1R2_FB0_Msk (0x1UL << CAN_F1R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F1R2_FB0 CAN_F1R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F1R2_FB1_Pos (1U) \r
-#define CAN_F1R2_FB1_Msk (0x1UL << CAN_F1R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F1R2_FB1 CAN_F1R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F1R2_FB2_Pos (2U) \r
-#define CAN_F1R2_FB2_Msk (0x1UL << CAN_F1R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F1R2_FB2 CAN_F1R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F1R2_FB3_Pos (3U) \r
-#define CAN_F1R2_FB3_Msk (0x1UL << CAN_F1R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F1R2_FB3 CAN_F1R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F1R2_FB4_Pos (4U) \r
-#define CAN_F1R2_FB4_Msk (0x1UL << CAN_F1R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F1R2_FB4 CAN_F1R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F1R2_FB5_Pos (5U) \r
-#define CAN_F1R2_FB5_Msk (0x1UL << CAN_F1R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F1R2_FB5 CAN_F1R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F1R2_FB6_Pos (6U) \r
-#define CAN_F1R2_FB6_Msk (0x1UL << CAN_F1R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F1R2_FB6 CAN_F1R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F1R2_FB7_Pos (7U) \r
-#define CAN_F1R2_FB7_Msk (0x1UL << CAN_F1R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F1R2_FB7 CAN_F1R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F1R2_FB8_Pos (8U) \r
-#define CAN_F1R2_FB8_Msk (0x1UL << CAN_F1R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F1R2_FB8 CAN_F1R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F1R2_FB9_Pos (9U) \r
-#define CAN_F1R2_FB9_Msk (0x1UL << CAN_F1R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F1R2_FB9 CAN_F1R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F1R2_FB10_Pos (10U) \r
-#define CAN_F1R2_FB10_Msk (0x1UL << CAN_F1R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F1R2_FB10 CAN_F1R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F1R2_FB11_Pos (11U) \r
-#define CAN_F1R2_FB11_Msk (0x1UL << CAN_F1R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F1R2_FB11 CAN_F1R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F1R2_FB12_Pos (12U) \r
-#define CAN_F1R2_FB12_Msk (0x1UL << CAN_F1R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F1R2_FB12 CAN_F1R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F1R2_FB13_Pos (13U) \r
-#define CAN_F1R2_FB13_Msk (0x1UL << CAN_F1R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F1R2_FB13 CAN_F1R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F1R2_FB14_Pos (14U) \r
-#define CAN_F1R2_FB14_Msk (0x1UL << CAN_F1R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F1R2_FB14 CAN_F1R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F1R2_FB15_Pos (15U) \r
-#define CAN_F1R2_FB15_Msk (0x1UL << CAN_F1R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F1R2_FB15 CAN_F1R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F1R2_FB16_Pos (16U) \r
-#define CAN_F1R2_FB16_Msk (0x1UL << CAN_F1R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F1R2_FB16 CAN_F1R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F1R2_FB17_Pos (17U) \r
-#define CAN_F1R2_FB17_Msk (0x1UL << CAN_F1R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F1R2_FB17 CAN_F1R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F1R2_FB18_Pos (18U) \r
-#define CAN_F1R2_FB18_Msk (0x1UL << CAN_F1R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F1R2_FB18 CAN_F1R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F1R2_FB19_Pos (19U) \r
-#define CAN_F1R2_FB19_Msk (0x1UL << CAN_F1R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F1R2_FB19 CAN_F1R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F1R2_FB20_Pos (20U) \r
-#define CAN_F1R2_FB20_Msk (0x1UL << CAN_F1R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F1R2_FB20 CAN_F1R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F1R2_FB21_Pos (21U) \r
-#define CAN_F1R2_FB21_Msk (0x1UL << CAN_F1R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F1R2_FB21 CAN_F1R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F1R2_FB22_Pos (22U) \r
-#define CAN_F1R2_FB22_Msk (0x1UL << CAN_F1R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F1R2_FB22 CAN_F1R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F1R2_FB23_Pos (23U) \r
-#define CAN_F1R2_FB23_Msk (0x1UL << CAN_F1R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F1R2_FB23 CAN_F1R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F1R2_FB24_Pos (24U) \r
-#define CAN_F1R2_FB24_Msk (0x1UL << CAN_F1R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F1R2_FB24 CAN_F1R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F1R2_FB25_Pos (25U) \r
-#define CAN_F1R2_FB25_Msk (0x1UL << CAN_F1R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F1R2_FB25 CAN_F1R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F1R2_FB26_Pos (26U) \r
-#define CAN_F1R2_FB26_Msk (0x1UL << CAN_F1R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F1R2_FB26 CAN_F1R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F1R2_FB27_Pos (27U) \r
-#define CAN_F1R2_FB27_Msk (0x1UL << CAN_F1R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F1R2_FB27 CAN_F1R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F1R2_FB28_Pos (28U) \r
-#define CAN_F1R2_FB28_Msk (0x1UL << CAN_F1R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F1R2_FB28 CAN_F1R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F1R2_FB29_Pos (29U) \r
-#define CAN_F1R2_FB29_Msk (0x1UL << CAN_F1R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F1R2_FB29 CAN_F1R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F1R2_FB30_Pos (30U) \r
-#define CAN_F1R2_FB30_Msk (0x1UL << CAN_F1R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F1R2_FB30 CAN_F1R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F1R2_FB31_Pos (31U) \r
-#define CAN_F1R2_FB31_Msk (0x1UL << CAN_F1R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F1R2_FB31 CAN_F1R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F2R2 register *******************/\r
-#define CAN_F2R2_FB0_Pos (0U) \r
-#define CAN_F2R2_FB0_Msk (0x1UL << CAN_F2R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F2R2_FB0 CAN_F2R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F2R2_FB1_Pos (1U) \r
-#define CAN_F2R2_FB1_Msk (0x1UL << CAN_F2R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F2R2_FB1 CAN_F2R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F2R2_FB2_Pos (2U) \r
-#define CAN_F2R2_FB2_Msk (0x1UL << CAN_F2R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F2R2_FB2 CAN_F2R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F2R2_FB3_Pos (3U) \r
-#define CAN_F2R2_FB3_Msk (0x1UL << CAN_F2R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F2R2_FB3 CAN_F2R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F2R2_FB4_Pos (4U) \r
-#define CAN_F2R2_FB4_Msk (0x1UL << CAN_F2R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F2R2_FB4 CAN_F2R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F2R2_FB5_Pos (5U) \r
-#define CAN_F2R2_FB5_Msk (0x1UL << CAN_F2R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F2R2_FB5 CAN_F2R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F2R2_FB6_Pos (6U) \r
-#define CAN_F2R2_FB6_Msk (0x1UL << CAN_F2R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F2R2_FB6 CAN_F2R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F2R2_FB7_Pos (7U) \r
-#define CAN_F2R2_FB7_Msk (0x1UL << CAN_F2R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F2R2_FB7 CAN_F2R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F2R2_FB8_Pos (8U) \r
-#define CAN_F2R2_FB8_Msk (0x1UL << CAN_F2R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F2R2_FB8 CAN_F2R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F2R2_FB9_Pos (9U) \r
-#define CAN_F2R2_FB9_Msk (0x1UL << CAN_F2R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F2R2_FB9 CAN_F2R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F2R2_FB10_Pos (10U) \r
-#define CAN_F2R2_FB10_Msk (0x1UL << CAN_F2R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F2R2_FB10 CAN_F2R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F2R2_FB11_Pos (11U) \r
-#define CAN_F2R2_FB11_Msk (0x1UL << CAN_F2R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F2R2_FB11 CAN_F2R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F2R2_FB12_Pos (12U) \r
-#define CAN_F2R2_FB12_Msk (0x1UL << CAN_F2R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F2R2_FB12 CAN_F2R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F2R2_FB13_Pos (13U) \r
-#define CAN_F2R2_FB13_Msk (0x1UL << CAN_F2R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F2R2_FB13 CAN_F2R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F2R2_FB14_Pos (14U) \r
-#define CAN_F2R2_FB14_Msk (0x1UL << CAN_F2R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F2R2_FB14 CAN_F2R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F2R2_FB15_Pos (15U) \r
-#define CAN_F2R2_FB15_Msk (0x1UL << CAN_F2R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F2R2_FB15 CAN_F2R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F2R2_FB16_Pos (16U) \r
-#define CAN_F2R2_FB16_Msk (0x1UL << CAN_F2R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F2R2_FB16 CAN_F2R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F2R2_FB17_Pos (17U) \r
-#define CAN_F2R2_FB17_Msk (0x1UL << CAN_F2R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F2R2_FB17 CAN_F2R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F2R2_FB18_Pos (18U) \r
-#define CAN_F2R2_FB18_Msk (0x1UL << CAN_F2R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F2R2_FB18 CAN_F2R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F2R2_FB19_Pos (19U) \r
-#define CAN_F2R2_FB19_Msk (0x1UL << CAN_F2R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F2R2_FB19 CAN_F2R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F2R2_FB20_Pos (20U) \r
-#define CAN_F2R2_FB20_Msk (0x1UL << CAN_F2R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F2R2_FB20 CAN_F2R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F2R2_FB21_Pos (21U) \r
-#define CAN_F2R2_FB21_Msk (0x1UL << CAN_F2R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F2R2_FB21 CAN_F2R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F2R2_FB22_Pos (22U) \r
-#define CAN_F2R2_FB22_Msk (0x1UL << CAN_F2R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F2R2_FB22 CAN_F2R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F2R2_FB23_Pos (23U) \r
-#define CAN_F2R2_FB23_Msk (0x1UL << CAN_F2R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F2R2_FB23 CAN_F2R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F2R2_FB24_Pos (24U) \r
-#define CAN_F2R2_FB24_Msk (0x1UL << CAN_F2R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F2R2_FB24 CAN_F2R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F2R2_FB25_Pos (25U) \r
-#define CAN_F2R2_FB25_Msk (0x1UL << CAN_F2R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F2R2_FB25 CAN_F2R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F2R2_FB26_Pos (26U) \r
-#define CAN_F2R2_FB26_Msk (0x1UL << CAN_F2R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F2R2_FB26 CAN_F2R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F2R2_FB27_Pos (27U) \r
-#define CAN_F2R2_FB27_Msk (0x1UL << CAN_F2R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F2R2_FB27 CAN_F2R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F2R2_FB28_Pos (28U) \r
-#define CAN_F2R2_FB28_Msk (0x1UL << CAN_F2R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F2R2_FB28 CAN_F2R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F2R2_FB29_Pos (29U) \r
-#define CAN_F2R2_FB29_Msk (0x1UL << CAN_F2R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F2R2_FB29 CAN_F2R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F2R2_FB30_Pos (30U) \r
-#define CAN_F2R2_FB30_Msk (0x1UL << CAN_F2R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F2R2_FB30 CAN_F2R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F2R2_FB31_Pos (31U) \r
-#define CAN_F2R2_FB31_Msk (0x1UL << CAN_F2R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F2R2_FB31 CAN_F2R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F3R2 register *******************/\r
-#define CAN_F3R2_FB0_Pos (0U) \r
-#define CAN_F3R2_FB0_Msk (0x1UL << CAN_F3R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F3R2_FB0 CAN_F3R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F3R2_FB1_Pos (1U) \r
-#define CAN_F3R2_FB1_Msk (0x1UL << CAN_F3R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F3R2_FB1 CAN_F3R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F3R2_FB2_Pos (2U) \r
-#define CAN_F3R2_FB2_Msk (0x1UL << CAN_F3R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F3R2_FB2 CAN_F3R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F3R2_FB3_Pos (3U) \r
-#define CAN_F3R2_FB3_Msk (0x1UL << CAN_F3R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F3R2_FB3 CAN_F3R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F3R2_FB4_Pos (4U) \r
-#define CAN_F3R2_FB4_Msk (0x1UL << CAN_F3R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F3R2_FB4 CAN_F3R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F3R2_FB5_Pos (5U) \r
-#define CAN_F3R2_FB5_Msk (0x1UL << CAN_F3R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F3R2_FB5 CAN_F3R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F3R2_FB6_Pos (6U) \r
-#define CAN_F3R2_FB6_Msk (0x1UL << CAN_F3R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F3R2_FB6 CAN_F3R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F3R2_FB7_Pos (7U) \r
-#define CAN_F3R2_FB7_Msk (0x1UL << CAN_F3R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F3R2_FB7 CAN_F3R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F3R2_FB8_Pos (8U) \r
-#define CAN_F3R2_FB8_Msk (0x1UL << CAN_F3R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F3R2_FB8 CAN_F3R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F3R2_FB9_Pos (9U) \r
-#define CAN_F3R2_FB9_Msk (0x1UL << CAN_F3R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F3R2_FB9 CAN_F3R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F3R2_FB10_Pos (10U) \r
-#define CAN_F3R2_FB10_Msk (0x1UL << CAN_F3R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F3R2_FB10 CAN_F3R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F3R2_FB11_Pos (11U) \r
-#define CAN_F3R2_FB11_Msk (0x1UL << CAN_F3R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F3R2_FB11 CAN_F3R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F3R2_FB12_Pos (12U) \r
-#define CAN_F3R2_FB12_Msk (0x1UL << CAN_F3R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F3R2_FB12 CAN_F3R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F3R2_FB13_Pos (13U) \r
-#define CAN_F3R2_FB13_Msk (0x1UL << CAN_F3R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F3R2_FB13 CAN_F3R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F3R2_FB14_Pos (14U) \r
-#define CAN_F3R2_FB14_Msk (0x1UL << CAN_F3R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F3R2_FB14 CAN_F3R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F3R2_FB15_Pos (15U) \r
-#define CAN_F3R2_FB15_Msk (0x1UL << CAN_F3R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F3R2_FB15 CAN_F3R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F3R2_FB16_Pos (16U) \r
-#define CAN_F3R2_FB16_Msk (0x1UL << CAN_F3R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F3R2_FB16 CAN_F3R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F3R2_FB17_Pos (17U) \r
-#define CAN_F3R2_FB17_Msk (0x1UL << CAN_F3R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F3R2_FB17 CAN_F3R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F3R2_FB18_Pos (18U) \r
-#define CAN_F3R2_FB18_Msk (0x1UL << CAN_F3R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F3R2_FB18 CAN_F3R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F3R2_FB19_Pos (19U) \r
-#define CAN_F3R2_FB19_Msk (0x1UL << CAN_F3R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F3R2_FB19 CAN_F3R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F3R2_FB20_Pos (20U) \r
-#define CAN_F3R2_FB20_Msk (0x1UL << CAN_F3R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F3R2_FB20 CAN_F3R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F3R2_FB21_Pos (21U) \r
-#define CAN_F3R2_FB21_Msk (0x1UL << CAN_F3R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F3R2_FB21 CAN_F3R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F3R2_FB22_Pos (22U) \r
-#define CAN_F3R2_FB22_Msk (0x1UL << CAN_F3R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F3R2_FB22 CAN_F3R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F3R2_FB23_Pos (23U) \r
-#define CAN_F3R2_FB23_Msk (0x1UL << CAN_F3R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F3R2_FB23 CAN_F3R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F3R2_FB24_Pos (24U) \r
-#define CAN_F3R2_FB24_Msk (0x1UL << CAN_F3R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F3R2_FB24 CAN_F3R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F3R2_FB25_Pos (25U) \r
-#define CAN_F3R2_FB25_Msk (0x1UL << CAN_F3R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F3R2_FB25 CAN_F3R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F3R2_FB26_Pos (26U) \r
-#define CAN_F3R2_FB26_Msk (0x1UL << CAN_F3R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F3R2_FB26 CAN_F3R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F3R2_FB27_Pos (27U) \r
-#define CAN_F3R2_FB27_Msk (0x1UL << CAN_F3R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F3R2_FB27 CAN_F3R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F3R2_FB28_Pos (28U) \r
-#define CAN_F3R2_FB28_Msk (0x1UL << CAN_F3R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F3R2_FB28 CAN_F3R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F3R2_FB29_Pos (29U) \r
-#define CAN_F3R2_FB29_Msk (0x1UL << CAN_F3R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F3R2_FB29 CAN_F3R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F3R2_FB30_Pos (30U) \r
-#define CAN_F3R2_FB30_Msk (0x1UL << CAN_F3R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F3R2_FB30 CAN_F3R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F3R2_FB31_Pos (31U) \r
-#define CAN_F3R2_FB31_Msk (0x1UL << CAN_F3R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F3R2_FB31 CAN_F3R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F4R2 register *******************/\r
-#define CAN_F4R2_FB0_Pos (0U) \r
-#define CAN_F4R2_FB0_Msk (0x1UL << CAN_F4R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F4R2_FB0 CAN_F4R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F4R2_FB1_Pos (1U) \r
-#define CAN_F4R2_FB1_Msk (0x1UL << CAN_F4R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F4R2_FB1 CAN_F4R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F4R2_FB2_Pos (2U) \r
-#define CAN_F4R2_FB2_Msk (0x1UL << CAN_F4R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F4R2_FB2 CAN_F4R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F4R2_FB3_Pos (3U) \r
-#define CAN_F4R2_FB3_Msk (0x1UL << CAN_F4R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F4R2_FB3 CAN_F4R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F4R2_FB4_Pos (4U) \r
-#define CAN_F4R2_FB4_Msk (0x1UL << CAN_F4R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F4R2_FB4 CAN_F4R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F4R2_FB5_Pos (5U) \r
-#define CAN_F4R2_FB5_Msk (0x1UL << CAN_F4R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F4R2_FB5 CAN_F4R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F4R2_FB6_Pos (6U) \r
-#define CAN_F4R2_FB6_Msk (0x1UL << CAN_F4R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F4R2_FB6 CAN_F4R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F4R2_FB7_Pos (7U) \r
-#define CAN_F4R2_FB7_Msk (0x1UL << CAN_F4R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F4R2_FB7 CAN_F4R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F4R2_FB8_Pos (8U) \r
-#define CAN_F4R2_FB8_Msk (0x1UL << CAN_F4R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F4R2_FB8 CAN_F4R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F4R2_FB9_Pos (9U) \r
-#define CAN_F4R2_FB9_Msk (0x1UL << CAN_F4R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F4R2_FB9 CAN_F4R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F4R2_FB10_Pos (10U) \r
-#define CAN_F4R2_FB10_Msk (0x1UL << CAN_F4R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F4R2_FB10 CAN_F4R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F4R2_FB11_Pos (11U) \r
-#define CAN_F4R2_FB11_Msk (0x1UL << CAN_F4R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F4R2_FB11 CAN_F4R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F4R2_FB12_Pos (12U) \r
-#define CAN_F4R2_FB12_Msk (0x1UL << CAN_F4R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F4R2_FB12 CAN_F4R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F4R2_FB13_Pos (13U) \r
-#define CAN_F4R2_FB13_Msk (0x1UL << CAN_F4R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F4R2_FB13 CAN_F4R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F4R2_FB14_Pos (14U) \r
-#define CAN_F4R2_FB14_Msk (0x1UL << CAN_F4R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F4R2_FB14 CAN_F4R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F4R2_FB15_Pos (15U) \r
-#define CAN_F4R2_FB15_Msk (0x1UL << CAN_F4R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F4R2_FB15 CAN_F4R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F4R2_FB16_Pos (16U) \r
-#define CAN_F4R2_FB16_Msk (0x1UL << CAN_F4R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F4R2_FB16 CAN_F4R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F4R2_FB17_Pos (17U) \r
-#define CAN_F4R2_FB17_Msk (0x1UL << CAN_F4R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F4R2_FB17 CAN_F4R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F4R2_FB18_Pos (18U) \r
-#define CAN_F4R2_FB18_Msk (0x1UL << CAN_F4R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F4R2_FB18 CAN_F4R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F4R2_FB19_Pos (19U) \r
-#define CAN_F4R2_FB19_Msk (0x1UL << CAN_F4R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F4R2_FB19 CAN_F4R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F4R2_FB20_Pos (20U) \r
-#define CAN_F4R2_FB20_Msk (0x1UL << CAN_F4R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F4R2_FB20 CAN_F4R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F4R2_FB21_Pos (21U) \r
-#define CAN_F4R2_FB21_Msk (0x1UL << CAN_F4R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F4R2_FB21 CAN_F4R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F4R2_FB22_Pos (22U) \r
-#define CAN_F4R2_FB22_Msk (0x1UL << CAN_F4R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F4R2_FB22 CAN_F4R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F4R2_FB23_Pos (23U) \r
-#define CAN_F4R2_FB23_Msk (0x1UL << CAN_F4R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F4R2_FB23 CAN_F4R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F4R2_FB24_Pos (24U) \r
-#define CAN_F4R2_FB24_Msk (0x1UL << CAN_F4R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F4R2_FB24 CAN_F4R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F4R2_FB25_Pos (25U) \r
-#define CAN_F4R2_FB25_Msk (0x1UL << CAN_F4R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F4R2_FB25 CAN_F4R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F4R2_FB26_Pos (26U) \r
-#define CAN_F4R2_FB26_Msk (0x1UL << CAN_F4R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F4R2_FB26 CAN_F4R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F4R2_FB27_Pos (27U) \r
-#define CAN_F4R2_FB27_Msk (0x1UL << CAN_F4R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F4R2_FB27 CAN_F4R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F4R2_FB28_Pos (28U) \r
-#define CAN_F4R2_FB28_Msk (0x1UL << CAN_F4R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F4R2_FB28 CAN_F4R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F4R2_FB29_Pos (29U) \r
-#define CAN_F4R2_FB29_Msk (0x1UL << CAN_F4R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F4R2_FB29 CAN_F4R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F4R2_FB30_Pos (30U) \r
-#define CAN_F4R2_FB30_Msk (0x1UL << CAN_F4R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F4R2_FB30 CAN_F4R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F4R2_FB31_Pos (31U) \r
-#define CAN_F4R2_FB31_Msk (0x1UL << CAN_F4R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F4R2_FB31 CAN_F4R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F5R2 register *******************/\r
-#define CAN_F5R2_FB0_Pos (0U) \r
-#define CAN_F5R2_FB0_Msk (0x1UL << CAN_F5R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F5R2_FB0 CAN_F5R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F5R2_FB1_Pos (1U) \r
-#define CAN_F5R2_FB1_Msk (0x1UL << CAN_F5R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F5R2_FB1 CAN_F5R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F5R2_FB2_Pos (2U) \r
-#define CAN_F5R2_FB2_Msk (0x1UL << CAN_F5R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F5R2_FB2 CAN_F5R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F5R2_FB3_Pos (3U) \r
-#define CAN_F5R2_FB3_Msk (0x1UL << CAN_F5R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F5R2_FB3 CAN_F5R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F5R2_FB4_Pos (4U) \r
-#define CAN_F5R2_FB4_Msk (0x1UL << CAN_F5R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F5R2_FB4 CAN_F5R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F5R2_FB5_Pos (5U) \r
-#define CAN_F5R2_FB5_Msk (0x1UL << CAN_F5R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F5R2_FB5 CAN_F5R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F5R2_FB6_Pos (6U) \r
-#define CAN_F5R2_FB6_Msk (0x1UL << CAN_F5R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F5R2_FB6 CAN_F5R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F5R2_FB7_Pos (7U) \r
-#define CAN_F5R2_FB7_Msk (0x1UL << CAN_F5R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F5R2_FB7 CAN_F5R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F5R2_FB8_Pos (8U) \r
-#define CAN_F5R2_FB8_Msk (0x1UL << CAN_F5R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F5R2_FB8 CAN_F5R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F5R2_FB9_Pos (9U) \r
-#define CAN_F5R2_FB9_Msk (0x1UL << CAN_F5R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F5R2_FB9 CAN_F5R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F5R2_FB10_Pos (10U) \r
-#define CAN_F5R2_FB10_Msk (0x1UL << CAN_F5R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F5R2_FB10 CAN_F5R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F5R2_FB11_Pos (11U) \r
-#define CAN_F5R2_FB11_Msk (0x1UL << CAN_F5R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F5R2_FB11 CAN_F5R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F5R2_FB12_Pos (12U) \r
-#define CAN_F5R2_FB12_Msk (0x1UL << CAN_F5R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F5R2_FB12 CAN_F5R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F5R2_FB13_Pos (13U) \r
-#define CAN_F5R2_FB13_Msk (0x1UL << CAN_F5R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F5R2_FB13 CAN_F5R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F5R2_FB14_Pos (14U) \r
-#define CAN_F5R2_FB14_Msk (0x1UL << CAN_F5R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F5R2_FB14 CAN_F5R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F5R2_FB15_Pos (15U) \r
-#define CAN_F5R2_FB15_Msk (0x1UL << CAN_F5R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F5R2_FB15 CAN_F5R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F5R2_FB16_Pos (16U) \r
-#define CAN_F5R2_FB16_Msk (0x1UL << CAN_F5R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F5R2_FB16 CAN_F5R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F5R2_FB17_Pos (17U) \r
-#define CAN_F5R2_FB17_Msk (0x1UL << CAN_F5R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F5R2_FB17 CAN_F5R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F5R2_FB18_Pos (18U) \r
-#define CAN_F5R2_FB18_Msk (0x1UL << CAN_F5R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F5R2_FB18 CAN_F5R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F5R2_FB19_Pos (19U) \r
-#define CAN_F5R2_FB19_Msk (0x1UL << CAN_F5R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F5R2_FB19 CAN_F5R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F5R2_FB20_Pos (20U) \r
-#define CAN_F5R2_FB20_Msk (0x1UL << CAN_F5R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F5R2_FB20 CAN_F5R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F5R2_FB21_Pos (21U) \r
-#define CAN_F5R2_FB21_Msk (0x1UL << CAN_F5R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F5R2_FB21 CAN_F5R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F5R2_FB22_Pos (22U) \r
-#define CAN_F5R2_FB22_Msk (0x1UL << CAN_F5R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F5R2_FB22 CAN_F5R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F5R2_FB23_Pos (23U) \r
-#define CAN_F5R2_FB23_Msk (0x1UL << CAN_F5R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F5R2_FB23 CAN_F5R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F5R2_FB24_Pos (24U) \r
-#define CAN_F5R2_FB24_Msk (0x1UL << CAN_F5R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F5R2_FB24 CAN_F5R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F5R2_FB25_Pos (25U) \r
-#define CAN_F5R2_FB25_Msk (0x1UL << CAN_F5R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F5R2_FB25 CAN_F5R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F5R2_FB26_Pos (26U) \r
-#define CAN_F5R2_FB26_Msk (0x1UL << CAN_F5R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F5R2_FB26 CAN_F5R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F5R2_FB27_Pos (27U) \r
-#define CAN_F5R2_FB27_Msk (0x1UL << CAN_F5R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F5R2_FB27 CAN_F5R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F5R2_FB28_Pos (28U) \r
-#define CAN_F5R2_FB28_Msk (0x1UL << CAN_F5R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F5R2_FB28 CAN_F5R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F5R2_FB29_Pos (29U) \r
-#define CAN_F5R2_FB29_Msk (0x1UL << CAN_F5R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F5R2_FB29 CAN_F5R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F5R2_FB30_Pos (30U) \r
-#define CAN_F5R2_FB30_Msk (0x1UL << CAN_F5R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F5R2_FB30 CAN_F5R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F5R2_FB31_Pos (31U) \r
-#define CAN_F5R2_FB31_Msk (0x1UL << CAN_F5R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F5R2_FB31 CAN_F5R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F6R2 register *******************/\r
-#define CAN_F6R2_FB0_Pos (0U) \r
-#define CAN_F6R2_FB0_Msk (0x1UL << CAN_F6R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F6R2_FB0 CAN_F6R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F6R2_FB1_Pos (1U) \r
-#define CAN_F6R2_FB1_Msk (0x1UL << CAN_F6R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F6R2_FB1 CAN_F6R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F6R2_FB2_Pos (2U) \r
-#define CAN_F6R2_FB2_Msk (0x1UL << CAN_F6R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F6R2_FB2 CAN_F6R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F6R2_FB3_Pos (3U) \r
-#define CAN_F6R2_FB3_Msk (0x1UL << CAN_F6R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F6R2_FB3 CAN_F6R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F6R2_FB4_Pos (4U) \r
-#define CAN_F6R2_FB4_Msk (0x1UL << CAN_F6R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F6R2_FB4 CAN_F6R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F6R2_FB5_Pos (5U) \r
-#define CAN_F6R2_FB5_Msk (0x1UL << CAN_F6R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F6R2_FB5 CAN_F6R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F6R2_FB6_Pos (6U) \r
-#define CAN_F6R2_FB6_Msk (0x1UL << CAN_F6R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F6R2_FB6 CAN_F6R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F6R2_FB7_Pos (7U) \r
-#define CAN_F6R2_FB7_Msk (0x1UL << CAN_F6R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F6R2_FB7 CAN_F6R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F6R2_FB8_Pos (8U) \r
-#define CAN_F6R2_FB8_Msk (0x1UL << CAN_F6R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F6R2_FB8 CAN_F6R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F6R2_FB9_Pos (9U) \r
-#define CAN_F6R2_FB9_Msk (0x1UL << CAN_F6R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F6R2_FB9 CAN_F6R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F6R2_FB10_Pos (10U) \r
-#define CAN_F6R2_FB10_Msk (0x1UL << CAN_F6R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F6R2_FB10 CAN_F6R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F6R2_FB11_Pos (11U) \r
-#define CAN_F6R2_FB11_Msk (0x1UL << CAN_F6R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F6R2_FB11 CAN_F6R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F6R2_FB12_Pos (12U) \r
-#define CAN_F6R2_FB12_Msk (0x1UL << CAN_F6R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F6R2_FB12 CAN_F6R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F6R2_FB13_Pos (13U) \r
-#define CAN_F6R2_FB13_Msk (0x1UL << CAN_F6R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F6R2_FB13 CAN_F6R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F6R2_FB14_Pos (14U) \r
-#define CAN_F6R2_FB14_Msk (0x1UL << CAN_F6R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F6R2_FB14 CAN_F6R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F6R2_FB15_Pos (15U) \r
-#define CAN_F6R2_FB15_Msk (0x1UL << CAN_F6R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F6R2_FB15 CAN_F6R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F6R2_FB16_Pos (16U) \r
-#define CAN_F6R2_FB16_Msk (0x1UL << CAN_F6R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F6R2_FB16 CAN_F6R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F6R2_FB17_Pos (17U) \r
-#define CAN_F6R2_FB17_Msk (0x1UL << CAN_F6R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F6R2_FB17 CAN_F6R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F6R2_FB18_Pos (18U) \r
-#define CAN_F6R2_FB18_Msk (0x1UL << CAN_F6R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F6R2_FB18 CAN_F6R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F6R2_FB19_Pos (19U) \r
-#define CAN_F6R2_FB19_Msk (0x1UL << CAN_F6R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F6R2_FB19 CAN_F6R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F6R2_FB20_Pos (20U) \r
-#define CAN_F6R2_FB20_Msk (0x1UL << CAN_F6R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F6R2_FB20 CAN_F6R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F6R2_FB21_Pos (21U) \r
-#define CAN_F6R2_FB21_Msk (0x1UL << CAN_F6R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F6R2_FB21 CAN_F6R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F6R2_FB22_Pos (22U) \r
-#define CAN_F6R2_FB22_Msk (0x1UL << CAN_F6R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F6R2_FB22 CAN_F6R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F6R2_FB23_Pos (23U) \r
-#define CAN_F6R2_FB23_Msk (0x1UL << CAN_F6R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F6R2_FB23 CAN_F6R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F6R2_FB24_Pos (24U) \r
-#define CAN_F6R2_FB24_Msk (0x1UL << CAN_F6R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F6R2_FB24 CAN_F6R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F6R2_FB25_Pos (25U) \r
-#define CAN_F6R2_FB25_Msk (0x1UL << CAN_F6R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F6R2_FB25 CAN_F6R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F6R2_FB26_Pos (26U) \r
-#define CAN_F6R2_FB26_Msk (0x1UL << CAN_F6R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F6R2_FB26 CAN_F6R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F6R2_FB27_Pos (27U) \r
-#define CAN_F6R2_FB27_Msk (0x1UL << CAN_F6R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F6R2_FB27 CAN_F6R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F6R2_FB28_Pos (28U) \r
-#define CAN_F6R2_FB28_Msk (0x1UL << CAN_F6R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F6R2_FB28 CAN_F6R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F6R2_FB29_Pos (29U) \r
-#define CAN_F6R2_FB29_Msk (0x1UL << CAN_F6R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F6R2_FB29 CAN_F6R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F6R2_FB30_Pos (30U) \r
-#define CAN_F6R2_FB30_Msk (0x1UL << CAN_F6R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F6R2_FB30 CAN_F6R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F6R2_FB31_Pos (31U) \r
-#define CAN_F6R2_FB31_Msk (0x1UL << CAN_F6R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F6R2_FB31 CAN_F6R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F7R2 register *******************/\r
-#define CAN_F7R2_FB0_Pos (0U) \r
-#define CAN_F7R2_FB0_Msk (0x1UL << CAN_F7R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F7R2_FB0 CAN_F7R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F7R2_FB1_Pos (1U) \r
-#define CAN_F7R2_FB1_Msk (0x1UL << CAN_F7R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F7R2_FB1 CAN_F7R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F7R2_FB2_Pos (2U) \r
-#define CAN_F7R2_FB2_Msk (0x1UL << CAN_F7R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F7R2_FB2 CAN_F7R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F7R2_FB3_Pos (3U) \r
-#define CAN_F7R2_FB3_Msk (0x1UL << CAN_F7R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F7R2_FB3 CAN_F7R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F7R2_FB4_Pos (4U) \r
-#define CAN_F7R2_FB4_Msk (0x1UL << CAN_F7R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F7R2_FB4 CAN_F7R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F7R2_FB5_Pos (5U) \r
-#define CAN_F7R2_FB5_Msk (0x1UL << CAN_F7R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F7R2_FB5 CAN_F7R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F7R2_FB6_Pos (6U) \r
-#define CAN_F7R2_FB6_Msk (0x1UL << CAN_F7R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F7R2_FB6 CAN_F7R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F7R2_FB7_Pos (7U) \r
-#define CAN_F7R2_FB7_Msk (0x1UL << CAN_F7R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F7R2_FB7 CAN_F7R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F7R2_FB8_Pos (8U) \r
-#define CAN_F7R2_FB8_Msk (0x1UL << CAN_F7R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F7R2_FB8 CAN_F7R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F7R2_FB9_Pos (9U) \r
-#define CAN_F7R2_FB9_Msk (0x1UL << CAN_F7R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F7R2_FB9 CAN_F7R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F7R2_FB10_Pos (10U) \r
-#define CAN_F7R2_FB10_Msk (0x1UL << CAN_F7R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F7R2_FB10 CAN_F7R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F7R2_FB11_Pos (11U) \r
-#define CAN_F7R2_FB11_Msk (0x1UL << CAN_F7R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F7R2_FB11 CAN_F7R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F7R2_FB12_Pos (12U) \r
-#define CAN_F7R2_FB12_Msk (0x1UL << CAN_F7R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F7R2_FB12 CAN_F7R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F7R2_FB13_Pos (13U) \r
-#define CAN_F7R2_FB13_Msk (0x1UL << CAN_F7R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F7R2_FB13 CAN_F7R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F7R2_FB14_Pos (14U) \r
-#define CAN_F7R2_FB14_Msk (0x1UL << CAN_F7R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F7R2_FB14 CAN_F7R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F7R2_FB15_Pos (15U) \r
-#define CAN_F7R2_FB15_Msk (0x1UL << CAN_F7R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F7R2_FB15 CAN_F7R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F7R2_FB16_Pos (16U) \r
-#define CAN_F7R2_FB16_Msk (0x1UL << CAN_F7R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F7R2_FB16 CAN_F7R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F7R2_FB17_Pos (17U) \r
-#define CAN_F7R2_FB17_Msk (0x1UL << CAN_F7R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F7R2_FB17 CAN_F7R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F7R2_FB18_Pos (18U) \r
-#define CAN_F7R2_FB18_Msk (0x1UL << CAN_F7R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F7R2_FB18 CAN_F7R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F7R2_FB19_Pos (19U) \r
-#define CAN_F7R2_FB19_Msk (0x1UL << CAN_F7R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F7R2_FB19 CAN_F7R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F7R2_FB20_Pos (20U) \r
-#define CAN_F7R2_FB20_Msk (0x1UL << CAN_F7R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F7R2_FB20 CAN_F7R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F7R2_FB21_Pos (21U) \r
-#define CAN_F7R2_FB21_Msk (0x1UL << CAN_F7R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F7R2_FB21 CAN_F7R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F7R2_FB22_Pos (22U) \r
-#define CAN_F7R2_FB22_Msk (0x1UL << CAN_F7R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F7R2_FB22 CAN_F7R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F7R2_FB23_Pos (23U) \r
-#define CAN_F7R2_FB23_Msk (0x1UL << CAN_F7R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F7R2_FB23 CAN_F7R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F7R2_FB24_Pos (24U) \r
-#define CAN_F7R2_FB24_Msk (0x1UL << CAN_F7R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F7R2_FB24 CAN_F7R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F7R2_FB25_Pos (25U) \r
-#define CAN_F7R2_FB25_Msk (0x1UL << CAN_F7R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F7R2_FB25 CAN_F7R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F7R2_FB26_Pos (26U) \r
-#define CAN_F7R2_FB26_Msk (0x1UL << CAN_F7R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F7R2_FB26 CAN_F7R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F7R2_FB27_Pos (27U) \r
-#define CAN_F7R2_FB27_Msk (0x1UL << CAN_F7R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F7R2_FB27 CAN_F7R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F7R2_FB28_Pos (28U) \r
-#define CAN_F7R2_FB28_Msk (0x1UL << CAN_F7R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F7R2_FB28 CAN_F7R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F7R2_FB29_Pos (29U) \r
-#define CAN_F7R2_FB29_Msk (0x1UL << CAN_F7R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F7R2_FB29 CAN_F7R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F7R2_FB30_Pos (30U) \r
-#define CAN_F7R2_FB30_Msk (0x1UL << CAN_F7R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F7R2_FB30 CAN_F7R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F7R2_FB31_Pos (31U) \r
-#define CAN_F7R2_FB31_Msk (0x1UL << CAN_F7R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F7R2_FB31 CAN_F7R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F8R2 register *******************/\r
-#define CAN_F8R2_FB0_Pos (0U) \r
-#define CAN_F8R2_FB0_Msk (0x1UL << CAN_F8R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F8R2_FB0 CAN_F8R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F8R2_FB1_Pos (1U) \r
-#define CAN_F8R2_FB1_Msk (0x1UL << CAN_F8R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F8R2_FB1 CAN_F8R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F8R2_FB2_Pos (2U) \r
-#define CAN_F8R2_FB2_Msk (0x1UL << CAN_F8R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F8R2_FB2 CAN_F8R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F8R2_FB3_Pos (3U) \r
-#define CAN_F8R2_FB3_Msk (0x1UL << CAN_F8R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F8R2_FB3 CAN_F8R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F8R2_FB4_Pos (4U) \r
-#define CAN_F8R2_FB4_Msk (0x1UL << CAN_F8R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F8R2_FB4 CAN_F8R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F8R2_FB5_Pos (5U) \r
-#define CAN_F8R2_FB5_Msk (0x1UL << CAN_F8R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F8R2_FB5 CAN_F8R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F8R2_FB6_Pos (6U) \r
-#define CAN_F8R2_FB6_Msk (0x1UL << CAN_F8R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F8R2_FB6 CAN_F8R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F8R2_FB7_Pos (7U) \r
-#define CAN_F8R2_FB7_Msk (0x1UL << CAN_F8R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F8R2_FB7 CAN_F8R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F8R2_FB8_Pos (8U) \r
-#define CAN_F8R2_FB8_Msk (0x1UL << CAN_F8R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F8R2_FB8 CAN_F8R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F8R2_FB9_Pos (9U) \r
-#define CAN_F8R2_FB9_Msk (0x1UL << CAN_F8R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F8R2_FB9 CAN_F8R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F8R2_FB10_Pos (10U) \r
-#define CAN_F8R2_FB10_Msk (0x1UL << CAN_F8R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F8R2_FB10 CAN_F8R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F8R2_FB11_Pos (11U) \r
-#define CAN_F8R2_FB11_Msk (0x1UL << CAN_F8R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F8R2_FB11 CAN_F8R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F8R2_FB12_Pos (12U) \r
-#define CAN_F8R2_FB12_Msk (0x1UL << CAN_F8R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F8R2_FB12 CAN_F8R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F8R2_FB13_Pos (13U) \r
-#define CAN_F8R2_FB13_Msk (0x1UL << CAN_F8R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F8R2_FB13 CAN_F8R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F8R2_FB14_Pos (14U) \r
-#define CAN_F8R2_FB14_Msk (0x1UL << CAN_F8R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F8R2_FB14 CAN_F8R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F8R2_FB15_Pos (15U) \r
-#define CAN_F8R2_FB15_Msk (0x1UL << CAN_F8R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F8R2_FB15 CAN_F8R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F8R2_FB16_Pos (16U) \r
-#define CAN_F8R2_FB16_Msk (0x1UL << CAN_F8R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F8R2_FB16 CAN_F8R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F8R2_FB17_Pos (17U) \r
-#define CAN_F8R2_FB17_Msk (0x1UL << CAN_F8R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F8R2_FB17 CAN_F8R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F8R2_FB18_Pos (18U) \r
-#define CAN_F8R2_FB18_Msk (0x1UL << CAN_F8R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F8R2_FB18 CAN_F8R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F8R2_FB19_Pos (19U) \r
-#define CAN_F8R2_FB19_Msk (0x1UL << CAN_F8R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F8R2_FB19 CAN_F8R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F8R2_FB20_Pos (20U) \r
-#define CAN_F8R2_FB20_Msk (0x1UL << CAN_F8R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F8R2_FB20 CAN_F8R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F8R2_FB21_Pos (21U) \r
-#define CAN_F8R2_FB21_Msk (0x1UL << CAN_F8R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F8R2_FB21 CAN_F8R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F8R2_FB22_Pos (22U) \r
-#define CAN_F8R2_FB22_Msk (0x1UL << CAN_F8R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F8R2_FB22 CAN_F8R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F8R2_FB23_Pos (23U) \r
-#define CAN_F8R2_FB23_Msk (0x1UL << CAN_F8R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F8R2_FB23 CAN_F8R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F8R2_FB24_Pos (24U) \r
-#define CAN_F8R2_FB24_Msk (0x1UL << CAN_F8R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F8R2_FB24 CAN_F8R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F8R2_FB25_Pos (25U) \r
-#define CAN_F8R2_FB25_Msk (0x1UL << CAN_F8R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F8R2_FB25 CAN_F8R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F8R2_FB26_Pos (26U) \r
-#define CAN_F8R2_FB26_Msk (0x1UL << CAN_F8R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F8R2_FB26 CAN_F8R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F8R2_FB27_Pos (27U) \r
-#define CAN_F8R2_FB27_Msk (0x1UL << CAN_F8R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F8R2_FB27 CAN_F8R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F8R2_FB28_Pos (28U) \r
-#define CAN_F8R2_FB28_Msk (0x1UL << CAN_F8R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F8R2_FB28 CAN_F8R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F8R2_FB29_Pos (29U) \r
-#define CAN_F8R2_FB29_Msk (0x1UL << CAN_F8R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F8R2_FB29 CAN_F8R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F8R2_FB30_Pos (30U) \r
-#define CAN_F8R2_FB30_Msk (0x1UL << CAN_F8R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F8R2_FB30 CAN_F8R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F8R2_FB31_Pos (31U) \r
-#define CAN_F8R2_FB31_Msk (0x1UL << CAN_F8R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F8R2_FB31 CAN_F8R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F9R2 register *******************/\r
-#define CAN_F9R2_FB0_Pos (0U) \r
-#define CAN_F9R2_FB0_Msk (0x1UL << CAN_F9R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F9R2_FB0 CAN_F9R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F9R2_FB1_Pos (1U) \r
-#define CAN_F9R2_FB1_Msk (0x1UL << CAN_F9R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F9R2_FB1 CAN_F9R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F9R2_FB2_Pos (2U) \r
-#define CAN_F9R2_FB2_Msk (0x1UL << CAN_F9R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F9R2_FB2 CAN_F9R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F9R2_FB3_Pos (3U) \r
-#define CAN_F9R2_FB3_Msk (0x1UL << CAN_F9R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F9R2_FB3 CAN_F9R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F9R2_FB4_Pos (4U) \r
-#define CAN_F9R2_FB4_Msk (0x1UL << CAN_F9R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F9R2_FB4 CAN_F9R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F9R2_FB5_Pos (5U) \r
-#define CAN_F9R2_FB5_Msk (0x1UL << CAN_F9R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F9R2_FB5 CAN_F9R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F9R2_FB6_Pos (6U) \r
-#define CAN_F9R2_FB6_Msk (0x1UL << CAN_F9R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F9R2_FB6 CAN_F9R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F9R2_FB7_Pos (7U) \r
-#define CAN_F9R2_FB7_Msk (0x1UL << CAN_F9R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F9R2_FB7 CAN_F9R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F9R2_FB8_Pos (8U) \r
-#define CAN_F9R2_FB8_Msk (0x1UL << CAN_F9R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F9R2_FB8 CAN_F9R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F9R2_FB9_Pos (9U) \r
-#define CAN_F9R2_FB9_Msk (0x1UL << CAN_F9R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F9R2_FB9 CAN_F9R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F9R2_FB10_Pos (10U) \r
-#define CAN_F9R2_FB10_Msk (0x1UL << CAN_F9R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F9R2_FB10 CAN_F9R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F9R2_FB11_Pos (11U) \r
-#define CAN_F9R2_FB11_Msk (0x1UL << CAN_F9R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F9R2_FB11 CAN_F9R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F9R2_FB12_Pos (12U) \r
-#define CAN_F9R2_FB12_Msk (0x1UL << CAN_F9R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F9R2_FB12 CAN_F9R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F9R2_FB13_Pos (13U) \r
-#define CAN_F9R2_FB13_Msk (0x1UL << CAN_F9R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F9R2_FB13 CAN_F9R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F9R2_FB14_Pos (14U) \r
-#define CAN_F9R2_FB14_Msk (0x1UL << CAN_F9R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F9R2_FB14 CAN_F9R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F9R2_FB15_Pos (15U) \r
-#define CAN_F9R2_FB15_Msk (0x1UL << CAN_F9R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F9R2_FB15 CAN_F9R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F9R2_FB16_Pos (16U) \r
-#define CAN_F9R2_FB16_Msk (0x1UL << CAN_F9R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F9R2_FB16 CAN_F9R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F9R2_FB17_Pos (17U) \r
-#define CAN_F9R2_FB17_Msk (0x1UL << CAN_F9R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F9R2_FB17 CAN_F9R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F9R2_FB18_Pos (18U) \r
-#define CAN_F9R2_FB18_Msk (0x1UL << CAN_F9R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F9R2_FB18 CAN_F9R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F9R2_FB19_Pos (19U) \r
-#define CAN_F9R2_FB19_Msk (0x1UL << CAN_F9R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F9R2_FB19 CAN_F9R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F9R2_FB20_Pos (20U) \r
-#define CAN_F9R2_FB20_Msk (0x1UL << CAN_F9R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F9R2_FB20 CAN_F9R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F9R2_FB21_Pos (21U) \r
-#define CAN_F9R2_FB21_Msk (0x1UL << CAN_F9R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F9R2_FB21 CAN_F9R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F9R2_FB22_Pos (22U) \r
-#define CAN_F9R2_FB22_Msk (0x1UL << CAN_F9R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F9R2_FB22 CAN_F9R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F9R2_FB23_Pos (23U) \r
-#define CAN_F9R2_FB23_Msk (0x1UL << CAN_F9R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F9R2_FB23 CAN_F9R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F9R2_FB24_Pos (24U) \r
-#define CAN_F9R2_FB24_Msk (0x1UL << CAN_F9R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F9R2_FB24 CAN_F9R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F9R2_FB25_Pos (25U) \r
-#define CAN_F9R2_FB25_Msk (0x1UL << CAN_F9R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F9R2_FB25 CAN_F9R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F9R2_FB26_Pos (26U) \r
-#define CAN_F9R2_FB26_Msk (0x1UL << CAN_F9R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F9R2_FB26 CAN_F9R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F9R2_FB27_Pos (27U) \r
-#define CAN_F9R2_FB27_Msk (0x1UL << CAN_F9R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F9R2_FB27 CAN_F9R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F9R2_FB28_Pos (28U) \r
-#define CAN_F9R2_FB28_Msk (0x1UL << CAN_F9R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F9R2_FB28 CAN_F9R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F9R2_FB29_Pos (29U) \r
-#define CAN_F9R2_FB29_Msk (0x1UL << CAN_F9R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F9R2_FB29 CAN_F9R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F9R2_FB30_Pos (30U) \r
-#define CAN_F9R2_FB30_Msk (0x1UL << CAN_F9R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F9R2_FB30 CAN_F9R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F9R2_FB31_Pos (31U) \r
-#define CAN_F9R2_FB31_Msk (0x1UL << CAN_F9R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F9R2_FB31 CAN_F9R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F10R2 register ******************/\r
-#define CAN_F10R2_FB0_Pos (0U) \r
-#define CAN_F10R2_FB0_Msk (0x1UL << CAN_F10R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F10R2_FB0 CAN_F10R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F10R2_FB1_Pos (1U) \r
-#define CAN_F10R2_FB1_Msk (0x1UL << CAN_F10R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F10R2_FB1 CAN_F10R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F10R2_FB2_Pos (2U) \r
-#define CAN_F10R2_FB2_Msk (0x1UL << CAN_F10R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F10R2_FB2 CAN_F10R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F10R2_FB3_Pos (3U) \r
-#define CAN_F10R2_FB3_Msk (0x1UL << CAN_F10R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F10R2_FB3 CAN_F10R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F10R2_FB4_Pos (4U) \r
-#define CAN_F10R2_FB4_Msk (0x1UL << CAN_F10R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F10R2_FB4 CAN_F10R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F10R2_FB5_Pos (5U) \r
-#define CAN_F10R2_FB5_Msk (0x1UL << CAN_F10R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F10R2_FB5 CAN_F10R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F10R2_FB6_Pos (6U) \r
-#define CAN_F10R2_FB6_Msk (0x1UL << CAN_F10R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F10R2_FB6 CAN_F10R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F10R2_FB7_Pos (7U) \r
-#define CAN_F10R2_FB7_Msk (0x1UL << CAN_F10R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F10R2_FB7 CAN_F10R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F10R2_FB8_Pos (8U) \r
-#define CAN_F10R2_FB8_Msk (0x1UL << CAN_F10R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F10R2_FB8 CAN_F10R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F10R2_FB9_Pos (9U) \r
-#define CAN_F10R2_FB9_Msk (0x1UL << CAN_F10R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F10R2_FB9 CAN_F10R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F10R2_FB10_Pos (10U) \r
-#define CAN_F10R2_FB10_Msk (0x1UL << CAN_F10R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F10R2_FB10 CAN_F10R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F10R2_FB11_Pos (11U) \r
-#define CAN_F10R2_FB11_Msk (0x1UL << CAN_F10R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F10R2_FB11 CAN_F10R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F10R2_FB12_Pos (12U) \r
-#define CAN_F10R2_FB12_Msk (0x1UL << CAN_F10R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F10R2_FB12 CAN_F10R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F10R2_FB13_Pos (13U) \r
-#define CAN_F10R2_FB13_Msk (0x1UL << CAN_F10R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F10R2_FB13 CAN_F10R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F10R2_FB14_Pos (14U) \r
-#define CAN_F10R2_FB14_Msk (0x1UL << CAN_F10R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F10R2_FB14 CAN_F10R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F10R2_FB15_Pos (15U) \r
-#define CAN_F10R2_FB15_Msk (0x1UL << CAN_F10R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F10R2_FB15 CAN_F10R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F10R2_FB16_Pos (16U) \r
-#define CAN_F10R2_FB16_Msk (0x1UL << CAN_F10R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F10R2_FB16 CAN_F10R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F10R2_FB17_Pos (17U) \r
-#define CAN_F10R2_FB17_Msk (0x1UL << CAN_F10R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F10R2_FB17 CAN_F10R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F10R2_FB18_Pos (18U) \r
-#define CAN_F10R2_FB18_Msk (0x1UL << CAN_F10R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F10R2_FB18 CAN_F10R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F10R2_FB19_Pos (19U) \r
-#define CAN_F10R2_FB19_Msk (0x1UL << CAN_F10R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F10R2_FB19 CAN_F10R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F10R2_FB20_Pos (20U) \r
-#define CAN_F10R2_FB20_Msk (0x1UL << CAN_F10R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F10R2_FB20 CAN_F10R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F10R2_FB21_Pos (21U) \r
-#define CAN_F10R2_FB21_Msk (0x1UL << CAN_F10R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F10R2_FB21 CAN_F10R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F10R2_FB22_Pos (22U) \r
-#define CAN_F10R2_FB22_Msk (0x1UL << CAN_F10R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F10R2_FB22 CAN_F10R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F10R2_FB23_Pos (23U) \r
-#define CAN_F10R2_FB23_Msk (0x1UL << CAN_F10R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F10R2_FB23 CAN_F10R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F10R2_FB24_Pos (24U) \r
-#define CAN_F10R2_FB24_Msk (0x1UL << CAN_F10R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F10R2_FB24 CAN_F10R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F10R2_FB25_Pos (25U) \r
-#define CAN_F10R2_FB25_Msk (0x1UL << CAN_F10R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F10R2_FB25 CAN_F10R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F10R2_FB26_Pos (26U) \r
-#define CAN_F10R2_FB26_Msk (0x1UL << CAN_F10R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F10R2_FB26 CAN_F10R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F10R2_FB27_Pos (27U) \r
-#define CAN_F10R2_FB27_Msk (0x1UL << CAN_F10R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F10R2_FB27 CAN_F10R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F10R2_FB28_Pos (28U) \r
-#define CAN_F10R2_FB28_Msk (0x1UL << CAN_F10R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F10R2_FB28 CAN_F10R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F10R2_FB29_Pos (29U) \r
-#define CAN_F10R2_FB29_Msk (0x1UL << CAN_F10R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F10R2_FB29 CAN_F10R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F10R2_FB30_Pos (30U) \r
-#define CAN_F10R2_FB30_Msk (0x1UL << CAN_F10R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F10R2_FB30 CAN_F10R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F10R2_FB31_Pos (31U) \r
-#define CAN_F10R2_FB31_Msk (0x1UL << CAN_F10R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F10R2_FB31 CAN_F10R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F11R2 register ******************/\r
-#define CAN_F11R2_FB0_Pos (0U) \r
-#define CAN_F11R2_FB0_Msk (0x1UL << CAN_F11R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F11R2_FB0 CAN_F11R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F11R2_FB1_Pos (1U) \r
-#define CAN_F11R2_FB1_Msk (0x1UL << CAN_F11R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F11R2_FB1 CAN_F11R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F11R2_FB2_Pos (2U) \r
-#define CAN_F11R2_FB2_Msk (0x1UL << CAN_F11R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F11R2_FB2 CAN_F11R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F11R2_FB3_Pos (3U) \r
-#define CAN_F11R2_FB3_Msk (0x1UL << CAN_F11R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F11R2_FB3 CAN_F11R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F11R2_FB4_Pos (4U) \r
-#define CAN_F11R2_FB4_Msk (0x1UL << CAN_F11R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F11R2_FB4 CAN_F11R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F11R2_FB5_Pos (5U) \r
-#define CAN_F11R2_FB5_Msk (0x1UL << CAN_F11R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F11R2_FB5 CAN_F11R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F11R2_FB6_Pos (6U) \r
-#define CAN_F11R2_FB6_Msk (0x1UL << CAN_F11R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F11R2_FB6 CAN_F11R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F11R2_FB7_Pos (7U) \r
-#define CAN_F11R2_FB7_Msk (0x1UL << CAN_F11R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F11R2_FB7 CAN_F11R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F11R2_FB8_Pos (8U) \r
-#define CAN_F11R2_FB8_Msk (0x1UL << CAN_F11R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F11R2_FB8 CAN_F11R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F11R2_FB9_Pos (9U) \r
-#define CAN_F11R2_FB9_Msk (0x1UL << CAN_F11R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F11R2_FB9 CAN_F11R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F11R2_FB10_Pos (10U) \r
-#define CAN_F11R2_FB10_Msk (0x1UL << CAN_F11R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F11R2_FB10 CAN_F11R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F11R2_FB11_Pos (11U) \r
-#define CAN_F11R2_FB11_Msk (0x1UL << CAN_F11R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F11R2_FB11 CAN_F11R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F11R2_FB12_Pos (12U) \r
-#define CAN_F11R2_FB12_Msk (0x1UL << CAN_F11R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F11R2_FB12 CAN_F11R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F11R2_FB13_Pos (13U) \r
-#define CAN_F11R2_FB13_Msk (0x1UL << CAN_F11R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F11R2_FB13 CAN_F11R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F11R2_FB14_Pos (14U) \r
-#define CAN_F11R2_FB14_Msk (0x1UL << CAN_F11R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F11R2_FB14 CAN_F11R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F11R2_FB15_Pos (15U) \r
-#define CAN_F11R2_FB15_Msk (0x1UL << CAN_F11R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F11R2_FB15 CAN_F11R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F11R2_FB16_Pos (16U) \r
-#define CAN_F11R2_FB16_Msk (0x1UL << CAN_F11R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F11R2_FB16 CAN_F11R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F11R2_FB17_Pos (17U) \r
-#define CAN_F11R2_FB17_Msk (0x1UL << CAN_F11R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F11R2_FB17 CAN_F11R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F11R2_FB18_Pos (18U) \r
-#define CAN_F11R2_FB18_Msk (0x1UL << CAN_F11R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F11R2_FB18 CAN_F11R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F11R2_FB19_Pos (19U) \r
-#define CAN_F11R2_FB19_Msk (0x1UL << CAN_F11R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F11R2_FB19 CAN_F11R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F11R2_FB20_Pos (20U) \r
-#define CAN_F11R2_FB20_Msk (0x1UL << CAN_F11R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F11R2_FB20 CAN_F11R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F11R2_FB21_Pos (21U) \r
-#define CAN_F11R2_FB21_Msk (0x1UL << CAN_F11R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F11R2_FB21 CAN_F11R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F11R2_FB22_Pos (22U) \r
-#define CAN_F11R2_FB22_Msk (0x1UL << CAN_F11R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F11R2_FB22 CAN_F11R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F11R2_FB23_Pos (23U) \r
-#define CAN_F11R2_FB23_Msk (0x1UL << CAN_F11R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F11R2_FB23 CAN_F11R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F11R2_FB24_Pos (24U) \r
-#define CAN_F11R2_FB24_Msk (0x1UL << CAN_F11R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F11R2_FB24 CAN_F11R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F11R2_FB25_Pos (25U) \r
-#define CAN_F11R2_FB25_Msk (0x1UL << CAN_F11R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F11R2_FB25 CAN_F11R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F11R2_FB26_Pos (26U) \r
-#define CAN_F11R2_FB26_Msk (0x1UL << CAN_F11R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F11R2_FB26 CAN_F11R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F11R2_FB27_Pos (27U) \r
-#define CAN_F11R2_FB27_Msk (0x1UL << CAN_F11R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F11R2_FB27 CAN_F11R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F11R2_FB28_Pos (28U) \r
-#define CAN_F11R2_FB28_Msk (0x1UL << CAN_F11R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F11R2_FB28 CAN_F11R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F11R2_FB29_Pos (29U) \r
-#define CAN_F11R2_FB29_Msk (0x1UL << CAN_F11R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F11R2_FB29 CAN_F11R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F11R2_FB30_Pos (30U) \r
-#define CAN_F11R2_FB30_Msk (0x1UL << CAN_F11R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F11R2_FB30 CAN_F11R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F11R2_FB31_Pos (31U) \r
-#define CAN_F11R2_FB31_Msk (0x1UL << CAN_F11R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F11R2_FB31 CAN_F11R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F12R2 register ******************/\r
-#define CAN_F12R2_FB0_Pos (0U) \r
-#define CAN_F12R2_FB0_Msk (0x1UL << CAN_F12R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F12R2_FB0 CAN_F12R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F12R2_FB1_Pos (1U) \r
-#define CAN_F12R2_FB1_Msk (0x1UL << CAN_F12R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F12R2_FB1 CAN_F12R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F12R2_FB2_Pos (2U) \r
-#define CAN_F12R2_FB2_Msk (0x1UL << CAN_F12R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F12R2_FB2 CAN_F12R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F12R2_FB3_Pos (3U) \r
-#define CAN_F12R2_FB3_Msk (0x1UL << CAN_F12R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F12R2_FB3 CAN_F12R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F12R2_FB4_Pos (4U) \r
-#define CAN_F12R2_FB4_Msk (0x1UL << CAN_F12R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F12R2_FB4 CAN_F12R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F12R2_FB5_Pos (5U) \r
-#define CAN_F12R2_FB5_Msk (0x1UL << CAN_F12R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F12R2_FB5 CAN_F12R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F12R2_FB6_Pos (6U) \r
-#define CAN_F12R2_FB6_Msk (0x1UL << CAN_F12R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F12R2_FB6 CAN_F12R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F12R2_FB7_Pos (7U) \r
-#define CAN_F12R2_FB7_Msk (0x1UL << CAN_F12R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F12R2_FB7 CAN_F12R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F12R2_FB8_Pos (8U) \r
-#define CAN_F12R2_FB8_Msk (0x1UL << CAN_F12R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F12R2_FB8 CAN_F12R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F12R2_FB9_Pos (9U) \r
-#define CAN_F12R2_FB9_Msk (0x1UL << CAN_F12R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F12R2_FB9 CAN_F12R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F12R2_FB10_Pos (10U) \r
-#define CAN_F12R2_FB10_Msk (0x1UL << CAN_F12R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F12R2_FB10 CAN_F12R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F12R2_FB11_Pos (11U) \r
-#define CAN_F12R2_FB11_Msk (0x1UL << CAN_F12R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F12R2_FB11 CAN_F12R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F12R2_FB12_Pos (12U) \r
-#define CAN_F12R2_FB12_Msk (0x1UL << CAN_F12R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F12R2_FB12 CAN_F12R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F12R2_FB13_Pos (13U) \r
-#define CAN_F12R2_FB13_Msk (0x1UL << CAN_F12R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F12R2_FB13 CAN_F12R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F12R2_FB14_Pos (14U) \r
-#define CAN_F12R2_FB14_Msk (0x1UL << CAN_F12R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F12R2_FB14 CAN_F12R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F12R2_FB15_Pos (15U) \r
-#define CAN_F12R2_FB15_Msk (0x1UL << CAN_F12R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F12R2_FB15 CAN_F12R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F12R2_FB16_Pos (16U) \r
-#define CAN_F12R2_FB16_Msk (0x1UL << CAN_F12R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F12R2_FB16 CAN_F12R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F12R2_FB17_Pos (17U) \r
-#define CAN_F12R2_FB17_Msk (0x1UL << CAN_F12R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F12R2_FB17 CAN_F12R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F12R2_FB18_Pos (18U) \r
-#define CAN_F12R2_FB18_Msk (0x1UL << CAN_F12R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F12R2_FB18 CAN_F12R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F12R2_FB19_Pos (19U) \r
-#define CAN_F12R2_FB19_Msk (0x1UL << CAN_F12R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F12R2_FB19 CAN_F12R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F12R2_FB20_Pos (20U) \r
-#define CAN_F12R2_FB20_Msk (0x1UL << CAN_F12R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F12R2_FB20 CAN_F12R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F12R2_FB21_Pos (21U) \r
-#define CAN_F12R2_FB21_Msk (0x1UL << CAN_F12R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F12R2_FB21 CAN_F12R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F12R2_FB22_Pos (22U) \r
-#define CAN_F12R2_FB22_Msk (0x1UL << CAN_F12R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F12R2_FB22 CAN_F12R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F12R2_FB23_Pos (23U) \r
-#define CAN_F12R2_FB23_Msk (0x1UL << CAN_F12R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F12R2_FB23 CAN_F12R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F12R2_FB24_Pos (24U) \r
-#define CAN_F12R2_FB24_Msk (0x1UL << CAN_F12R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F12R2_FB24 CAN_F12R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F12R2_FB25_Pos (25U) \r
-#define CAN_F12R2_FB25_Msk (0x1UL << CAN_F12R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F12R2_FB25 CAN_F12R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F12R2_FB26_Pos (26U) \r
-#define CAN_F12R2_FB26_Msk (0x1UL << CAN_F12R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F12R2_FB26 CAN_F12R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F12R2_FB27_Pos (27U) \r
-#define CAN_F12R2_FB27_Msk (0x1UL << CAN_F12R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F12R2_FB27 CAN_F12R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F12R2_FB28_Pos (28U) \r
-#define CAN_F12R2_FB28_Msk (0x1UL << CAN_F12R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F12R2_FB28 CAN_F12R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F12R2_FB29_Pos (29U) \r
-#define CAN_F12R2_FB29_Msk (0x1UL << CAN_F12R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F12R2_FB29 CAN_F12R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F12R2_FB30_Pos (30U) \r
-#define CAN_F12R2_FB30_Msk (0x1UL << CAN_F12R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F12R2_FB30 CAN_F12R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F12R2_FB31_Pos (31U) \r
-#define CAN_F12R2_FB31_Msk (0x1UL << CAN_F12R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F12R2_FB31 CAN_F12R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************* Bit definition for CAN_F13R2 register ******************/\r
-#define CAN_F13R2_FB0_Pos (0U) \r
-#define CAN_F13R2_FB0_Msk (0x1UL << CAN_F13R2_FB0_Pos) /*!< 0x00000001 */\r
-#define CAN_F13R2_FB0 CAN_F13R2_FB0_Msk /*!<Filter bit 0 */\r
-#define CAN_F13R2_FB1_Pos (1U) \r
-#define CAN_F13R2_FB1_Msk (0x1UL << CAN_F13R2_FB1_Pos) /*!< 0x00000002 */\r
-#define CAN_F13R2_FB1 CAN_F13R2_FB1_Msk /*!<Filter bit 1 */\r
-#define CAN_F13R2_FB2_Pos (2U) \r
-#define CAN_F13R2_FB2_Msk (0x1UL << CAN_F13R2_FB2_Pos) /*!< 0x00000004 */\r
-#define CAN_F13R2_FB2 CAN_F13R2_FB2_Msk /*!<Filter bit 2 */\r
-#define CAN_F13R2_FB3_Pos (3U) \r
-#define CAN_F13R2_FB3_Msk (0x1UL << CAN_F13R2_FB3_Pos) /*!< 0x00000008 */\r
-#define CAN_F13R2_FB3 CAN_F13R2_FB3_Msk /*!<Filter bit 3 */\r
-#define CAN_F13R2_FB4_Pos (4U) \r
-#define CAN_F13R2_FB4_Msk (0x1UL << CAN_F13R2_FB4_Pos) /*!< 0x00000010 */\r
-#define CAN_F13R2_FB4 CAN_F13R2_FB4_Msk /*!<Filter bit 4 */\r
-#define CAN_F13R2_FB5_Pos (5U) \r
-#define CAN_F13R2_FB5_Msk (0x1UL << CAN_F13R2_FB5_Pos) /*!< 0x00000020 */\r
-#define CAN_F13R2_FB5 CAN_F13R2_FB5_Msk /*!<Filter bit 5 */\r
-#define CAN_F13R2_FB6_Pos (6U) \r
-#define CAN_F13R2_FB6_Msk (0x1UL << CAN_F13R2_FB6_Pos) /*!< 0x00000040 */\r
-#define CAN_F13R2_FB6 CAN_F13R2_FB6_Msk /*!<Filter bit 6 */\r
-#define CAN_F13R2_FB7_Pos (7U) \r
-#define CAN_F13R2_FB7_Msk (0x1UL << CAN_F13R2_FB7_Pos) /*!< 0x00000080 */\r
-#define CAN_F13R2_FB7 CAN_F13R2_FB7_Msk /*!<Filter bit 7 */\r
-#define CAN_F13R2_FB8_Pos (8U) \r
-#define CAN_F13R2_FB8_Msk (0x1UL << CAN_F13R2_FB8_Pos) /*!< 0x00000100 */\r
-#define CAN_F13R2_FB8 CAN_F13R2_FB8_Msk /*!<Filter bit 8 */\r
-#define CAN_F13R2_FB9_Pos (9U) \r
-#define CAN_F13R2_FB9_Msk (0x1UL << CAN_F13R2_FB9_Pos) /*!< 0x00000200 */\r
-#define CAN_F13R2_FB9 CAN_F13R2_FB9_Msk /*!<Filter bit 9 */\r
-#define CAN_F13R2_FB10_Pos (10U) \r
-#define CAN_F13R2_FB10_Msk (0x1UL << CAN_F13R2_FB10_Pos) /*!< 0x00000400 */\r
-#define CAN_F13R2_FB10 CAN_F13R2_FB10_Msk /*!<Filter bit 10 */\r
-#define CAN_F13R2_FB11_Pos (11U) \r
-#define CAN_F13R2_FB11_Msk (0x1UL << CAN_F13R2_FB11_Pos) /*!< 0x00000800 */\r
-#define CAN_F13R2_FB11 CAN_F13R2_FB11_Msk /*!<Filter bit 11 */\r
-#define CAN_F13R2_FB12_Pos (12U) \r
-#define CAN_F13R2_FB12_Msk (0x1UL << CAN_F13R2_FB12_Pos) /*!< 0x00001000 */\r
-#define CAN_F13R2_FB12 CAN_F13R2_FB12_Msk /*!<Filter bit 12 */\r
-#define CAN_F13R2_FB13_Pos (13U) \r
-#define CAN_F13R2_FB13_Msk (0x1UL << CAN_F13R2_FB13_Pos) /*!< 0x00002000 */\r
-#define CAN_F13R2_FB13 CAN_F13R2_FB13_Msk /*!<Filter bit 13 */\r
-#define CAN_F13R2_FB14_Pos (14U) \r
-#define CAN_F13R2_FB14_Msk (0x1UL << CAN_F13R2_FB14_Pos) /*!< 0x00004000 */\r
-#define CAN_F13R2_FB14 CAN_F13R2_FB14_Msk /*!<Filter bit 14 */\r
-#define CAN_F13R2_FB15_Pos (15U) \r
-#define CAN_F13R2_FB15_Msk (0x1UL << CAN_F13R2_FB15_Pos) /*!< 0x00008000 */\r
-#define CAN_F13R2_FB15 CAN_F13R2_FB15_Msk /*!<Filter bit 15 */\r
-#define CAN_F13R2_FB16_Pos (16U) \r
-#define CAN_F13R2_FB16_Msk (0x1UL << CAN_F13R2_FB16_Pos) /*!< 0x00010000 */\r
-#define CAN_F13R2_FB16 CAN_F13R2_FB16_Msk /*!<Filter bit 16 */\r
-#define CAN_F13R2_FB17_Pos (17U) \r
-#define CAN_F13R2_FB17_Msk (0x1UL << CAN_F13R2_FB17_Pos) /*!< 0x00020000 */\r
-#define CAN_F13R2_FB17 CAN_F13R2_FB17_Msk /*!<Filter bit 17 */\r
-#define CAN_F13R2_FB18_Pos (18U) \r
-#define CAN_F13R2_FB18_Msk (0x1UL << CAN_F13R2_FB18_Pos) /*!< 0x00040000 */\r
-#define CAN_F13R2_FB18 CAN_F13R2_FB18_Msk /*!<Filter bit 18 */\r
-#define CAN_F13R2_FB19_Pos (19U) \r
-#define CAN_F13R2_FB19_Msk (0x1UL << CAN_F13R2_FB19_Pos) /*!< 0x00080000 */\r
-#define CAN_F13R2_FB19 CAN_F13R2_FB19_Msk /*!<Filter bit 19 */\r
-#define CAN_F13R2_FB20_Pos (20U) \r
-#define CAN_F13R2_FB20_Msk (0x1UL << CAN_F13R2_FB20_Pos) /*!< 0x00100000 */\r
-#define CAN_F13R2_FB20 CAN_F13R2_FB20_Msk /*!<Filter bit 20 */\r
-#define CAN_F13R2_FB21_Pos (21U) \r
-#define CAN_F13R2_FB21_Msk (0x1UL << CAN_F13R2_FB21_Pos) /*!< 0x00200000 */\r
-#define CAN_F13R2_FB21 CAN_F13R2_FB21_Msk /*!<Filter bit 21 */\r
-#define CAN_F13R2_FB22_Pos (22U) \r
-#define CAN_F13R2_FB22_Msk (0x1UL << CAN_F13R2_FB22_Pos) /*!< 0x00400000 */\r
-#define CAN_F13R2_FB22 CAN_F13R2_FB22_Msk /*!<Filter bit 22 */\r
-#define CAN_F13R2_FB23_Pos (23U) \r
-#define CAN_F13R2_FB23_Msk (0x1UL << CAN_F13R2_FB23_Pos) /*!< 0x00800000 */\r
-#define CAN_F13R2_FB23 CAN_F13R2_FB23_Msk /*!<Filter bit 23 */\r
-#define CAN_F13R2_FB24_Pos (24U) \r
-#define CAN_F13R2_FB24_Msk (0x1UL << CAN_F13R2_FB24_Pos) /*!< 0x01000000 */\r
-#define CAN_F13R2_FB24 CAN_F13R2_FB24_Msk /*!<Filter bit 24 */\r
-#define CAN_F13R2_FB25_Pos (25U) \r
-#define CAN_F13R2_FB25_Msk (0x1UL << CAN_F13R2_FB25_Pos) /*!< 0x02000000 */\r
-#define CAN_F13R2_FB25 CAN_F13R2_FB25_Msk /*!<Filter bit 25 */\r
-#define CAN_F13R2_FB26_Pos (26U) \r
-#define CAN_F13R2_FB26_Msk (0x1UL << CAN_F13R2_FB26_Pos) /*!< 0x04000000 */\r
-#define CAN_F13R2_FB26 CAN_F13R2_FB26_Msk /*!<Filter bit 26 */\r
-#define CAN_F13R2_FB27_Pos (27U) \r
-#define CAN_F13R2_FB27_Msk (0x1UL << CAN_F13R2_FB27_Pos) /*!< 0x08000000 */\r
-#define CAN_F13R2_FB27 CAN_F13R2_FB27_Msk /*!<Filter bit 27 */\r
-#define CAN_F13R2_FB28_Pos (28U) \r
-#define CAN_F13R2_FB28_Msk (0x1UL << CAN_F13R2_FB28_Pos) /*!< 0x10000000 */\r
-#define CAN_F13R2_FB28 CAN_F13R2_FB28_Msk /*!<Filter bit 28 */\r
-#define CAN_F13R2_FB29_Pos (29U) \r
-#define CAN_F13R2_FB29_Msk (0x1UL << CAN_F13R2_FB29_Pos) /*!< 0x20000000 */\r
-#define CAN_F13R2_FB29 CAN_F13R2_FB29_Msk /*!<Filter bit 29 */\r
-#define CAN_F13R2_FB30_Pos (30U) \r
-#define CAN_F13R2_FB30_Msk (0x1UL << CAN_F13R2_FB30_Pos) /*!< 0x40000000 */\r
-#define CAN_F13R2_FB30 CAN_F13R2_FB30_Msk /*!<Filter bit 30 */\r
-#define CAN_F13R2_FB31_Pos (31U) \r
-#define CAN_F13R2_FB31_Msk (0x1UL << CAN_F13R2_FB31_Pos) /*!< 0x80000000 */\r
-#define CAN_F13R2_FB31 CAN_F13R2_FB31_Msk /*!<Filter bit 31 */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* HDMI-CEC (CEC) */\r
-/* */\r
-/******************************************************************************/\r
-\r
-/******************* Bit definition for CEC_CR register *********************/\r
-#define CEC_CR_CECEN_Pos (0U) \r
-#define CEC_CR_CECEN_Msk (0x1UL << CEC_CR_CECEN_Pos) /*!< 0x00000001 */\r
-#define CEC_CR_CECEN CEC_CR_CECEN_Msk /*!< CEC Enable */\r
-#define CEC_CR_TXSOM_Pos (1U) \r
-#define CEC_CR_TXSOM_Msk (0x1UL << CEC_CR_TXSOM_Pos) /*!< 0x00000002 */\r
-#define CEC_CR_TXSOM CEC_CR_TXSOM_Msk /*!< CEC Tx Start Of Message */\r
-#define CEC_CR_TXEOM_Pos (2U) \r
-#define CEC_CR_TXEOM_Msk (0x1UL << CEC_CR_TXEOM_Pos) /*!< 0x00000004 */\r
-#define CEC_CR_TXEOM CEC_CR_TXEOM_Msk /*!< CEC Tx End Of Message */\r
-\r
-/******************* Bit definition for CEC_CFGR register *******************/\r
-#define CEC_CFGR_SFT_Pos (0U) \r
-#define CEC_CFGR_SFT_Msk (0x7UL << CEC_CFGR_SFT_Pos) /*!< 0x00000007 */\r
-#define CEC_CFGR_SFT CEC_CFGR_SFT_Msk /*!< CEC Signal Free Time */\r
-#define CEC_CFGR_RXTOL_Pos (3U) \r
-#define CEC_CFGR_RXTOL_Msk (0x1UL << CEC_CFGR_RXTOL_Pos) /*!< 0x00000008 */\r
-#define CEC_CFGR_RXTOL CEC_CFGR_RXTOL_Msk /*!< CEC Tolerance */\r
-#define CEC_CFGR_BRESTP_Pos (4U) \r
-#define CEC_CFGR_BRESTP_Msk (0x1UL << CEC_CFGR_BRESTP_Pos) /*!< 0x00000010 */\r
-#define CEC_CFGR_BRESTP CEC_CFGR_BRESTP_Msk /*!< CEC Rx Stop */\r
-#define CEC_CFGR_BREGEN_Pos (5U) \r
-#define CEC_CFGR_BREGEN_Msk (0x1UL << CEC_CFGR_BREGEN_Pos) /*!< 0x00000020 */\r
-#define CEC_CFGR_BREGEN CEC_CFGR_BREGEN_Msk /*!< CEC Bit Rising Error generation */\r
-#define CEC_CFGR_LBPEGEN_Pos (6U) \r
-#define CEC_CFGR_LBPEGEN_Msk (0x1UL << CEC_CFGR_LBPEGEN_Pos) /*!< 0x00000040 */\r
-#define CEC_CFGR_LBPEGEN CEC_CFGR_LBPEGEN_Msk /*!< CEC Long Period Error generation */\r
-#define CEC_CFGR_BRDNOGEN_Pos (7U) \r
-#define CEC_CFGR_BRDNOGEN_Msk (0x1UL << CEC_CFGR_BRDNOGEN_Pos) /*!< 0x00000080 */\r
-#define CEC_CFGR_BRDNOGEN CEC_CFGR_BRDNOGEN_Msk /*!< CEC Broadcast no Error generation */\r
-#define CEC_CFGR_SFTOPT_Pos (8U) \r
-#define CEC_CFGR_SFTOPT_Msk (0x1UL << CEC_CFGR_SFTOPT_Pos) /*!< 0x00000100 */\r
-#define CEC_CFGR_SFTOPT CEC_CFGR_SFTOPT_Msk /*!< CEC Signal Free Time optional */\r
-#define CEC_CFGR_OAR_Pos (16U) \r
-#define CEC_CFGR_OAR_Msk (0x7FFFUL << CEC_CFGR_OAR_Pos) /*!< 0x7FFF0000 */\r
-#define CEC_CFGR_OAR CEC_CFGR_OAR_Msk /*!< CEC Own Address */\r
-#define CEC_CFGR_LSTN_Pos (31U) \r
-#define CEC_CFGR_LSTN_Msk (0x1UL << CEC_CFGR_LSTN_Pos) /*!< 0x80000000 */\r
-#define CEC_CFGR_LSTN CEC_CFGR_LSTN_Msk /*!< CEC Listen mode */\r
-\r
-/******************* Bit definition for CEC_TXDR register *******************/\r
-#define CEC_TXDR_TXD_Pos (0U) \r
-#define CEC_TXDR_TXD_Msk (0xFFUL << CEC_TXDR_TXD_Pos) /*!< 0x000000FF */\r
-#define CEC_TXDR_TXD CEC_TXDR_TXD_Msk /*!< CEC Tx Data */\r
-\r
-/******************* Bit definition for CEC_RXDR register *******************/\r
-#define CEC_RXDR_RXD_Pos (0U) \r
-#define CEC_RXDR_RXD_Msk (0xFFU << CEC_RXDR_RXD_Pos) /*!< 0x000000FF */\r
-#define CEC_RXDR_RXD CEC_RXDR_RXD_Msk /*!< CEC Rx Data */\r
-\r
-/******************* Bit definition for CEC_ISR register ********************/\r
-#define CEC_ISR_RXBR_Pos (0U) \r
-#define CEC_ISR_RXBR_Msk (0x1UL << CEC_ISR_RXBR_Pos) /*!< 0x00000001 */\r
-#define CEC_ISR_RXBR CEC_ISR_RXBR_Msk /*!< CEC Rx-Byte Received */\r
-#define CEC_ISR_RXEND_Pos (1U) \r
-#define CEC_ISR_RXEND_Msk (0x1UL << CEC_ISR_RXEND_Pos) /*!< 0x00000002 */\r
-#define CEC_ISR_RXEND CEC_ISR_RXEND_Msk /*!< CEC End Of Reception */\r
-#define CEC_ISR_RXOVR_Pos (2U) \r
-#define CEC_ISR_RXOVR_Msk (0x1UL << CEC_ISR_RXOVR_Pos) /*!< 0x00000004 */\r
-#define CEC_ISR_RXOVR CEC_ISR_RXOVR_Msk /*!< CEC Rx-Overrun */\r
-#define CEC_ISR_BRE_Pos (3U) \r
-#define CEC_ISR_BRE_Msk (0x1UL << CEC_ISR_BRE_Pos) /*!< 0x00000008 */\r
-#define CEC_ISR_BRE CEC_ISR_BRE_Msk /*!< CEC Rx Bit Rising Error */\r
-#define CEC_ISR_SBPE_Pos (4U) \r
-#define CEC_ISR_SBPE_Msk (0x1UL << CEC_ISR_SBPE_Pos) /*!< 0x00000010 */\r
-#define CEC_ISR_SBPE CEC_ISR_SBPE_Msk /*!< CEC Rx Short Bit period Error */\r
-#define CEC_ISR_LBPE_Pos (5U) \r
-#define CEC_ISR_LBPE_Msk (0x1UL << CEC_ISR_LBPE_Pos) /*!< 0x00000020 */\r
-#define CEC_ISR_LBPE CEC_ISR_LBPE_Msk /*!< CEC Rx Long Bit period Error */\r
-#define CEC_ISR_RXACKE_Pos (6U) \r
-#define CEC_ISR_RXACKE_Msk (0x1UL << CEC_ISR_RXACKE_Pos) /*!< 0x00000040 */\r
-#define CEC_ISR_RXACKE CEC_ISR_RXACKE_Msk /*!< CEC Rx Missing Acknowledge */\r
-#define CEC_ISR_ARBLST_Pos (7U) \r
-#define CEC_ISR_ARBLST_Msk (0x1UL << CEC_ISR_ARBLST_Pos) /*!< 0x00000080 */\r
-#define CEC_ISR_ARBLST CEC_ISR_ARBLST_Msk /*!< CEC Arbitration Lost */\r
-#define CEC_ISR_TXBR_Pos (8U) \r
-#define CEC_ISR_TXBR_Msk (0x1UL << CEC_ISR_TXBR_Pos) /*!< 0x00000100 */\r
-#define CEC_ISR_TXBR CEC_ISR_TXBR_Msk /*!< CEC Tx Byte Request */\r
-#define CEC_ISR_TXEND_Pos (9U) \r
-#define CEC_ISR_TXEND_Msk (0x1UL << CEC_ISR_TXEND_Pos) /*!< 0x00000200 */\r
-#define CEC_ISR_TXEND CEC_ISR_TXEND_Msk /*!< CEC End of Transmission */\r
-#define CEC_ISR_TXUDR_Pos (10U) \r
-#define CEC_ISR_TXUDR_Msk (0x1UL << CEC_ISR_TXUDR_Pos) /*!< 0x00000400 */\r
-#define CEC_ISR_TXUDR CEC_ISR_TXUDR_Msk /*!< CEC Tx-Buffer Underrun */\r
-#define CEC_ISR_TXERR_Pos (11U) \r
-#define CEC_ISR_TXERR_Msk (0x1UL << CEC_ISR_TXERR_Pos) /*!< 0x00000800 */\r
-#define CEC_ISR_TXERR CEC_ISR_TXERR_Msk /*!< CEC Tx-Error */\r
-#define CEC_ISR_TXACKE_Pos (12U) \r
-#define CEC_ISR_TXACKE_Msk (0x1UL << CEC_ISR_TXACKE_Pos) /*!< 0x00001000 */\r
-#define CEC_ISR_TXACKE CEC_ISR_TXACKE_Msk /*!< CEC Tx Missing Acknowledge */\r
-\r
-/******************* Bit definition for CEC_IER register ********************/\r
-#define CEC_IER_RXBRIE_Pos (0U) \r
-#define CEC_IER_RXBRIE_Msk (0x1UL << CEC_IER_RXBRIE_Pos) /*!< 0x00000001 */\r
-#define CEC_IER_RXBRIE CEC_IER_RXBRIE_Msk /*!< CEC Rx-Byte Received IT Enable */\r
-#define CEC_IER_RXENDIE_Pos (1U) \r
-#define CEC_IER_RXENDIE_Msk (0x1UL << CEC_IER_RXENDIE_Pos) /*!< 0x00000002 */\r
-#define CEC_IER_RXENDIE CEC_IER_RXENDIE_Msk /*!< CEC End Of Reception IT Enable */\r
-#define CEC_IER_RXOVRIE_Pos (2U) \r
-#define CEC_IER_RXOVRIE_Msk (0x1UL << CEC_IER_RXOVRIE_Pos) /*!< 0x00000004 */\r
-#define CEC_IER_RXOVRIE CEC_IER_RXOVRIE_Msk /*!< CEC Rx-Overrun IT Enable */\r
-#define CEC_IER_BREIE_Pos (3U) \r
-#define CEC_IER_BREIE_Msk (0x1UL << CEC_IER_BREIE_Pos) /*!< 0x00000008 */\r
-#define CEC_IER_BREIE CEC_IER_BREIE_Msk /*!< CEC Rx Bit Rising Error IT Enable */\r
-#define CEC_IER_SBPEIE_Pos (4U) \r
-#define CEC_IER_SBPEIE_Msk (0x1UL << CEC_IER_SBPEIE_Pos) /*!< 0x00000010 */\r
-#define CEC_IER_SBPEIE CEC_IER_SBPEIE_Msk /*!< CEC Rx Short Bit period Error IT Enable*/\r
-#define CEC_IER_LBPEIE_Pos (5U) \r
-#define CEC_IER_LBPEIE_Msk (0x1UL << CEC_IER_LBPEIE_Pos) /*!< 0x00000020 */\r
-#define CEC_IER_LBPEIE CEC_IER_LBPEIE_Msk /*!< CEC Rx Long Bit period Error IT Enable */\r
-#define CEC_IER_RXACKEIE_Pos (6U) \r
-#define CEC_IER_RXACKEIE_Msk (0x1UL << CEC_IER_RXACKEIE_Pos) /*!< 0x00000040 */\r
-#define CEC_IER_RXACKEIE CEC_IER_RXACKEIE_Msk /*!< CEC Rx Missing Acknowledge IT Enable */\r
-#define CEC_IER_ARBLSTIE_Pos (7U) \r
-#define CEC_IER_ARBLSTIE_Msk (0x1UL << CEC_IER_ARBLSTIE_Pos) /*!< 0x00000080 */\r
-#define CEC_IER_ARBLSTIE CEC_IER_ARBLSTIE_Msk /*!< CEC Arbitration Lost IT Enable */\r
-#define CEC_IER_TXBRIE_Pos (8U) \r
-#define CEC_IER_TXBRIE_Msk (0x1UL << CEC_IER_TXBRIE_Pos) /*!< 0x00000100 */\r
-#define CEC_IER_TXBRIE CEC_IER_TXBRIE_Msk /*!< CEC Tx Byte Request IT Enable */\r
-#define CEC_IER_TXENDIE_Pos (9U) \r
-#define CEC_IER_TXENDIE_Msk (0x1UL << CEC_IER_TXENDIE_Pos) /*!< 0x00000200 */\r
-#define CEC_IER_TXENDIE CEC_IER_TXENDIE_Msk /*!< CEC End of Transmission IT Enable */\r
-#define CEC_IER_TXUDRIE_Pos (10U) \r
-#define CEC_IER_TXUDRIE_Msk (0x1UL << CEC_IER_TXUDRIE_Pos) /*!< 0x00000400 */\r
-#define CEC_IER_TXUDRIE CEC_IER_TXUDRIE_Msk /*!< CEC Tx-Buffer Underrun IT Enable */\r
-#define CEC_IER_TXERRIE_Pos (11U) \r
-#define CEC_IER_TXERRIE_Msk (0x1UL << CEC_IER_TXERRIE_Pos) /*!< 0x00000800 */\r
-#define CEC_IER_TXERRIE CEC_IER_TXERRIE_Msk /*!< CEC Tx-Error IT Enable */\r
-#define CEC_IER_TXACKEIE_Pos (12U) \r
-#define CEC_IER_TXACKEIE_Msk (0x1UL << CEC_IER_TXACKEIE_Pos) /*!< 0x00001000 */\r
-#define CEC_IER_TXACKEIE CEC_IER_TXACKEIE_Msk /*!< CEC Tx Missing Acknowledge IT Enable */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* CRC calculation unit */\r
-/* */\r
-/******************************************************************************/\r
-/******************* Bit definition for CRC_DR register *********************/\r
-#define CRC_DR_DR_Pos (0U) \r
-#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */\r
-#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */\r
-\r
-/******************* Bit definition for CRC_IDR register ********************/\r
-#define CRC_IDR_IDR_Pos (0U) \r
-#define CRC_IDR_IDR_Msk (0xFFUL << CRC_IDR_IDR_Pos) /*!< 0x000000FF */\r
-#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 8-bit data register bits */\r
-\r
-/******************** Bit definition for CRC_CR register ********************/\r
-#define CRC_CR_RESET_Pos (0U) \r
-#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */\r
-#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */\r
-#define CRC_CR_POLYSIZE_Pos (3U) \r
-#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */\r
-#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */\r
-#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */\r
-#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */\r
-#define CRC_CR_REV_IN_Pos (5U) \r
-#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */\r
-#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */\r
-#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */\r
-#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */\r
-#define CRC_CR_REV_OUT_Pos (7U) \r
-#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */\r
-#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */\r
-\r
-/******************* Bit definition for CRC_INIT register *******************/\r
-#define CRC_INIT_INIT_Pos (0U) \r
-#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */\r
-#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */\r
-\r
-/******************* Bit definition for CRC_POL register ********************/\r
-#define CRC_POL_POL_Pos (0U) \r
-#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */\r
-#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */\r
-\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Digital to Analog Converter */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for DAC_CR register ********************/\r
-#define DAC_CR_EN1_Pos (0U) \r
-#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */\r
-#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!<DAC channel1 enable */\r
-#define DAC_CR_BOFF1_Pos (1U) \r
-#define DAC_CR_BOFF1_Msk (0x1UL << DAC_CR_BOFF1_Pos) /*!< 0x00000002 */\r
-#define DAC_CR_BOFF1 DAC_CR_BOFF1_Msk /*!<DAC channel1 output buffer disable */\r
-#define DAC_CR_TEN1_Pos (2U) \r
-#define DAC_CR_TEN1_Msk (0x1UL << DAC_CR_TEN1_Pos) /*!< 0x00000004 */\r
-#define DAC_CR_TEN1 DAC_CR_TEN1_Msk /*!<DAC channel1 Trigger enable */\r
-#define DAC_CR_TSEL1_Pos (3U) \r
-#define DAC_CR_TSEL1_Msk (0x7UL << DAC_CR_TSEL1_Pos) /*!< 0x00000038 */\r
-#define DAC_CR_TSEL1 DAC_CR_TSEL1_Msk /*!<TSEL1[2:0] (DAC channel1 Trigger selection) */\r
-#define DAC_CR_TSEL1_0 (0x1UL << DAC_CR_TSEL1_Pos) /*!< 0x00000008 */\r
-#define DAC_CR_TSEL1_1 (0x2UL << DAC_CR_TSEL1_Pos) /*!< 0x00000010 */\r
-#define DAC_CR_TSEL1_2 (0x4UL << DAC_CR_TSEL1_Pos) /*!< 0x00000020 */\r
-#define DAC_CR_WAVE1_Pos (6U) \r
-#define DAC_CR_WAVE1_Msk (0x3UL << DAC_CR_WAVE1_Pos) /*!< 0x000000C0 */\r
-#define DAC_CR_WAVE1 DAC_CR_WAVE1_Msk /*!<WAVE1[1:0] (DAC channel1 noise/triangle wave generation enablEU) */\r
-#define DAC_CR_WAVE1_0 (0x1UL << DAC_CR_WAVE1_Pos) /*!< 0x00000040 */\r
-#define DAC_CR_WAVE1_1 (0x2UL << DAC_CR_WAVE1_Pos) /*!< 0x00000080 */\r
-#define DAC_CR_MAMP1_Pos (8U) \r
-#define DAC_CR_MAMP1_Msk (0xFUL << DAC_CR_MAMP1_Pos) /*!< 0x00000F00 */\r
-#define DAC_CR_MAMP1 DAC_CR_MAMP1_Msk /*!<MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) */\r
-#define DAC_CR_MAMP1_0 (0x1UL << DAC_CR_MAMP1_Pos) /*!< 0x00000100 */\r
-#define DAC_CR_MAMP1_1 (0x2UL << DAC_CR_MAMP1_Pos) /*!< 0x00000200 */\r
-#define DAC_CR_MAMP1_2 (0x4UL << DAC_CR_MAMP1_Pos) /*!< 0x00000400 */\r
-#define DAC_CR_MAMP1_3 (0x8UL << DAC_CR_MAMP1_Pos) /*!< 0x00000800 */\r
-#define DAC_CR_DMAEN1_Pos (12U) \r
-#define DAC_CR_DMAEN1_Msk (0x1UL << DAC_CR_DMAEN1_Pos) /*!< 0x00001000 */\r
-#define DAC_CR_DMAEN1 DAC_CR_DMAEN1_Msk /*!<DAC channel1 DMA enable */\r
-#define DAC_CR_DMAUDRIE1_Pos (13U) \r
-#define DAC_CR_DMAUDRIE1_Msk (0x1UL << DAC_CR_DMAUDRIE1_Pos) /*!< 0x00002000 */\r
-#define DAC_CR_DMAUDRIE1 DAC_CR_DMAUDRIE1_Msk /*!<DAC channel1 DMA underrun interrupt enable */\r
-#define DAC_CR_EN2_Pos (16U) \r
-#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */\r
-#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!<DAC channel2 enable */\r
-#define DAC_CR_BOFF2_Pos (17U) \r
-#define DAC_CR_BOFF2_Msk (0x1UL << DAC_CR_BOFF2_Pos) /*!< 0x00020000 */\r
-#define DAC_CR_BOFF2 DAC_CR_BOFF2_Msk /*!<DAC channel2 output buffer disable */\r
-#define DAC_CR_TEN2_Pos (18U) \r
-#define DAC_CR_TEN2_Msk (0x1UL << DAC_CR_TEN2_Pos) /*!< 0x00040000 */\r
-#define DAC_CR_TEN2 DAC_CR_TEN2_Msk /*!<DAC channel2 Trigger enable */\r
-#define DAC_CR_TSEL2_Pos (19U) \r
-#define DAC_CR_TSEL2_Msk (0x7UL << DAC_CR_TSEL2_Pos) /*!< 0x00380000 */\r
-#define DAC_CR_TSEL2 DAC_CR_TSEL2_Msk /*!<TSEL2[2:0] (DAC channel2 Trigger selection) */\r
-#define DAC_CR_TSEL2_0 (0x1UL << DAC_CR_TSEL2_Pos) /*!< 0x00080000 */\r
-#define DAC_CR_TSEL2_1 (0x2UL << DAC_CR_TSEL2_Pos) /*!< 0x00100000 */\r
-#define DAC_CR_TSEL2_2 (0x4UL << DAC_CR_TSEL2_Pos) /*!< 0x00200000 */\r
-#define DAC_CR_WAVE2_Pos (22U) \r
-#define DAC_CR_WAVE2_Msk (0x3UL << DAC_CR_WAVE2_Pos) /*!< 0x00C00000 */\r
-#define DAC_CR_WAVE2 DAC_CR_WAVE2_Msk /*!<WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */\r
-#define DAC_CR_WAVE2_0 (0x1UL << DAC_CR_WAVE2_Pos) /*!< 0x00400000 */\r
-#define DAC_CR_WAVE2_1 (0x2UL << DAC_CR_WAVE2_Pos) /*!< 0x00800000 */\r
-#define DAC_CR_MAMP2_Pos (24U) \r
-#define DAC_CR_MAMP2_Msk (0xFUL << DAC_CR_MAMP2_Pos) /*!< 0x0F000000 */\r
-#define DAC_CR_MAMP2 DAC_CR_MAMP2_Msk /*!<MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */\r
-#define DAC_CR_MAMP2_0 (0x1UL << DAC_CR_MAMP2_Pos) /*!< 0x01000000 */\r
-#define DAC_CR_MAMP2_1 (0x2UL << DAC_CR_MAMP2_Pos) /*!< 0x02000000 */\r
-#define DAC_CR_MAMP2_2 (0x4UL << DAC_CR_MAMP2_Pos) /*!< 0x04000000 */\r
-#define DAC_CR_MAMP2_3 (0x8UL << DAC_CR_MAMP2_Pos) /*!< 0x08000000 */\r
-#define DAC_CR_DMAEN2_Pos (28U) \r
-#define DAC_CR_DMAEN2_Msk (0x1UL << DAC_CR_DMAEN2_Pos) /*!< 0x10000000 */\r
-#define DAC_CR_DMAEN2 DAC_CR_DMAEN2_Msk /*!<DAC channel2 DMA enable */\r
-#define DAC_CR_DMAUDRIE2_Pos (29U) \r
-#define DAC_CR_DMAUDRIE2_Msk (0x1UL << DAC_CR_DMAUDRIE2_Pos) /*!< 0x20000000 */\r
-#define DAC_CR_DMAUDRIE2 DAC_CR_DMAUDRIE2_Msk /*!<DAC channel2 DMA underrun interrupt enable */\r
-\r
-/***************** Bit definition for DAC_SWTRIGR register ******************/\r
-#define DAC_SWTRIGR_SWTRIG1_Pos (0U) \r
-#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */\r
-#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!<DAC channel1 software trigger */\r
-#define DAC_SWTRIGR_SWTRIG2_Pos (1U) \r
-#define DAC_SWTRIGR_SWTRIG2_Msk (0x1UL << DAC_SWTRIGR_SWTRIG2_Pos) /*!< 0x00000002 */\r
-#define DAC_SWTRIGR_SWTRIG2 DAC_SWTRIGR_SWTRIG2_Msk /*!<DAC channel2 software trigger */\r
-\r
-/***************** Bit definition for DAC_DHR12R1 register ******************/\r
-#define DAC_DHR12R1_DACC1DHR_Pos (0U) \r
-#define DAC_DHR12R1_DACC1DHR_Msk (0xFFFUL << DAC_DHR12R1_DACC1DHR_Pos) /*!< 0x00000FFF */\r
-#define DAC_DHR12R1_DACC1DHR DAC_DHR12R1_DACC1DHR_Msk /*!<DAC channel1 12-bit Right aligned data */\r
-\r
-/***************** Bit definition for DAC_DHR12L1 register ******************/\r
-#define DAC_DHR12L1_DACC1DHR_Pos (4U) \r
-#define DAC_DHR12L1_DACC1DHR_Msk (0xFFFUL << DAC_DHR12L1_DACC1DHR_Pos) /*!< 0x0000FFF0 */\r
-#define DAC_DHR12L1_DACC1DHR DAC_DHR12L1_DACC1DHR_Msk /*!<DAC channel1 12-bit Left aligned data */\r
-\r
-/****************** Bit definition for DAC_DHR8R1 register ******************/\r
-#define DAC_DHR8R1_DACC1DHR_Pos (0U) \r
-#define DAC_DHR8R1_DACC1DHR_Msk (0xFFUL << DAC_DHR8R1_DACC1DHR_Pos) /*!< 0x000000FF */\r
-#define DAC_DHR8R1_DACC1DHR DAC_DHR8R1_DACC1DHR_Msk /*!<DAC channel1 8-bit Right aligned data */\r
-\r
-/***************** Bit definition for DAC_DHR12R2 register ******************/\r
-#define DAC_DHR12R2_DACC2DHR_Pos (0U) \r
-#define DAC_DHR12R2_DACC2DHR_Msk (0xFFFUL << DAC_DHR12R2_DACC2DHR_Pos) /*!< 0x00000FFF */\r
-#define DAC_DHR12R2_DACC2DHR DAC_DHR12R2_DACC2DHR_Msk /*!<DAC channel2 12-bit Right aligned data */\r
-\r
-/***************** Bit definition for DAC_DHR12L2 register ******************/\r
-#define DAC_DHR12L2_DACC2DHR_Pos (4U) \r
-#define DAC_DHR12L2_DACC2DHR_Msk (0xFFFUL << DAC_DHR12L2_DACC2DHR_Pos) /*!< 0x0000FFF0 */\r
-#define DAC_DHR12L2_DACC2DHR DAC_DHR12L2_DACC2DHR_Msk /*!<DAC channel2 12-bit Left aligned data */\r
-\r
-/****************** Bit definition for DAC_DHR8R2 register ******************/\r
-#define DAC_DHR8R2_DACC2DHR_Pos (0U) \r
-#define DAC_DHR8R2_DACC2DHR_Msk (0xFFUL << DAC_DHR8R2_DACC2DHR_Pos) /*!< 0x000000FF */\r
-#define DAC_DHR8R2_DACC2DHR DAC_DHR8R2_DACC2DHR_Msk /*!<DAC channel2 8-bit Right aligned data */\r
-\r
-/***************** Bit definition for DAC_DHR12RD register ******************/\r
-#define DAC_DHR12RD_DACC1DHR_Pos (0U) \r
-#define DAC_DHR12RD_DACC1DHR_Msk (0xFFFUL << DAC_DHR12RD_DACC1DHR_Pos) /*!< 0x00000FFF */\r
-#define DAC_DHR12RD_DACC1DHR DAC_DHR12RD_DACC1DHR_Msk /*!<DAC channel1 12-bit Right aligned data */\r
-#define DAC_DHR12RD_DACC2DHR_Pos (16U) \r
-#define DAC_DHR12RD_DACC2DHR_Msk (0xFFFUL << DAC_DHR12RD_DACC2DHR_Pos) /*!< 0x0FFF0000 */\r
-#define DAC_DHR12RD_DACC2DHR DAC_DHR12RD_DACC2DHR_Msk /*!<DAC channel2 12-bit Right aligned data */\r
-\r
-/***************** Bit definition for DAC_DHR12LD register ******************/\r
-#define DAC_DHR12LD_DACC1DHR_Pos (4U) \r
-#define DAC_DHR12LD_DACC1DHR_Msk (0xFFFUL << DAC_DHR12LD_DACC1DHR_Pos) /*!< 0x0000FFF0 */\r
-#define DAC_DHR12LD_DACC1DHR DAC_DHR12LD_DACC1DHR_Msk /*!<DAC channel1 12-bit Left aligned data */\r
-#define DAC_DHR12LD_DACC2DHR_Pos (20U) \r
-#define DAC_DHR12LD_DACC2DHR_Msk (0xFFFUL << DAC_DHR12LD_DACC2DHR_Pos) /*!< 0xFFF00000 */\r
-#define DAC_DHR12LD_DACC2DHR DAC_DHR12LD_DACC2DHR_Msk /*!<DAC channel2 12-bit Left aligned data */\r
-\r
-/****************** Bit definition for DAC_DHR8RD register ******************/\r
-#define DAC_DHR8RD_DACC1DHR_Pos (0U) \r
-#define DAC_DHR8RD_DACC1DHR_Msk (0xFFUL << DAC_DHR8RD_DACC1DHR_Pos) /*!< 0x000000FF */\r
-#define DAC_DHR8RD_DACC1DHR DAC_DHR8RD_DACC1DHR_Msk /*!<DAC channel1 8-bit Right aligned data */\r
-#define DAC_DHR8RD_DACC2DHR_Pos (8U) \r
-#define DAC_DHR8RD_DACC2DHR_Msk (0xFFUL << DAC_DHR8RD_DACC2DHR_Pos) /*!< 0x0000FF00 */\r
-#define DAC_DHR8RD_DACC2DHR DAC_DHR8RD_DACC2DHR_Msk /*!<DAC channel2 8-bit Right aligned data */\r
-\r
-/******************* Bit definition for DAC_DOR1 register *******************/\r
-#define DAC_DOR1_DACC1DOR_Pos (0U) \r
-#define DAC_DOR1_DACC1DOR_Msk (0xFFFUL << DAC_DOR1_DACC1DOR_Pos) /*!< 0x00000FFF */\r
-#define DAC_DOR1_DACC1DOR DAC_DOR1_DACC1DOR_Msk /*!<DAC channel1 data output */\r
-\r
-/******************* Bit definition for DAC_DOR2 register *******************/\r
-#define DAC_DOR2_DACC2DOR_Pos (0U) \r
-#define DAC_DOR2_DACC2DOR_Msk (0xFFFUL << DAC_DOR2_DACC2DOR_Pos) /*!< 0x00000FFF */\r
-#define DAC_DOR2_DACC2DOR DAC_DOR2_DACC2DOR_Msk /*!<DAC channel2 data output */\r
-\r
-/******************** Bit definition for DAC_SR register ********************/\r
-#define DAC_SR_DMAUDR1_Pos (13U) \r
-#define DAC_SR_DMAUDR1_Msk (0x1UL << DAC_SR_DMAUDR1_Pos) /*!< 0x00002000 */\r
-#define DAC_SR_DMAUDR1 DAC_SR_DMAUDR1_Msk /*!<DAC channel1 DMA underrun flag */\r
-#define DAC_SR_DMAUDR2_Pos (29U) \r
-#define DAC_SR_DMAUDR2_Msk (0x1UL << DAC_SR_DMAUDR2_Pos) /*!< 0x20000000 */\r
-#define DAC_SR_DMAUDR2 DAC_SR_DMAUDR2_Msk /*!<DAC channel2 DMA underrun flag */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Digital Filter for Sigma Delta Modulators */\r
-/* */\r
-/******************************************************************************/\r
-\r
-/**************** DFSDM channel configuration registers ********************/\r
-\r
-/*************** Bit definition for DFSDM_CHCFGR1 register ******************/\r
-#define DFSDM_CHCFGR1_DFSDMEN_Pos (31U) \r
-#define DFSDM_CHCFGR1_DFSDMEN_Msk (0x1UL << DFSDM_CHCFGR1_DFSDMEN_Pos) /*!< 0x80000000 */\r
-#define DFSDM_CHCFGR1_DFSDMEN DFSDM_CHCFGR1_DFSDMEN_Msk /*!< Global enable for DFSDM interface */\r
-#define DFSDM_CHCFGR1_CKOUTSRC_Pos (30U) \r
-#define DFSDM_CHCFGR1_CKOUTSRC_Msk (0x1UL << DFSDM_CHCFGR1_CKOUTSRC_Pos) /*!< 0x40000000 */\r
-#define DFSDM_CHCFGR1_CKOUTSRC DFSDM_CHCFGR1_CKOUTSRC_Msk /*!< Output serial clock source selection */\r
-#define DFSDM_CHCFGR1_CKOUTDIV_Pos (16U) \r
-#define DFSDM_CHCFGR1_CKOUTDIV_Msk (0xFFUL << DFSDM_CHCFGR1_CKOUTDIV_Pos) /*!< 0x00FF0000 */\r
-#define DFSDM_CHCFGR1_CKOUTDIV DFSDM_CHCFGR1_CKOUTDIV_Msk /*!< CKOUTDIV[7:0] output serial clock divider */\r
-#define DFSDM_CHCFGR1_DATPACK_Pos (14U) \r
-#define DFSDM_CHCFGR1_DATPACK_Msk (0x3UL << DFSDM_CHCFGR1_DATPACK_Pos) /*!< 0x0000C000 */\r
-#define DFSDM_CHCFGR1_DATPACK DFSDM_CHCFGR1_DATPACK_Msk /*!< DATPACK[1:0] Data packing mode */\r
-#define DFSDM_CHCFGR1_DATPACK_1 (0x2UL << DFSDM_CHCFGR1_DATPACK_Pos) /*!< 0x00008000 */\r
-#define DFSDM_CHCFGR1_DATPACK_0 (0x1UL << DFSDM_CHCFGR1_DATPACK_Pos) /*!< 0x00004000 */\r
-#define DFSDM_CHCFGR1_DATMPX_Pos (12U) \r
-#define DFSDM_CHCFGR1_DATMPX_Msk (0x3UL << DFSDM_CHCFGR1_DATMPX_Pos) /*!< 0x00003000 */\r
-#define DFSDM_CHCFGR1_DATMPX DFSDM_CHCFGR1_DATMPX_Msk /*!< DATMPX[1:0] Input data multiplexer for channel y */\r
-#define DFSDM_CHCFGR1_DATMPX_1 (0x2UL << DFSDM_CHCFGR1_DATMPX_Pos) /*!< 0x00002000 */\r
-#define DFSDM_CHCFGR1_DATMPX_0 (0x1UL << DFSDM_CHCFGR1_DATMPX_Pos) /*!< 0x00001000 */\r
-#define DFSDM_CHCFGR1_CHINSEL_Pos (8U) \r
-#define DFSDM_CHCFGR1_CHINSEL_Msk (0x1UL << DFSDM_CHCFGR1_CHINSEL_Pos) /*!< 0x00000100 */\r
-#define DFSDM_CHCFGR1_CHINSEL DFSDM_CHCFGR1_CHINSEL_Msk /*!< Serial inputs selection for channel y */\r
-#define DFSDM_CHCFGR1_CHEN_Pos (7U) \r
-#define DFSDM_CHCFGR1_CHEN_Msk (0x1UL << DFSDM_CHCFGR1_CHEN_Pos) /*!< 0x00000080 */\r
-#define DFSDM_CHCFGR1_CHEN DFSDM_CHCFGR1_CHEN_Msk /*!< Channel y enable */\r
-#define DFSDM_CHCFGR1_CKABEN_Pos (6U) \r
-#define DFSDM_CHCFGR1_CKABEN_Msk (0x1UL << DFSDM_CHCFGR1_CKABEN_Pos) /*!< 0x00000040 */\r
-#define DFSDM_CHCFGR1_CKABEN DFSDM_CHCFGR1_CKABEN_Msk /*!< Clock absence detector enable on channel y */\r
-#define DFSDM_CHCFGR1_SCDEN_Pos (5U) \r
-#define DFSDM_CHCFGR1_SCDEN_Msk (0x1UL << DFSDM_CHCFGR1_SCDEN_Pos) /*!< 0x00000020 */\r
-#define DFSDM_CHCFGR1_SCDEN DFSDM_CHCFGR1_SCDEN_Msk /*!< Short circuit detector enable on channel y */\r
-#define DFSDM_CHCFGR1_SPICKSEL_Pos (2U) \r
-#define DFSDM_CHCFGR1_SPICKSEL_Msk (0x3UL << DFSDM_CHCFGR1_SPICKSEL_Pos) /*!< 0x0000000C */\r
-#define DFSDM_CHCFGR1_SPICKSEL DFSDM_CHCFGR1_SPICKSEL_Msk /*!< SPICKSEL[1:0] SPI clock select for channel y */\r
-#define DFSDM_CHCFGR1_SPICKSEL_1 (0x2UL << DFSDM_CHCFGR1_SPICKSEL_Pos) /*!< 0x00000008 */\r
-#define DFSDM_CHCFGR1_SPICKSEL_0 (0x1UL << DFSDM_CHCFGR1_SPICKSEL_Pos) /*!< 0x00000004 */\r
-#define DFSDM_CHCFGR1_SITP_Pos (0U) \r
-#define DFSDM_CHCFGR1_SITP_Msk (0x3UL << DFSDM_CHCFGR1_SITP_Pos) /*!< 0x00000003 */\r
-#define DFSDM_CHCFGR1_SITP DFSDM_CHCFGR1_SITP_Msk /*!< SITP[1:0] Serial interface type for channel y */\r
-#define DFSDM_CHCFGR1_SITP_1 (0x2UL << DFSDM_CHCFGR1_SITP_Pos) /*!< 0x00000002 */\r
-#define DFSDM_CHCFGR1_SITP_0 (0x1UL << DFSDM_CHCFGR1_SITP_Pos) /*!< 0x00000001 */\r
-\r
-/*************** Bit definition for DFSDM_CHCFGR2 register ******************/\r
-#define DFSDM_CHCFGR2_OFFSET_Pos (8U) \r
-#define DFSDM_CHCFGR2_OFFSET_Msk (0xFFFFFFUL << DFSDM_CHCFGR2_OFFSET_Pos) /*!< 0xFFFFFF00 */\r
-#define DFSDM_CHCFGR2_OFFSET DFSDM_CHCFGR2_OFFSET_Msk /*!< OFFSET[23:0] 24-bit calibration offset for channel y */\r
-#define DFSDM_CHCFGR2_DTRBS_Pos (3U) \r
-#define DFSDM_CHCFGR2_DTRBS_Msk (0x1FUL << DFSDM_CHCFGR2_DTRBS_Pos) /*!< 0x000000F8 */\r
-#define DFSDM_CHCFGR2_DTRBS DFSDM_CHCFGR2_DTRBS_Msk /*!< DTRBS[4:0] Data right bit-shift for channel y */\r
-\r
-/****************** Bit definition for DFSDM_CHAWSCDR register *****************/\r
-#define DFSDM_CHAWSCDR_AWFORD_Pos (22U) \r
-#define DFSDM_CHAWSCDR_AWFORD_Msk (0x3UL << DFSDM_CHAWSCDR_AWFORD_Pos) /*!< 0x00C00000 */\r
-#define DFSDM_CHAWSCDR_AWFORD DFSDM_CHAWSCDR_AWFORD_Msk /*!< AWFORD[1:0] Analog watchdog Sinc filter order on channel y */\r
-#define DFSDM_CHAWSCDR_AWFORD_1 (0x2UL << DFSDM_CHAWSCDR_AWFORD_Pos) /*!< 0x00800000 */\r
-#define DFSDM_CHAWSCDR_AWFORD_0 (0x1UL << DFSDM_CHAWSCDR_AWFORD_Pos) /*!< 0x00400000 */\r
-#define DFSDM_CHAWSCDR_AWFOSR_Pos (16U) \r
-#define DFSDM_CHAWSCDR_AWFOSR_Msk (0x1FUL << DFSDM_CHAWSCDR_AWFOSR_Pos) /*!< 0x001F0000 */\r
-#define DFSDM_CHAWSCDR_AWFOSR DFSDM_CHAWSCDR_AWFOSR_Msk /*!< AWFOSR[4:0] Analog watchdog filter oversampling ratio on channel y */\r
-#define DFSDM_CHAWSCDR_BKSCD_Pos (12U) \r
-#define DFSDM_CHAWSCDR_BKSCD_Msk (0xFUL << DFSDM_CHAWSCDR_BKSCD_Pos) /*!< 0x0000F000 */\r
-#define DFSDM_CHAWSCDR_BKSCD DFSDM_CHAWSCDR_BKSCD_Msk /*!< BKSCD[3:0] Break signal assignment for short circuit detector on channel y */\r
-#define DFSDM_CHAWSCDR_SCDT_Pos (0U) \r
-#define DFSDM_CHAWSCDR_SCDT_Msk (0xFFUL << DFSDM_CHAWSCDR_SCDT_Pos) /*!< 0x000000FF */\r
-#define DFSDM_CHAWSCDR_SCDT DFSDM_CHAWSCDR_SCDT_Msk /*!< SCDT[7:0] Short circuit detector threshold for channel y */\r
-\r
-/**************** Bit definition for DFSDM_CHWDATR register *******************/\r
-#define DFSDM_CHWDATR_WDATA_Pos (0U) \r
-#define DFSDM_CHWDATR_WDATA_Msk (0xFFFFUL << DFSDM_CHWDATR_WDATA_Pos) /*!< 0x0000FFFF */\r
-#define DFSDM_CHWDATR_WDATA DFSDM_CHWDATR_WDATA_Msk /*!< WDATA[15:0] Input channel y watchdog data */\r
-\r
-/**************** Bit definition for DFSDM_CHDATINR register *****************/\r
-#define DFSDM_CHDATINR_INDAT0_Pos (0U) \r
-#define DFSDM_CHDATINR_INDAT0_Msk (0xFFFFUL << DFSDM_CHDATINR_INDAT0_Pos) /*!< 0x0000FFFF */\r
-#define DFSDM_CHDATINR_INDAT0 DFSDM_CHDATINR_INDAT0_Msk /*!< INDAT0[31:16] Input data for channel y or channel (y+1) */\r
-#define DFSDM_CHDATINR_INDAT1_Pos (16U) \r
-#define DFSDM_CHDATINR_INDAT1_Msk (0xFFFFUL << DFSDM_CHDATINR_INDAT1_Pos) /*!< 0xFFFF0000 */\r
-#define DFSDM_CHDATINR_INDAT1 DFSDM_CHDATINR_INDAT1_Msk /*!< INDAT0[15:0] Input data for channel y */\r
-\r
-/************************ DFSDM module registers ****************************/\r
-\r
-/******************** Bit definition for DFSDM_FLTCR1 register *******************/\r
-#define DFSDM_FLTCR1_AWFSEL_Pos (30U) \r
-#define DFSDM_FLTCR1_AWFSEL_Msk (0x1UL << DFSDM_FLTCR1_AWFSEL_Pos) /*!< 0x40000000 */\r
-#define DFSDM_FLTCR1_AWFSEL DFSDM_FLTCR1_AWFSEL_Msk /*!< Analog watchdog fast mode select */\r
-#define DFSDM_FLTCR1_FAST_Pos (29U) \r
-#define DFSDM_FLTCR1_FAST_Msk (0x1UL << DFSDM_FLTCR1_FAST_Pos) /*!< 0x20000000 */\r
-#define DFSDM_FLTCR1_FAST DFSDM_FLTCR1_FAST_Msk /*!< Fast conversion mode selection */\r
-#define DFSDM_FLTCR1_RCH_Pos (24U) \r
-#define DFSDM_FLTCR1_RCH_Msk (0x7UL << DFSDM_FLTCR1_RCH_Pos) /*!< 0x07000000 */\r
-#define DFSDM_FLTCR1_RCH DFSDM_FLTCR1_RCH_Msk /*!< RCH[2:0] Regular channel selection */\r
-#define DFSDM_FLTCR1_RDMAEN_Pos (21U) \r
-#define DFSDM_FLTCR1_RDMAEN_Msk (0x1UL << DFSDM_FLTCR1_RDMAEN_Pos) /*!< 0x00200000 */\r
-#define DFSDM_FLTCR1_RDMAEN DFSDM_FLTCR1_RDMAEN_Msk /*!< DMA channel enabled to read data for the regular conversion */\r
-#define DFSDM_FLTCR1_RSYNC_Pos (19U) \r
-#define DFSDM_FLTCR1_RSYNC_Msk (0x1UL << DFSDM_FLTCR1_RSYNC_Pos) /*!< 0x00080000 */\r
-#define DFSDM_FLTCR1_RSYNC DFSDM_FLTCR1_RSYNC_Msk /*!< Launch regular conversion synchronously with DFSDMx */\r
-#define DFSDM_FLTCR1_RCONT_Pos (18U) \r
-#define DFSDM_FLTCR1_RCONT_Msk (0x1UL << DFSDM_FLTCR1_RCONT_Pos) /*!< 0x00040000 */\r
-#define DFSDM_FLTCR1_RCONT DFSDM_FLTCR1_RCONT_Msk /*!< Continuous mode selection for regular conversions */\r
-#define DFSDM_FLTCR1_RSWSTART_Pos (17U) \r
-#define DFSDM_FLTCR1_RSWSTART_Msk (0x1UL << DFSDM_FLTCR1_RSWSTART_Pos) /*!< 0x00020000 */\r
-#define DFSDM_FLTCR1_RSWSTART DFSDM_FLTCR1_RSWSTART_Msk /*!< Software start of a conversion on the regular channel */\r
-#define DFSDM_FLTCR1_JEXTEN_Pos (13U) \r
-#define DFSDM_FLTCR1_JEXTEN_Msk (0x3UL << DFSDM_FLTCR1_JEXTEN_Pos) /*!< 0x00006000 */\r
-#define DFSDM_FLTCR1_JEXTEN DFSDM_FLTCR1_JEXTEN_Msk /*!< JEXTEN[1:0] Trigger enable and trigger edge selection for injected conversions */\r
-#define DFSDM_FLTCR1_JEXTEN_1 (0x2UL << DFSDM_FLTCR1_JEXTEN_Pos) /*!< 0x00004000 */\r
-#define DFSDM_FLTCR1_JEXTEN_0 (0x1UL << DFSDM_FLTCR1_JEXTEN_Pos) /*!< 0x00002000 */\r
-#define DFSDM_FLTCR1_JEXTSEL_Pos (8U) \r
-#define DFSDM_FLTCR1_JEXTSEL_Msk (0x1FUL << DFSDM_FLTCR1_JEXTSEL_Pos) /*!< 0x00001F00 */\r
-#define DFSDM_FLTCR1_JEXTSEL DFSDM_FLTCR1_JEXTSEL_Msk /*!< JEXTSEL[4:0]Trigger signal selection for launching injected conversions */\r
-#define DFSDM_FLTCR1_JEXTSEL_0 (0x01UL << DFSDM_FLTCR1_JEXTSEL_Pos) /*!< 0x00000100 */\r
-#define DFSDM_FLTCR1_JEXTSEL_1 (0x02UL << DFSDM_FLTCR1_JEXTSEL_Pos) /*!< 0x00000200 */\r
-#define DFSDM_FLTCR1_JEXTSEL_2 (0x04UL << DFSDM_FLTCR1_JEXTSEL_Pos) /*!< 0x00000400 */\r
-#define DFSDM_FLTCR1_JEXTSEL_3 (0x08UL << DFSDM_FLTCR1_JEXTSEL_Pos) /*!< 0x00000800 */\r
-#define DFSDM_FLTCR1_JEXTSEL_4 (0x10UL << DFSDM_FLTCR1_JEXTSEL_Pos) /*!< 0x00001000 */\r
-#define DFSDM_FLTCR1_JDMAEN_Pos (5U) \r
-#define DFSDM_FLTCR1_JDMAEN_Msk (0x1UL << DFSDM_FLTCR1_JDMAEN_Pos) /*!< 0x00000020 */\r
-#define DFSDM_FLTCR1_JDMAEN DFSDM_FLTCR1_JDMAEN_Msk /*!< DMA channel enabled to read data for the injected channel group */\r
-#define DFSDM_FLTCR1_JSCAN_Pos (4U) \r
-#define DFSDM_FLTCR1_JSCAN_Msk (0x1UL << DFSDM_FLTCR1_JSCAN_Pos) /*!< 0x00000010 */\r
-#define DFSDM_FLTCR1_JSCAN DFSDM_FLTCR1_JSCAN_Msk /*!< Scanning conversion in continuous mode selection for injected conversions */\r
-#define DFSDM_FLTCR1_JSYNC_Pos (3U) \r
-#define DFSDM_FLTCR1_JSYNC_Msk (0x1UL << DFSDM_FLTCR1_JSYNC_Pos) /*!< 0x00000008 */\r
-#define DFSDM_FLTCR1_JSYNC DFSDM_FLTCR1_JSYNC_Msk /*!< Launch an injected conversion synchronously with DFSDMx JSWSTART trigger */\r
-#define DFSDM_FLTCR1_JSWSTART_Pos (1U) \r
-#define DFSDM_FLTCR1_JSWSTART_Msk (0x1UL << DFSDM_FLTCR1_JSWSTART_Pos) /*!< 0x00000002 */\r
-#define DFSDM_FLTCR1_JSWSTART DFSDM_FLTCR1_JSWSTART_Msk /*!< Start the conversion of the injected group of channels */\r
-#define DFSDM_FLTCR1_DFEN_Pos (0U) \r
-#define DFSDM_FLTCR1_DFEN_Msk (0x1UL << DFSDM_FLTCR1_DFEN_Pos) /*!< 0x00000001 */\r
-#define DFSDM_FLTCR1_DFEN DFSDM_FLTCR1_DFEN_Msk /*!< DFSDM enable */\r
-\r
-/******************** Bit definition for DFSDM_FLTCR2 register *******************/\r
-#define DFSDM_FLTCR2_AWDCH_Pos (16U) \r
-#define DFSDM_FLTCR2_AWDCH_Msk (0xFFUL << DFSDM_FLTCR2_AWDCH_Pos) /*!< 0x00FF0000 */\r
-#define DFSDM_FLTCR2_AWDCH DFSDM_FLTCR2_AWDCH_Msk /*!< AWDCH[7:0] Analog watchdog channel selection */\r
-#define DFSDM_FLTCR2_EXCH_Pos (8U) \r
-#define DFSDM_FLTCR2_EXCH_Msk (0xFFUL << DFSDM_FLTCR2_EXCH_Pos) /*!< 0x0000FF00 */\r
-#define DFSDM_FLTCR2_EXCH DFSDM_FLTCR2_EXCH_Msk /*!< EXCH[7:0] Extreme detector channel selection */\r
-#define DFSDM_FLTCR2_CKABIE_Pos (6U) \r
-#define DFSDM_FLTCR2_CKABIE_Msk (0x1UL << DFSDM_FLTCR2_CKABIE_Pos) /*!< 0x00000040 */\r
-#define DFSDM_FLTCR2_CKABIE DFSDM_FLTCR2_CKABIE_Msk /*!< Clock absence interrupt enable */\r
-#define DFSDM_FLTCR2_SCDIE_Pos (5U) \r
-#define DFSDM_FLTCR2_SCDIE_Msk (0x1UL << DFSDM_FLTCR2_SCDIE_Pos) /*!< 0x00000020 */\r
-#define DFSDM_FLTCR2_SCDIE DFSDM_FLTCR2_SCDIE_Msk /*!< Short circuit detector interrupt enable */\r
-#define DFSDM_FLTCR2_AWDIE_Pos (4U) \r
-#define DFSDM_FLTCR2_AWDIE_Msk (0x1UL << DFSDM_FLTCR2_AWDIE_Pos) /*!< 0x00000010 */\r
-#define DFSDM_FLTCR2_AWDIE DFSDM_FLTCR2_AWDIE_Msk /*!< Analog watchdog interrupt enable */\r
-#define DFSDM_FLTCR2_ROVRIE_Pos (3U) \r
-#define DFSDM_FLTCR2_ROVRIE_Msk (0x1UL << DFSDM_FLTCR2_ROVRIE_Pos) /*!< 0x00000008 */\r
-#define DFSDM_FLTCR2_ROVRIE DFSDM_FLTCR2_ROVRIE_Msk /*!< Regular data overrun interrupt enable */\r
-#define DFSDM_FLTCR2_JOVRIE_Pos (2U) \r
-#define DFSDM_FLTCR2_JOVRIE_Msk (0x1UL << DFSDM_FLTCR2_JOVRIE_Pos) /*!< 0x00000004 */\r
-#define DFSDM_FLTCR2_JOVRIE DFSDM_FLTCR2_JOVRIE_Msk /*!< Injected data overrun interrupt enable */\r
-#define DFSDM_FLTCR2_REOCIE_Pos (1U) \r
-#define DFSDM_FLTCR2_REOCIE_Msk (0x1UL << DFSDM_FLTCR2_REOCIE_Pos) /*!< 0x00000002 */\r
-#define DFSDM_FLTCR2_REOCIE DFSDM_FLTCR2_REOCIE_Msk /*!< Regular end of conversion interrupt enable */\r
-#define DFSDM_FLTCR2_JEOCIE_Pos (0U) \r
-#define DFSDM_FLTCR2_JEOCIE_Msk (0x1UL << DFSDM_FLTCR2_JEOCIE_Pos) /*!< 0x00000001 */\r
-#define DFSDM_FLTCR2_JEOCIE DFSDM_FLTCR2_JEOCIE_Msk /*!< Injected end of conversion interrupt enable */\r
-\r
-/******************** Bit definition for DFSDM_FLTISR register *******************/\r
-#define DFSDM_FLTISR_SCDF_Pos (24U) \r
-#define DFSDM_FLTISR_SCDF_Msk (0xFFUL << DFSDM_FLTISR_SCDF_Pos) /*!< 0xFF000000 */\r
-#define DFSDM_FLTISR_SCDF DFSDM_FLTISR_SCDF_Msk /*!< SCDF[7:0] Short circuit detector flag */\r
-#define DFSDM_FLTISR_CKABF_Pos (16U) \r
-#define DFSDM_FLTISR_CKABF_Msk (0xFFUL << DFSDM_FLTISR_CKABF_Pos) /*!< 0x00FF0000 */\r
-#define DFSDM_FLTISR_CKABF DFSDM_FLTISR_CKABF_Msk /*!< CKABF[7:0] Clock absence flag */\r
-#define DFSDM_FLTISR_RCIP_Pos (14U) \r
-#define DFSDM_FLTISR_RCIP_Msk (0x1UL << DFSDM_FLTISR_RCIP_Pos) /*!< 0x00004000 */\r
-#define DFSDM_FLTISR_RCIP DFSDM_FLTISR_RCIP_Msk /*!< Regular conversion in progress status */\r
-#define DFSDM_FLTISR_JCIP_Pos (13U) \r
-#define DFSDM_FLTISR_JCIP_Msk (0x1UL << DFSDM_FLTISR_JCIP_Pos) /*!< 0x00002000 */\r
-#define DFSDM_FLTISR_JCIP DFSDM_FLTISR_JCIP_Msk /*!< Injected conversion in progress status */\r
-#define DFSDM_FLTISR_AWDF_Pos (4U) \r
-#define DFSDM_FLTISR_AWDF_Msk (0x1UL << DFSDM_FLTISR_AWDF_Pos) /*!< 0x00000010 */\r
-#define DFSDM_FLTISR_AWDF DFSDM_FLTISR_AWDF_Msk /*!< Analog watchdog */\r
-#define DFSDM_FLTISR_ROVRF_Pos (3U) \r
-#define DFSDM_FLTISR_ROVRF_Msk (0x1UL << DFSDM_FLTISR_ROVRF_Pos) /*!< 0x00000008 */\r
-#define DFSDM_FLTISR_ROVRF DFSDM_FLTISR_ROVRF_Msk /*!< Regular conversion overrun flag */\r
-#define DFSDM_FLTISR_JOVRF_Pos (2U) \r
-#define DFSDM_FLTISR_JOVRF_Msk (0x1UL << DFSDM_FLTISR_JOVRF_Pos) /*!< 0x00000004 */\r
-#define DFSDM_FLTISR_JOVRF DFSDM_FLTISR_JOVRF_Msk /*!< Injected conversion overrun flag */\r
-#define DFSDM_FLTISR_REOCF_Pos (1U) \r
-#define DFSDM_FLTISR_REOCF_Msk (0x1UL << DFSDM_FLTISR_REOCF_Pos) /*!< 0x00000002 */\r
-#define DFSDM_FLTISR_REOCF DFSDM_FLTISR_REOCF_Msk /*!< End of regular conversion flag */\r
-#define DFSDM_FLTISR_JEOCF_Pos (0U) \r
-#define DFSDM_FLTISR_JEOCF_Msk (0x1UL << DFSDM_FLTISR_JEOCF_Pos) /*!< 0x00000001 */\r
-#define DFSDM_FLTISR_JEOCF DFSDM_FLTISR_JEOCF_Msk /*!< End of injected conversion flag */\r
-\r
-/******************** Bit definition for DFSDM_FLTICR register *******************/\r
-#define DFSDM_FLTICR_CLRSCDF_Pos (24U) \r
-#define DFSDM_FLTICR_CLRSCDF_Msk (0xFFUL << DFSDM_FLTICR_CLRSCDF_Pos) /*!< 0xFF000000 */\r
-#define DFSDM_FLTICR_CLRSCDF DFSDM_FLTICR_CLRSCDF_Msk /*!< CLRSCSDF[7:0] Clear the short circuit detector flag */\r
-#define DFSDM_FLTICR_CLRCKABF_Pos (16U) \r
-#define DFSDM_FLTICR_CLRCKABF_Msk (0xFFUL << DFSDM_FLTICR_CLRCKABF_Pos) /*!< 0x00FF0000 */\r
-#define DFSDM_FLTICR_CLRCKABF DFSDM_FLTICR_CLRCKABF_Msk /*!< CLRCKABF[7:0] Clear the clock absence flag */\r
-#define DFSDM_FLTICR_CLRROVRF_Pos (3U) \r
-#define DFSDM_FLTICR_CLRROVRF_Msk (0x1UL << DFSDM_FLTICR_CLRROVRF_Pos) /*!< 0x00000008 */\r
-#define DFSDM_FLTICR_CLRROVRF DFSDM_FLTICR_CLRROVRF_Msk /*!< Clear the regular conversion overrun flag */\r
-#define DFSDM_FLTICR_CLRJOVRF_Pos (2U) \r
-#define DFSDM_FLTICR_CLRJOVRF_Msk (0x1UL << DFSDM_FLTICR_CLRJOVRF_Pos) /*!< 0x00000004 */\r
-#define DFSDM_FLTICR_CLRJOVRF DFSDM_FLTICR_CLRJOVRF_Msk /*!< Clear the injected conversion overrun flag */\r
-\r
-/******************* Bit definition for DFSDM_FLTJCHGR register ******************/\r
-#define DFSDM_FLTJCHGR_JCHG_Pos (0U) \r
-#define DFSDM_FLTJCHGR_JCHG_Msk (0xFFUL << DFSDM_FLTJCHGR_JCHG_Pos) /*!< 0x000000FF */\r
-#define DFSDM_FLTJCHGR_JCHG DFSDM_FLTJCHGR_JCHG_Msk /*!< JCHG[7:0] Injected channel group selection */\r
-\r
-/******************** Bit definition for DFSDM_FLTFCR register *******************/\r
-#define DFSDM_FLTFCR_FORD_Pos (29U) \r
-#define DFSDM_FLTFCR_FORD_Msk (0x7UL << DFSDM_FLTFCR_FORD_Pos) /*!< 0xE0000000 */\r
-#define DFSDM_FLTFCR_FORD DFSDM_FLTFCR_FORD_Msk /*!< FORD[2:0] Sinc filter order */\r
-#define DFSDM_FLTFCR_FORD_2 (0x4UL << DFSDM_FLTFCR_FORD_Pos) /*!< 0x80000000 */\r
-#define DFSDM_FLTFCR_FORD_1 (0x2UL << DFSDM_FLTFCR_FORD_Pos) /*!< 0x40000000 */\r
-#define DFSDM_FLTFCR_FORD_0 (0x1UL << DFSDM_FLTFCR_FORD_Pos) /*!< 0x20000000 */\r
-#define DFSDM_FLTFCR_FOSR_Pos (16U) \r
-#define DFSDM_FLTFCR_FOSR_Msk (0x3FFUL << DFSDM_FLTFCR_FOSR_Pos) /*!< 0x03FF0000 */\r
-#define DFSDM_FLTFCR_FOSR DFSDM_FLTFCR_FOSR_Msk /*!< FOSR[9:0] Sinc filter oversampling ratio (decimation rate) */\r
-#define DFSDM_FLTFCR_IOSR_Pos (0U) \r
-#define DFSDM_FLTFCR_IOSR_Msk (0xFFUL << DFSDM_FLTFCR_IOSR_Pos) /*!< 0x000000FF */\r
-#define DFSDM_FLTFCR_IOSR DFSDM_FLTFCR_IOSR_Msk /*!< IOSR[7:0] Integrator oversampling ratio (averaging length) */\r
-\r
-/****************** Bit definition for DFSDM_FLTJDATAR register *****************/\r
-#define DFSDM_FLTJDATAR_JDATA_Pos (8U) \r
-#define DFSDM_FLTJDATAR_JDATA_Msk (0xFFFFFFUL << DFSDM_FLTJDATAR_JDATA_Pos) /*!< 0xFFFFFF00 */\r
-#define DFSDM_FLTJDATAR_JDATA DFSDM_FLTJDATAR_JDATA_Msk /*!< JDATA[23:0] Injected group conversion data */\r
-#define DFSDM_FLTJDATAR_JDATACH_Pos (0U) \r
-#define DFSDM_FLTJDATAR_JDATACH_Msk (0x7UL << DFSDM_FLTJDATAR_JDATACH_Pos) /*!< 0x00000007 */\r
-#define DFSDM_FLTJDATAR_JDATACH DFSDM_FLTJDATAR_JDATACH_Msk /*!< JDATACH[2:0] Injected channel most recently converted */\r
-\r
-/****************** Bit definition for DFSDM_FLTRDATAR register *****************/\r
-#define DFSDM_FLTRDATAR_RDATA_Pos (8U) \r
-#define DFSDM_FLTRDATAR_RDATA_Msk (0xFFFFFFUL << DFSDM_FLTRDATAR_RDATA_Pos) /*!< 0xFFFFFF00 */\r
-#define DFSDM_FLTRDATAR_RDATA DFSDM_FLTRDATAR_RDATA_Msk /*!< RDATA[23:0] Regular channel conversion data */\r
-#define DFSDM_FLTRDATAR_RPEND_Pos (4U) \r
-#define DFSDM_FLTRDATAR_RPEND_Msk (0x1UL << DFSDM_FLTRDATAR_RPEND_Pos) /*!< 0x00000010 */\r
-#define DFSDM_FLTRDATAR_RPEND DFSDM_FLTRDATAR_RPEND_Msk /*!< RPEND Regular channel pending data */\r
-#define DFSDM_FLTRDATAR_RDATACH_Pos (0U) \r
-#define DFSDM_FLTRDATAR_RDATACH_Msk (0x7UL << DFSDM_FLTRDATAR_RDATACH_Pos) /*!< 0x00000007 */\r
-#define DFSDM_FLTRDATAR_RDATACH DFSDM_FLTRDATAR_RDATACH_Msk /*!< RDATACH[2:0] Regular channel most recently converted */\r
-\r
-/****************** Bit definition for DFSDM_FLTAWHTR register ******************/\r
-#define DFSDM_FLTAWHTR_AWHT_Pos (8U) \r
-#define DFSDM_FLTAWHTR_AWHT_Msk (0xFFFFFFUL << DFSDM_FLTAWHTR_AWHT_Pos) /*!< 0xFFFFFF00 */\r
-#define DFSDM_FLTAWHTR_AWHT DFSDM_FLTAWHTR_AWHT_Msk /*!< AWHT[23:0] Analog watchdog high threshold */\r
-#define DFSDM_FLTAWHTR_BKAWH_Pos (0U) \r
-#define DFSDM_FLTAWHTR_BKAWH_Msk (0xFUL << DFSDM_FLTAWHTR_BKAWH_Pos) /*!< 0x0000000F */\r
-#define DFSDM_FLTAWHTR_BKAWH DFSDM_FLTAWHTR_BKAWH_Msk /*!< BKAWH[3:0] Break signal assignment to analog watchdog high threshold event */\r
-\r
-/****************** Bit definition for DFSDM_FLTAWLTR register ******************/\r
-#define DFSDM_FLTAWLTR_AWLT_Pos (8U) \r
-#define DFSDM_FLTAWLTR_AWLT_Msk (0xFFFFFFUL << DFSDM_FLTAWLTR_AWLT_Pos) /*!< 0xFFFFFF00 */\r
-#define DFSDM_FLTAWLTR_AWLT DFSDM_FLTAWLTR_AWLT_Msk /*!< AWLT[23:0] Analog watchdog low threshold */\r
-#define DFSDM_FLTAWLTR_BKAWL_Pos (0U) \r
-#define DFSDM_FLTAWLTR_BKAWL_Msk (0xFUL << DFSDM_FLTAWLTR_BKAWL_Pos) /*!< 0x0000000F */\r
-#define DFSDM_FLTAWLTR_BKAWL DFSDM_FLTAWLTR_BKAWL_Msk /*!< BKAWL[3:0] Break signal assignment to analog watchdog low threshold event */\r
-\r
-/****************** Bit definition for DFSDM_FLTAWSR register ******************/\r
-#define DFSDM_FLTAWSR_AWHTF_Pos (8U) \r
-#define DFSDM_FLTAWSR_AWHTF_Msk (0xFFUL << DFSDM_FLTAWSR_AWHTF_Pos) /*!< 0x0000FF00 */\r
-#define DFSDM_FLTAWSR_AWHTF DFSDM_FLTAWSR_AWHTF_Msk /*!< AWHTF[15:8] Analog watchdog high threshold error on given channels */\r
-#define DFSDM_FLTAWSR_AWLTF_Pos (0U) \r
-#define DFSDM_FLTAWSR_AWLTF_Msk (0xFFUL << DFSDM_FLTAWSR_AWLTF_Pos) /*!< 0x000000FF */\r
-#define DFSDM_FLTAWSR_AWLTF DFSDM_FLTAWSR_AWLTF_Msk /*!< AWLTF[7:0] Analog watchdog low threshold error on given channels */\r
-\r
-/****************** Bit definition for DFSDM_FLTAWCFR register *****************/\r
-#define DFSDM_FLTAWCFR_CLRAWHTF_Pos (8U) \r
-#define DFSDM_FLTAWCFR_CLRAWHTF_Msk (0xFFUL << DFSDM_FLTAWCFR_CLRAWHTF_Pos) /*!< 0x0000FF00 */\r
-#define DFSDM_FLTAWCFR_CLRAWHTF DFSDM_FLTAWCFR_CLRAWHTF_Msk /*!< CLRAWHTF[15:8] Clear the Analog watchdog high threshold flag */\r
-#define DFSDM_FLTAWCFR_CLRAWLTF_Pos (0U) \r
-#define DFSDM_FLTAWCFR_CLRAWLTF_Msk (0xFFUL << DFSDM_FLTAWCFR_CLRAWLTF_Pos) /*!< 0x000000FF */\r
-#define DFSDM_FLTAWCFR_CLRAWLTF DFSDM_FLTAWCFR_CLRAWLTF_Msk /*!< CLRAWLTF[7:0] Clear the Analog watchdog low threshold flag */\r
-\r
-/****************** Bit definition for DFSDM_FLTEXMAX register ******************/\r
-#define DFSDM_FLTEXMAX_EXMAX_Pos (8U) \r
-#define DFSDM_FLTEXMAX_EXMAX_Msk (0xFFFFFFUL << DFSDM_FLTEXMAX_EXMAX_Pos) /*!< 0xFFFFFF00 */\r
-#define DFSDM_FLTEXMAX_EXMAX DFSDM_FLTEXMAX_EXMAX_Msk /*!< EXMAX[23:0] Extreme detector maximum value */\r
-#define DFSDM_FLTEXMAX_EXMAXCH_Pos (0U) \r
-#define DFSDM_FLTEXMAX_EXMAXCH_Msk (0x7UL << DFSDM_FLTEXMAX_EXMAXCH_Pos) /*!< 0x00000007 */\r
-#define DFSDM_FLTEXMAX_EXMAXCH DFSDM_FLTEXMAX_EXMAXCH_Msk /*!< EXMAXCH[2:0] Extreme detector maximum data channel */\r
-\r
-/****************** Bit definition for DFSDM_FLTEXMIN register ******************/\r
-#define DFSDM_FLTEXMIN_EXMIN_Pos (8U) \r
-#define DFSDM_FLTEXMIN_EXMIN_Msk (0xFFFFFFUL << DFSDM_FLTEXMIN_EXMIN_Pos) /*!< 0xFFFFFF00 */\r
-#define DFSDM_FLTEXMIN_EXMIN DFSDM_FLTEXMIN_EXMIN_Msk /*!< EXMIN[23:0] Extreme detector minimum value */\r
-#define DFSDM_FLTEXMIN_EXMINCH_Pos (0U) \r
-#define DFSDM_FLTEXMIN_EXMINCH_Msk (0x7UL << DFSDM_FLTEXMIN_EXMINCH_Pos) /*!< 0x00000007 */\r
-#define DFSDM_FLTEXMIN_EXMINCH DFSDM_FLTEXMIN_EXMINCH_Msk /*!< EXMINCH[2:0] Extreme detector minimum data channel */\r
-\r
-/****************** Bit definition for DFSDM_FLTCNVTIMR register ******************/\r
-#define DFSDM_FLTCNVTIMR_CNVCNT_Pos (4U) \r
-#define DFSDM_FLTCNVTIMR_CNVCNT_Msk (0xFFFFFFFUL << DFSDM_FLTCNVTIMR_CNVCNT_Pos) /*!< 0xFFFFFFF0 */\r
-#define DFSDM_FLTCNVTIMR_CNVCNT DFSDM_FLTCNVTIMR_CNVCNT_Msk /*!< CNVCNT[27:0]: 28-bit timer counting conversion time */\r
-\r
-/* Legacy Defines */\r
-#define DFSDM_FLTICR_CLRSCSDF_Pos DFSDM_FLTICR_CLRSCDF_Pos \r
-#define DFSDM_FLTICR_CLRSCSDF_Msk DFSDM_FLTICR_CLRSCDF_Msk\r
-#define DFSDM_FLTICR_CLRSCSDF DFSDM_FLTICR_CLRSCDF\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Debug MCU */\r
-/* */\r
-/******************************************************************************/\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* DCMI */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bits definition for DCMI_CR register ******************/\r
-#define DCMI_CR_CAPTURE_Pos (0U) \r
-#define DCMI_CR_CAPTURE_Msk (0x1UL << DCMI_CR_CAPTURE_Pos) /*!< 0x00000001 */\r
-#define DCMI_CR_CAPTURE DCMI_CR_CAPTURE_Msk \r
-#define DCMI_CR_CM_Pos (1U) \r
-#define DCMI_CR_CM_Msk (0x1UL << DCMI_CR_CM_Pos) /*!< 0x00000002 */\r
-#define DCMI_CR_CM DCMI_CR_CM_Msk \r
-#define DCMI_CR_CROP_Pos (2U) \r
-#define DCMI_CR_CROP_Msk (0x1UL << DCMI_CR_CROP_Pos) /*!< 0x00000004 */\r
-#define DCMI_CR_CROP DCMI_CR_CROP_Msk \r
-#define DCMI_CR_JPEG_Pos (3U) \r
-#define DCMI_CR_JPEG_Msk (0x1UL << DCMI_CR_JPEG_Pos) /*!< 0x00000008 */\r
-#define DCMI_CR_JPEG DCMI_CR_JPEG_Msk \r
-#define DCMI_CR_ESS_Pos (4U) \r
-#define DCMI_CR_ESS_Msk (0x1UL << DCMI_CR_ESS_Pos) /*!< 0x00000010 */\r
-#define DCMI_CR_ESS DCMI_CR_ESS_Msk \r
-#define DCMI_CR_PCKPOL_Pos (5U) \r
-#define DCMI_CR_PCKPOL_Msk (0x1UL << DCMI_CR_PCKPOL_Pos) /*!< 0x00000020 */\r
-#define DCMI_CR_PCKPOL DCMI_CR_PCKPOL_Msk \r
-#define DCMI_CR_HSPOL_Pos (6U) \r
-#define DCMI_CR_HSPOL_Msk (0x1UL << DCMI_CR_HSPOL_Pos) /*!< 0x00000040 */\r
-#define DCMI_CR_HSPOL DCMI_CR_HSPOL_Msk \r
-#define DCMI_CR_VSPOL_Pos (7U) \r
-#define DCMI_CR_VSPOL_Msk (0x1UL << DCMI_CR_VSPOL_Pos) /*!< 0x00000080 */\r
-#define DCMI_CR_VSPOL DCMI_CR_VSPOL_Msk \r
-#define DCMI_CR_FCRC_0 0x00000100U \r
-#define DCMI_CR_FCRC_1 0x00000200U \r
-#define DCMI_CR_EDM_0 0x00000400U \r
-#define DCMI_CR_EDM_1 0x00000800U \r
-#define DCMI_CR_CRE_Pos (12U) \r
-#define DCMI_CR_CRE_Msk (0x1UL << DCMI_CR_CRE_Pos) /*!< 0x00001000 */\r
-#define DCMI_CR_CRE DCMI_CR_CRE_Msk \r
-#define DCMI_CR_ENABLE_Pos (14U) \r
-#define DCMI_CR_ENABLE_Msk (0x1UL << DCMI_CR_ENABLE_Pos) /*!< 0x00004000 */\r
-#define DCMI_CR_ENABLE DCMI_CR_ENABLE_Msk \r
-#define DCMI_CR_BSM_Pos (16U) \r
-#define DCMI_CR_BSM_Msk (0x3UL << DCMI_CR_BSM_Pos) /*!< 0x00030000 */\r
-#define DCMI_CR_BSM DCMI_CR_BSM_Msk \r
-#define DCMI_CR_BSM_0 (0x1UL << DCMI_CR_BSM_Pos) /*!< 0x00010000 */\r
-#define DCMI_CR_BSM_1 (0x2UL << DCMI_CR_BSM_Pos) /*!< 0x00020000 */\r
-#define DCMI_CR_OEBS_Pos (18U) \r
-#define DCMI_CR_OEBS_Msk (0x1UL << DCMI_CR_OEBS_Pos) /*!< 0x00040000 */\r
-#define DCMI_CR_OEBS DCMI_CR_OEBS_Msk \r
-#define DCMI_CR_LSM_Pos (19U) \r
-#define DCMI_CR_LSM_Msk (0x1UL << DCMI_CR_LSM_Pos) /*!< 0x00080000 */\r
-#define DCMI_CR_LSM DCMI_CR_LSM_Msk \r
-#define DCMI_CR_OELS_Pos (20U) \r
-#define DCMI_CR_OELS_Msk (0x1UL << DCMI_CR_OELS_Pos) /*!< 0x00100000 */\r
-#define DCMI_CR_OELS DCMI_CR_OELS_Msk \r
-\r
-/******************** Bits definition for DCMI_SR register ******************/\r
-#define DCMI_SR_HSYNC_Pos (0U) \r
-#define DCMI_SR_HSYNC_Msk (0x1UL << DCMI_SR_HSYNC_Pos) /*!< 0x00000001 */\r
-#define DCMI_SR_HSYNC DCMI_SR_HSYNC_Msk \r
-#define DCMI_SR_VSYNC_Pos (1U) \r
-#define DCMI_SR_VSYNC_Msk (0x1UL << DCMI_SR_VSYNC_Pos) /*!< 0x00000002 */\r
-#define DCMI_SR_VSYNC DCMI_SR_VSYNC_Msk \r
-#define DCMI_SR_FNE_Pos (2U) \r
-#define DCMI_SR_FNE_Msk (0x1UL << DCMI_SR_FNE_Pos) /*!< 0x00000004 */\r
-#define DCMI_SR_FNE DCMI_SR_FNE_Msk \r
-\r
-/******************** Bits definition for DCMI_RIS register ****************/\r
-#define DCMI_RIS_FRAME_RIS_Pos (0U) \r
-#define DCMI_RIS_FRAME_RIS_Msk (0x1UL << DCMI_RIS_FRAME_RIS_Pos) /*!< 0x00000001 */\r
-#define DCMI_RIS_FRAME_RIS DCMI_RIS_FRAME_RIS_Msk \r
-#define DCMI_RIS_OVR_RIS_Pos (1U) \r
-#define DCMI_RIS_OVR_RIS_Msk (0x1UL << DCMI_RIS_OVR_RIS_Pos) /*!< 0x00000002 */\r
-#define DCMI_RIS_OVR_RIS DCMI_RIS_OVR_RIS_Msk \r
-#define DCMI_RIS_ERR_RIS_Pos (2U) \r
-#define DCMI_RIS_ERR_RIS_Msk (0x1UL << DCMI_RIS_ERR_RIS_Pos) /*!< 0x00000004 */\r
-#define DCMI_RIS_ERR_RIS DCMI_RIS_ERR_RIS_Msk \r
-#define DCMI_RIS_VSYNC_RIS_Pos (3U) \r
-#define DCMI_RIS_VSYNC_RIS_Msk (0x1UL << DCMI_RIS_VSYNC_RIS_Pos) /*!< 0x00000008 */\r
-#define DCMI_RIS_VSYNC_RIS DCMI_RIS_VSYNC_RIS_Msk \r
-#define DCMI_RIS_LINE_RIS_Pos (4U) \r
-#define DCMI_RIS_LINE_RIS_Msk (0x1UL << DCMI_RIS_LINE_RIS_Pos) /*!< 0x00000010 */\r
-#define DCMI_RIS_LINE_RIS DCMI_RIS_LINE_RIS_Msk \r
-\r
-/* Legacy defines */\r
-#define DCMI_RISR_FRAME_RIS DCMI_RIS_FRAME_RIS\r
-#define DCMI_RISR_OVF_RIS DCMI_RIS_OVR_RIS\r
-#define DCMI_RISR_ERR_RIS DCMI_RIS_ERR_RIS\r
-#define DCMI_RISR_VSYNC_RIS DCMI_RIS_VSYNC_RIS\r
-#define DCMI_RISR_LINE_RIS DCMI_RIS_LINE_RIS\r
-\r
-/******************** Bits definition for DCMI_IER register *****************/\r
-#define DCMI_IER_FRAME_IE_Pos (0U) \r
-#define DCMI_IER_FRAME_IE_Msk (0x1UL << DCMI_IER_FRAME_IE_Pos) /*!< 0x00000001 */\r
-#define DCMI_IER_FRAME_IE DCMI_IER_FRAME_IE_Msk \r
-#define DCMI_IER_OVR_IE_Pos (1U) \r
-#define DCMI_IER_OVR_IE_Msk (0x1UL << DCMI_IER_OVR_IE_Pos) /*!< 0x00000002 */\r
-#define DCMI_IER_OVR_IE DCMI_IER_OVR_IE_Msk \r
-#define DCMI_IER_ERR_IE_Pos (2U) \r
-#define DCMI_IER_ERR_IE_Msk (0x1UL << DCMI_IER_ERR_IE_Pos) /*!< 0x00000004 */\r
-#define DCMI_IER_ERR_IE DCMI_IER_ERR_IE_Msk \r
-#define DCMI_IER_VSYNC_IE_Pos (3U) \r
-#define DCMI_IER_VSYNC_IE_Msk (0x1UL << DCMI_IER_VSYNC_IE_Pos) /*!< 0x00000008 */\r
-#define DCMI_IER_VSYNC_IE DCMI_IER_VSYNC_IE_Msk \r
-#define DCMI_IER_LINE_IE_Pos (4U) \r
-#define DCMI_IER_LINE_IE_Msk (0x1UL << DCMI_IER_LINE_IE_Pos) /*!< 0x00000010 */\r
-#define DCMI_IER_LINE_IE DCMI_IER_LINE_IE_Msk \r
-\r
-\r
-/******************** Bits definition for DCMI_MIS register *****************/\r
-#define DCMI_MIS_FRAME_MIS_Pos (0U) \r
-#define DCMI_MIS_FRAME_MIS_Msk (0x1UL << DCMI_MIS_FRAME_MIS_Pos) /*!< 0x00000001 */\r
-#define DCMI_MIS_FRAME_MIS DCMI_MIS_FRAME_MIS_Msk \r
-#define DCMI_MIS_OVR_MIS_Pos (1U) \r
-#define DCMI_MIS_OVR_MIS_Msk (0x1UL << DCMI_MIS_OVR_MIS_Pos) /*!< 0x00000002 */\r
-#define DCMI_MIS_OVR_MIS DCMI_MIS_OVR_MIS_Msk \r
-#define DCMI_MIS_ERR_MIS_Pos (2U) \r
-#define DCMI_MIS_ERR_MIS_Msk (0x1UL << DCMI_MIS_ERR_MIS_Pos) /*!< 0x00000004 */\r
-#define DCMI_MIS_ERR_MIS DCMI_MIS_ERR_MIS_Msk \r
-#define DCMI_MIS_VSYNC_MIS_Pos (3U) \r
-#define DCMI_MIS_VSYNC_MIS_Msk (0x1UL << DCMI_MIS_VSYNC_MIS_Pos) /*!< 0x00000008 */\r
-#define DCMI_MIS_VSYNC_MIS DCMI_MIS_VSYNC_MIS_Msk \r
-#define DCMI_MIS_LINE_MIS_Pos (4U) \r
-#define DCMI_MIS_LINE_MIS_Msk (0x1UL << DCMI_MIS_LINE_MIS_Pos) /*!< 0x00000010 */\r
-#define DCMI_MIS_LINE_MIS DCMI_MIS_LINE_MIS_Msk \r
-\r
-\r
-/******************** Bits definition for DCMI_ICR register *****************/\r
-#define DCMI_ICR_FRAME_ISC_Pos (0U) \r
-#define DCMI_ICR_FRAME_ISC_Msk (0x1UL << DCMI_ICR_FRAME_ISC_Pos) /*!< 0x00000001 */\r
-#define DCMI_ICR_FRAME_ISC DCMI_ICR_FRAME_ISC_Msk \r
-#define DCMI_ICR_OVR_ISC_Pos (1U) \r
-#define DCMI_ICR_OVR_ISC_Msk (0x1UL << DCMI_ICR_OVR_ISC_Pos) /*!< 0x00000002 */\r
-#define DCMI_ICR_OVR_ISC DCMI_ICR_OVR_ISC_Msk \r
-#define DCMI_ICR_ERR_ISC_Pos (2U) \r
-#define DCMI_ICR_ERR_ISC_Msk (0x1UL << DCMI_ICR_ERR_ISC_Pos) /*!< 0x00000004 */\r
-#define DCMI_ICR_ERR_ISC DCMI_ICR_ERR_ISC_Msk \r
-#define DCMI_ICR_VSYNC_ISC_Pos (3U) \r
-#define DCMI_ICR_VSYNC_ISC_Msk (0x1UL << DCMI_ICR_VSYNC_ISC_Pos) /*!< 0x00000008 */\r
-#define DCMI_ICR_VSYNC_ISC DCMI_ICR_VSYNC_ISC_Msk \r
-#define DCMI_ICR_LINE_ISC_Pos (4U) \r
-#define DCMI_ICR_LINE_ISC_Msk (0x1UL << DCMI_ICR_LINE_ISC_Pos) /*!< 0x00000010 */\r
-#define DCMI_ICR_LINE_ISC DCMI_ICR_LINE_ISC_Msk \r
-\r
-\r
-/******************** Bits definition for DCMI_ESCR register ******************/\r
-#define DCMI_ESCR_FSC_Pos (0U) \r
-#define DCMI_ESCR_FSC_Msk (0xFFUL << DCMI_ESCR_FSC_Pos) /*!< 0x000000FF */\r
-#define DCMI_ESCR_FSC DCMI_ESCR_FSC_Msk \r
-#define DCMI_ESCR_LSC_Pos (8U) \r
-#define DCMI_ESCR_LSC_Msk (0xFFUL << DCMI_ESCR_LSC_Pos) /*!< 0x0000FF00 */\r
-#define DCMI_ESCR_LSC DCMI_ESCR_LSC_Msk \r
-#define DCMI_ESCR_LEC_Pos (16U) \r
-#define DCMI_ESCR_LEC_Msk (0xFFUL << DCMI_ESCR_LEC_Pos) /*!< 0x00FF0000 */\r
-#define DCMI_ESCR_LEC DCMI_ESCR_LEC_Msk \r
-#define DCMI_ESCR_FEC_Pos (24U) \r
-#define DCMI_ESCR_FEC_Msk (0xFFUL << DCMI_ESCR_FEC_Pos) /*!< 0xFF000000 */\r
-#define DCMI_ESCR_FEC DCMI_ESCR_FEC_Msk \r
-\r
-/******************** Bits definition for DCMI_ESUR register ******************/\r
-#define DCMI_ESUR_FSU_Pos (0U) \r
-#define DCMI_ESUR_FSU_Msk (0xFFUL << DCMI_ESUR_FSU_Pos) /*!< 0x000000FF */\r
-#define DCMI_ESUR_FSU DCMI_ESUR_FSU_Msk \r
-#define DCMI_ESUR_LSU_Pos (8U) \r
-#define DCMI_ESUR_LSU_Msk (0xFFUL << DCMI_ESUR_LSU_Pos) /*!< 0x0000FF00 */\r
-#define DCMI_ESUR_LSU DCMI_ESUR_LSU_Msk \r
-#define DCMI_ESUR_LEU_Pos (16U) \r
-#define DCMI_ESUR_LEU_Msk (0xFFUL << DCMI_ESUR_LEU_Pos) /*!< 0x00FF0000 */\r
-#define DCMI_ESUR_LEU DCMI_ESUR_LEU_Msk \r
-#define DCMI_ESUR_FEU_Pos (24U) \r
-#define DCMI_ESUR_FEU_Msk (0xFFUL << DCMI_ESUR_FEU_Pos) /*!< 0xFF000000 */\r
-#define DCMI_ESUR_FEU DCMI_ESUR_FEU_Msk \r
-\r
-/******************** Bits definition for DCMI_CWSTRT register ******************/\r
-#define DCMI_CWSTRT_HOFFCNT_Pos (0U) \r
-#define DCMI_CWSTRT_HOFFCNT_Msk (0x3FFFUL << DCMI_CWSTRT_HOFFCNT_Pos) /*!< 0x00003FFF */\r
-#define DCMI_CWSTRT_HOFFCNT DCMI_CWSTRT_HOFFCNT_Msk \r
-#define DCMI_CWSTRT_VST_Pos (16U) \r
-#define DCMI_CWSTRT_VST_Msk (0x1FFFUL << DCMI_CWSTRT_VST_Pos) /*!< 0x1FFF0000 */\r
-#define DCMI_CWSTRT_VST DCMI_CWSTRT_VST_Msk \r
-\r
-/******************** Bits definition for DCMI_CWSIZE register ******************/\r
-#define DCMI_CWSIZE_CAPCNT_Pos (0U) \r
-#define DCMI_CWSIZE_CAPCNT_Msk (0x3FFFUL << DCMI_CWSIZE_CAPCNT_Pos) /*!< 0x00003FFF */\r
-#define DCMI_CWSIZE_CAPCNT DCMI_CWSIZE_CAPCNT_Msk \r
-#define DCMI_CWSIZE_VLINE_Pos (16U) \r
-#define DCMI_CWSIZE_VLINE_Msk (0x3FFFUL << DCMI_CWSIZE_VLINE_Pos) /*!< 0x3FFF0000 */\r
-#define DCMI_CWSIZE_VLINE DCMI_CWSIZE_VLINE_Msk \r
-\r
-/******************** Bits definition for DCMI_DR register ******************/\r
-#define DCMI_DR_BYTE0_Pos (0U) \r
-#define DCMI_DR_BYTE0_Msk (0xFFUL << DCMI_DR_BYTE0_Pos) /*!< 0x000000FF */\r
-#define DCMI_DR_BYTE0 DCMI_DR_BYTE0_Msk \r
-#define DCMI_DR_BYTE1_Pos (8U) \r
-#define DCMI_DR_BYTE1_Msk (0xFFUL << DCMI_DR_BYTE1_Pos) /*!< 0x0000FF00 */\r
-#define DCMI_DR_BYTE1 DCMI_DR_BYTE1_Msk \r
-#define DCMI_DR_BYTE2_Pos (16U) \r
-#define DCMI_DR_BYTE2_Msk (0xFFUL << DCMI_DR_BYTE2_Pos) /*!< 0x00FF0000 */\r
-#define DCMI_DR_BYTE2 DCMI_DR_BYTE2_Msk \r
-#define DCMI_DR_BYTE3_Pos (24U) \r
-#define DCMI_DR_BYTE3_Msk (0xFFUL << DCMI_DR_BYTE3_Pos) /*!< 0xFF000000 */\r
-#define DCMI_DR_BYTE3 DCMI_DR_BYTE3_Msk \r
-\r
-/******************************************************************************/\r
-/* */\r
-/* DMA Controller */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bits definition for DMA_SxCR register *****************/\r
-#define DMA_SxCR_CHSEL_Pos (25U) \r
-#define DMA_SxCR_CHSEL_Msk (0xFUL << DMA_SxCR_CHSEL_Pos) /*!< 0x1E000000 */\r
-#define DMA_SxCR_CHSEL DMA_SxCR_CHSEL_Msk \r
-#define DMA_SxCR_CHSEL_0 (0x1UL << DMA_SxCR_CHSEL_Pos) /*!< 0x02000000 */\r
-#define DMA_SxCR_CHSEL_1 (0x2UL << DMA_SxCR_CHSEL_Pos) /*!< 0x04000000 */\r
-#define DMA_SxCR_CHSEL_2 (0x4UL << DMA_SxCR_CHSEL_Pos) /*!< 0x08000000 */\r
-#define DMA_SxCR_CHSEL_3 (0x8UL << DMA_SxCR_CHSEL_Pos) /*!< 0x10000000 */\r
-#define DMA_SxCR_MBURST_Pos (23U) \r
-#define DMA_SxCR_MBURST_Msk (0x3UL << DMA_SxCR_MBURST_Pos) /*!< 0x01800000 */\r
-#define DMA_SxCR_MBURST DMA_SxCR_MBURST_Msk \r
-#define DMA_SxCR_MBURST_0 (0x1UL << DMA_SxCR_MBURST_Pos) /*!< 0x00800000 */\r
-#define DMA_SxCR_MBURST_1 (0x2UL << DMA_SxCR_MBURST_Pos) /*!< 0x01000000 */\r
-#define DMA_SxCR_PBURST_Pos (21U) \r
-#define DMA_SxCR_PBURST_Msk (0x3UL << DMA_SxCR_PBURST_Pos) /*!< 0x00600000 */\r
-#define DMA_SxCR_PBURST DMA_SxCR_PBURST_Msk \r
-#define DMA_SxCR_PBURST_0 (0x1UL << DMA_SxCR_PBURST_Pos) /*!< 0x00200000 */\r
-#define DMA_SxCR_PBURST_1 (0x2UL << DMA_SxCR_PBURST_Pos) /*!< 0x00400000 */\r
-#define DMA_SxCR_CT_Pos (19U) \r
-#define DMA_SxCR_CT_Msk (0x1UL << DMA_SxCR_CT_Pos) /*!< 0x00080000 */\r
-#define DMA_SxCR_CT DMA_SxCR_CT_Msk \r
-#define DMA_SxCR_DBM_Pos (18U) \r
-#define DMA_SxCR_DBM_Msk (0x1UL << DMA_SxCR_DBM_Pos) /*!< 0x00040000 */\r
-#define DMA_SxCR_DBM DMA_SxCR_DBM_Msk \r
-#define DMA_SxCR_PL_Pos (16U) \r
-#define DMA_SxCR_PL_Msk (0x3UL << DMA_SxCR_PL_Pos) /*!< 0x00030000 */\r
-#define DMA_SxCR_PL DMA_SxCR_PL_Msk \r
-#define DMA_SxCR_PL_0 (0x1UL << DMA_SxCR_PL_Pos) /*!< 0x00010000 */\r
-#define DMA_SxCR_PL_1 (0x2UL << DMA_SxCR_PL_Pos) /*!< 0x00020000 */\r
-#define DMA_SxCR_PINCOS_Pos (15U) \r
-#define DMA_SxCR_PINCOS_Msk (0x1UL << DMA_SxCR_PINCOS_Pos) /*!< 0x00008000 */\r
-#define DMA_SxCR_PINCOS DMA_SxCR_PINCOS_Msk \r
-#define DMA_SxCR_MSIZE_Pos (13U) \r
-#define DMA_SxCR_MSIZE_Msk (0x3UL << DMA_SxCR_MSIZE_Pos) /*!< 0x00006000 */\r
-#define DMA_SxCR_MSIZE DMA_SxCR_MSIZE_Msk \r
-#define DMA_SxCR_MSIZE_0 (0x1UL << DMA_SxCR_MSIZE_Pos) /*!< 0x00002000 */\r
-#define DMA_SxCR_MSIZE_1 (0x2UL << DMA_SxCR_MSIZE_Pos) /*!< 0x00004000 */\r
-#define DMA_SxCR_PSIZE_Pos (11U) \r
-#define DMA_SxCR_PSIZE_Msk (0x3UL << DMA_SxCR_PSIZE_Pos) /*!< 0x00001800 */\r
-#define DMA_SxCR_PSIZE DMA_SxCR_PSIZE_Msk \r
-#define DMA_SxCR_PSIZE_0 (0x1UL << DMA_SxCR_PSIZE_Pos) /*!< 0x00000800 */\r
-#define DMA_SxCR_PSIZE_1 (0x2UL << DMA_SxCR_PSIZE_Pos) /*!< 0x00001000 */\r
-#define DMA_SxCR_MINC_Pos (10U) \r
-#define DMA_SxCR_MINC_Msk (0x1UL << DMA_SxCR_MINC_Pos) /*!< 0x00000400 */\r
-#define DMA_SxCR_MINC DMA_SxCR_MINC_Msk \r
-#define DMA_SxCR_PINC_Pos (9U) \r
-#define DMA_SxCR_PINC_Msk (0x1UL << DMA_SxCR_PINC_Pos) /*!< 0x00000200 */\r
-#define DMA_SxCR_PINC DMA_SxCR_PINC_Msk \r
-#define DMA_SxCR_CIRC_Pos (8U) \r
-#define DMA_SxCR_CIRC_Msk (0x1UL << DMA_SxCR_CIRC_Pos) /*!< 0x00000100 */\r
-#define DMA_SxCR_CIRC DMA_SxCR_CIRC_Msk \r
-#define DMA_SxCR_DIR_Pos (6U) \r
-#define DMA_SxCR_DIR_Msk (0x3UL << DMA_SxCR_DIR_Pos) /*!< 0x000000C0 */\r
-#define DMA_SxCR_DIR DMA_SxCR_DIR_Msk \r
-#define DMA_SxCR_DIR_0 (0x1UL << DMA_SxCR_DIR_Pos) /*!< 0x00000040 */\r
-#define DMA_SxCR_DIR_1 (0x2UL << DMA_SxCR_DIR_Pos) /*!< 0x00000080 */\r
-#define DMA_SxCR_PFCTRL_Pos (5U) \r
-#define DMA_SxCR_PFCTRL_Msk (0x1UL << DMA_SxCR_PFCTRL_Pos) /*!< 0x00000020 */\r
-#define DMA_SxCR_PFCTRL DMA_SxCR_PFCTRL_Msk \r
-#define DMA_SxCR_TCIE_Pos (4U) \r
-#define DMA_SxCR_TCIE_Msk (0x1UL << DMA_SxCR_TCIE_Pos) /*!< 0x00000010 */\r
-#define DMA_SxCR_TCIE DMA_SxCR_TCIE_Msk \r
-#define DMA_SxCR_HTIE_Pos (3U) \r
-#define DMA_SxCR_HTIE_Msk (0x1UL << DMA_SxCR_HTIE_Pos) /*!< 0x00000008 */\r
-#define DMA_SxCR_HTIE DMA_SxCR_HTIE_Msk \r
-#define DMA_SxCR_TEIE_Pos (2U) \r
-#define DMA_SxCR_TEIE_Msk (0x1UL << DMA_SxCR_TEIE_Pos) /*!< 0x00000004 */\r
-#define DMA_SxCR_TEIE DMA_SxCR_TEIE_Msk \r
-#define DMA_SxCR_DMEIE_Pos (1U) \r
-#define DMA_SxCR_DMEIE_Msk (0x1UL << DMA_SxCR_DMEIE_Pos) /*!< 0x00000002 */\r
-#define DMA_SxCR_DMEIE DMA_SxCR_DMEIE_Msk \r
-#define DMA_SxCR_EN_Pos (0U) \r
-#define DMA_SxCR_EN_Msk (0x1UL << DMA_SxCR_EN_Pos) /*!< 0x00000001 */\r
-#define DMA_SxCR_EN DMA_SxCR_EN_Msk \r
-\r
-/******************** Bits definition for DMA_SxCNDTR register **************/\r
-#define DMA_SxNDT_Pos (0U) \r
-#define DMA_SxNDT_Msk (0xFFFFUL << DMA_SxNDT_Pos) /*!< 0x0000FFFF */\r
-#define DMA_SxNDT DMA_SxNDT_Msk \r
-#define DMA_SxNDT_0 (0x0001UL << DMA_SxNDT_Pos) /*!< 0x00000001 */\r
-#define DMA_SxNDT_1 (0x0002UL << DMA_SxNDT_Pos) /*!< 0x00000002 */\r
-#define DMA_SxNDT_2 (0x0004UL << DMA_SxNDT_Pos) /*!< 0x00000004 */\r
-#define DMA_SxNDT_3 (0x0008UL << DMA_SxNDT_Pos) /*!< 0x00000008 */\r
-#define DMA_SxNDT_4 (0x0010UL << DMA_SxNDT_Pos) /*!< 0x00000010 */\r
-#define DMA_SxNDT_5 (0x0020UL << DMA_SxNDT_Pos) /*!< 0x00000020 */\r
-#define DMA_SxNDT_6 (0x0040UL << DMA_SxNDT_Pos) /*!< 0x00000040 */\r
-#define DMA_SxNDT_7 (0x0080UL << DMA_SxNDT_Pos) /*!< 0x00000080 */\r
-#define DMA_SxNDT_8 (0x0100UL << DMA_SxNDT_Pos) /*!< 0x00000100 */\r
-#define DMA_SxNDT_9 (0x0200UL << DMA_SxNDT_Pos) /*!< 0x00000200 */\r
-#define DMA_SxNDT_10 (0x0400UL << DMA_SxNDT_Pos) /*!< 0x00000400 */\r
-#define DMA_SxNDT_11 (0x0800UL << DMA_SxNDT_Pos) /*!< 0x00000800 */\r
-#define DMA_SxNDT_12 (0x1000UL << DMA_SxNDT_Pos) /*!< 0x00001000 */\r
-#define DMA_SxNDT_13 (0x2000UL << DMA_SxNDT_Pos) /*!< 0x00002000 */\r
-#define DMA_SxNDT_14 (0x4000UL << DMA_SxNDT_Pos) /*!< 0x00004000 */\r
-#define DMA_SxNDT_15 (0x8000UL << DMA_SxNDT_Pos) /*!< 0x00008000 */\r
-\r
-/******************** Bits definition for DMA_SxFCR register ****************/\r
-#define DMA_SxFCR_FEIE_Pos (7U) \r
-#define DMA_SxFCR_FEIE_Msk (0x1UL << DMA_SxFCR_FEIE_Pos) /*!< 0x00000080 */\r
-#define DMA_SxFCR_FEIE DMA_SxFCR_FEIE_Msk \r
-#define DMA_SxFCR_FS_Pos (3U) \r
-#define DMA_SxFCR_FS_Msk (0x7UL << DMA_SxFCR_FS_Pos) /*!< 0x00000038 */\r
-#define DMA_SxFCR_FS DMA_SxFCR_FS_Msk \r
-#define DMA_SxFCR_FS_0 (0x1UL << DMA_SxFCR_FS_Pos) /*!< 0x00000008 */\r
-#define DMA_SxFCR_FS_1 (0x2UL << DMA_SxFCR_FS_Pos) /*!< 0x00000010 */\r
-#define DMA_SxFCR_FS_2 (0x4UL << DMA_SxFCR_FS_Pos) /*!< 0x00000020 */\r
-#define DMA_SxFCR_DMDIS_Pos (2U) \r
-#define DMA_SxFCR_DMDIS_Msk (0x1UL << DMA_SxFCR_DMDIS_Pos) /*!< 0x00000004 */\r
-#define DMA_SxFCR_DMDIS DMA_SxFCR_DMDIS_Msk \r
-#define DMA_SxFCR_FTH_Pos (0U) \r
-#define DMA_SxFCR_FTH_Msk (0x3UL << DMA_SxFCR_FTH_Pos) /*!< 0x00000003 */\r
-#define DMA_SxFCR_FTH DMA_SxFCR_FTH_Msk \r
-#define DMA_SxFCR_FTH_0 (0x1UL << DMA_SxFCR_FTH_Pos) /*!< 0x00000001 */\r
-#define DMA_SxFCR_FTH_1 (0x2UL << DMA_SxFCR_FTH_Pos) /*!< 0x00000002 */\r
-\r
-/******************** Bits definition for DMA_LISR register *****************/\r
-#define DMA_LISR_TCIF3_Pos (27U) \r
-#define DMA_LISR_TCIF3_Msk (0x1UL << DMA_LISR_TCIF3_Pos) /*!< 0x08000000 */\r
-#define DMA_LISR_TCIF3 DMA_LISR_TCIF3_Msk \r
-#define DMA_LISR_HTIF3_Pos (26U) \r
-#define DMA_LISR_HTIF3_Msk (0x1UL << DMA_LISR_HTIF3_Pos) /*!< 0x04000000 */\r
-#define DMA_LISR_HTIF3 DMA_LISR_HTIF3_Msk \r
-#define DMA_LISR_TEIF3_Pos (25U) \r
-#define DMA_LISR_TEIF3_Msk (0x1UL << DMA_LISR_TEIF3_Pos) /*!< 0x02000000 */\r
-#define DMA_LISR_TEIF3 DMA_LISR_TEIF3_Msk \r
-#define DMA_LISR_DMEIF3_Pos (24U) \r
-#define DMA_LISR_DMEIF3_Msk (0x1UL << DMA_LISR_DMEIF3_Pos) /*!< 0x01000000 */\r
-#define DMA_LISR_DMEIF3 DMA_LISR_DMEIF3_Msk \r
-#define DMA_LISR_FEIF3_Pos (22U) \r
-#define DMA_LISR_FEIF3_Msk (0x1UL << DMA_LISR_FEIF3_Pos) /*!< 0x00400000 */\r
-#define DMA_LISR_FEIF3 DMA_LISR_FEIF3_Msk \r
-#define DMA_LISR_TCIF2_Pos (21U) \r
-#define DMA_LISR_TCIF2_Msk (0x1UL << DMA_LISR_TCIF2_Pos) /*!< 0x00200000 */\r
-#define DMA_LISR_TCIF2 DMA_LISR_TCIF2_Msk \r
-#define DMA_LISR_HTIF2_Pos (20U) \r
-#define DMA_LISR_HTIF2_Msk (0x1UL << DMA_LISR_HTIF2_Pos) /*!< 0x00100000 */\r
-#define DMA_LISR_HTIF2 DMA_LISR_HTIF2_Msk \r
-#define DMA_LISR_TEIF2_Pos (19U) \r
-#define DMA_LISR_TEIF2_Msk (0x1UL << DMA_LISR_TEIF2_Pos) /*!< 0x00080000 */\r
-#define DMA_LISR_TEIF2 DMA_LISR_TEIF2_Msk \r
-#define DMA_LISR_DMEIF2_Pos (18U) \r
-#define DMA_LISR_DMEIF2_Msk (0x1UL << DMA_LISR_DMEIF2_Pos) /*!< 0x00040000 */\r
-#define DMA_LISR_DMEIF2 DMA_LISR_DMEIF2_Msk \r
-#define DMA_LISR_FEIF2_Pos (16U) \r
-#define DMA_LISR_FEIF2_Msk (0x1UL << DMA_LISR_FEIF2_Pos) /*!< 0x00010000 */\r
-#define DMA_LISR_FEIF2 DMA_LISR_FEIF2_Msk \r
-#define DMA_LISR_TCIF1_Pos (11U) \r
-#define DMA_LISR_TCIF1_Msk (0x1UL << DMA_LISR_TCIF1_Pos) /*!< 0x00000800 */\r
-#define DMA_LISR_TCIF1 DMA_LISR_TCIF1_Msk \r
-#define DMA_LISR_HTIF1_Pos (10U) \r
-#define DMA_LISR_HTIF1_Msk (0x1UL << DMA_LISR_HTIF1_Pos) /*!< 0x00000400 */\r
-#define DMA_LISR_HTIF1 DMA_LISR_HTIF1_Msk \r
-#define DMA_LISR_TEIF1_Pos (9U) \r
-#define DMA_LISR_TEIF1_Msk (0x1UL << DMA_LISR_TEIF1_Pos) /*!< 0x00000200 */\r
-#define DMA_LISR_TEIF1 DMA_LISR_TEIF1_Msk \r
-#define DMA_LISR_DMEIF1_Pos (8U) \r
-#define DMA_LISR_DMEIF1_Msk (0x1UL << DMA_LISR_DMEIF1_Pos) /*!< 0x00000100 */\r
-#define DMA_LISR_DMEIF1 DMA_LISR_DMEIF1_Msk \r
-#define DMA_LISR_FEIF1_Pos (6U) \r
-#define DMA_LISR_FEIF1_Msk (0x1UL << DMA_LISR_FEIF1_Pos) /*!< 0x00000040 */\r
-#define DMA_LISR_FEIF1 DMA_LISR_FEIF1_Msk \r
-#define DMA_LISR_TCIF0_Pos (5U) \r
-#define DMA_LISR_TCIF0_Msk (0x1UL << DMA_LISR_TCIF0_Pos) /*!< 0x00000020 */\r
-#define DMA_LISR_TCIF0 DMA_LISR_TCIF0_Msk \r
-#define DMA_LISR_HTIF0_Pos (4U) \r
-#define DMA_LISR_HTIF0_Msk (0x1UL << DMA_LISR_HTIF0_Pos) /*!< 0x00000010 */\r
-#define DMA_LISR_HTIF0 DMA_LISR_HTIF0_Msk \r
-#define DMA_LISR_TEIF0_Pos (3U) \r
-#define DMA_LISR_TEIF0_Msk (0x1UL << DMA_LISR_TEIF0_Pos) /*!< 0x00000008 */\r
-#define DMA_LISR_TEIF0 DMA_LISR_TEIF0_Msk \r
-#define DMA_LISR_DMEIF0_Pos (2U) \r
-#define DMA_LISR_DMEIF0_Msk (0x1UL << DMA_LISR_DMEIF0_Pos) /*!< 0x00000004 */\r
-#define DMA_LISR_DMEIF0 DMA_LISR_DMEIF0_Msk \r
-#define DMA_LISR_FEIF0_Pos (0U) \r
-#define DMA_LISR_FEIF0_Msk (0x1UL << DMA_LISR_FEIF0_Pos) /*!< 0x00000001 */\r
-#define DMA_LISR_FEIF0 DMA_LISR_FEIF0_Msk \r
-\r
-/******************** Bits definition for DMA_HISR register *****************/\r
-#define DMA_HISR_TCIF7_Pos (27U) \r
-#define DMA_HISR_TCIF7_Msk (0x1UL << DMA_HISR_TCIF7_Pos) /*!< 0x08000000 */\r
-#define DMA_HISR_TCIF7 DMA_HISR_TCIF7_Msk \r
-#define DMA_HISR_HTIF7_Pos (26U) \r
-#define DMA_HISR_HTIF7_Msk (0x1UL << DMA_HISR_HTIF7_Pos) /*!< 0x04000000 */\r
-#define DMA_HISR_HTIF7 DMA_HISR_HTIF7_Msk \r
-#define DMA_HISR_TEIF7_Pos (25U) \r
-#define DMA_HISR_TEIF7_Msk (0x1UL << DMA_HISR_TEIF7_Pos) /*!< 0x02000000 */\r
-#define DMA_HISR_TEIF7 DMA_HISR_TEIF7_Msk \r
-#define DMA_HISR_DMEIF7_Pos (24U) \r
-#define DMA_HISR_DMEIF7_Msk (0x1UL << DMA_HISR_DMEIF7_Pos) /*!< 0x01000000 */\r
-#define DMA_HISR_DMEIF7 DMA_HISR_DMEIF7_Msk \r
-#define DMA_HISR_FEIF7_Pos (22U) \r
-#define DMA_HISR_FEIF7_Msk (0x1UL << DMA_HISR_FEIF7_Pos) /*!< 0x00400000 */\r
-#define DMA_HISR_FEIF7 DMA_HISR_FEIF7_Msk \r
-#define DMA_HISR_TCIF6_Pos (21U) \r
-#define DMA_HISR_TCIF6_Msk (0x1UL << DMA_HISR_TCIF6_Pos) /*!< 0x00200000 */\r
-#define DMA_HISR_TCIF6 DMA_HISR_TCIF6_Msk \r
-#define DMA_HISR_HTIF6_Pos (20U) \r
-#define DMA_HISR_HTIF6_Msk (0x1UL << DMA_HISR_HTIF6_Pos) /*!< 0x00100000 */\r
-#define DMA_HISR_HTIF6 DMA_HISR_HTIF6_Msk \r
-#define DMA_HISR_TEIF6_Pos (19U) \r
-#define DMA_HISR_TEIF6_Msk (0x1UL << DMA_HISR_TEIF6_Pos) /*!< 0x00080000 */\r
-#define DMA_HISR_TEIF6 DMA_HISR_TEIF6_Msk \r
-#define DMA_HISR_DMEIF6_Pos (18U) \r
-#define DMA_HISR_DMEIF6_Msk (0x1UL << DMA_HISR_DMEIF6_Pos) /*!< 0x00040000 */\r
-#define DMA_HISR_DMEIF6 DMA_HISR_DMEIF6_Msk \r
-#define DMA_HISR_FEIF6_Pos (16U) \r
-#define DMA_HISR_FEIF6_Msk (0x1UL << DMA_HISR_FEIF6_Pos) /*!< 0x00010000 */\r
-#define DMA_HISR_FEIF6 DMA_HISR_FEIF6_Msk \r
-#define DMA_HISR_TCIF5_Pos (11U) \r
-#define DMA_HISR_TCIF5_Msk (0x1UL << DMA_HISR_TCIF5_Pos) /*!< 0x00000800 */\r
-#define DMA_HISR_TCIF5 DMA_HISR_TCIF5_Msk \r
-#define DMA_HISR_HTIF5_Pos (10U) \r
-#define DMA_HISR_HTIF5_Msk (0x1UL << DMA_HISR_HTIF5_Pos) /*!< 0x00000400 */\r
-#define DMA_HISR_HTIF5 DMA_HISR_HTIF5_Msk \r
-#define DMA_HISR_TEIF5_Pos (9U) \r
-#define DMA_HISR_TEIF5_Msk (0x1UL << DMA_HISR_TEIF5_Pos) /*!< 0x00000200 */\r
-#define DMA_HISR_TEIF5 DMA_HISR_TEIF5_Msk \r
-#define DMA_HISR_DMEIF5_Pos (8U) \r
-#define DMA_HISR_DMEIF5_Msk (0x1UL << DMA_HISR_DMEIF5_Pos) /*!< 0x00000100 */\r
-#define DMA_HISR_DMEIF5 DMA_HISR_DMEIF5_Msk \r
-#define DMA_HISR_FEIF5_Pos (6U) \r
-#define DMA_HISR_FEIF5_Msk (0x1UL << DMA_HISR_FEIF5_Pos) /*!< 0x00000040 */\r
-#define DMA_HISR_FEIF5 DMA_HISR_FEIF5_Msk \r
-#define DMA_HISR_TCIF4_Pos (5U) \r
-#define DMA_HISR_TCIF4_Msk (0x1UL << DMA_HISR_TCIF4_Pos) /*!< 0x00000020 */\r
-#define DMA_HISR_TCIF4 DMA_HISR_TCIF4_Msk \r
-#define DMA_HISR_HTIF4_Pos (4U) \r
-#define DMA_HISR_HTIF4_Msk (0x1UL << DMA_HISR_HTIF4_Pos) /*!< 0x00000010 */\r
-#define DMA_HISR_HTIF4 DMA_HISR_HTIF4_Msk \r
-#define DMA_HISR_TEIF4_Pos (3U) \r
-#define DMA_HISR_TEIF4_Msk (0x1UL << DMA_HISR_TEIF4_Pos) /*!< 0x00000008 */\r
-#define DMA_HISR_TEIF4 DMA_HISR_TEIF4_Msk \r
-#define DMA_HISR_DMEIF4_Pos (2U) \r
-#define DMA_HISR_DMEIF4_Msk (0x1UL << DMA_HISR_DMEIF4_Pos) /*!< 0x00000004 */\r
-#define DMA_HISR_DMEIF4 DMA_HISR_DMEIF4_Msk \r
-#define DMA_HISR_FEIF4_Pos (0U) \r
-#define DMA_HISR_FEIF4_Msk (0x1UL << DMA_HISR_FEIF4_Pos) /*!< 0x00000001 */\r
-#define DMA_HISR_FEIF4 DMA_HISR_FEIF4_Msk \r
-\r
-/******************** Bits definition for DMA_LIFCR register ****************/\r
-#define DMA_LIFCR_CTCIF3_Pos (27U) \r
-#define DMA_LIFCR_CTCIF3_Msk (0x1UL << DMA_LIFCR_CTCIF3_Pos) /*!< 0x08000000 */\r
-#define DMA_LIFCR_CTCIF3 DMA_LIFCR_CTCIF3_Msk \r
-#define DMA_LIFCR_CHTIF3_Pos (26U) \r
-#define DMA_LIFCR_CHTIF3_Msk (0x1UL << DMA_LIFCR_CHTIF3_Pos) /*!< 0x04000000 */\r
-#define DMA_LIFCR_CHTIF3 DMA_LIFCR_CHTIF3_Msk \r
-#define DMA_LIFCR_CTEIF3_Pos (25U) \r
-#define DMA_LIFCR_CTEIF3_Msk (0x1UL << DMA_LIFCR_CTEIF3_Pos) /*!< 0x02000000 */\r
-#define DMA_LIFCR_CTEIF3 DMA_LIFCR_CTEIF3_Msk \r
-#define DMA_LIFCR_CDMEIF3_Pos (24U) \r
-#define DMA_LIFCR_CDMEIF3_Msk (0x1UL << DMA_LIFCR_CDMEIF3_Pos) /*!< 0x01000000 */\r
-#define DMA_LIFCR_CDMEIF3 DMA_LIFCR_CDMEIF3_Msk \r
-#define DMA_LIFCR_CFEIF3_Pos (22U) \r
-#define DMA_LIFCR_CFEIF3_Msk (0x1UL << DMA_LIFCR_CFEIF3_Pos) /*!< 0x00400000 */\r
-#define DMA_LIFCR_CFEIF3 DMA_LIFCR_CFEIF3_Msk \r
-#define DMA_LIFCR_CTCIF2_Pos (21U) \r
-#define DMA_LIFCR_CTCIF2_Msk (0x1UL << DMA_LIFCR_CTCIF2_Pos) /*!< 0x00200000 */\r
-#define DMA_LIFCR_CTCIF2 DMA_LIFCR_CTCIF2_Msk \r
-#define DMA_LIFCR_CHTIF2_Pos (20U) \r
-#define DMA_LIFCR_CHTIF2_Msk (0x1UL << DMA_LIFCR_CHTIF2_Pos) /*!< 0x00100000 */\r
-#define DMA_LIFCR_CHTIF2 DMA_LIFCR_CHTIF2_Msk \r
-#define DMA_LIFCR_CTEIF2_Pos (19U) \r
-#define DMA_LIFCR_CTEIF2_Msk (0x1UL << DMA_LIFCR_CTEIF2_Pos) /*!< 0x00080000 */\r
-#define DMA_LIFCR_CTEIF2 DMA_LIFCR_CTEIF2_Msk \r
-#define DMA_LIFCR_CDMEIF2_Pos (18U) \r
-#define DMA_LIFCR_CDMEIF2_Msk (0x1UL << DMA_LIFCR_CDMEIF2_Pos) /*!< 0x00040000 */\r
-#define DMA_LIFCR_CDMEIF2 DMA_LIFCR_CDMEIF2_Msk \r
-#define DMA_LIFCR_CFEIF2_Pos (16U) \r
-#define DMA_LIFCR_CFEIF2_Msk (0x1UL << DMA_LIFCR_CFEIF2_Pos) /*!< 0x00010000 */\r
-#define DMA_LIFCR_CFEIF2 DMA_LIFCR_CFEIF2_Msk \r
-#define DMA_LIFCR_CTCIF1_Pos (11U) \r
-#define DMA_LIFCR_CTCIF1_Msk (0x1UL << DMA_LIFCR_CTCIF1_Pos) /*!< 0x00000800 */\r
-#define DMA_LIFCR_CTCIF1 DMA_LIFCR_CTCIF1_Msk \r
-#define DMA_LIFCR_CHTIF1_Pos (10U) \r
-#define DMA_LIFCR_CHTIF1_Msk (0x1UL << DMA_LIFCR_CHTIF1_Pos) /*!< 0x00000400 */\r
-#define DMA_LIFCR_CHTIF1 DMA_LIFCR_CHTIF1_Msk \r
-#define DMA_LIFCR_CTEIF1_Pos (9U) \r
-#define DMA_LIFCR_CTEIF1_Msk (0x1UL << DMA_LIFCR_CTEIF1_Pos) /*!< 0x00000200 */\r
-#define DMA_LIFCR_CTEIF1 DMA_LIFCR_CTEIF1_Msk \r
-#define DMA_LIFCR_CDMEIF1_Pos (8U) \r
-#define DMA_LIFCR_CDMEIF1_Msk (0x1UL << DMA_LIFCR_CDMEIF1_Pos) /*!< 0x00000100 */\r
-#define DMA_LIFCR_CDMEIF1 DMA_LIFCR_CDMEIF1_Msk \r
-#define DMA_LIFCR_CFEIF1_Pos (6U) \r
-#define DMA_LIFCR_CFEIF1_Msk (0x1UL << DMA_LIFCR_CFEIF1_Pos) /*!< 0x00000040 */\r
-#define DMA_LIFCR_CFEIF1 DMA_LIFCR_CFEIF1_Msk \r
-#define DMA_LIFCR_CTCIF0_Pos (5U) \r
-#define DMA_LIFCR_CTCIF0_Msk (0x1UL << DMA_LIFCR_CTCIF0_Pos) /*!< 0x00000020 */\r
-#define DMA_LIFCR_CTCIF0 DMA_LIFCR_CTCIF0_Msk \r
-#define DMA_LIFCR_CHTIF0_Pos (4U) \r
-#define DMA_LIFCR_CHTIF0_Msk (0x1UL << DMA_LIFCR_CHTIF0_Pos) /*!< 0x00000010 */\r
-#define DMA_LIFCR_CHTIF0 DMA_LIFCR_CHTIF0_Msk \r
-#define DMA_LIFCR_CTEIF0_Pos (3U) \r
-#define DMA_LIFCR_CTEIF0_Msk (0x1UL << DMA_LIFCR_CTEIF0_Pos) /*!< 0x00000008 */\r
-#define DMA_LIFCR_CTEIF0 DMA_LIFCR_CTEIF0_Msk \r
-#define DMA_LIFCR_CDMEIF0_Pos (2U) \r
-#define DMA_LIFCR_CDMEIF0_Msk (0x1UL << DMA_LIFCR_CDMEIF0_Pos) /*!< 0x00000004 */\r
-#define DMA_LIFCR_CDMEIF0 DMA_LIFCR_CDMEIF0_Msk \r
-#define DMA_LIFCR_CFEIF0_Pos (0U) \r
-#define DMA_LIFCR_CFEIF0_Msk (0x1UL << DMA_LIFCR_CFEIF0_Pos) /*!< 0x00000001 */\r
-#define DMA_LIFCR_CFEIF0 DMA_LIFCR_CFEIF0_Msk \r
-\r
-/******************** Bits definition for DMA_HIFCR register ****************/\r
-#define DMA_HIFCR_CTCIF7_Pos (27U) \r
-#define DMA_HIFCR_CTCIF7_Msk (0x1UL << DMA_HIFCR_CTCIF7_Pos) /*!< 0x08000000 */\r
-#define DMA_HIFCR_CTCIF7 DMA_HIFCR_CTCIF7_Msk \r
-#define DMA_HIFCR_CHTIF7_Pos (26U) \r
-#define DMA_HIFCR_CHTIF7_Msk (0x1UL << DMA_HIFCR_CHTIF7_Pos) /*!< 0x04000000 */\r
-#define DMA_HIFCR_CHTIF7 DMA_HIFCR_CHTIF7_Msk \r
-#define DMA_HIFCR_CTEIF7_Pos (25U) \r
-#define DMA_HIFCR_CTEIF7_Msk (0x1UL << DMA_HIFCR_CTEIF7_Pos) /*!< 0x02000000 */\r
-#define DMA_HIFCR_CTEIF7 DMA_HIFCR_CTEIF7_Msk \r
-#define DMA_HIFCR_CDMEIF7_Pos (24U) \r
-#define DMA_HIFCR_CDMEIF7_Msk (0x1UL << DMA_HIFCR_CDMEIF7_Pos) /*!< 0x01000000 */\r
-#define DMA_HIFCR_CDMEIF7 DMA_HIFCR_CDMEIF7_Msk \r
-#define DMA_HIFCR_CFEIF7_Pos (22U) \r
-#define DMA_HIFCR_CFEIF7_Msk (0x1UL << DMA_HIFCR_CFEIF7_Pos) /*!< 0x00400000 */\r
-#define DMA_HIFCR_CFEIF7 DMA_HIFCR_CFEIF7_Msk \r
-#define DMA_HIFCR_CTCIF6_Pos (21U) \r
-#define DMA_HIFCR_CTCIF6_Msk (0x1UL << DMA_HIFCR_CTCIF6_Pos) /*!< 0x00200000 */\r
-#define DMA_HIFCR_CTCIF6 DMA_HIFCR_CTCIF6_Msk \r
-#define DMA_HIFCR_CHTIF6_Pos (20U) \r
-#define DMA_HIFCR_CHTIF6_Msk (0x1UL << DMA_HIFCR_CHTIF6_Pos) /*!< 0x00100000 */\r
-#define DMA_HIFCR_CHTIF6 DMA_HIFCR_CHTIF6_Msk \r
-#define DMA_HIFCR_CTEIF6_Pos (19U) \r
-#define DMA_HIFCR_CTEIF6_Msk (0x1UL << DMA_HIFCR_CTEIF6_Pos) /*!< 0x00080000 */\r
-#define DMA_HIFCR_CTEIF6 DMA_HIFCR_CTEIF6_Msk \r
-#define DMA_HIFCR_CDMEIF6_Pos (18U) \r
-#define DMA_HIFCR_CDMEIF6_Msk (0x1UL << DMA_HIFCR_CDMEIF6_Pos) /*!< 0x00040000 */\r
-#define DMA_HIFCR_CDMEIF6 DMA_HIFCR_CDMEIF6_Msk \r
-#define DMA_HIFCR_CFEIF6_Pos (16U) \r
-#define DMA_HIFCR_CFEIF6_Msk (0x1UL << DMA_HIFCR_CFEIF6_Pos) /*!< 0x00010000 */\r
-#define DMA_HIFCR_CFEIF6 DMA_HIFCR_CFEIF6_Msk \r
-#define DMA_HIFCR_CTCIF5_Pos (11U) \r
-#define DMA_HIFCR_CTCIF5_Msk (0x1UL << DMA_HIFCR_CTCIF5_Pos) /*!< 0x00000800 */\r
-#define DMA_HIFCR_CTCIF5 DMA_HIFCR_CTCIF5_Msk \r
-#define DMA_HIFCR_CHTIF5_Pos (10U) \r
-#define DMA_HIFCR_CHTIF5_Msk (0x1UL << DMA_HIFCR_CHTIF5_Pos) /*!< 0x00000400 */\r
-#define DMA_HIFCR_CHTIF5 DMA_HIFCR_CHTIF5_Msk \r
-#define DMA_HIFCR_CTEIF5_Pos (9U) \r
-#define DMA_HIFCR_CTEIF5_Msk (0x1UL << DMA_HIFCR_CTEIF5_Pos) /*!< 0x00000200 */\r
-#define DMA_HIFCR_CTEIF5 DMA_HIFCR_CTEIF5_Msk \r
-#define DMA_HIFCR_CDMEIF5_Pos (8U) \r
-#define DMA_HIFCR_CDMEIF5_Msk (0x1UL << DMA_HIFCR_CDMEIF5_Pos) /*!< 0x00000100 */\r
-#define DMA_HIFCR_CDMEIF5 DMA_HIFCR_CDMEIF5_Msk \r
-#define DMA_HIFCR_CFEIF5_Pos (6U) \r
-#define DMA_HIFCR_CFEIF5_Msk (0x1UL << DMA_HIFCR_CFEIF5_Pos) /*!< 0x00000040 */\r
-#define DMA_HIFCR_CFEIF5 DMA_HIFCR_CFEIF5_Msk \r
-#define DMA_HIFCR_CTCIF4_Pos (5U) \r
-#define DMA_HIFCR_CTCIF4_Msk (0x1UL << DMA_HIFCR_CTCIF4_Pos) /*!< 0x00000020 */\r
-#define DMA_HIFCR_CTCIF4 DMA_HIFCR_CTCIF4_Msk \r
-#define DMA_HIFCR_CHTIF4_Pos (4U) \r
-#define DMA_HIFCR_CHTIF4_Msk (0x1UL << DMA_HIFCR_CHTIF4_Pos) /*!< 0x00000010 */\r
-#define DMA_HIFCR_CHTIF4 DMA_HIFCR_CHTIF4_Msk \r
-#define DMA_HIFCR_CTEIF4_Pos (3U) \r
-#define DMA_HIFCR_CTEIF4_Msk (0x1UL << DMA_HIFCR_CTEIF4_Pos) /*!< 0x00000008 */\r
-#define DMA_HIFCR_CTEIF4 DMA_HIFCR_CTEIF4_Msk \r
-#define DMA_HIFCR_CDMEIF4_Pos (2U) \r
-#define DMA_HIFCR_CDMEIF4_Msk (0x1UL << DMA_HIFCR_CDMEIF4_Pos) /*!< 0x00000004 */\r
-#define DMA_HIFCR_CDMEIF4 DMA_HIFCR_CDMEIF4_Msk \r
-#define DMA_HIFCR_CFEIF4_Pos (0U) \r
-#define DMA_HIFCR_CFEIF4_Msk (0x1UL << DMA_HIFCR_CFEIF4_Pos) /*!< 0x00000001 */\r
-#define DMA_HIFCR_CFEIF4 DMA_HIFCR_CFEIF4_Msk \r
-\r
-/****************** Bit definition for DMA_SxPAR register ********************/\r
-#define DMA_SxPAR_PA_Pos (0U) \r
-#define DMA_SxPAR_PA_Msk (0xFFFFFFFFUL << DMA_SxPAR_PA_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA_SxPAR_PA DMA_SxPAR_PA_Msk /*!< Peripheral Address */\r
-\r
-/****************** Bit definition for DMA_SxM0AR register ********************/\r
-#define DMA_SxM0AR_M0A_Pos (0U) \r
-#define DMA_SxM0AR_M0A_Msk (0xFFFFFFFFUL << DMA_SxM0AR_M0A_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA_SxM0AR_M0A DMA_SxM0AR_M0A_Msk /*!< Memory Address */\r
-\r
-/****************** Bit definition for DMA_SxM1AR register ********************/\r
-#define DMA_SxM1AR_M1A_Pos (0U) \r
-#define DMA_SxM1AR_M1A_Msk (0xFFFFFFFFUL << DMA_SxM1AR_M1A_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA_SxM1AR_M1A DMA_SxM1AR_M1A_Msk /*!< Memory Address */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* AHB Master DMA2D Controller (DMA2D) */\r
-/* */\r
-/******************************************************************************/\r
-/*\r
- * @brief Specific device feature definitions (not present on all devices in the STM32F7 serie)\r
- */\r
-#define DMA2D_ALPHA_INV_RB_SWAP_SUPPORT\r
-/******************** Bit definition for DMA2D_CR register ******************/\r
-\r
-#define DMA2D_CR_START_Pos (0U) \r
-#define DMA2D_CR_START_Msk (0x1UL << DMA2D_CR_START_Pos) /*!< 0x00000001 */\r
-#define DMA2D_CR_START DMA2D_CR_START_Msk /*!< Start transfer */\r
-#define DMA2D_CR_SUSP_Pos (1U) \r
-#define DMA2D_CR_SUSP_Msk (0x1UL << DMA2D_CR_SUSP_Pos) /*!< 0x00000002 */\r
-#define DMA2D_CR_SUSP DMA2D_CR_SUSP_Msk /*!< Suspend transfer */\r
-#define DMA2D_CR_ABORT_Pos (2U) \r
-#define DMA2D_CR_ABORT_Msk (0x1UL << DMA2D_CR_ABORT_Pos) /*!< 0x00000004 */\r
-#define DMA2D_CR_ABORT DMA2D_CR_ABORT_Msk /*!< Abort transfer */\r
-#define DMA2D_CR_TEIE_Pos (8U) \r
-#define DMA2D_CR_TEIE_Msk (0x1UL << DMA2D_CR_TEIE_Pos) /*!< 0x00000100 */\r
-#define DMA2D_CR_TEIE DMA2D_CR_TEIE_Msk /*!< Transfer Error Interrupt Enable */\r
-#define DMA2D_CR_TCIE_Pos (9U) \r
-#define DMA2D_CR_TCIE_Msk (0x1UL << DMA2D_CR_TCIE_Pos) /*!< 0x00000200 */\r
-#define DMA2D_CR_TCIE DMA2D_CR_TCIE_Msk /*!< Transfer Complete Interrupt Enable */\r
-#define DMA2D_CR_TWIE_Pos (10U) \r
-#define DMA2D_CR_TWIE_Msk (0x1UL << DMA2D_CR_TWIE_Pos) /*!< 0x00000400 */\r
-#define DMA2D_CR_TWIE DMA2D_CR_TWIE_Msk /*!< Transfer Watermark Interrupt Enable */\r
-#define DMA2D_CR_CAEIE_Pos (11U) \r
-#define DMA2D_CR_CAEIE_Msk (0x1UL << DMA2D_CR_CAEIE_Pos) /*!< 0x00000800 */\r
-#define DMA2D_CR_CAEIE DMA2D_CR_CAEIE_Msk /*!< CLUT Access Error Interrupt Enable */\r
-#define DMA2D_CR_CTCIE_Pos (12U) \r
-#define DMA2D_CR_CTCIE_Msk (0x1UL << DMA2D_CR_CTCIE_Pos) /*!< 0x00001000 */\r
-#define DMA2D_CR_CTCIE DMA2D_CR_CTCIE_Msk /*!< CLUT Transfer Complete Interrupt Enable */\r
-#define DMA2D_CR_CEIE_Pos (13U) \r
-#define DMA2D_CR_CEIE_Msk (0x1UL << DMA2D_CR_CEIE_Pos) /*!< 0x00002000 */\r
-#define DMA2D_CR_CEIE DMA2D_CR_CEIE_Msk /*!< Configuration Error Interrupt Enable */\r
-#define DMA2D_CR_MODE_Pos (16U) \r
-#define DMA2D_CR_MODE_Msk (0x3UL << DMA2D_CR_MODE_Pos) /*!< 0x00030000 */\r
-#define DMA2D_CR_MODE DMA2D_CR_MODE_Msk /*!< DMA2D Mode[1:0] */\r
-#define DMA2D_CR_MODE_0 (0x1UL << DMA2D_CR_MODE_Pos) /*!< 0x00010000 */\r
-#define DMA2D_CR_MODE_1 (0x2UL << DMA2D_CR_MODE_Pos) /*!< 0x00020000 */\r
-\r
-/******************** Bit definition for DMA2D_ISR register *****************/\r
-\r
-#define DMA2D_ISR_TEIF_Pos (0U) \r
-#define DMA2D_ISR_TEIF_Msk (0x1UL << DMA2D_ISR_TEIF_Pos) /*!< 0x00000001 */\r
-#define DMA2D_ISR_TEIF DMA2D_ISR_TEIF_Msk /*!< Transfer Error Interrupt Flag */\r
-#define DMA2D_ISR_TCIF_Pos (1U) \r
-#define DMA2D_ISR_TCIF_Msk (0x1UL << DMA2D_ISR_TCIF_Pos) /*!< 0x00000002 */\r
-#define DMA2D_ISR_TCIF DMA2D_ISR_TCIF_Msk /*!< Transfer Complete Interrupt Flag */\r
-#define DMA2D_ISR_TWIF_Pos (2U) \r
-#define DMA2D_ISR_TWIF_Msk (0x1UL << DMA2D_ISR_TWIF_Pos) /*!< 0x00000004 */\r
-#define DMA2D_ISR_TWIF DMA2D_ISR_TWIF_Msk /*!< Transfer Watermark Interrupt Flag */\r
-#define DMA2D_ISR_CAEIF_Pos (3U) \r
-#define DMA2D_ISR_CAEIF_Msk (0x1UL << DMA2D_ISR_CAEIF_Pos) /*!< 0x00000008 */\r
-#define DMA2D_ISR_CAEIF DMA2D_ISR_CAEIF_Msk /*!< CLUT Access Error Interrupt Flag */\r
-#define DMA2D_ISR_CTCIF_Pos (4U) \r
-#define DMA2D_ISR_CTCIF_Msk (0x1UL << DMA2D_ISR_CTCIF_Pos) /*!< 0x00000010 */\r
-#define DMA2D_ISR_CTCIF DMA2D_ISR_CTCIF_Msk /*!< CLUT Transfer Complete Interrupt Flag */\r
-#define DMA2D_ISR_CEIF_Pos (5U) \r
-#define DMA2D_ISR_CEIF_Msk (0x1UL << DMA2D_ISR_CEIF_Pos) /*!< 0x00000020 */\r
-#define DMA2D_ISR_CEIF DMA2D_ISR_CEIF_Msk /*!< Configuration Error Interrupt Flag */\r
-\r
-/******************** Bit definition for DMA2D_IFCR register ****************/\r
-\r
-#define DMA2D_IFCR_CTEIF_Pos (0U) \r
-#define DMA2D_IFCR_CTEIF_Msk (0x1UL << DMA2D_IFCR_CTEIF_Pos) /*!< 0x00000001 */\r
-#define DMA2D_IFCR_CTEIF DMA2D_IFCR_CTEIF_Msk /*!< Clears Transfer Error Interrupt Flag */\r
-#define DMA2D_IFCR_CTCIF_Pos (1U) \r
-#define DMA2D_IFCR_CTCIF_Msk (0x1UL << DMA2D_IFCR_CTCIF_Pos) /*!< 0x00000002 */\r
-#define DMA2D_IFCR_CTCIF DMA2D_IFCR_CTCIF_Msk /*!< Clears Transfer Complete Interrupt Flag */\r
-#define DMA2D_IFCR_CTWIF_Pos (2U) \r
-#define DMA2D_IFCR_CTWIF_Msk (0x1UL << DMA2D_IFCR_CTWIF_Pos) /*!< 0x00000004 */\r
-#define DMA2D_IFCR_CTWIF DMA2D_IFCR_CTWIF_Msk /*!< Clears Transfer Watermark Interrupt Flag */\r
-#define DMA2D_IFCR_CAECIF_Pos (3U) \r
-#define DMA2D_IFCR_CAECIF_Msk (0x1UL << DMA2D_IFCR_CAECIF_Pos) /*!< 0x00000008 */\r
-#define DMA2D_IFCR_CAECIF DMA2D_IFCR_CAECIF_Msk /*!< Clears CLUT Access Error Interrupt Flag */\r
-#define DMA2D_IFCR_CCTCIF_Pos (4U) \r
-#define DMA2D_IFCR_CCTCIF_Msk (0x1UL << DMA2D_IFCR_CCTCIF_Pos) /*!< 0x00000010 */\r
-#define DMA2D_IFCR_CCTCIF DMA2D_IFCR_CCTCIF_Msk /*!< Clears CLUT Transfer Complete Interrupt Flag */\r
-#define DMA2D_IFCR_CCEIF_Pos (5U) \r
-#define DMA2D_IFCR_CCEIF_Msk (0x1UL << DMA2D_IFCR_CCEIF_Pos) /*!< 0x00000020 */\r
-#define DMA2D_IFCR_CCEIF DMA2D_IFCR_CCEIF_Msk /*!< Clears Configuration Error Interrupt Flag */\r
-\r
-/* Legacy defines */\r
-#define DMA2D_IFSR_CTEIF DMA2D_IFCR_CTEIF /*!< Clears Transfer Error Interrupt Flag */\r
-#define DMA2D_IFSR_CTCIF DMA2D_IFCR_CTCIF /*!< Clears Transfer Complete Interrupt Flag */\r
-#define DMA2D_IFSR_CTWIF DMA2D_IFCR_CTWIF /*!< Clears Transfer Watermark Interrupt Flag */\r
-#define DMA2D_IFSR_CCAEIF DMA2D_IFCR_CAECIF /*!< Clears CLUT Access Error Interrupt Flag */\r
-#define DMA2D_IFSR_CCTCIF DMA2D_IFCR_CCTCIF /*!< Clears CLUT Transfer Complete Interrupt Flag */\r
-#define DMA2D_IFSR_CCEIF DMA2D_IFCR_CCEIF /*!< Clears Configuration Error Interrupt Flag */\r
-\r
-/******************** Bit definition for DMA2D_FGMAR register ***************/\r
-\r
-#define DMA2D_FGMAR_MA_Pos (0U) \r
-#define DMA2D_FGMAR_MA_Msk (0xFFFFFFFFUL << DMA2D_FGMAR_MA_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA2D_FGMAR_MA DMA2D_FGMAR_MA_Msk /*!< Memory Address */\r
-\r
-/******************** Bit definition for DMA2D_FGOR register ****************/\r
-\r
-#define DMA2D_FGOR_LO_Pos (0U) \r
-#define DMA2D_FGOR_LO_Msk (0x3FFFUL << DMA2D_FGOR_LO_Pos) /*!< 0x00003FFF */\r
-#define DMA2D_FGOR_LO DMA2D_FGOR_LO_Msk /*!< Line Offset */\r
-\r
-/******************** Bit definition for DMA2D_BGMAR register ***************/\r
-\r
-#define DMA2D_BGMAR_MA_Pos (0U) \r
-#define DMA2D_BGMAR_MA_Msk (0xFFFFFFFFUL << DMA2D_BGMAR_MA_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA2D_BGMAR_MA DMA2D_BGMAR_MA_Msk /*!< Memory Address */\r
-\r
-/******************** Bit definition for DMA2D_BGOR register ****************/\r
-\r
-#define DMA2D_BGOR_LO_Pos (0U) \r
-#define DMA2D_BGOR_LO_Msk (0x3FFFUL << DMA2D_BGOR_LO_Pos) /*!< 0x00003FFF */\r
-#define DMA2D_BGOR_LO DMA2D_BGOR_LO_Msk /*!< Line Offset */\r
-\r
-/******************** Bit definition for DMA2D_FGPFCCR register *************/\r
-\r
-#define DMA2D_FGPFCCR_CM_Pos (0U) \r
-#define DMA2D_FGPFCCR_CM_Msk (0xFUL << DMA2D_FGPFCCR_CM_Pos) /*!< 0x0000000F */\r
-#define DMA2D_FGPFCCR_CM DMA2D_FGPFCCR_CM_Msk /*!< Input color mode CM[3:0] */\r
-#define DMA2D_FGPFCCR_CM_0 (0x1UL << DMA2D_FGPFCCR_CM_Pos) /*!< 0x00000001 */\r
-#define DMA2D_FGPFCCR_CM_1 (0x2UL << DMA2D_FGPFCCR_CM_Pos) /*!< 0x00000002 */\r
-#define DMA2D_FGPFCCR_CM_2 (0x4UL << DMA2D_FGPFCCR_CM_Pos) /*!< 0x00000004 */\r
-#define DMA2D_FGPFCCR_CM_3 (0x8UL << DMA2D_FGPFCCR_CM_Pos) /*!< 0x00000008 */\r
-#define DMA2D_FGPFCCR_CCM_Pos (4U) \r
-#define DMA2D_FGPFCCR_CCM_Msk (0x1UL << DMA2D_FGPFCCR_CCM_Pos) /*!< 0x00000010 */\r
-#define DMA2D_FGPFCCR_CCM DMA2D_FGPFCCR_CCM_Msk /*!< CLUT Color mode */\r
-#define DMA2D_FGPFCCR_START_Pos (5U) \r
-#define DMA2D_FGPFCCR_START_Msk (0x1UL << DMA2D_FGPFCCR_START_Pos) /*!< 0x00000020 */\r
-#define DMA2D_FGPFCCR_START DMA2D_FGPFCCR_START_Msk /*!< Start */\r
-#define DMA2D_FGPFCCR_CS_Pos (8U) \r
-#define DMA2D_FGPFCCR_CS_Msk (0xFFUL << DMA2D_FGPFCCR_CS_Pos) /*!< 0x0000FF00 */\r
-#define DMA2D_FGPFCCR_CS DMA2D_FGPFCCR_CS_Msk /*!< CLUT size */\r
-#define DMA2D_FGPFCCR_AM_Pos (16U) \r
-#define DMA2D_FGPFCCR_AM_Msk (0x3UL << DMA2D_FGPFCCR_AM_Pos) /*!< 0x00030000 */\r
-#define DMA2D_FGPFCCR_AM DMA2D_FGPFCCR_AM_Msk /*!< Alpha mode AM[1:0] */\r
-#define DMA2D_FGPFCCR_AM_0 (0x1UL << DMA2D_FGPFCCR_AM_Pos) /*!< 0x00010000 */\r
-#define DMA2D_FGPFCCR_AM_1 (0x2UL << DMA2D_FGPFCCR_AM_Pos) /*!< 0x00020000 */\r
-#define DMA2D_FGPFCCR_AI_Pos (20U) \r
-#define DMA2D_FGPFCCR_AI_Msk (0x1UL << DMA2D_FGPFCCR_AI_Pos) /*!< 0x00100000 */\r
-#define DMA2D_FGPFCCR_AI DMA2D_FGPFCCR_AI_Msk /*!< Foreground Input Alpha Inverted */\r
-#define DMA2D_FGPFCCR_RBS_Pos (21U) \r
-#define DMA2D_FGPFCCR_RBS_Msk (0x1UL << DMA2D_FGPFCCR_RBS_Pos) /*!< 0x00200000 */\r
-#define DMA2D_FGPFCCR_RBS DMA2D_FGPFCCR_RBS_Msk /*!< Foreground Input Red Blue Swap */\r
-#define DMA2D_FGPFCCR_ALPHA_Pos (24U) \r
-#define DMA2D_FGPFCCR_ALPHA_Msk (0xFFUL << DMA2D_FGPFCCR_ALPHA_Pos) /*!< 0xFF000000 */\r
-#define DMA2D_FGPFCCR_ALPHA DMA2D_FGPFCCR_ALPHA_Msk /*!< Alpha value */\r
-\r
-/******************** Bit definition for DMA2D_FGCOLR register **************/\r
-\r
-#define DMA2D_FGCOLR_BLUE_Pos (0U) \r
-#define DMA2D_FGCOLR_BLUE_Msk (0xFFUL << DMA2D_FGCOLR_BLUE_Pos) /*!< 0x000000FF */\r
-#define DMA2D_FGCOLR_BLUE DMA2D_FGCOLR_BLUE_Msk /*!< Blue Value */\r
-#define DMA2D_FGCOLR_GREEN_Pos (8U) \r
-#define DMA2D_FGCOLR_GREEN_Msk (0xFFUL << DMA2D_FGCOLR_GREEN_Pos) /*!< 0x0000FF00 */\r
-#define DMA2D_FGCOLR_GREEN DMA2D_FGCOLR_GREEN_Msk /*!< Green Value */\r
-#define DMA2D_FGCOLR_RED_Pos (16U) \r
-#define DMA2D_FGCOLR_RED_Msk (0xFFUL << DMA2D_FGCOLR_RED_Pos) /*!< 0x00FF0000 */\r
-#define DMA2D_FGCOLR_RED DMA2D_FGCOLR_RED_Msk /*!< Red Value */\r
-\r
-/******************** Bit definition for DMA2D_BGPFCCR register *************/\r
-\r
-#define DMA2D_BGPFCCR_CM_Pos (0U) \r
-#define DMA2D_BGPFCCR_CM_Msk (0xFUL << DMA2D_BGPFCCR_CM_Pos) /*!< 0x0000000F */\r
-#define DMA2D_BGPFCCR_CM DMA2D_BGPFCCR_CM_Msk /*!< Input color mode CM[3:0] */\r
-#define DMA2D_BGPFCCR_CM_0 (0x1UL << DMA2D_BGPFCCR_CM_Pos) /*!< 0x00000001 */\r
-#define DMA2D_BGPFCCR_CM_1 (0x2UL << DMA2D_BGPFCCR_CM_Pos) /*!< 0x00000002 */\r
-#define DMA2D_BGPFCCR_CM_2 (0x4UL << DMA2D_BGPFCCR_CM_Pos) /*!< 0x00000004 */\r
-#define DMA2D_BGPFCCR_CM_3 0x00000008U /*!< Input color mode CM bit 3 */\r
-#define DMA2D_BGPFCCR_CCM_Pos (4U) \r
-#define DMA2D_BGPFCCR_CCM_Msk (0x1UL << DMA2D_BGPFCCR_CCM_Pos) /*!< 0x00000010 */\r
-#define DMA2D_BGPFCCR_CCM DMA2D_BGPFCCR_CCM_Msk /*!< CLUT Color mode */\r
-#define DMA2D_BGPFCCR_START_Pos (5U) \r
-#define DMA2D_BGPFCCR_START_Msk (0x1UL << DMA2D_BGPFCCR_START_Pos) /*!< 0x00000020 */\r
-#define DMA2D_BGPFCCR_START DMA2D_BGPFCCR_START_Msk /*!< Start */\r
-#define DMA2D_BGPFCCR_CS_Pos (8U) \r
-#define DMA2D_BGPFCCR_CS_Msk (0xFFUL << DMA2D_BGPFCCR_CS_Pos) /*!< 0x0000FF00 */\r
-#define DMA2D_BGPFCCR_CS DMA2D_BGPFCCR_CS_Msk /*!< CLUT size */\r
-#define DMA2D_BGPFCCR_AM_Pos (16U) \r
-#define DMA2D_BGPFCCR_AM_Msk (0x3UL << DMA2D_BGPFCCR_AM_Pos) /*!< 0x00030000 */\r
-#define DMA2D_BGPFCCR_AM DMA2D_BGPFCCR_AM_Msk /*!< Alpha mode AM[1:0] */\r
-#define DMA2D_BGPFCCR_AM_0 (0x1UL << DMA2D_BGPFCCR_AM_Pos) /*!< 0x00010000 */\r
-#define DMA2D_BGPFCCR_AM_1 (0x2UL << DMA2D_BGPFCCR_AM_Pos) /*!< 0x00020000 */\r
-#define DMA2D_BGPFCCR_AI_Pos (20U) \r
-#define DMA2D_BGPFCCR_AI_Msk (0x1UL << DMA2D_BGPFCCR_AI_Pos) /*!< 0x00100000 */\r
-#define DMA2D_BGPFCCR_AI DMA2D_BGPFCCR_AI_Msk /*!< background Input Alpha Inverted */\r
-#define DMA2D_BGPFCCR_RBS_Pos (21U) \r
-#define DMA2D_BGPFCCR_RBS_Msk (0x1UL << DMA2D_BGPFCCR_RBS_Pos) /*!< 0x00200000 */\r
-#define DMA2D_BGPFCCR_RBS DMA2D_BGPFCCR_RBS_Msk /*!< Background Input Red Blue Swap */\r
-#define DMA2D_BGPFCCR_ALPHA_Pos (24U) \r
-#define DMA2D_BGPFCCR_ALPHA_Msk (0xFFUL << DMA2D_BGPFCCR_ALPHA_Pos) /*!< 0xFF000000 */\r
-#define DMA2D_BGPFCCR_ALPHA DMA2D_BGPFCCR_ALPHA_Msk /*!< background Input Alpha value */\r
-\r
-/******************** Bit definition for DMA2D_BGCOLR register **************/\r
-\r
-#define DMA2D_BGCOLR_BLUE_Pos (0U) \r
-#define DMA2D_BGCOLR_BLUE_Msk (0xFFUL << DMA2D_BGCOLR_BLUE_Pos) /*!< 0x000000FF */\r
-#define DMA2D_BGCOLR_BLUE DMA2D_BGCOLR_BLUE_Msk /*!< Blue Value */\r
-#define DMA2D_BGCOLR_GREEN_Pos (8U) \r
-#define DMA2D_BGCOLR_GREEN_Msk (0xFFUL << DMA2D_BGCOLR_GREEN_Pos) /*!< 0x0000FF00 */\r
-#define DMA2D_BGCOLR_GREEN DMA2D_BGCOLR_GREEN_Msk /*!< Green Value */\r
-#define DMA2D_BGCOLR_RED_Pos (16U) \r
-#define DMA2D_BGCOLR_RED_Msk (0xFFUL << DMA2D_BGCOLR_RED_Pos) /*!< 0x00FF0000 */\r
-#define DMA2D_BGCOLR_RED DMA2D_BGCOLR_RED_Msk /*!< Red Value */\r
-\r
-/******************** Bit definition for DMA2D_FGCMAR register **************/\r
-\r
-#define DMA2D_FGCMAR_MA_Pos (0U) \r
-#define DMA2D_FGCMAR_MA_Msk (0xFFFFFFFFUL << DMA2D_FGCMAR_MA_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA2D_FGCMAR_MA DMA2D_FGCMAR_MA_Msk /*!< Memory Address */\r
-\r
-/******************** Bit definition for DMA2D_BGCMAR register **************/\r
-\r
-#define DMA2D_BGCMAR_MA_Pos (0U) \r
-#define DMA2D_BGCMAR_MA_Msk (0xFFFFFFFFUL << DMA2D_BGCMAR_MA_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA2D_BGCMAR_MA DMA2D_BGCMAR_MA_Msk /*!< Memory Address */\r
-\r
-/******************** Bit definition for DMA2D_OPFCCR register **************/\r
-\r
-#define DMA2D_OPFCCR_CM_Pos (0U) \r
-#define DMA2D_OPFCCR_CM_Msk (0x7UL << DMA2D_OPFCCR_CM_Pos) /*!< 0x00000007 */\r
-#define DMA2D_OPFCCR_CM DMA2D_OPFCCR_CM_Msk /*!< Color mode CM[2:0] */\r
-#define DMA2D_OPFCCR_CM_0 (0x1UL << DMA2D_OPFCCR_CM_Pos) /*!< 0x00000001 */\r
-#define DMA2D_OPFCCR_CM_1 (0x2UL << DMA2D_OPFCCR_CM_Pos) /*!< 0x00000002 */\r
-#define DMA2D_OPFCCR_CM_2 (0x4UL << DMA2D_OPFCCR_CM_Pos) /*!< 0x00000004 */\r
-#define DMA2D_OPFCCR_AI_Pos (20U) \r
-#define DMA2D_OPFCCR_AI_Msk (0x1UL << DMA2D_OPFCCR_AI_Pos) /*!< 0x00100000 */\r
-#define DMA2D_OPFCCR_AI DMA2D_OPFCCR_AI_Msk /*!< Output Alpha Inverted */\r
-#define DMA2D_OPFCCR_RBS_Pos (21U) \r
-#define DMA2D_OPFCCR_RBS_Msk (0x1UL << DMA2D_OPFCCR_RBS_Pos) /*!< 0x00200000 */\r
-#define DMA2D_OPFCCR_RBS DMA2D_OPFCCR_RBS_Msk /*!< Output Red Blue Swap */\r
-\r
-/******************** Bit definition for DMA2D_OCOLR register ***************/\r
-\r
-/*!<Mode_ARGB8888/RGB888 */\r
-\r
-#define DMA2D_OCOLR_BLUE_1 0x000000FFU /*!< BLUE Value */\r
-#define DMA2D_OCOLR_GREEN_1 0x0000FF00U /*!< GREEN Value */\r
-#define DMA2D_OCOLR_RED_1 0x00FF0000U /*!< Red Value */\r
-#define DMA2D_OCOLR_ALPHA_1 0xFF000000U /*!< Alpha Channel Value */\r
-\r
-/*!<Mode_RGB565 */\r
-#define DMA2D_OCOLR_BLUE_2 0x0000001FU /*!< BLUE Value */\r
-#define DMA2D_OCOLR_GREEN_2 0x000007E0U /*!< GREEN Value */\r
-#define DMA2D_OCOLR_RED_2 0x0000F800U /*!< Red Value */\r
-\r
-/*!<Mode_ARGB1555 */\r
-#define DMA2D_OCOLR_BLUE_3 0x0000001FU /*!< BLUE Value */\r
-#define DMA2D_OCOLR_GREEN_3 0x000003E0U /*!< GREEN Value */\r
-#define DMA2D_OCOLR_RED_3 0x00007C00U /*!< Red Value */\r
-#define DMA2D_OCOLR_ALPHA_3 0x00008000U /*!< Alpha Channel Value */\r
-\r
-/*!<Mode_ARGB4444 */\r
-#define DMA2D_OCOLR_BLUE_4 0x0000000FU /*!< BLUE Value */\r
-#define DMA2D_OCOLR_GREEN_4 0x000000F0U /*!< GREEN Value */\r
-#define DMA2D_OCOLR_RED_4 0x00000F00U /*!< Red Value */\r
-#define DMA2D_OCOLR_ALPHA_4 0x0000F000U /*!< Alpha Channel Value */\r
-\r
-/******************** Bit definition for DMA2D_OMAR register ****************/\r
-\r
-#define DMA2D_OMAR_MA_Pos (0U) \r
-#define DMA2D_OMAR_MA_Msk (0xFFFFFFFFUL << DMA2D_OMAR_MA_Pos) /*!< 0xFFFFFFFF */\r
-#define DMA2D_OMAR_MA DMA2D_OMAR_MA_Msk /*!< Memory Address */\r
-\r
-/******************** Bit definition for DMA2D_OOR register *****************/\r
-\r
-#define DMA2D_OOR_LO_Pos (0U) \r
-#define DMA2D_OOR_LO_Msk (0x3FFFUL << DMA2D_OOR_LO_Pos) /*!< 0x00003FFF */\r
-#define DMA2D_OOR_LO DMA2D_OOR_LO_Msk /*!< Line Offset */\r
-\r
-/******************** Bit definition for DMA2D_NLR register *****************/\r
-\r
-#define DMA2D_NLR_NL_Pos (0U) \r
-#define DMA2D_NLR_NL_Msk (0xFFFFUL << DMA2D_NLR_NL_Pos) /*!< 0x0000FFFF */\r
-#define DMA2D_NLR_NL DMA2D_NLR_NL_Msk /*!< Number of Lines */\r
-#define DMA2D_NLR_PL_Pos (16U) \r
-#define DMA2D_NLR_PL_Msk (0x3FFFUL << DMA2D_NLR_PL_Pos) /*!< 0x3FFF0000 */\r
-#define DMA2D_NLR_PL DMA2D_NLR_PL_Msk /*!< Pixel per Lines */\r
-\r
-/******************** Bit definition for DMA2D_LWR register *****************/\r
-\r
-#define DMA2D_LWR_LW_Pos (0U) \r
-#define DMA2D_LWR_LW_Msk (0xFFFFUL << DMA2D_LWR_LW_Pos) /*!< 0x0000FFFF */\r
-#define DMA2D_LWR_LW DMA2D_LWR_LW_Msk /*!< Line Watermark */\r
-\r
-/******************** Bit definition for DMA2D_AMTCR register ***************/\r
-\r
-#define DMA2D_AMTCR_EN_Pos (0U) \r
-#define DMA2D_AMTCR_EN_Msk (0x1UL << DMA2D_AMTCR_EN_Pos) /*!< 0x00000001 */\r
-#define DMA2D_AMTCR_EN DMA2D_AMTCR_EN_Msk /*!< Enable */\r
-#define DMA2D_AMTCR_DT_Pos (8U) \r
-#define DMA2D_AMTCR_DT_Msk (0xFFUL << DMA2D_AMTCR_DT_Pos) /*!< 0x0000FF00 */\r
-#define DMA2D_AMTCR_DT DMA2D_AMTCR_DT_Msk /*!< Dead Time */\r
-\r
-\r
-/******************** Bit definition for DMA2D_FGCLUT register **************/\r
-\r
-/******************** Bit definition for DMA2D_BGCLUT register **************/\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* External Interrupt/Event Controller */\r
-/* */\r
-/******************************************************************************/\r
-/******************* Bit definition for EXTI_IMR register *******************/\r
-#define EXTI_IMR_MR0_Pos (0U) \r
-#define EXTI_IMR_MR0_Msk (0x1UL << EXTI_IMR_MR0_Pos) /*!< 0x00000001 */\r
-#define EXTI_IMR_MR0 EXTI_IMR_MR0_Msk /*!< Interrupt Mask on line 0 */\r
-#define EXTI_IMR_MR1_Pos (1U) \r
-#define EXTI_IMR_MR1_Msk (0x1UL << EXTI_IMR_MR1_Pos) /*!< 0x00000002 */\r
-#define EXTI_IMR_MR1 EXTI_IMR_MR1_Msk /*!< Interrupt Mask on line 1 */\r
-#define EXTI_IMR_MR2_Pos (2U) \r
-#define EXTI_IMR_MR2_Msk (0x1UL << EXTI_IMR_MR2_Pos) /*!< 0x00000004 */\r
-#define EXTI_IMR_MR2 EXTI_IMR_MR2_Msk /*!< Interrupt Mask on line 2 */\r
-#define EXTI_IMR_MR3_Pos (3U) \r
-#define EXTI_IMR_MR3_Msk (0x1UL << EXTI_IMR_MR3_Pos) /*!< 0x00000008 */\r
-#define EXTI_IMR_MR3 EXTI_IMR_MR3_Msk /*!< Interrupt Mask on line 3 */\r
-#define EXTI_IMR_MR4_Pos (4U) \r
-#define EXTI_IMR_MR4_Msk (0x1UL << EXTI_IMR_MR4_Pos) /*!< 0x00000010 */\r
-#define EXTI_IMR_MR4 EXTI_IMR_MR4_Msk /*!< Interrupt Mask on line 4 */\r
-#define EXTI_IMR_MR5_Pos (5U) \r
-#define EXTI_IMR_MR5_Msk (0x1UL << EXTI_IMR_MR5_Pos) /*!< 0x00000020 */\r
-#define EXTI_IMR_MR5 EXTI_IMR_MR5_Msk /*!< Interrupt Mask on line 5 */\r
-#define EXTI_IMR_MR6_Pos (6U) \r
-#define EXTI_IMR_MR6_Msk (0x1UL << EXTI_IMR_MR6_Pos) /*!< 0x00000040 */\r
-#define EXTI_IMR_MR6 EXTI_IMR_MR6_Msk /*!< Interrupt Mask on line 6 */\r
-#define EXTI_IMR_MR7_Pos (7U) \r
-#define EXTI_IMR_MR7_Msk (0x1UL << EXTI_IMR_MR7_Pos) /*!< 0x00000080 */\r
-#define EXTI_IMR_MR7 EXTI_IMR_MR7_Msk /*!< Interrupt Mask on line 7 */\r
-#define EXTI_IMR_MR8_Pos (8U) \r
-#define EXTI_IMR_MR8_Msk (0x1UL << EXTI_IMR_MR8_Pos) /*!< 0x00000100 */\r
-#define EXTI_IMR_MR8 EXTI_IMR_MR8_Msk /*!< Interrupt Mask on line 8 */\r
-#define EXTI_IMR_MR9_Pos (9U) \r
-#define EXTI_IMR_MR9_Msk (0x1UL << EXTI_IMR_MR9_Pos) /*!< 0x00000200 */\r
-#define EXTI_IMR_MR9 EXTI_IMR_MR9_Msk /*!< Interrupt Mask on line 9 */\r
-#define EXTI_IMR_MR10_Pos (10U) \r
-#define EXTI_IMR_MR10_Msk (0x1UL << EXTI_IMR_MR10_Pos) /*!< 0x00000400 */\r
-#define EXTI_IMR_MR10 EXTI_IMR_MR10_Msk /*!< Interrupt Mask on line 10 */\r
-#define EXTI_IMR_MR11_Pos (11U) \r
-#define EXTI_IMR_MR11_Msk (0x1UL << EXTI_IMR_MR11_Pos) /*!< 0x00000800 */\r
-#define EXTI_IMR_MR11 EXTI_IMR_MR11_Msk /*!< Interrupt Mask on line 11 */\r
-#define EXTI_IMR_MR12_Pos (12U) \r
-#define EXTI_IMR_MR12_Msk (0x1UL << EXTI_IMR_MR12_Pos) /*!< 0x00001000 */\r
-#define EXTI_IMR_MR12 EXTI_IMR_MR12_Msk /*!< Interrupt Mask on line 12 */\r
-#define EXTI_IMR_MR13_Pos (13U) \r
-#define EXTI_IMR_MR13_Msk (0x1UL << EXTI_IMR_MR13_Pos) /*!< 0x00002000 */\r
-#define EXTI_IMR_MR13 EXTI_IMR_MR13_Msk /*!< Interrupt Mask on line 13 */\r
-#define EXTI_IMR_MR14_Pos (14U) \r
-#define EXTI_IMR_MR14_Msk (0x1UL << EXTI_IMR_MR14_Pos) /*!< 0x00004000 */\r
-#define EXTI_IMR_MR14 EXTI_IMR_MR14_Msk /*!< Interrupt Mask on line 14 */\r
-#define EXTI_IMR_MR15_Pos (15U) \r
-#define EXTI_IMR_MR15_Msk (0x1UL << EXTI_IMR_MR15_Pos) /*!< 0x00008000 */\r
-#define EXTI_IMR_MR15 EXTI_IMR_MR15_Msk /*!< Interrupt Mask on line 15 */\r
-#define EXTI_IMR_MR16_Pos (16U) \r
-#define EXTI_IMR_MR16_Msk (0x1UL << EXTI_IMR_MR16_Pos) /*!< 0x00010000 */\r
-#define EXTI_IMR_MR16 EXTI_IMR_MR16_Msk /*!< Interrupt Mask on line 16 */\r
-#define EXTI_IMR_MR17_Pos (17U) \r
-#define EXTI_IMR_MR17_Msk (0x1UL << EXTI_IMR_MR17_Pos) /*!< 0x00020000 */\r
-#define EXTI_IMR_MR17 EXTI_IMR_MR17_Msk /*!< Interrupt Mask on line 17 */\r
-#define EXTI_IMR_MR18_Pos (18U) \r
-#define EXTI_IMR_MR18_Msk (0x1UL << EXTI_IMR_MR18_Pos) /*!< 0x00040000 */\r
-#define EXTI_IMR_MR18 EXTI_IMR_MR18_Msk /*!< Interrupt Mask on line 18 */\r
-#define EXTI_IMR_MR19_Pos (19U) \r
-#define EXTI_IMR_MR19_Msk (0x1UL << EXTI_IMR_MR19_Pos) /*!< 0x00080000 */\r
-#define EXTI_IMR_MR19 EXTI_IMR_MR19_Msk /*!< Interrupt Mask on line 19 */\r
-#define EXTI_IMR_MR20_Pos (20U) \r
-#define EXTI_IMR_MR20_Msk (0x1UL << EXTI_IMR_MR20_Pos) /*!< 0x00100000 */\r
-#define EXTI_IMR_MR20 EXTI_IMR_MR20_Msk /*!< Interrupt Mask on line 20 */\r
-#define EXTI_IMR_MR21_Pos (21U) \r
-#define EXTI_IMR_MR21_Msk (0x1UL << EXTI_IMR_MR21_Pos) /*!< 0x00200000 */\r
-#define EXTI_IMR_MR21 EXTI_IMR_MR21_Msk /*!< Interrupt Mask on line 21 */\r
-#define EXTI_IMR_MR22_Pos (22U) \r
-#define EXTI_IMR_MR22_Msk (0x1UL << EXTI_IMR_MR22_Pos) /*!< 0x00400000 */\r
-#define EXTI_IMR_MR22 EXTI_IMR_MR22_Msk /*!< Interrupt Mask on line 22 */\r
-#define EXTI_IMR_MR23_Pos (23U) \r
-#define EXTI_IMR_MR23_Msk (0x1UL << EXTI_IMR_MR23_Pos) /*!< 0x00800000 */\r
-#define EXTI_IMR_MR23 EXTI_IMR_MR23_Msk /*!< Interrupt Mask on line 23 */\r
-#define EXTI_IMR_MR24_Pos (24U) \r
-#define EXTI_IMR_MR24_Msk (0x1UL << EXTI_IMR_MR24_Pos) /*!< 0x01000000 */\r
-#define EXTI_IMR_MR24 EXTI_IMR_MR24_Msk /*!< Interrupt Mask on line 24 */\r
-\r
-/* Reference Defines */\r
-#define EXTI_IMR_IM0 EXTI_IMR_MR0\r
-#define EXTI_IMR_IM1 EXTI_IMR_MR1\r
-#define EXTI_IMR_IM2 EXTI_IMR_MR2\r
-#define EXTI_IMR_IM3 EXTI_IMR_MR3\r
-#define EXTI_IMR_IM4 EXTI_IMR_MR4\r
-#define EXTI_IMR_IM5 EXTI_IMR_MR5\r
-#define EXTI_IMR_IM6 EXTI_IMR_MR6\r
-#define EXTI_IMR_IM7 EXTI_IMR_MR7\r
-#define EXTI_IMR_IM8 EXTI_IMR_MR8\r
-#define EXTI_IMR_IM9 EXTI_IMR_MR9\r
-#define EXTI_IMR_IM10 EXTI_IMR_MR10\r
-#define EXTI_IMR_IM11 EXTI_IMR_MR11\r
-#define EXTI_IMR_IM12 EXTI_IMR_MR12\r
-#define EXTI_IMR_IM13 EXTI_IMR_MR13\r
-#define EXTI_IMR_IM14 EXTI_IMR_MR14\r
-#define EXTI_IMR_IM15 EXTI_IMR_MR15\r
-#define EXTI_IMR_IM16 EXTI_IMR_MR16\r
-#define EXTI_IMR_IM17 EXTI_IMR_MR17\r
-#define EXTI_IMR_IM18 EXTI_IMR_MR18\r
-#define EXTI_IMR_IM19 EXTI_IMR_MR19\r
-#define EXTI_IMR_IM20 EXTI_IMR_MR20\r
-#define EXTI_IMR_IM21 EXTI_IMR_MR21\r
-#define EXTI_IMR_IM22 EXTI_IMR_MR22\r
-#define EXTI_IMR_IM23 EXTI_IMR_MR23\r
-#define EXTI_IMR_IM24 EXTI_IMR_MR24\r
-\r
-#define EXTI_IMR_IM_Pos (0U) \r
-#define EXTI_IMR_IM_Msk (0x1FFFFFFUL << EXTI_IMR_IM_Pos) /*!< 0x01FFFFFF */\r
-#define EXTI_IMR_IM EXTI_IMR_IM_Msk /*!< Interrupt Mask All */\r
-\r
-/******************* Bit definition for EXTI_EMR register *******************/\r
-#define EXTI_EMR_MR0_Pos (0U) \r
-#define EXTI_EMR_MR0_Msk (0x1UL << EXTI_EMR_MR0_Pos) /*!< 0x00000001 */\r
-#define EXTI_EMR_MR0 EXTI_EMR_MR0_Msk /*!< Event Mask on line 0 */\r
-#define EXTI_EMR_MR1_Pos (1U) \r
-#define EXTI_EMR_MR1_Msk (0x1UL << EXTI_EMR_MR1_Pos) /*!< 0x00000002 */\r
-#define EXTI_EMR_MR1 EXTI_EMR_MR1_Msk /*!< Event Mask on line 1 */\r
-#define EXTI_EMR_MR2_Pos (2U) \r
-#define EXTI_EMR_MR2_Msk (0x1UL << EXTI_EMR_MR2_Pos) /*!< 0x00000004 */\r
-#define EXTI_EMR_MR2 EXTI_EMR_MR2_Msk /*!< Event Mask on line 2 */\r
-#define EXTI_EMR_MR3_Pos (3U) \r
-#define EXTI_EMR_MR3_Msk (0x1UL << EXTI_EMR_MR3_Pos) /*!< 0x00000008 */\r
-#define EXTI_EMR_MR3 EXTI_EMR_MR3_Msk /*!< Event Mask on line 3 */\r
-#define EXTI_EMR_MR4_Pos (4U) \r
-#define EXTI_EMR_MR4_Msk (0x1UL << EXTI_EMR_MR4_Pos) /*!< 0x00000010 */\r
-#define EXTI_EMR_MR4 EXTI_EMR_MR4_Msk /*!< Event Mask on line 4 */\r
-#define EXTI_EMR_MR5_Pos (5U) \r
-#define EXTI_EMR_MR5_Msk (0x1UL << EXTI_EMR_MR5_Pos) /*!< 0x00000020 */\r
-#define EXTI_EMR_MR5 EXTI_EMR_MR5_Msk /*!< Event Mask on line 5 */\r
-#define EXTI_EMR_MR6_Pos (6U) \r
-#define EXTI_EMR_MR6_Msk (0x1UL << EXTI_EMR_MR6_Pos) /*!< 0x00000040 */\r
-#define EXTI_EMR_MR6 EXTI_EMR_MR6_Msk /*!< Event Mask on line 6 */\r
-#define EXTI_EMR_MR7_Pos (7U) \r
-#define EXTI_EMR_MR7_Msk (0x1UL << EXTI_EMR_MR7_Pos) /*!< 0x00000080 */\r
-#define EXTI_EMR_MR7 EXTI_EMR_MR7_Msk /*!< Event Mask on line 7 */\r
-#define EXTI_EMR_MR8_Pos (8U) \r
-#define EXTI_EMR_MR8_Msk (0x1UL << EXTI_EMR_MR8_Pos) /*!< 0x00000100 */\r
-#define EXTI_EMR_MR8 EXTI_EMR_MR8_Msk /*!< Event Mask on line 8 */\r
-#define EXTI_EMR_MR9_Pos (9U) \r
-#define EXTI_EMR_MR9_Msk (0x1UL << EXTI_EMR_MR9_Pos) /*!< 0x00000200 */\r
-#define EXTI_EMR_MR9 EXTI_EMR_MR9_Msk /*!< Event Mask on line 9 */\r
-#define EXTI_EMR_MR10_Pos (10U) \r
-#define EXTI_EMR_MR10_Msk (0x1UL << EXTI_EMR_MR10_Pos) /*!< 0x00000400 */\r
-#define EXTI_EMR_MR10 EXTI_EMR_MR10_Msk /*!< Event Mask on line 10 */\r
-#define EXTI_EMR_MR11_Pos (11U) \r
-#define EXTI_EMR_MR11_Msk (0x1UL << EXTI_EMR_MR11_Pos) /*!< 0x00000800 */\r
-#define EXTI_EMR_MR11 EXTI_EMR_MR11_Msk /*!< Event Mask on line 11 */\r
-#define EXTI_EMR_MR12_Pos (12U) \r
-#define EXTI_EMR_MR12_Msk (0x1UL << EXTI_EMR_MR12_Pos) /*!< 0x00001000 */\r
-#define EXTI_EMR_MR12 EXTI_EMR_MR12_Msk /*!< Event Mask on line 12 */\r
-#define EXTI_EMR_MR13_Pos (13U) \r
-#define EXTI_EMR_MR13_Msk (0x1UL << EXTI_EMR_MR13_Pos) /*!< 0x00002000 */\r
-#define EXTI_EMR_MR13 EXTI_EMR_MR13_Msk /*!< Event Mask on line 13 */\r
-#define EXTI_EMR_MR14_Pos (14U) \r
-#define EXTI_EMR_MR14_Msk (0x1UL << EXTI_EMR_MR14_Pos) /*!< 0x00004000 */\r
-#define EXTI_EMR_MR14 EXTI_EMR_MR14_Msk /*!< Event Mask on line 14 */\r
-#define EXTI_EMR_MR15_Pos (15U) \r
-#define EXTI_EMR_MR15_Msk (0x1UL << EXTI_EMR_MR15_Pos) /*!< 0x00008000 */\r
-#define EXTI_EMR_MR15 EXTI_EMR_MR15_Msk /*!< Event Mask on line 15 */\r
-#define EXTI_EMR_MR16_Pos (16U) \r
-#define EXTI_EMR_MR16_Msk (0x1UL << EXTI_EMR_MR16_Pos) /*!< 0x00010000 */\r
-#define EXTI_EMR_MR16 EXTI_EMR_MR16_Msk /*!< Event Mask on line 16 */\r
-#define EXTI_EMR_MR17_Pos (17U) \r
-#define EXTI_EMR_MR17_Msk (0x1UL << EXTI_EMR_MR17_Pos) /*!< 0x00020000 */\r
-#define EXTI_EMR_MR17 EXTI_EMR_MR17_Msk /*!< Event Mask on line 17 */\r
-#define EXTI_EMR_MR18_Pos (18U) \r
-#define EXTI_EMR_MR18_Msk (0x1UL << EXTI_EMR_MR18_Pos) /*!< 0x00040000 */\r
-#define EXTI_EMR_MR18 EXTI_EMR_MR18_Msk /*!< Event Mask on line 18 */\r
-#define EXTI_EMR_MR19_Pos (19U) \r
-#define EXTI_EMR_MR19_Msk (0x1UL << EXTI_EMR_MR19_Pos) /*!< 0x00080000 */\r
-#define EXTI_EMR_MR19 EXTI_EMR_MR19_Msk /*!< Event Mask on line 19 */\r
-#define EXTI_EMR_MR20_Pos (20U) \r
-#define EXTI_EMR_MR20_Msk (0x1UL << EXTI_EMR_MR20_Pos) /*!< 0x00100000 */\r
-#define EXTI_EMR_MR20 EXTI_EMR_MR20_Msk /*!< Event Mask on line 20 */\r
-#define EXTI_EMR_MR21_Pos (21U) \r
-#define EXTI_EMR_MR21_Msk (0x1UL << EXTI_EMR_MR21_Pos) /*!< 0x00200000 */\r
-#define EXTI_EMR_MR21 EXTI_EMR_MR21_Msk /*!< Event Mask on line 21 */\r
-#define EXTI_EMR_MR22_Pos (22U) \r
-#define EXTI_EMR_MR22_Msk (0x1UL << EXTI_EMR_MR22_Pos) /*!< 0x00400000 */\r
-#define EXTI_EMR_MR22 EXTI_EMR_MR22_Msk /*!< Event Mask on line 22 */\r
-#define EXTI_EMR_MR23_Pos (23U) \r
-#define EXTI_EMR_MR23_Msk (0x1UL << EXTI_EMR_MR23_Pos) /*!< 0x00800000 */\r
-#define EXTI_EMR_MR23 EXTI_EMR_MR23_Msk /*!< Event Mask on line 23 */\r
-#define EXTI_EMR_MR24_Pos (24U) \r
-#define EXTI_EMR_MR24_Msk (0x1UL << EXTI_EMR_MR24_Pos) /*!< 0x01000000 */\r
-#define EXTI_EMR_MR24 EXTI_EMR_MR24_Msk /*!< Event Mask on line 24 */\r
-\r
-/* Reference Defines */\r
-#define EXTI_EMR_EM0 EXTI_EMR_MR0\r
-#define EXTI_EMR_EM1 EXTI_EMR_MR1\r
-#define EXTI_EMR_EM2 EXTI_EMR_MR2\r
-#define EXTI_EMR_EM3 EXTI_EMR_MR3\r
-#define EXTI_EMR_EM4 EXTI_EMR_MR4\r
-#define EXTI_EMR_EM5 EXTI_EMR_MR5\r
-#define EXTI_EMR_EM6 EXTI_EMR_MR6\r
-#define EXTI_EMR_EM7 EXTI_EMR_MR7\r
-#define EXTI_EMR_EM8 EXTI_EMR_MR8\r
-#define EXTI_EMR_EM9 EXTI_EMR_MR9\r
-#define EXTI_EMR_EM10 EXTI_EMR_MR10\r
-#define EXTI_EMR_EM11 EXTI_EMR_MR11\r
-#define EXTI_EMR_EM12 EXTI_EMR_MR12\r
-#define EXTI_EMR_EM13 EXTI_EMR_MR13\r
-#define EXTI_EMR_EM14 EXTI_EMR_MR14\r
-#define EXTI_EMR_EM15 EXTI_EMR_MR15\r
-#define EXTI_EMR_EM16 EXTI_EMR_MR16\r
-#define EXTI_EMR_EM17 EXTI_EMR_MR17\r
-#define EXTI_EMR_EM18 EXTI_EMR_MR18\r
-#define EXTI_EMR_EM19 EXTI_EMR_MR19\r
-#define EXTI_EMR_EM20 EXTI_EMR_MR20\r
-#define EXTI_EMR_EM21 EXTI_EMR_MR21\r
-#define EXTI_EMR_EM22 EXTI_EMR_MR22\r
-#define EXTI_EMR_EM23 EXTI_EMR_MR23\r
-#define EXTI_EMR_EM24 EXTI_EMR_MR24\r
-\r
-\r
-/****************** Bit definition for EXTI_RTSR register *******************/\r
-#define EXTI_RTSR_TR0_Pos (0U) \r
-#define EXTI_RTSR_TR0_Msk (0x1UL << EXTI_RTSR_TR0_Pos) /*!< 0x00000001 */\r
-#define EXTI_RTSR_TR0 EXTI_RTSR_TR0_Msk /*!< Rising trigger event configuration bit of line 0 */\r
-#define EXTI_RTSR_TR1_Pos (1U) \r
-#define EXTI_RTSR_TR1_Msk (0x1UL << EXTI_RTSR_TR1_Pos) /*!< 0x00000002 */\r
-#define EXTI_RTSR_TR1 EXTI_RTSR_TR1_Msk /*!< Rising trigger event configuration bit of line 1 */\r
-#define EXTI_RTSR_TR2_Pos (2U) \r
-#define EXTI_RTSR_TR2_Msk (0x1UL << EXTI_RTSR_TR2_Pos) /*!< 0x00000004 */\r
-#define EXTI_RTSR_TR2 EXTI_RTSR_TR2_Msk /*!< Rising trigger event configuration bit of line 2 */\r
-#define EXTI_RTSR_TR3_Pos (3U) \r
-#define EXTI_RTSR_TR3_Msk (0x1UL << EXTI_RTSR_TR3_Pos) /*!< 0x00000008 */\r
-#define EXTI_RTSR_TR3 EXTI_RTSR_TR3_Msk /*!< Rising trigger event configuration bit of line 3 */\r
-#define EXTI_RTSR_TR4_Pos (4U) \r
-#define EXTI_RTSR_TR4_Msk (0x1UL << EXTI_RTSR_TR4_Pos) /*!< 0x00000010 */\r
-#define EXTI_RTSR_TR4 EXTI_RTSR_TR4_Msk /*!< Rising trigger event configuration bit of line 4 */\r
-#define EXTI_RTSR_TR5_Pos (5U) \r
-#define EXTI_RTSR_TR5_Msk (0x1UL << EXTI_RTSR_TR5_Pos) /*!< 0x00000020 */\r
-#define EXTI_RTSR_TR5 EXTI_RTSR_TR5_Msk /*!< Rising trigger event configuration bit of line 5 */\r
-#define EXTI_RTSR_TR6_Pos (6U) \r
-#define EXTI_RTSR_TR6_Msk (0x1UL << EXTI_RTSR_TR6_Pos) /*!< 0x00000040 */\r
-#define EXTI_RTSR_TR6 EXTI_RTSR_TR6_Msk /*!< Rising trigger event configuration bit of line 6 */\r
-#define EXTI_RTSR_TR7_Pos (7U) \r
-#define EXTI_RTSR_TR7_Msk (0x1UL << EXTI_RTSR_TR7_Pos) /*!< 0x00000080 */\r
-#define EXTI_RTSR_TR7 EXTI_RTSR_TR7_Msk /*!< Rising trigger event configuration bit of line 7 */\r
-#define EXTI_RTSR_TR8_Pos (8U) \r
-#define EXTI_RTSR_TR8_Msk (0x1UL << EXTI_RTSR_TR8_Pos) /*!< 0x00000100 */\r
-#define EXTI_RTSR_TR8 EXTI_RTSR_TR8_Msk /*!< Rising trigger event configuration bit of line 8 */\r
-#define EXTI_RTSR_TR9_Pos (9U) \r
-#define EXTI_RTSR_TR9_Msk (0x1UL << EXTI_RTSR_TR9_Pos) /*!< 0x00000200 */\r
-#define EXTI_RTSR_TR9 EXTI_RTSR_TR9_Msk /*!< Rising trigger event configuration bit of line 9 */\r
-#define EXTI_RTSR_TR10_Pos (10U) \r
-#define EXTI_RTSR_TR10_Msk (0x1UL << EXTI_RTSR_TR10_Pos) /*!< 0x00000400 */\r
-#define EXTI_RTSR_TR10 EXTI_RTSR_TR10_Msk /*!< Rising trigger event configuration bit of line 10 */\r
-#define EXTI_RTSR_TR11_Pos (11U) \r
-#define EXTI_RTSR_TR11_Msk (0x1UL << EXTI_RTSR_TR11_Pos) /*!< 0x00000800 */\r
-#define EXTI_RTSR_TR11 EXTI_RTSR_TR11_Msk /*!< Rising trigger event configuration bit of line 11 */\r
-#define EXTI_RTSR_TR12_Pos (12U) \r
-#define EXTI_RTSR_TR12_Msk (0x1UL << EXTI_RTSR_TR12_Pos) /*!< 0x00001000 */\r
-#define EXTI_RTSR_TR12 EXTI_RTSR_TR12_Msk /*!< Rising trigger event configuration bit of line 12 */\r
-#define EXTI_RTSR_TR13_Pos (13U) \r
-#define EXTI_RTSR_TR13_Msk (0x1UL << EXTI_RTSR_TR13_Pos) /*!< 0x00002000 */\r
-#define EXTI_RTSR_TR13 EXTI_RTSR_TR13_Msk /*!< Rising trigger event configuration bit of line 13 */\r
-#define EXTI_RTSR_TR14_Pos (14U) \r
-#define EXTI_RTSR_TR14_Msk (0x1UL << EXTI_RTSR_TR14_Pos) /*!< 0x00004000 */\r
-#define EXTI_RTSR_TR14 EXTI_RTSR_TR14_Msk /*!< Rising trigger event configuration bit of line 14 */\r
-#define EXTI_RTSR_TR15_Pos (15U) \r
-#define EXTI_RTSR_TR15_Msk (0x1UL << EXTI_RTSR_TR15_Pos) /*!< 0x00008000 */\r
-#define EXTI_RTSR_TR15 EXTI_RTSR_TR15_Msk /*!< Rising trigger event configuration bit of line 15 */\r
-#define EXTI_RTSR_TR16_Pos (16U) \r
-#define EXTI_RTSR_TR16_Msk (0x1UL << EXTI_RTSR_TR16_Pos) /*!< 0x00010000 */\r
-#define EXTI_RTSR_TR16 EXTI_RTSR_TR16_Msk /*!< Rising trigger event configuration bit of line 16 */\r
-#define EXTI_RTSR_TR17_Pos (17U) \r
-#define EXTI_RTSR_TR17_Msk (0x1UL << EXTI_RTSR_TR17_Pos) /*!< 0x00020000 */\r
-#define EXTI_RTSR_TR17 EXTI_RTSR_TR17_Msk /*!< Rising trigger event configuration bit of line 17 */\r
-#define EXTI_RTSR_TR18_Pos (18U) \r
-#define EXTI_RTSR_TR18_Msk (0x1UL << EXTI_RTSR_TR18_Pos) /*!< 0x00040000 */\r
-#define EXTI_RTSR_TR18 EXTI_RTSR_TR18_Msk /*!< Rising trigger event configuration bit of line 18 */\r
-#define EXTI_RTSR_TR19_Pos (19U) \r
-#define EXTI_RTSR_TR19_Msk (0x1UL << EXTI_RTSR_TR19_Pos) /*!< 0x00080000 */\r
-#define EXTI_RTSR_TR19 EXTI_RTSR_TR19_Msk /*!< Rising trigger event configuration bit of line 19 */\r
-#define EXTI_RTSR_TR20_Pos (20U) \r
-#define EXTI_RTSR_TR20_Msk (0x1UL << EXTI_RTSR_TR20_Pos) /*!< 0x00100000 */\r
-#define EXTI_RTSR_TR20 EXTI_RTSR_TR20_Msk /*!< Rising trigger event configuration bit of line 20 */\r
-#define EXTI_RTSR_TR21_Pos (21U) \r
-#define EXTI_RTSR_TR21_Msk (0x1UL << EXTI_RTSR_TR21_Pos) /*!< 0x00200000 */\r
-#define EXTI_RTSR_TR21 EXTI_RTSR_TR21_Msk /*!< Rising trigger event configuration bit of line 21 */\r
-#define EXTI_RTSR_TR22_Pos (22U) \r
-#define EXTI_RTSR_TR22_Msk (0x1UL << EXTI_RTSR_TR22_Pos) /*!< 0x00400000 */\r
-#define EXTI_RTSR_TR22 EXTI_RTSR_TR22_Msk /*!< Rising trigger event configuration bit of line 22 */\r
-#define EXTI_RTSR_TR23_Pos (23U) \r
-#define EXTI_RTSR_TR23_Msk (0x1UL << EXTI_RTSR_TR23_Pos) /*!< 0x00800000 */\r
-#define EXTI_RTSR_TR23 EXTI_RTSR_TR23_Msk /*!< Rising trigger event configuration bit of line 23 */\r
-#define EXTI_RTSR_TR24_Pos (24U) \r
-#define EXTI_RTSR_TR24_Msk (0x1UL << EXTI_RTSR_TR24_Pos) /*!< 0x01000000 */\r
-#define EXTI_RTSR_TR24 EXTI_RTSR_TR24_Msk /*!< Rising trigger event configuration bit of line 24 */\r
-\r
-/****************** Bit definition for EXTI_FTSR register *******************/\r
-#define EXTI_FTSR_TR0_Pos (0U) \r
-#define EXTI_FTSR_TR0_Msk (0x1UL << EXTI_FTSR_TR0_Pos) /*!< 0x00000001 */\r
-#define EXTI_FTSR_TR0 EXTI_FTSR_TR0_Msk /*!< Falling trigger event configuration bit of line 0 */\r
-#define EXTI_FTSR_TR1_Pos (1U) \r
-#define EXTI_FTSR_TR1_Msk (0x1UL << EXTI_FTSR_TR1_Pos) /*!< 0x00000002 */\r
-#define EXTI_FTSR_TR1 EXTI_FTSR_TR1_Msk /*!< Falling trigger event configuration bit of line 1 */\r
-#define EXTI_FTSR_TR2_Pos (2U) \r
-#define EXTI_FTSR_TR2_Msk (0x1UL << EXTI_FTSR_TR2_Pos) /*!< 0x00000004 */\r
-#define EXTI_FTSR_TR2 EXTI_FTSR_TR2_Msk /*!< Falling trigger event configuration bit of line 2 */\r
-#define EXTI_FTSR_TR3_Pos (3U) \r
-#define EXTI_FTSR_TR3_Msk (0x1UL << EXTI_FTSR_TR3_Pos) /*!< 0x00000008 */\r
-#define EXTI_FTSR_TR3 EXTI_FTSR_TR3_Msk /*!< Falling trigger event configuration bit of line 3 */\r
-#define EXTI_FTSR_TR4_Pos (4U) \r
-#define EXTI_FTSR_TR4_Msk (0x1UL << EXTI_FTSR_TR4_Pos) /*!< 0x00000010 */\r
-#define EXTI_FTSR_TR4 EXTI_FTSR_TR4_Msk /*!< Falling trigger event configuration bit of line 4 */\r
-#define EXTI_FTSR_TR5_Pos (5U) \r
-#define EXTI_FTSR_TR5_Msk (0x1UL << EXTI_FTSR_TR5_Pos) /*!< 0x00000020 */\r
-#define EXTI_FTSR_TR5 EXTI_FTSR_TR5_Msk /*!< Falling trigger event configuration bit of line 5 */\r
-#define EXTI_FTSR_TR6_Pos (6U) \r
-#define EXTI_FTSR_TR6_Msk (0x1UL << EXTI_FTSR_TR6_Pos) /*!< 0x00000040 */\r
-#define EXTI_FTSR_TR6 EXTI_FTSR_TR6_Msk /*!< Falling trigger event configuration bit of line 6 */\r
-#define EXTI_FTSR_TR7_Pos (7U) \r
-#define EXTI_FTSR_TR7_Msk (0x1UL << EXTI_FTSR_TR7_Pos) /*!< 0x00000080 */\r
-#define EXTI_FTSR_TR7 EXTI_FTSR_TR7_Msk /*!< Falling trigger event configuration bit of line 7 */\r
-#define EXTI_FTSR_TR8_Pos (8U) \r
-#define EXTI_FTSR_TR8_Msk (0x1UL << EXTI_FTSR_TR8_Pos) /*!< 0x00000100 */\r
-#define EXTI_FTSR_TR8 EXTI_FTSR_TR8_Msk /*!< Falling trigger event configuration bit of line 8 */\r
-#define EXTI_FTSR_TR9_Pos (9U) \r
-#define EXTI_FTSR_TR9_Msk (0x1UL << EXTI_FTSR_TR9_Pos) /*!< 0x00000200 */\r
-#define EXTI_FTSR_TR9 EXTI_FTSR_TR9_Msk /*!< Falling trigger event configuration bit of line 9 */\r
-#define EXTI_FTSR_TR10_Pos (10U) \r
-#define EXTI_FTSR_TR10_Msk (0x1UL << EXTI_FTSR_TR10_Pos) /*!< 0x00000400 */\r
-#define EXTI_FTSR_TR10 EXTI_FTSR_TR10_Msk /*!< Falling trigger event configuration bit of line 10 */\r
-#define EXTI_FTSR_TR11_Pos (11U) \r
-#define EXTI_FTSR_TR11_Msk (0x1UL << EXTI_FTSR_TR11_Pos) /*!< 0x00000800 */\r
-#define EXTI_FTSR_TR11 EXTI_FTSR_TR11_Msk /*!< Falling trigger event configuration bit of line 11 */\r
-#define EXTI_FTSR_TR12_Pos (12U) \r
-#define EXTI_FTSR_TR12_Msk (0x1UL << EXTI_FTSR_TR12_Pos) /*!< 0x00001000 */\r
-#define EXTI_FTSR_TR12 EXTI_FTSR_TR12_Msk /*!< Falling trigger event configuration bit of line 12 */\r
-#define EXTI_FTSR_TR13_Pos (13U) \r
-#define EXTI_FTSR_TR13_Msk (0x1UL << EXTI_FTSR_TR13_Pos) /*!< 0x00002000 */\r
-#define EXTI_FTSR_TR13 EXTI_FTSR_TR13_Msk /*!< Falling trigger event configuration bit of line 13 */\r
-#define EXTI_FTSR_TR14_Pos (14U) \r
-#define EXTI_FTSR_TR14_Msk (0x1UL << EXTI_FTSR_TR14_Pos) /*!< 0x00004000 */\r
-#define EXTI_FTSR_TR14 EXTI_FTSR_TR14_Msk /*!< Falling trigger event configuration bit of line 14 */\r
-#define EXTI_FTSR_TR15_Pos (15U) \r
-#define EXTI_FTSR_TR15_Msk (0x1UL << EXTI_FTSR_TR15_Pos) /*!< 0x00008000 */\r
-#define EXTI_FTSR_TR15 EXTI_FTSR_TR15_Msk /*!< Falling trigger event configuration bit of line 15 */\r
-#define EXTI_FTSR_TR16_Pos (16U) \r
-#define EXTI_FTSR_TR16_Msk (0x1UL << EXTI_FTSR_TR16_Pos) /*!< 0x00010000 */\r
-#define EXTI_FTSR_TR16 EXTI_FTSR_TR16_Msk /*!< Falling trigger event configuration bit of line 16 */\r
-#define EXTI_FTSR_TR17_Pos (17U) \r
-#define EXTI_FTSR_TR17_Msk (0x1UL << EXTI_FTSR_TR17_Pos) /*!< 0x00020000 */\r
-#define EXTI_FTSR_TR17 EXTI_FTSR_TR17_Msk /*!< Falling trigger event configuration bit of line 17 */\r
-#define EXTI_FTSR_TR18_Pos (18U) \r
-#define EXTI_FTSR_TR18_Msk (0x1UL << EXTI_FTSR_TR18_Pos) /*!< 0x00040000 */\r
-#define EXTI_FTSR_TR18 EXTI_FTSR_TR18_Msk /*!< Falling trigger event configuration bit of line 18 */\r
-#define EXTI_FTSR_TR19_Pos (19U) \r
-#define EXTI_FTSR_TR19_Msk (0x1UL << EXTI_FTSR_TR19_Pos) /*!< 0x00080000 */\r
-#define EXTI_FTSR_TR19 EXTI_FTSR_TR19_Msk /*!< Falling trigger event configuration bit of line 19 */\r
-#define EXTI_FTSR_TR20_Pos (20U) \r
-#define EXTI_FTSR_TR20_Msk (0x1UL << EXTI_FTSR_TR20_Pos) /*!< 0x00100000 */\r
-#define EXTI_FTSR_TR20 EXTI_FTSR_TR20_Msk /*!< Falling trigger event configuration bit of line 20 */\r
-#define EXTI_FTSR_TR21_Pos (21U) \r
-#define EXTI_FTSR_TR21_Msk (0x1UL << EXTI_FTSR_TR21_Pos) /*!< 0x00200000 */\r
-#define EXTI_FTSR_TR21 EXTI_FTSR_TR21_Msk /*!< Falling trigger event configuration bit of line 21 */\r
-#define EXTI_FTSR_TR22_Pos (22U) \r
-#define EXTI_FTSR_TR22_Msk (0x1UL << EXTI_FTSR_TR22_Pos) /*!< 0x00400000 */\r
-#define EXTI_FTSR_TR22 EXTI_FTSR_TR22_Msk /*!< Falling trigger event configuration bit of line 22 */\r
-#define EXTI_FTSR_TR23_Pos (23U) \r
-#define EXTI_FTSR_TR23_Msk (0x1UL << EXTI_FTSR_TR23_Pos) /*!< 0x00800000 */\r
-#define EXTI_FTSR_TR23 EXTI_FTSR_TR23_Msk /*!< Falling trigger event configuration bit of line 23 */\r
-#define EXTI_FTSR_TR24_Pos (24U) \r
-#define EXTI_FTSR_TR24_Msk (0x1UL << EXTI_FTSR_TR24_Pos) /*!< 0x01000000 */\r
-#define EXTI_FTSR_TR24 EXTI_FTSR_TR24_Msk /*!< Falling trigger event configuration bit of line 24 */\r
-\r
-/****************** Bit definition for EXTI_SWIER register ******************/\r
-#define EXTI_SWIER_SWIER0_Pos (0U) \r
-#define EXTI_SWIER_SWIER0_Msk (0x1UL << EXTI_SWIER_SWIER0_Pos) /*!< 0x00000001 */\r
-#define EXTI_SWIER_SWIER0 EXTI_SWIER_SWIER0_Msk /*!< Software Interrupt on line 0 */\r
-#define EXTI_SWIER_SWIER1_Pos (1U) \r
-#define EXTI_SWIER_SWIER1_Msk (0x1UL << EXTI_SWIER_SWIER1_Pos) /*!< 0x00000002 */\r
-#define EXTI_SWIER_SWIER1 EXTI_SWIER_SWIER1_Msk /*!< Software Interrupt on line 1 */\r
-#define EXTI_SWIER_SWIER2_Pos (2U) \r
-#define EXTI_SWIER_SWIER2_Msk (0x1UL << EXTI_SWIER_SWIER2_Pos) /*!< 0x00000004 */\r
-#define EXTI_SWIER_SWIER2 EXTI_SWIER_SWIER2_Msk /*!< Software Interrupt on line 2 */\r
-#define EXTI_SWIER_SWIER3_Pos (3U) \r
-#define EXTI_SWIER_SWIER3_Msk (0x1UL << EXTI_SWIER_SWIER3_Pos) /*!< 0x00000008 */\r
-#define EXTI_SWIER_SWIER3 EXTI_SWIER_SWIER3_Msk /*!< Software Interrupt on line 3 */\r
-#define EXTI_SWIER_SWIER4_Pos (4U) \r
-#define EXTI_SWIER_SWIER4_Msk (0x1UL << EXTI_SWIER_SWIER4_Pos) /*!< 0x00000010 */\r
-#define EXTI_SWIER_SWIER4 EXTI_SWIER_SWIER4_Msk /*!< Software Interrupt on line 4 */\r
-#define EXTI_SWIER_SWIER5_Pos (5U) \r
-#define EXTI_SWIER_SWIER5_Msk (0x1UL << EXTI_SWIER_SWIER5_Pos) /*!< 0x00000020 */\r
-#define EXTI_SWIER_SWIER5 EXTI_SWIER_SWIER5_Msk /*!< Software Interrupt on line 5 */\r
-#define EXTI_SWIER_SWIER6_Pos (6U) \r
-#define EXTI_SWIER_SWIER6_Msk (0x1UL << EXTI_SWIER_SWIER6_Pos) /*!< 0x00000040 */\r
-#define EXTI_SWIER_SWIER6 EXTI_SWIER_SWIER6_Msk /*!< Software Interrupt on line 6 */\r
-#define EXTI_SWIER_SWIER7_Pos (7U) \r
-#define EXTI_SWIER_SWIER7_Msk (0x1UL << EXTI_SWIER_SWIER7_Pos) /*!< 0x00000080 */\r
-#define EXTI_SWIER_SWIER7 EXTI_SWIER_SWIER7_Msk /*!< Software Interrupt on line 7 */\r
-#define EXTI_SWIER_SWIER8_Pos (8U) \r
-#define EXTI_SWIER_SWIER8_Msk (0x1UL << EXTI_SWIER_SWIER8_Pos) /*!< 0x00000100 */\r
-#define EXTI_SWIER_SWIER8 EXTI_SWIER_SWIER8_Msk /*!< Software Interrupt on line 8 */\r
-#define EXTI_SWIER_SWIER9_Pos (9U) \r
-#define EXTI_SWIER_SWIER9_Msk (0x1UL << EXTI_SWIER_SWIER9_Pos) /*!< 0x00000200 */\r
-#define EXTI_SWIER_SWIER9 EXTI_SWIER_SWIER9_Msk /*!< Software Interrupt on line 9 */\r
-#define EXTI_SWIER_SWIER10_Pos (10U) \r
-#define EXTI_SWIER_SWIER10_Msk (0x1UL << EXTI_SWIER_SWIER10_Pos) /*!< 0x00000400 */\r
-#define EXTI_SWIER_SWIER10 EXTI_SWIER_SWIER10_Msk /*!< Software Interrupt on line 10 */\r
-#define EXTI_SWIER_SWIER11_Pos (11U) \r
-#define EXTI_SWIER_SWIER11_Msk (0x1UL << EXTI_SWIER_SWIER11_Pos) /*!< 0x00000800 */\r
-#define EXTI_SWIER_SWIER11 EXTI_SWIER_SWIER11_Msk /*!< Software Interrupt on line 11 */\r
-#define EXTI_SWIER_SWIER12_Pos (12U) \r
-#define EXTI_SWIER_SWIER12_Msk (0x1UL << EXTI_SWIER_SWIER12_Pos) /*!< 0x00001000 */\r
-#define EXTI_SWIER_SWIER12 EXTI_SWIER_SWIER12_Msk /*!< Software Interrupt on line 12 */\r
-#define EXTI_SWIER_SWIER13_Pos (13U) \r
-#define EXTI_SWIER_SWIER13_Msk (0x1UL << EXTI_SWIER_SWIER13_Pos) /*!< 0x00002000 */\r
-#define EXTI_SWIER_SWIER13 EXTI_SWIER_SWIER13_Msk /*!< Software Interrupt on line 13 */\r
-#define EXTI_SWIER_SWIER14_Pos (14U) \r
-#define EXTI_SWIER_SWIER14_Msk (0x1UL << EXTI_SWIER_SWIER14_Pos) /*!< 0x00004000 */\r
-#define EXTI_SWIER_SWIER14 EXTI_SWIER_SWIER14_Msk /*!< Software Interrupt on line 14 */\r
-#define EXTI_SWIER_SWIER15_Pos (15U) \r
-#define EXTI_SWIER_SWIER15_Msk (0x1UL << EXTI_SWIER_SWIER15_Pos) /*!< 0x00008000 */\r
-#define EXTI_SWIER_SWIER15 EXTI_SWIER_SWIER15_Msk /*!< Software Interrupt on line 15 */\r
-#define EXTI_SWIER_SWIER16_Pos (16U) \r
-#define EXTI_SWIER_SWIER16_Msk (0x1UL << EXTI_SWIER_SWIER16_Pos) /*!< 0x00010000 */\r
-#define EXTI_SWIER_SWIER16 EXTI_SWIER_SWIER16_Msk /*!< Software Interrupt on line 16 */\r
-#define EXTI_SWIER_SWIER17_Pos (17U) \r
-#define EXTI_SWIER_SWIER17_Msk (0x1UL << EXTI_SWIER_SWIER17_Pos) /*!< 0x00020000 */\r
-#define EXTI_SWIER_SWIER17 EXTI_SWIER_SWIER17_Msk /*!< Software Interrupt on line 17 */\r
-#define EXTI_SWIER_SWIER18_Pos (18U) \r
-#define EXTI_SWIER_SWIER18_Msk (0x1UL << EXTI_SWIER_SWIER18_Pos) /*!< 0x00040000 */\r
-#define EXTI_SWIER_SWIER18 EXTI_SWIER_SWIER18_Msk /*!< Software Interrupt on line 18 */\r
-#define EXTI_SWIER_SWIER19_Pos (19U) \r
-#define EXTI_SWIER_SWIER19_Msk (0x1UL << EXTI_SWIER_SWIER19_Pos) /*!< 0x00080000 */\r
-#define EXTI_SWIER_SWIER19 EXTI_SWIER_SWIER19_Msk /*!< Software Interrupt on line 19 */\r
-#define EXTI_SWIER_SWIER20_Pos (20U) \r
-#define EXTI_SWIER_SWIER20_Msk (0x1UL << EXTI_SWIER_SWIER20_Pos) /*!< 0x00100000 */\r
-#define EXTI_SWIER_SWIER20 EXTI_SWIER_SWIER20_Msk /*!< Software Interrupt on line 20 */\r
-#define EXTI_SWIER_SWIER21_Pos (21U) \r
-#define EXTI_SWIER_SWIER21_Msk (0x1UL << EXTI_SWIER_SWIER21_Pos) /*!< 0x00200000 */\r
-#define EXTI_SWIER_SWIER21 EXTI_SWIER_SWIER21_Msk /*!< Software Interrupt on line 21 */\r
-#define EXTI_SWIER_SWIER22_Pos (22U) \r
-#define EXTI_SWIER_SWIER22_Msk (0x1UL << EXTI_SWIER_SWIER22_Pos) /*!< 0x00400000 */\r
-#define EXTI_SWIER_SWIER22 EXTI_SWIER_SWIER22_Msk /*!< Software Interrupt on line 22 */\r
-#define EXTI_SWIER_SWIER23_Pos (23U) \r
-#define EXTI_SWIER_SWIER23_Msk (0x1UL << EXTI_SWIER_SWIER23_Pos) /*!< 0x00800000 */\r
-#define EXTI_SWIER_SWIER23 EXTI_SWIER_SWIER23_Msk /*!< Software Interrupt on line 23 */\r
-#define EXTI_SWIER_SWIER24_Pos (24U) \r
-#define EXTI_SWIER_SWIER24_Msk (0x1UL << EXTI_SWIER_SWIER24_Pos) /*!< 0x01000000 */\r
-#define EXTI_SWIER_SWIER24 EXTI_SWIER_SWIER24_Msk /*!< Software Interrupt on line 24 */\r
-\r
-/******************* Bit definition for EXTI_PR register ********************/\r
-#define EXTI_PR_PR0_Pos (0U) \r
-#define EXTI_PR_PR0_Msk (0x1UL << EXTI_PR_PR0_Pos) /*!< 0x00000001 */\r
-#define EXTI_PR_PR0 EXTI_PR_PR0_Msk /*!< Pending bit for line 0 */\r
-#define EXTI_PR_PR1_Pos (1U) \r
-#define EXTI_PR_PR1_Msk (0x1UL << EXTI_PR_PR1_Pos) /*!< 0x00000002 */\r
-#define EXTI_PR_PR1 EXTI_PR_PR1_Msk /*!< Pending bit for line 1 */\r
-#define EXTI_PR_PR2_Pos (2U) \r
-#define EXTI_PR_PR2_Msk (0x1UL << EXTI_PR_PR2_Pos) /*!< 0x00000004 */\r
-#define EXTI_PR_PR2 EXTI_PR_PR2_Msk /*!< Pending bit for line 2 */\r
-#define EXTI_PR_PR3_Pos (3U) \r
-#define EXTI_PR_PR3_Msk (0x1UL << EXTI_PR_PR3_Pos) /*!< 0x00000008 */\r
-#define EXTI_PR_PR3 EXTI_PR_PR3_Msk /*!< Pending bit for line 3 */\r
-#define EXTI_PR_PR4_Pos (4U) \r
-#define EXTI_PR_PR4_Msk (0x1UL << EXTI_PR_PR4_Pos) /*!< 0x00000010 */\r
-#define EXTI_PR_PR4 EXTI_PR_PR4_Msk /*!< Pending bit for line 4 */\r
-#define EXTI_PR_PR5_Pos (5U) \r
-#define EXTI_PR_PR5_Msk (0x1UL << EXTI_PR_PR5_Pos) /*!< 0x00000020 */\r
-#define EXTI_PR_PR5 EXTI_PR_PR5_Msk /*!< Pending bit for line 5 */\r
-#define EXTI_PR_PR6_Pos (6U) \r
-#define EXTI_PR_PR6_Msk (0x1UL << EXTI_PR_PR6_Pos) /*!< 0x00000040 */\r
-#define EXTI_PR_PR6 EXTI_PR_PR6_Msk /*!< Pending bit for line 6 */\r
-#define EXTI_PR_PR7_Pos (7U) \r
-#define EXTI_PR_PR7_Msk (0x1UL << EXTI_PR_PR7_Pos) /*!< 0x00000080 */\r
-#define EXTI_PR_PR7 EXTI_PR_PR7_Msk /*!< Pending bit for line 7 */\r
-#define EXTI_PR_PR8_Pos (8U) \r
-#define EXTI_PR_PR8_Msk (0x1UL << EXTI_PR_PR8_Pos) /*!< 0x00000100 */\r
-#define EXTI_PR_PR8 EXTI_PR_PR8_Msk /*!< Pending bit for line 8 */\r
-#define EXTI_PR_PR9_Pos (9U) \r
-#define EXTI_PR_PR9_Msk (0x1UL << EXTI_PR_PR9_Pos) /*!< 0x00000200 */\r
-#define EXTI_PR_PR9 EXTI_PR_PR9_Msk /*!< Pending bit for line 9 */\r
-#define EXTI_PR_PR10_Pos (10U) \r
-#define EXTI_PR_PR10_Msk (0x1UL << EXTI_PR_PR10_Pos) /*!< 0x00000400 */\r
-#define EXTI_PR_PR10 EXTI_PR_PR10_Msk /*!< Pending bit for line 10 */\r
-#define EXTI_PR_PR11_Pos (11U) \r
-#define EXTI_PR_PR11_Msk (0x1UL << EXTI_PR_PR11_Pos) /*!< 0x00000800 */\r
-#define EXTI_PR_PR11 EXTI_PR_PR11_Msk /*!< Pending bit for line 11 */\r
-#define EXTI_PR_PR12_Pos (12U) \r
-#define EXTI_PR_PR12_Msk (0x1UL << EXTI_PR_PR12_Pos) /*!< 0x00001000 */\r
-#define EXTI_PR_PR12 EXTI_PR_PR12_Msk /*!< Pending bit for line 12 */\r
-#define EXTI_PR_PR13_Pos (13U) \r
-#define EXTI_PR_PR13_Msk (0x1UL << EXTI_PR_PR13_Pos) /*!< 0x00002000 */\r
-#define EXTI_PR_PR13 EXTI_PR_PR13_Msk /*!< Pending bit for line 13 */\r
-#define EXTI_PR_PR14_Pos (14U) \r
-#define EXTI_PR_PR14_Msk (0x1UL << EXTI_PR_PR14_Pos) /*!< 0x00004000 */\r
-#define EXTI_PR_PR14 EXTI_PR_PR14_Msk /*!< Pending bit for line 14 */\r
-#define EXTI_PR_PR15_Pos (15U) \r
-#define EXTI_PR_PR15_Msk (0x1UL << EXTI_PR_PR15_Pos) /*!< 0x00008000 */\r
-#define EXTI_PR_PR15 EXTI_PR_PR15_Msk /*!< Pending bit for line 15 */\r
-#define EXTI_PR_PR16_Pos (16U) \r
-#define EXTI_PR_PR16_Msk (0x1UL << EXTI_PR_PR16_Pos) /*!< 0x00010000 */\r
-#define EXTI_PR_PR16 EXTI_PR_PR16_Msk /*!< Pending bit for line 16 */\r
-#define EXTI_PR_PR17_Pos (17U) \r
-#define EXTI_PR_PR17_Msk (0x1UL << EXTI_PR_PR17_Pos) /*!< 0x00020000 */\r
-#define EXTI_PR_PR17 EXTI_PR_PR17_Msk /*!< Pending bit for line 17 */\r
-#define EXTI_PR_PR18_Pos (18U) \r
-#define EXTI_PR_PR18_Msk (0x1UL << EXTI_PR_PR18_Pos) /*!< 0x00040000 */\r
-#define EXTI_PR_PR18 EXTI_PR_PR18_Msk /*!< Pending bit for line 18 */\r
-#define EXTI_PR_PR19_Pos (19U) \r
-#define EXTI_PR_PR19_Msk (0x1UL << EXTI_PR_PR19_Pos) /*!< 0x00080000 */\r
-#define EXTI_PR_PR19 EXTI_PR_PR19_Msk /*!< Pending bit for line 19 */\r
-#define EXTI_PR_PR20_Pos (20U) \r
-#define EXTI_PR_PR20_Msk (0x1UL << EXTI_PR_PR20_Pos) /*!< 0x00100000 */\r
-#define EXTI_PR_PR20 EXTI_PR_PR20_Msk /*!< Pending bit for line 20 */\r
-#define EXTI_PR_PR21_Pos (21U) \r
-#define EXTI_PR_PR21_Msk (0x1UL << EXTI_PR_PR21_Pos) /*!< 0x00200000 */\r
-#define EXTI_PR_PR21 EXTI_PR_PR21_Msk /*!< Pending bit for line 21 */\r
-#define EXTI_PR_PR22_Pos (22U) \r
-#define EXTI_PR_PR22_Msk (0x1UL << EXTI_PR_PR22_Pos) /*!< 0x00400000 */\r
-#define EXTI_PR_PR22 EXTI_PR_PR22_Msk /*!< Pending bit for line 22 */\r
-#define EXTI_PR_PR23_Pos (23U) \r
-#define EXTI_PR_PR23_Msk (0x1UL << EXTI_PR_PR23_Pos) /*!< 0x00800000 */\r
-#define EXTI_PR_PR23 EXTI_PR_PR23_Msk /*!< Pending bit for line 23 */\r
-#define EXTI_PR_PR24_Pos (24U) \r
-#define EXTI_PR_PR24_Msk (0x1UL << EXTI_PR_PR24_Pos) /*!< 0x01000000 */\r
-#define EXTI_PR_PR24 EXTI_PR_PR24_Msk /*!< Pending bit for line 24 */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* FLASH */\r
-/* */\r
-/******************************************************************************/\r
-/*\r
-* @brief FLASH Total Sectors Number\r
-*/\r
-#define FLASH_SECTOR_TOTAL 24\r
-\r
-/******************* Bits definition for FLASH_ACR register *****************/\r
-#define FLASH_ACR_LATENCY_Pos (0U) \r
-#define FLASH_ACR_LATENCY_Msk (0xFUL << FLASH_ACR_LATENCY_Pos) /*!< 0x0000000F */\r
-#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk \r
-#define FLASH_ACR_LATENCY_0WS 0x00000000U \r
-#define FLASH_ACR_LATENCY_1WS 0x00000001U \r
-#define FLASH_ACR_LATENCY_2WS 0x00000002U \r
-#define FLASH_ACR_LATENCY_3WS 0x00000003U \r
-#define FLASH_ACR_LATENCY_4WS 0x00000004U \r
-#define FLASH_ACR_LATENCY_5WS 0x00000005U \r
-#define FLASH_ACR_LATENCY_6WS 0x00000006U \r
-#define FLASH_ACR_LATENCY_7WS 0x00000007U \r
-#define FLASH_ACR_LATENCY_8WS 0x00000008U \r
-#define FLASH_ACR_LATENCY_9WS 0x00000009U \r
-#define FLASH_ACR_LATENCY_10WS 0x0000000AU \r
-#define FLASH_ACR_LATENCY_11WS 0x0000000BU \r
-#define FLASH_ACR_LATENCY_12WS 0x0000000CU \r
-#define FLASH_ACR_LATENCY_13WS 0x0000000DU \r
-#define FLASH_ACR_LATENCY_14WS 0x0000000EU \r
-#define FLASH_ACR_LATENCY_15WS 0x0000000FU \r
-#define FLASH_ACR_PRFTEN_Pos (8U) \r
-#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */\r
-#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk \r
-#define FLASH_ACR_ARTEN_Pos (9U) \r
-#define FLASH_ACR_ARTEN_Msk (0x1UL << FLASH_ACR_ARTEN_Pos) /*!< 0x00000200 */\r
-#define FLASH_ACR_ARTEN FLASH_ACR_ARTEN_Msk \r
-#define FLASH_ACR_ARTRST_Pos (11U) \r
-#define FLASH_ACR_ARTRST_Msk (0x1UL << FLASH_ACR_ARTRST_Pos) /*!< 0x00000800 */\r
-#define FLASH_ACR_ARTRST FLASH_ACR_ARTRST_Msk \r
-\r
-/******************* Bits definition for FLASH_SR register ******************/\r
-#define FLASH_SR_EOP_Pos (0U) \r
-#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00000001 */\r
-#define FLASH_SR_EOP FLASH_SR_EOP_Msk \r
-#define FLASH_SR_OPERR_Pos (1U) \r
-#define FLASH_SR_OPERR_Msk (0x1UL << FLASH_SR_OPERR_Pos) /*!< 0x00000002 */\r
-#define FLASH_SR_OPERR FLASH_SR_OPERR_Msk \r
-#define FLASH_SR_WRPERR_Pos (4U) \r
-#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00000010 */\r
-#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk \r
-#define FLASH_SR_PGAERR_Pos (5U) \r
-#define FLASH_SR_PGAERR_Msk (0x1UL << FLASH_SR_PGAERR_Pos) /*!< 0x00000020 */\r
-#define FLASH_SR_PGAERR FLASH_SR_PGAERR_Msk \r
-#define FLASH_SR_PGPERR_Pos (6U) \r
-#define FLASH_SR_PGPERR_Msk (0x1UL << FLASH_SR_PGPERR_Pos) /*!< 0x00000040 */\r
-#define FLASH_SR_PGPERR FLASH_SR_PGPERR_Msk \r
-#define FLASH_SR_ERSERR_Pos (7U) \r
-#define FLASH_SR_ERSERR_Msk (0x1UL << FLASH_SR_ERSERR_Pos) /*!< 0x00000080 */\r
-#define FLASH_SR_ERSERR FLASH_SR_ERSERR_Msk \r
-#define FLASH_SR_BSY_Pos (16U) \r
-#define FLASH_SR_BSY_Msk (0x1UL << FLASH_SR_BSY_Pos) /*!< 0x00010000 */\r
-#define FLASH_SR_BSY FLASH_SR_BSY_Msk \r
-\r
-/******************* Bits definition for FLASH_CR register ******************/\r
-#define FLASH_CR_PG_Pos (0U) \r
-#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000001 */\r
-#define FLASH_CR_PG FLASH_CR_PG_Msk \r
-#define FLASH_CR_SER_Pos (1U) \r
-#define FLASH_CR_SER_Msk (0x1UL << FLASH_CR_SER_Pos) /*!< 0x00000002 */\r
-#define FLASH_CR_SER FLASH_CR_SER_Msk \r
-#define FLASH_CR_MER_Pos (2U) \r
-#define FLASH_CR_MER_Msk (0x1UL << FLASH_CR_MER_Pos) /*!< 0x00000004 */\r
-#define FLASH_CR_MER FLASH_CR_MER_Msk \r
-#define FLASH_CR_MER1 FLASH_CR_MER\r
-#define FLASH_CR_SNB_Pos (3U) \r
-#define FLASH_CR_SNB_Msk (0x1FUL << FLASH_CR_SNB_Pos) /*!< 0x000000F8 */\r
-#define FLASH_CR_SNB FLASH_CR_SNB_Msk \r
-#define FLASH_CR_SNB_0 0x00000008U \r
-#define FLASH_CR_SNB_1 0x00000010U \r
-#define FLASH_CR_SNB_2 0x00000020U \r
-#define FLASH_CR_SNB_3 0x00000040U \r
-#define FLASH_CR_SNB_4 0x00000080U \r
-#define FLASH_CR_PSIZE_Pos (8U) \r
-#define FLASH_CR_PSIZE_Msk (0x3UL << FLASH_CR_PSIZE_Pos) /*!< 0x00000300 */\r
-#define FLASH_CR_PSIZE FLASH_CR_PSIZE_Msk \r
-#define FLASH_CR_PSIZE_0 (0x1UL << FLASH_CR_PSIZE_Pos) /*!< 0x00000100 */\r
-#define FLASH_CR_PSIZE_1 (0x2UL << FLASH_CR_PSIZE_Pos) /*!< 0x00000200 */\r
-#define FLASH_CR_MER2_Pos (15U) \r
-#define FLASH_CR_MER2_Msk (0x1UL << FLASH_CR_MER2_Pos) /*!< 0x00008000 */\r
-#define FLASH_CR_MER2 FLASH_CR_MER2_Msk \r
-#define FLASH_CR_STRT_Pos (16U) \r
-#define FLASH_CR_STRT_Msk (0x1UL << FLASH_CR_STRT_Pos) /*!< 0x00010000 */\r
-#define FLASH_CR_STRT FLASH_CR_STRT_Msk \r
-#define FLASH_CR_EOPIE_Pos (24U) \r
-#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x01000000 */\r
-#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk \r
-#define FLASH_CR_ERRIE_Pos (25U) \r
-#define FLASH_CR_ERRIE_Msk (0x1UL << FLASH_CR_ERRIE_Pos) /*!< 0x02000000 */\r
-#define FLASH_CR_ERRIE FLASH_CR_ERRIE_Msk \r
-#define FLASH_CR_LOCK_Pos (31U) \r
-#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x80000000 */\r
-#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk \r
-\r
-/******************* Bits definition for FLASH_OPTCR register ***************/\r
-#define FLASH_OPTCR_OPTLOCK_Pos (0U) \r
-#define FLASH_OPTCR_OPTLOCK_Msk (0x1UL << FLASH_OPTCR_OPTLOCK_Pos) /*!< 0x00000001 */\r
-#define FLASH_OPTCR_OPTLOCK FLASH_OPTCR_OPTLOCK_Msk \r
-#define FLASH_OPTCR_OPTSTRT_Pos (1U) \r
-#define FLASH_OPTCR_OPTSTRT_Msk (0x1UL << FLASH_OPTCR_OPTSTRT_Pos) /*!< 0x00000002 */\r
-#define FLASH_OPTCR_OPTSTRT FLASH_OPTCR_OPTSTRT_Msk \r
-#define FLASH_OPTCR_BOR_LEV_Pos (2U) \r
-#define FLASH_OPTCR_BOR_LEV_Msk (0x3UL << FLASH_OPTCR_BOR_LEV_Pos) /*!< 0x0000000C */\r
-#define FLASH_OPTCR_BOR_LEV FLASH_OPTCR_BOR_LEV_Msk \r
-#define FLASH_OPTCR_BOR_LEV_0 (0x1UL << FLASH_OPTCR_BOR_LEV_Pos) /*!< 0x00000004 */\r
-#define FLASH_OPTCR_BOR_LEV_1 (0x2UL << FLASH_OPTCR_BOR_LEV_Pos) /*!< 0x00000008 */\r
-#define FLASH_OPTCR_WWDG_SW_Pos (4U) \r
-#define FLASH_OPTCR_WWDG_SW_Msk (0x1UL << FLASH_OPTCR_WWDG_SW_Pos) /*!< 0x00000010 */\r
-#define FLASH_OPTCR_WWDG_SW FLASH_OPTCR_WWDG_SW_Msk \r
-#define FLASH_OPTCR_IWDG_SW_Pos (5U) \r
-#define FLASH_OPTCR_IWDG_SW_Msk (0x1UL << FLASH_OPTCR_IWDG_SW_Pos) /*!< 0x00000020 */\r
-#define FLASH_OPTCR_IWDG_SW FLASH_OPTCR_IWDG_SW_Msk \r
-#define FLASH_OPTCR_nRST_STOP_Pos (6U) \r
-#define FLASH_OPTCR_nRST_STOP_Msk (0x1UL << FLASH_OPTCR_nRST_STOP_Pos) /*!< 0x00000040 */\r
-#define FLASH_OPTCR_nRST_STOP FLASH_OPTCR_nRST_STOP_Msk \r
-#define FLASH_OPTCR_nRST_STDBY_Pos (7U) \r
-#define FLASH_OPTCR_nRST_STDBY_Msk (0x1UL << FLASH_OPTCR_nRST_STDBY_Pos) /*!< 0x00000080 */\r
-#define FLASH_OPTCR_nRST_STDBY FLASH_OPTCR_nRST_STDBY_Msk \r
-#define FLASH_OPTCR_RDP_Pos (8U) \r
-#define FLASH_OPTCR_RDP_Msk (0xFFUL << FLASH_OPTCR_RDP_Pos) /*!< 0x0000FF00 */\r
-#define FLASH_OPTCR_RDP FLASH_OPTCR_RDP_Msk \r
-#define FLASH_OPTCR_RDP_0 (0x01UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00000100 */\r
-#define FLASH_OPTCR_RDP_1 (0x02UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00000200 */\r
-#define FLASH_OPTCR_RDP_2 (0x04UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00000400 */\r
-#define FLASH_OPTCR_RDP_3 (0x08UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00000800 */\r
-#define FLASH_OPTCR_RDP_4 (0x10UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00001000 */\r
-#define FLASH_OPTCR_RDP_5 (0x20UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00002000 */\r
-#define FLASH_OPTCR_RDP_6 (0x40UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00004000 */\r
-#define FLASH_OPTCR_RDP_7 (0x80UL << FLASH_OPTCR_RDP_Pos) /*!< 0x00008000 */\r
-#define FLASH_OPTCR_nWRP_Pos (16U) \r
-#define FLASH_OPTCR_nWRP_Msk (0xFFFUL << FLASH_OPTCR_nWRP_Pos) /*!< 0x0FFF0000 */\r
-#define FLASH_OPTCR_nWRP FLASH_OPTCR_nWRP_Msk \r
-#define FLASH_OPTCR_nWRP_0 0x00010000U \r
-#define FLASH_OPTCR_nWRP_1 0x00020000U \r
-#define FLASH_OPTCR_nWRP_2 0x00040000U \r
-#define FLASH_OPTCR_nWRP_3 0x00080000U \r
-#define FLASH_OPTCR_nWRP_4 0x00100000U \r
-#define FLASH_OPTCR_nWRP_5 0x00200000U \r
-#define FLASH_OPTCR_nWRP_6 0x00400000U \r
-#define FLASH_OPTCR_nWRP_7 0x00800000U \r
-#define FLASH_OPTCR_nWRP_8 0x01000000U \r
-#define FLASH_OPTCR_nWRP_9 0x02000000U \r
-#define FLASH_OPTCR_nWRP_10 0x04000000U \r
-#define FLASH_OPTCR_nWRP_11 0x08000000U \r
-#define FLASH_OPTCR_nDBOOT_Pos (28U) \r
-#define FLASH_OPTCR_nDBOOT_Msk (0x1UL << FLASH_OPTCR_nDBOOT_Pos) /*!< 0x10000000 */\r
-#define FLASH_OPTCR_nDBOOT FLASH_OPTCR_nDBOOT_Msk \r
-#define FLASH_OPTCR_nDBANK_Pos (29U) \r
-#define FLASH_OPTCR_nDBANK_Msk (0x1UL << FLASH_OPTCR_nDBANK_Pos) /*!< 0x20000000 */\r
-#define FLASH_OPTCR_nDBANK FLASH_OPTCR_nDBANK_Msk \r
-#define FLASH_OPTCR_IWDG_STDBY_Pos (30U) \r
-#define FLASH_OPTCR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTCR_IWDG_STDBY_Pos) /*!< 0x40000000 */\r
-#define FLASH_OPTCR_IWDG_STDBY FLASH_OPTCR_IWDG_STDBY_Msk \r
-#define FLASH_OPTCR_IWDG_STOP_Pos (31U) \r
-#define FLASH_OPTCR_IWDG_STOP_Msk (0x1UL << FLASH_OPTCR_IWDG_STOP_Pos) /*!< 0x80000000 */\r
-#define FLASH_OPTCR_IWDG_STOP FLASH_OPTCR_IWDG_STOP_Msk \r
-\r
-/******************* Bits definition for FLASH_OPTCR1 register ***************/\r
-#define FLASH_OPTCR1_BOOT_ADD0_Pos (0U) \r
-#define FLASH_OPTCR1_BOOT_ADD0_Msk (0xFFFFUL << FLASH_OPTCR1_BOOT_ADD0_Pos) /*!< 0x0000FFFF */\r
-#define FLASH_OPTCR1_BOOT_ADD0 FLASH_OPTCR1_BOOT_ADD0_Msk \r
-#define FLASH_OPTCR1_BOOT_ADD1_Pos (16U) \r
-#define FLASH_OPTCR1_BOOT_ADD1_Msk (0xFFFFUL << FLASH_OPTCR1_BOOT_ADD1_Pos) /*!< 0xFFFF0000 */\r
-#define FLASH_OPTCR1_BOOT_ADD1 FLASH_OPTCR1_BOOT_ADD1_Msk \r
-\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Flexible Memory Controller */\r
-/* */\r
-/******************************************************************************/\r
-/****************** Bit definition for FMC_BCR1 register *******************/\r
-#define FMC_BCR1_MBKEN_Pos (0U) \r
-#define FMC_BCR1_MBKEN_Msk (0x1UL << FMC_BCR1_MBKEN_Pos) /*!< 0x00000001 */\r
-#define FMC_BCR1_MBKEN FMC_BCR1_MBKEN_Msk /*!<Memory bank enable bit */\r
-#define FMC_BCR1_MUXEN_Pos (1U) \r
-#define FMC_BCR1_MUXEN_Msk (0x1UL << FMC_BCR1_MUXEN_Pos) /*!< 0x00000002 */\r
-#define FMC_BCR1_MUXEN FMC_BCR1_MUXEN_Msk /*!<Address/data multiplexing enable bit */\r
-#define FMC_BCR1_MTYP_Pos (2U) \r
-#define FMC_BCR1_MTYP_Msk (0x3UL << FMC_BCR1_MTYP_Pos) /*!< 0x0000000C */\r
-#define FMC_BCR1_MTYP FMC_BCR1_MTYP_Msk /*!<MTYP[1:0] bits (Memory type) */\r
-#define FMC_BCR1_MTYP_0 (0x1UL << FMC_BCR1_MTYP_Pos) /*!< 0x00000004 */\r
-#define FMC_BCR1_MTYP_1 (0x2UL << FMC_BCR1_MTYP_Pos) /*!< 0x00000008 */\r
-#define FMC_BCR1_MWID_Pos (4U) \r
-#define FMC_BCR1_MWID_Msk (0x3UL << FMC_BCR1_MWID_Pos) /*!< 0x00000030 */\r
-#define FMC_BCR1_MWID FMC_BCR1_MWID_Msk /*!<MWID[1:0] bits (Memory data bus width) */\r
-#define FMC_BCR1_MWID_0 (0x1UL << FMC_BCR1_MWID_Pos) /*!< 0x00000010 */\r
-#define FMC_BCR1_MWID_1 (0x2UL << FMC_BCR1_MWID_Pos) /*!< 0x00000020 */\r
-#define FMC_BCR1_FACCEN_Pos (6U) \r
-#define FMC_BCR1_FACCEN_Msk (0x1UL << FMC_BCR1_FACCEN_Pos) /*!< 0x00000040 */\r
-#define FMC_BCR1_FACCEN FMC_BCR1_FACCEN_Msk /*!<Flash access enable */\r
-#define FMC_BCR1_BURSTEN_Pos (8U) \r
-#define FMC_BCR1_BURSTEN_Msk (0x1UL << FMC_BCR1_BURSTEN_Pos) /*!< 0x00000100 */\r
-#define FMC_BCR1_BURSTEN FMC_BCR1_BURSTEN_Msk /*!<Burst enable bit */\r
-#define FMC_BCR1_WAITPOL_Pos (9U) \r
-#define FMC_BCR1_WAITPOL_Msk (0x1UL << FMC_BCR1_WAITPOL_Pos) /*!< 0x00000200 */\r
-#define FMC_BCR1_WAITPOL FMC_BCR1_WAITPOL_Msk /*!<Wait signal polarity bit */\r
-#define FMC_BCR1_WRAPMOD_Pos (10U) \r
-#define FMC_BCR1_WRAPMOD_Msk (0x1UL << FMC_BCR1_WRAPMOD_Pos) /*!< 0x00000400 */\r
-#define FMC_BCR1_WRAPMOD FMC_BCR1_WRAPMOD_Msk /*!<Wrapped burst mode support */\r
-#define FMC_BCR1_WAITCFG_Pos (11U) \r
-#define FMC_BCR1_WAITCFG_Msk (0x1UL << FMC_BCR1_WAITCFG_Pos) /*!< 0x00000800 */\r
-#define FMC_BCR1_WAITCFG FMC_BCR1_WAITCFG_Msk /*!<Wait timing configuration */\r
-#define FMC_BCR1_WREN_Pos (12U) \r
-#define FMC_BCR1_WREN_Msk (0x1UL << FMC_BCR1_WREN_Pos) /*!< 0x00001000 */\r
-#define FMC_BCR1_WREN FMC_BCR1_WREN_Msk /*!<Write enable bit */\r
-#define FMC_BCR1_WAITEN_Pos (13U) \r
-#define FMC_BCR1_WAITEN_Msk (0x1UL << FMC_BCR1_WAITEN_Pos) /*!< 0x00002000 */\r
-#define FMC_BCR1_WAITEN FMC_BCR1_WAITEN_Msk /*!<Wait enable bit */\r
-#define FMC_BCR1_EXTMOD_Pos (14U) \r
-#define FMC_BCR1_EXTMOD_Msk (0x1UL << FMC_BCR1_EXTMOD_Pos) /*!< 0x00004000 */\r
-#define FMC_BCR1_EXTMOD FMC_BCR1_EXTMOD_Msk /*!<Extended mode enable */\r
-#define FMC_BCR1_ASYNCWAIT_Pos (15U) \r
-#define FMC_BCR1_ASYNCWAIT_Msk (0x1UL << FMC_BCR1_ASYNCWAIT_Pos) /*!< 0x00008000 */\r
-#define FMC_BCR1_ASYNCWAIT FMC_BCR1_ASYNCWAIT_Msk /*!<Asynchronous wait */\r
-#define FMC_BCR1_CPSIZE_Pos (16U) \r
-#define FMC_BCR1_CPSIZE_Msk (0x7UL << FMC_BCR1_CPSIZE_Pos) /*!< 0x00070000 */\r
-#define FMC_BCR1_CPSIZE FMC_BCR1_CPSIZE_Msk /*!<CRAM page size */\r
-#define FMC_BCR1_CPSIZE_0 (0x1UL << FMC_BCR1_CPSIZE_Pos) /*!< 0x00010000 */\r
-#define FMC_BCR1_CPSIZE_1 (0x2UL << FMC_BCR1_CPSIZE_Pos) /*!< 0x00020000 */\r
-#define FMC_BCR1_CPSIZE_2 (0x4UL << FMC_BCR1_CPSIZE_Pos) /*!< 0x00040000 */\r
-#define FMC_BCR1_CBURSTRW_Pos (19U) \r
-#define FMC_BCR1_CBURSTRW_Msk (0x1UL << FMC_BCR1_CBURSTRW_Pos) /*!< 0x00080000 */\r
-#define FMC_BCR1_CBURSTRW FMC_BCR1_CBURSTRW_Msk /*!<Write burst enable */\r
-#define FMC_BCR1_CCLKEN_Pos (20U) \r
-#define FMC_BCR1_CCLKEN_Msk (0x1UL << FMC_BCR1_CCLKEN_Pos) /*!< 0x00100000 */\r
-#define FMC_BCR1_CCLKEN FMC_BCR1_CCLKEN_Msk /*!<Continous clock enable */\r
-#define FMC_BCR1_WFDIS_Pos (21U) \r
-#define FMC_BCR1_WFDIS_Msk (0x1UL << FMC_BCR1_WFDIS_Pos) /*!< 0x00200000 */\r
-#define FMC_BCR1_WFDIS FMC_BCR1_WFDIS_Msk /*!<Write FIFO Disable */\r
-\r
-/****************** Bit definition for FMC_BCR2 register *******************/\r
-#define FMC_BCR2_MBKEN_Pos (0U) \r
-#define FMC_BCR2_MBKEN_Msk (0x1UL << FMC_BCR2_MBKEN_Pos) /*!< 0x00000001 */\r
-#define FMC_BCR2_MBKEN FMC_BCR2_MBKEN_Msk /*!<Memory bank enable bit */\r
-#define FMC_BCR2_MUXEN_Pos (1U) \r
-#define FMC_BCR2_MUXEN_Msk (0x1UL << FMC_BCR2_MUXEN_Pos) /*!< 0x00000002 */\r
-#define FMC_BCR2_MUXEN FMC_BCR2_MUXEN_Msk /*!<Address/data multiplexing enable bit */\r
-#define FMC_BCR2_MTYP_Pos (2U) \r
-#define FMC_BCR2_MTYP_Msk (0x3UL << FMC_BCR2_MTYP_Pos) /*!< 0x0000000C */\r
-#define FMC_BCR2_MTYP FMC_BCR2_MTYP_Msk /*!<MTYP[1:0] bits (Memory type) */\r
-#define FMC_BCR2_MTYP_0 (0x1UL << FMC_BCR2_MTYP_Pos) /*!< 0x00000004 */\r
-#define FMC_BCR2_MTYP_1 (0x2UL << FMC_BCR2_MTYP_Pos) /*!< 0x00000008 */\r
-#define FMC_BCR2_MWID_Pos (4U) \r
-#define FMC_BCR2_MWID_Msk (0x3UL << FMC_BCR2_MWID_Pos) /*!< 0x00000030 */\r
-#define FMC_BCR2_MWID FMC_BCR2_MWID_Msk /*!<MWID[1:0] bits (Memory data bus width) */\r
-#define FMC_BCR2_MWID_0 (0x1UL << FMC_BCR2_MWID_Pos) /*!< 0x00000010 */\r
-#define FMC_BCR2_MWID_1 (0x2UL << FMC_BCR2_MWID_Pos) /*!< 0x00000020 */\r
-#define FMC_BCR2_FACCEN_Pos (6U) \r
-#define FMC_BCR2_FACCEN_Msk (0x1UL << FMC_BCR2_FACCEN_Pos) /*!< 0x00000040 */\r
-#define FMC_BCR2_FACCEN FMC_BCR2_FACCEN_Msk /*!<Flash access enable */\r
-#define FMC_BCR2_BURSTEN_Pos (8U) \r
-#define FMC_BCR2_BURSTEN_Msk (0x1UL << FMC_BCR2_BURSTEN_Pos) /*!< 0x00000100 */\r
-#define FMC_BCR2_BURSTEN FMC_BCR2_BURSTEN_Msk /*!<Burst enable bit */\r
-#define FMC_BCR2_WAITPOL_Pos (9U) \r
-#define FMC_BCR2_WAITPOL_Msk (0x1UL << FMC_BCR2_WAITPOL_Pos) /*!< 0x00000200 */\r
-#define FMC_BCR2_WAITPOL FMC_BCR2_WAITPOL_Msk /*!<Wait signal polarity bit */\r
-#define FMC_BCR2_WRAPMOD_Pos (10U) \r
-#define FMC_BCR2_WRAPMOD_Msk (0x1UL << FMC_BCR2_WRAPMOD_Pos) /*!< 0x00000400 */\r
-#define FMC_BCR2_WRAPMOD FMC_BCR2_WRAPMOD_Msk /*!<Wrapped burst mode support */\r
-#define FMC_BCR2_WAITCFG_Pos (11U) \r
-#define FMC_BCR2_WAITCFG_Msk (0x1UL << FMC_BCR2_WAITCFG_Pos) /*!< 0x00000800 */\r
-#define FMC_BCR2_WAITCFG FMC_BCR2_WAITCFG_Msk /*!<Wait timing configuration */\r
-#define FMC_BCR2_WREN_Pos (12U) \r
-#define FMC_BCR2_WREN_Msk (0x1UL << FMC_BCR2_WREN_Pos) /*!< 0x00001000 */\r
-#define FMC_BCR2_WREN FMC_BCR2_WREN_Msk /*!<Write enable bit */\r
-#define FMC_BCR2_WAITEN_Pos (13U) \r
-#define FMC_BCR2_WAITEN_Msk (0x1UL << FMC_BCR2_WAITEN_Pos) /*!< 0x00002000 */\r
-#define FMC_BCR2_WAITEN FMC_BCR2_WAITEN_Msk /*!<Wait enable bit */\r
-#define FMC_BCR2_EXTMOD_Pos (14U) \r
-#define FMC_BCR2_EXTMOD_Msk (0x1UL << FMC_BCR2_EXTMOD_Pos) /*!< 0x00004000 */\r
-#define FMC_BCR2_EXTMOD FMC_BCR2_EXTMOD_Msk /*!<Extended mode enable */\r
-#define FMC_BCR2_ASYNCWAIT_Pos (15U) \r
-#define FMC_BCR2_ASYNCWAIT_Msk (0x1UL << FMC_BCR2_ASYNCWAIT_Pos) /*!< 0x00008000 */\r
-#define FMC_BCR2_ASYNCWAIT FMC_BCR2_ASYNCWAIT_Msk /*!<Asynchronous wait */\r
-#define FMC_BCR2_CPSIZE_Pos (16U) \r
-#define FMC_BCR2_CPSIZE_Msk (0x7UL << FMC_BCR2_CPSIZE_Pos) /*!< 0x00070000 */\r
-#define FMC_BCR2_CPSIZE FMC_BCR2_CPSIZE_Msk /*!<CRAM page size */\r
-#define FMC_BCR2_CPSIZE_0 (0x1UL << FMC_BCR2_CPSIZE_Pos) /*!< 0x00010000 */\r
-#define FMC_BCR2_CPSIZE_1 (0x2UL << FMC_BCR2_CPSIZE_Pos) /*!< 0x00020000 */\r
-#define FMC_BCR2_CPSIZE_2 (0x4UL << FMC_BCR2_CPSIZE_Pos) /*!< 0x00040000 */\r
-#define FMC_BCR2_CBURSTRW_Pos (19U) \r
-#define FMC_BCR2_CBURSTRW_Msk (0x1UL << FMC_BCR2_CBURSTRW_Pos) /*!< 0x00080000 */\r
-#define FMC_BCR2_CBURSTRW FMC_BCR2_CBURSTRW_Msk /*!<Write burst enable */\r
-\r
-/****************** Bit definition for FMC_BCR3 register *******************/\r
-#define FMC_BCR3_MBKEN_Pos (0U) \r
-#define FMC_BCR3_MBKEN_Msk (0x1UL << FMC_BCR3_MBKEN_Pos) /*!< 0x00000001 */\r
-#define FMC_BCR3_MBKEN FMC_BCR3_MBKEN_Msk /*!<Memory bank enable bit */\r
-#define FMC_BCR3_MUXEN_Pos (1U) \r
-#define FMC_BCR3_MUXEN_Msk (0x1UL << FMC_BCR3_MUXEN_Pos) /*!< 0x00000002 */\r
-#define FMC_BCR3_MUXEN FMC_BCR3_MUXEN_Msk /*!<Address/data multiplexing enable bit */\r
-#define FMC_BCR3_MTYP_Pos (2U) \r
-#define FMC_BCR3_MTYP_Msk (0x3UL << FMC_BCR3_MTYP_Pos) /*!< 0x0000000C */\r
-#define FMC_BCR3_MTYP FMC_BCR3_MTYP_Msk /*!<MTYP[1:0] bits (Memory type) */\r
-#define FMC_BCR3_MTYP_0 (0x1UL << FMC_BCR3_MTYP_Pos) /*!< 0x00000004 */\r
-#define FMC_BCR3_MTYP_1 (0x2UL << FMC_BCR3_MTYP_Pos) /*!< 0x00000008 */\r
-#define FMC_BCR3_MWID_Pos (4U) \r
-#define FMC_BCR3_MWID_Msk (0x3UL << FMC_BCR3_MWID_Pos) /*!< 0x00000030 */\r
-#define FMC_BCR3_MWID FMC_BCR3_MWID_Msk /*!<MWID[1:0] bits (Memory data bus width) */\r
-#define FMC_BCR3_MWID_0 (0x1UL << FMC_BCR3_MWID_Pos) /*!< 0x00000010 */\r
-#define FMC_BCR3_MWID_1 (0x2UL << FMC_BCR3_MWID_Pos) /*!< 0x00000020 */\r
-#define FMC_BCR3_FACCEN_Pos (6U) \r
-#define FMC_BCR3_FACCEN_Msk (0x1UL << FMC_BCR3_FACCEN_Pos) /*!< 0x00000040 */\r
-#define FMC_BCR3_FACCEN FMC_BCR3_FACCEN_Msk /*!<Flash access enable */\r
-#define FMC_BCR3_BURSTEN_Pos (8U) \r
-#define FMC_BCR3_BURSTEN_Msk (0x1UL << FMC_BCR3_BURSTEN_Pos) /*!< 0x00000100 */\r
-#define FMC_BCR3_BURSTEN FMC_BCR3_BURSTEN_Msk /*!<Burst enable bit */\r
-#define FMC_BCR3_WAITPOL_Pos (9U) \r
-#define FMC_BCR3_WAITPOL_Msk (0x1UL << FMC_BCR3_WAITPOL_Pos) /*!< 0x00000200 */\r
-#define FMC_BCR3_WAITPOL FMC_BCR3_WAITPOL_Msk /*!<Wait signal polarity bit */\r
-#define FMC_BCR3_WRAPMOD_Pos (10U) \r
-#define FMC_BCR3_WRAPMOD_Msk (0x1UL << FMC_BCR3_WRAPMOD_Pos) /*!< 0x00000400 */\r
-#define FMC_BCR3_WRAPMOD FMC_BCR3_WRAPMOD_Msk /*!<Wrapped burst mode support */\r
-#define FMC_BCR3_WAITCFG_Pos (11U) \r
-#define FMC_BCR3_WAITCFG_Msk (0x1UL << FMC_BCR3_WAITCFG_Pos) /*!< 0x00000800 */\r
-#define FMC_BCR3_WAITCFG FMC_BCR3_WAITCFG_Msk /*!<Wait timing configuration */\r
-#define FMC_BCR3_WREN_Pos (12U) \r
-#define FMC_BCR3_WREN_Msk (0x1UL << FMC_BCR3_WREN_Pos) /*!< 0x00001000 */\r
-#define FMC_BCR3_WREN FMC_BCR3_WREN_Msk /*!<Write enable bit */\r
-#define FMC_BCR3_WAITEN_Pos (13U) \r
-#define FMC_BCR3_WAITEN_Msk (0x1UL << FMC_BCR3_WAITEN_Pos) /*!< 0x00002000 */\r
-#define FMC_BCR3_WAITEN FMC_BCR3_WAITEN_Msk /*!<Wait enable bit */\r
-#define FMC_BCR3_EXTMOD_Pos (14U) \r
-#define FMC_BCR3_EXTMOD_Msk (0x1UL << FMC_BCR3_EXTMOD_Pos) /*!< 0x00004000 */\r
-#define FMC_BCR3_EXTMOD FMC_BCR3_EXTMOD_Msk /*!<Extended mode enable */\r
-#define FMC_BCR3_ASYNCWAIT_Pos (15U) \r
-#define FMC_BCR3_ASYNCWAIT_Msk (0x1UL << FMC_BCR3_ASYNCWAIT_Pos) /*!< 0x00008000 */\r
-#define FMC_BCR3_ASYNCWAIT FMC_BCR3_ASYNCWAIT_Msk /*!<Asynchronous wait */\r
-#define FMC_BCR3_CPSIZE_Pos (16U) \r
-#define FMC_BCR3_CPSIZE_Msk (0x7UL << FMC_BCR3_CPSIZE_Pos) /*!< 0x00070000 */\r
-#define FMC_BCR3_CPSIZE FMC_BCR3_CPSIZE_Msk /*!<CRAM page size */\r
-#define FMC_BCR3_CPSIZE_0 (0x1UL << FMC_BCR3_CPSIZE_Pos) /*!< 0x00010000 */\r
-#define FMC_BCR3_CPSIZE_1 (0x2UL << FMC_BCR3_CPSIZE_Pos) /*!< 0x00020000 */\r
-#define FMC_BCR3_CPSIZE_2 (0x4UL << FMC_BCR3_CPSIZE_Pos) /*!< 0x00040000 */\r
-#define FMC_BCR3_CBURSTRW_Pos (19U) \r
-#define FMC_BCR3_CBURSTRW_Msk (0x1UL << FMC_BCR3_CBURSTRW_Pos) /*!< 0x00080000 */\r
-#define FMC_BCR3_CBURSTRW FMC_BCR3_CBURSTRW_Msk /*!<Write burst enable */\r
-\r
-/****************** Bit definition for FMC_BCR4 register *******************/\r
-#define FMC_BCR4_MBKEN_Pos (0U) \r
-#define FMC_BCR4_MBKEN_Msk (0x1UL << FMC_BCR4_MBKEN_Pos) /*!< 0x00000001 */\r
-#define FMC_BCR4_MBKEN FMC_BCR4_MBKEN_Msk /*!<Memory bank enable bit */\r
-#define FMC_BCR4_MUXEN_Pos (1U) \r
-#define FMC_BCR4_MUXEN_Msk (0x1UL << FMC_BCR4_MUXEN_Pos) /*!< 0x00000002 */\r
-#define FMC_BCR4_MUXEN FMC_BCR4_MUXEN_Msk /*!<Address/data multiplexing enable bit */\r
-#define FMC_BCR4_MTYP_Pos (2U) \r
-#define FMC_BCR4_MTYP_Msk (0x3UL << FMC_BCR4_MTYP_Pos) /*!< 0x0000000C */\r
-#define FMC_BCR4_MTYP FMC_BCR4_MTYP_Msk /*!<MTYP[1:0] bits (Memory type) */\r
-#define FMC_BCR4_MTYP_0 (0x1UL << FMC_BCR4_MTYP_Pos) /*!< 0x00000004 */\r
-#define FMC_BCR4_MTYP_1 (0x2UL << FMC_BCR4_MTYP_Pos) /*!< 0x00000008 */\r
-#define FMC_BCR4_MWID_Pos (4U) \r
-#define FMC_BCR4_MWID_Msk (0x3UL << FMC_BCR4_MWID_Pos) /*!< 0x00000030 */\r
-#define FMC_BCR4_MWID FMC_BCR4_MWID_Msk /*!<MWID[1:0] bits (Memory data bus width) */\r
-#define FMC_BCR4_MWID_0 (0x1UL << FMC_BCR4_MWID_Pos) /*!< 0x00000010 */\r
-#define FMC_BCR4_MWID_1 (0x2UL << FMC_BCR4_MWID_Pos) /*!< 0x00000020 */\r
-#define FMC_BCR4_FACCEN_Pos (6U) \r
-#define FMC_BCR4_FACCEN_Msk (0x1UL << FMC_BCR4_FACCEN_Pos) /*!< 0x00000040 */\r
-#define FMC_BCR4_FACCEN FMC_BCR4_FACCEN_Msk /*!<Flash access enable */\r
-#define FMC_BCR4_BURSTEN_Pos (8U) \r
-#define FMC_BCR4_BURSTEN_Msk (0x1UL << FMC_BCR4_BURSTEN_Pos) /*!< 0x00000100 */\r
-#define FMC_BCR4_BURSTEN FMC_BCR4_BURSTEN_Msk /*!<Burst enable bit */\r
-#define FMC_BCR4_WAITPOL_Pos (9U) \r
-#define FMC_BCR4_WAITPOL_Msk (0x1UL << FMC_BCR4_WAITPOL_Pos) /*!< 0x00000200 */\r
-#define FMC_BCR4_WAITPOL FMC_BCR4_WAITPOL_Msk /*!<Wait signal polarity bit */\r
-#define FMC_BCR4_WRAPMOD_Pos (10U) \r
-#define FMC_BCR4_WRAPMOD_Msk (0x1UL << FMC_BCR4_WRAPMOD_Pos) /*!< 0x00000400 */\r
-#define FMC_BCR4_WRAPMOD FMC_BCR4_WRAPMOD_Msk /*!<Wrapped burst mode support */\r
-#define FMC_BCR4_WAITCFG_Pos (11U) \r
-#define FMC_BCR4_WAITCFG_Msk (0x1UL << FMC_BCR4_WAITCFG_Pos) /*!< 0x00000800 */\r
-#define FMC_BCR4_WAITCFG FMC_BCR4_WAITCFG_Msk /*!<Wait timing configuration */\r
-#define FMC_BCR4_WREN_Pos (12U) \r
-#define FMC_BCR4_WREN_Msk (0x1UL << FMC_BCR4_WREN_Pos) /*!< 0x00001000 */\r
-#define FMC_BCR4_WREN FMC_BCR4_WREN_Msk /*!<Write enable bit */\r
-#define FMC_BCR4_WAITEN_Pos (13U) \r
-#define FMC_BCR4_WAITEN_Msk (0x1UL << FMC_BCR4_WAITEN_Pos) /*!< 0x00002000 */\r
-#define FMC_BCR4_WAITEN FMC_BCR4_WAITEN_Msk /*!<Wait enable bit */\r
-#define FMC_BCR4_EXTMOD_Pos (14U) \r
-#define FMC_BCR4_EXTMOD_Msk (0x1UL << FMC_BCR4_EXTMOD_Pos) /*!< 0x00004000 */\r
-#define FMC_BCR4_EXTMOD FMC_BCR4_EXTMOD_Msk /*!<Extended mode enable */\r
-#define FMC_BCR4_ASYNCWAIT_Pos (15U) \r
-#define FMC_BCR4_ASYNCWAIT_Msk (0x1UL << FMC_BCR4_ASYNCWAIT_Pos) /*!< 0x00008000 */\r
-#define FMC_BCR4_ASYNCWAIT FMC_BCR4_ASYNCWAIT_Msk /*!<Asynchronous wait */\r
-#define FMC_BCR4_CPSIZE_Pos (16U) \r
-#define FMC_BCR4_CPSIZE_Msk (0x7UL << FMC_BCR4_CPSIZE_Pos) /*!< 0x00070000 */\r
-#define FMC_BCR4_CPSIZE FMC_BCR4_CPSIZE_Msk /*!<CRAM page size */\r
-#define FMC_BCR4_CPSIZE_0 (0x1UL << FMC_BCR4_CPSIZE_Pos) /*!< 0x00010000 */\r
-#define FMC_BCR4_CPSIZE_1 (0x2UL << FMC_BCR4_CPSIZE_Pos) /*!< 0x00020000 */\r
-#define FMC_BCR4_CPSIZE_2 (0x4UL << FMC_BCR4_CPSIZE_Pos) /*!< 0x00040000 */\r
-#define FMC_BCR4_CBURSTRW_Pos (19U) \r
-#define FMC_BCR4_CBURSTRW_Msk (0x1UL << FMC_BCR4_CBURSTRW_Pos) /*!< 0x00080000 */\r
-#define FMC_BCR4_CBURSTRW FMC_BCR4_CBURSTRW_Msk /*!<Write burst enable */\r
-\r
-/****************** Bit definition for FMC_BTR1 register ******************/\r
-#define FMC_BTR1_ADDSET_Pos (0U) \r
-#define FMC_BTR1_ADDSET_Msk (0xFUL << FMC_BTR1_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BTR1_ADDSET FMC_BTR1_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BTR1_ADDSET_0 (0x1UL << FMC_BTR1_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BTR1_ADDSET_1 (0x2UL << FMC_BTR1_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BTR1_ADDSET_2 (0x4UL << FMC_BTR1_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BTR1_ADDSET_3 (0x8UL << FMC_BTR1_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BTR1_ADDHLD_Pos (4U) \r
-#define FMC_BTR1_ADDHLD_Msk (0xFUL << FMC_BTR1_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BTR1_ADDHLD FMC_BTR1_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BTR1_ADDHLD_0 (0x1UL << FMC_BTR1_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BTR1_ADDHLD_1 (0x2UL << FMC_BTR1_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BTR1_ADDHLD_2 (0x4UL << FMC_BTR1_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BTR1_ADDHLD_3 (0x8UL << FMC_BTR1_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BTR1_DATAST_Pos (8U) \r
-#define FMC_BTR1_DATAST_Msk (0xFFUL << FMC_BTR1_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BTR1_DATAST FMC_BTR1_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BTR1_DATAST_0 (0x01UL << FMC_BTR1_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BTR1_DATAST_1 (0x02UL << FMC_BTR1_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BTR1_DATAST_2 (0x04UL << FMC_BTR1_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BTR1_DATAST_3 (0x08UL << FMC_BTR1_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BTR1_DATAST_4 (0x10UL << FMC_BTR1_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BTR1_DATAST_5 (0x20UL << FMC_BTR1_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BTR1_DATAST_6 (0x40UL << FMC_BTR1_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BTR1_DATAST_7 (0x80UL << FMC_BTR1_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BTR1_BUSTURN_Pos (16U) \r
-#define FMC_BTR1_BUSTURN_Msk (0xFUL << FMC_BTR1_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BTR1_BUSTURN FMC_BTR1_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BTR1_BUSTURN_0 (0x1UL << FMC_BTR1_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BTR1_BUSTURN_1 (0x2UL << FMC_BTR1_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BTR1_BUSTURN_2 (0x4UL << FMC_BTR1_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BTR1_BUSTURN_3 (0x8UL << FMC_BTR1_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BTR1_CLKDIV_Pos (20U) \r
-#define FMC_BTR1_CLKDIV_Msk (0xFUL << FMC_BTR1_CLKDIV_Pos) /*!< 0x00F00000 */\r
-#define FMC_BTR1_CLKDIV FMC_BTR1_CLKDIV_Msk /*!<CLKDIV[3:0] bits (Clock divide ratio) */\r
-#define FMC_BTR1_CLKDIV_0 (0x1UL << FMC_BTR1_CLKDIV_Pos) /*!< 0x00100000 */\r
-#define FMC_BTR1_CLKDIV_1 (0x2UL << FMC_BTR1_CLKDIV_Pos) /*!< 0x00200000 */\r
-#define FMC_BTR1_CLKDIV_2 (0x4UL << FMC_BTR1_CLKDIV_Pos) /*!< 0x00400000 */\r
-#define FMC_BTR1_CLKDIV_3 (0x8UL << FMC_BTR1_CLKDIV_Pos) /*!< 0x00800000 */\r
-#define FMC_BTR1_DATLAT_Pos (24U) \r
-#define FMC_BTR1_DATLAT_Msk (0xFUL << FMC_BTR1_DATLAT_Pos) /*!< 0x0F000000 */\r
-#define FMC_BTR1_DATLAT FMC_BTR1_DATLAT_Msk /*!<DATLA[3:0] bits (Data latency) */\r
-#define FMC_BTR1_DATLAT_0 (0x1UL << FMC_BTR1_DATLAT_Pos) /*!< 0x01000000 */\r
-#define FMC_BTR1_DATLAT_1 (0x2UL << FMC_BTR1_DATLAT_Pos) /*!< 0x02000000 */\r
-#define FMC_BTR1_DATLAT_2 (0x4UL << FMC_BTR1_DATLAT_Pos) /*!< 0x04000000 */\r
-#define FMC_BTR1_DATLAT_3 (0x8UL << FMC_BTR1_DATLAT_Pos) /*!< 0x08000000 */\r
-#define FMC_BTR1_ACCMOD_Pos (28U) \r
-#define FMC_BTR1_ACCMOD_Msk (0x3UL << FMC_BTR1_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BTR1_ACCMOD FMC_BTR1_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BTR1_ACCMOD_0 (0x1UL << FMC_BTR1_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BTR1_ACCMOD_1 (0x2UL << FMC_BTR1_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for FMC_BTR2 register *******************/\r
-#define FMC_BTR2_ADDSET_Pos (0U) \r
-#define FMC_BTR2_ADDSET_Msk (0xFUL << FMC_BTR2_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BTR2_ADDSET FMC_BTR2_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BTR2_ADDSET_0 (0x1UL << FMC_BTR2_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BTR2_ADDSET_1 (0x2UL << FMC_BTR2_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BTR2_ADDSET_2 (0x4UL << FMC_BTR2_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BTR2_ADDSET_3 (0x8UL << FMC_BTR2_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BTR2_ADDHLD_Pos (4U) \r
-#define FMC_BTR2_ADDHLD_Msk (0xFUL << FMC_BTR2_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BTR2_ADDHLD FMC_BTR2_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BTR2_ADDHLD_0 (0x1UL << FMC_BTR2_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BTR2_ADDHLD_1 (0x2UL << FMC_BTR2_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BTR2_ADDHLD_2 (0x4UL << FMC_BTR2_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BTR2_ADDHLD_3 (0x8UL << FMC_BTR2_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BTR2_DATAST_Pos (8U) \r
-#define FMC_BTR2_DATAST_Msk (0xFFUL << FMC_BTR2_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BTR2_DATAST FMC_BTR2_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BTR2_DATAST_0 (0x01UL << FMC_BTR2_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BTR2_DATAST_1 (0x02UL << FMC_BTR2_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BTR2_DATAST_2 (0x04UL << FMC_BTR2_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BTR2_DATAST_3 (0x08UL << FMC_BTR2_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BTR2_DATAST_4 (0x10UL << FMC_BTR2_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BTR2_DATAST_5 (0x20UL << FMC_BTR2_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BTR2_DATAST_6 (0x40UL << FMC_BTR2_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BTR2_DATAST_7 (0x80UL << FMC_BTR2_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BTR2_BUSTURN_Pos (16U) \r
-#define FMC_BTR2_BUSTURN_Msk (0xFUL << FMC_BTR2_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BTR2_BUSTURN FMC_BTR2_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BTR2_BUSTURN_0 (0x1UL << FMC_BTR2_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BTR2_BUSTURN_1 (0x2UL << FMC_BTR2_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BTR2_BUSTURN_2 (0x4UL << FMC_BTR2_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BTR2_BUSTURN_3 (0x8UL << FMC_BTR2_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BTR2_CLKDIV_Pos (20U) \r
-#define FMC_BTR2_CLKDIV_Msk (0xFUL << FMC_BTR2_CLKDIV_Pos) /*!< 0x00F00000 */\r
-#define FMC_BTR2_CLKDIV FMC_BTR2_CLKDIV_Msk /*!<CLKDIV[3:0] bits (Clock divide ratio) */\r
-#define FMC_BTR2_CLKDIV_0 (0x1UL << FMC_BTR2_CLKDIV_Pos) /*!< 0x00100000 */\r
-#define FMC_BTR2_CLKDIV_1 (0x2UL << FMC_BTR2_CLKDIV_Pos) /*!< 0x00200000 */\r
-#define FMC_BTR2_CLKDIV_2 (0x4UL << FMC_BTR2_CLKDIV_Pos) /*!< 0x00400000 */\r
-#define FMC_BTR2_CLKDIV_3 (0x8UL << FMC_BTR2_CLKDIV_Pos) /*!< 0x00800000 */\r
-#define FMC_BTR2_DATLAT_Pos (24U) \r
-#define FMC_BTR2_DATLAT_Msk (0xFUL << FMC_BTR2_DATLAT_Pos) /*!< 0x0F000000 */\r
-#define FMC_BTR2_DATLAT FMC_BTR2_DATLAT_Msk /*!<DATLA[3:0] bits (Data latency) */\r
-#define FMC_BTR2_DATLAT_0 (0x1UL << FMC_BTR2_DATLAT_Pos) /*!< 0x01000000 */\r
-#define FMC_BTR2_DATLAT_1 (0x2UL << FMC_BTR2_DATLAT_Pos) /*!< 0x02000000 */\r
-#define FMC_BTR2_DATLAT_2 (0x4UL << FMC_BTR2_DATLAT_Pos) /*!< 0x04000000 */\r
-#define FMC_BTR2_DATLAT_3 (0x8UL << FMC_BTR2_DATLAT_Pos) /*!< 0x08000000 */\r
-#define FMC_BTR2_ACCMOD_Pos (28U) \r
-#define FMC_BTR2_ACCMOD_Msk (0x3UL << FMC_BTR2_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BTR2_ACCMOD FMC_BTR2_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BTR2_ACCMOD_0 (0x1UL << FMC_BTR2_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BTR2_ACCMOD_1 (0x2UL << FMC_BTR2_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/******************* Bit definition for FMC_BTR3 register *******************/\r
-#define FMC_BTR3_ADDSET_Pos (0U) \r
-#define FMC_BTR3_ADDSET_Msk (0xFUL << FMC_BTR3_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BTR3_ADDSET FMC_BTR3_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BTR3_ADDSET_0 (0x1UL << FMC_BTR3_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BTR3_ADDSET_1 (0x2UL << FMC_BTR3_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BTR3_ADDSET_2 (0x4UL << FMC_BTR3_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BTR3_ADDSET_3 (0x8UL << FMC_BTR3_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BTR3_ADDHLD_Pos (4U) \r
-#define FMC_BTR3_ADDHLD_Msk (0xFUL << FMC_BTR3_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BTR3_ADDHLD FMC_BTR3_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BTR3_ADDHLD_0 (0x1UL << FMC_BTR3_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BTR3_ADDHLD_1 (0x2UL << FMC_BTR3_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BTR3_ADDHLD_2 (0x4UL << FMC_BTR3_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BTR3_ADDHLD_3 (0x8UL << FMC_BTR3_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BTR3_DATAST_Pos (8U) \r
-#define FMC_BTR3_DATAST_Msk (0xFFUL << FMC_BTR3_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BTR3_DATAST FMC_BTR3_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BTR3_DATAST_0 (0x01UL << FMC_BTR3_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BTR3_DATAST_1 (0x02UL << FMC_BTR3_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BTR3_DATAST_2 (0x04UL << FMC_BTR3_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BTR3_DATAST_3 (0x08UL << FMC_BTR3_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BTR3_DATAST_4 (0x10UL << FMC_BTR3_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BTR3_DATAST_5 (0x20UL << FMC_BTR3_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BTR3_DATAST_6 (0x40UL << FMC_BTR3_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BTR3_DATAST_7 (0x80UL << FMC_BTR3_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BTR3_BUSTURN_Pos (16U) \r
-#define FMC_BTR3_BUSTURN_Msk (0xFUL << FMC_BTR3_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BTR3_BUSTURN FMC_BTR3_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BTR3_BUSTURN_0 (0x1UL << FMC_BTR3_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BTR3_BUSTURN_1 (0x2UL << FMC_BTR3_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BTR3_BUSTURN_2 (0x4UL << FMC_BTR3_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BTR3_BUSTURN_3 (0x8UL << FMC_BTR3_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BTR3_CLKDIV_Pos (20U) \r
-#define FMC_BTR3_CLKDIV_Msk (0xFUL << FMC_BTR3_CLKDIV_Pos) /*!< 0x00F00000 */\r
-#define FMC_BTR3_CLKDIV FMC_BTR3_CLKDIV_Msk /*!<CLKDIV[3:0] bits (Clock divide ratio) */\r
-#define FMC_BTR3_CLKDIV_0 (0x1UL << FMC_BTR3_CLKDIV_Pos) /*!< 0x00100000 */\r
-#define FMC_BTR3_CLKDIV_1 (0x2UL << FMC_BTR3_CLKDIV_Pos) /*!< 0x00200000 */\r
-#define FMC_BTR3_CLKDIV_2 (0x4UL << FMC_BTR3_CLKDIV_Pos) /*!< 0x00400000 */\r
-#define FMC_BTR3_CLKDIV_3 (0x8UL << FMC_BTR3_CLKDIV_Pos) /*!< 0x00800000 */\r
-#define FMC_BTR3_DATLAT_Pos (24U) \r
-#define FMC_BTR3_DATLAT_Msk (0xFUL << FMC_BTR3_DATLAT_Pos) /*!< 0x0F000000 */\r
-#define FMC_BTR3_DATLAT FMC_BTR3_DATLAT_Msk /*!<DATLA[3:0] bits (Data latency) */\r
-#define FMC_BTR3_DATLAT_0 (0x1UL << FMC_BTR3_DATLAT_Pos) /*!< 0x01000000 */\r
-#define FMC_BTR3_DATLAT_1 (0x2UL << FMC_BTR3_DATLAT_Pos) /*!< 0x02000000 */\r
-#define FMC_BTR3_DATLAT_2 (0x4UL << FMC_BTR3_DATLAT_Pos) /*!< 0x04000000 */\r
-#define FMC_BTR3_DATLAT_3 (0x8UL << FMC_BTR3_DATLAT_Pos) /*!< 0x08000000 */\r
-#define FMC_BTR3_ACCMOD_Pos (28U) \r
-#define FMC_BTR3_ACCMOD_Msk (0x3UL << FMC_BTR3_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BTR3_ACCMOD FMC_BTR3_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BTR3_ACCMOD_0 (0x1UL << FMC_BTR3_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BTR3_ACCMOD_1 (0x2UL << FMC_BTR3_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for FMC_BTR4 register *******************/\r
-#define FMC_BTR4_ADDSET_Pos (0U) \r
-#define FMC_BTR4_ADDSET_Msk (0xFUL << FMC_BTR4_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BTR4_ADDSET FMC_BTR4_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BTR4_ADDSET_0 (0x1UL << FMC_BTR4_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BTR4_ADDSET_1 (0x2UL << FMC_BTR4_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BTR4_ADDSET_2 (0x4UL << FMC_BTR4_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BTR4_ADDSET_3 (0x8UL << FMC_BTR4_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BTR4_ADDHLD_Pos (4U) \r
-#define FMC_BTR4_ADDHLD_Msk (0xFUL << FMC_BTR4_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BTR4_ADDHLD FMC_BTR4_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BTR4_ADDHLD_0 (0x1UL << FMC_BTR4_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BTR4_ADDHLD_1 (0x2UL << FMC_BTR4_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BTR4_ADDHLD_2 (0x4UL << FMC_BTR4_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BTR4_ADDHLD_3 (0x8UL << FMC_BTR4_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BTR4_DATAST_Pos (8U) \r
-#define FMC_BTR4_DATAST_Msk (0xFFUL << FMC_BTR4_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BTR4_DATAST FMC_BTR4_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BTR4_DATAST_0 (0x01UL << FMC_BTR4_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BTR4_DATAST_1 (0x02UL << FMC_BTR4_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BTR4_DATAST_2 (0x04UL << FMC_BTR4_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BTR4_DATAST_3 (0x08UL << FMC_BTR4_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BTR4_DATAST_4 (0x10UL << FMC_BTR4_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BTR4_DATAST_5 (0x20UL << FMC_BTR4_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BTR4_DATAST_6 (0x40UL << FMC_BTR4_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BTR4_DATAST_7 (0x80UL << FMC_BTR4_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BTR4_BUSTURN_Pos (16U) \r
-#define FMC_BTR4_BUSTURN_Msk (0xFUL << FMC_BTR4_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BTR4_BUSTURN FMC_BTR4_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BTR4_BUSTURN_0 (0x1UL << FMC_BTR4_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BTR4_BUSTURN_1 (0x2UL << FMC_BTR4_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BTR4_BUSTURN_2 (0x4UL << FMC_BTR4_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BTR4_BUSTURN_3 (0x8UL << FMC_BTR4_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BTR4_CLKDIV_Pos (20U) \r
-#define FMC_BTR4_CLKDIV_Msk (0xFUL << FMC_BTR4_CLKDIV_Pos) /*!< 0x00F00000 */\r
-#define FMC_BTR4_CLKDIV FMC_BTR4_CLKDIV_Msk /*!<CLKDIV[3:0] bits (Clock divide ratio) */\r
-#define FMC_BTR4_CLKDIV_0 (0x1UL << FMC_BTR4_CLKDIV_Pos) /*!< 0x00100000 */\r
-#define FMC_BTR4_CLKDIV_1 (0x2UL << FMC_BTR4_CLKDIV_Pos) /*!< 0x00200000 */\r
-#define FMC_BTR4_CLKDIV_2 (0x4UL << FMC_BTR4_CLKDIV_Pos) /*!< 0x00400000 */\r
-#define FMC_BTR4_CLKDIV_3 (0x8UL << FMC_BTR4_CLKDIV_Pos) /*!< 0x00800000 */\r
-#define FMC_BTR4_DATLAT_Pos (24U) \r
-#define FMC_BTR4_DATLAT_Msk (0xFUL << FMC_BTR4_DATLAT_Pos) /*!< 0x0F000000 */\r
-#define FMC_BTR4_DATLAT FMC_BTR4_DATLAT_Msk /*!<DATLA[3:0] bits (Data latency) */\r
-#define FMC_BTR4_DATLAT_0 (0x1UL << FMC_BTR4_DATLAT_Pos) /*!< 0x01000000 */\r
-#define FMC_BTR4_DATLAT_1 (0x2UL << FMC_BTR4_DATLAT_Pos) /*!< 0x02000000 */\r
-#define FMC_BTR4_DATLAT_2 (0x4UL << FMC_BTR4_DATLAT_Pos) /*!< 0x04000000 */\r
-#define FMC_BTR4_DATLAT_3 (0x8UL << FMC_BTR4_DATLAT_Pos) /*!< 0x08000000 */\r
-#define FMC_BTR4_ACCMOD_Pos (28U) \r
-#define FMC_BTR4_ACCMOD_Msk (0x3UL << FMC_BTR4_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BTR4_ACCMOD FMC_BTR4_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BTR4_ACCMOD_0 (0x1UL << FMC_BTR4_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BTR4_ACCMOD_1 (0x2UL << FMC_BTR4_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for FMC_BWTR1 register ******************/\r
-#define FMC_BWTR1_ADDSET_Pos (0U) \r
-#define FMC_BWTR1_ADDSET_Msk (0xFUL << FMC_BWTR1_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BWTR1_ADDSET FMC_BWTR1_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BWTR1_ADDSET_0 (0x1UL << FMC_BWTR1_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BWTR1_ADDSET_1 (0x2UL << FMC_BWTR1_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BWTR1_ADDSET_2 (0x4UL << FMC_BWTR1_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BWTR1_ADDSET_3 (0x8UL << FMC_BWTR1_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BWTR1_ADDHLD_Pos (4U) \r
-#define FMC_BWTR1_ADDHLD_Msk (0xFUL << FMC_BWTR1_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BWTR1_ADDHLD FMC_BWTR1_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BWTR1_ADDHLD_0 (0x1UL << FMC_BWTR1_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BWTR1_ADDHLD_1 (0x2UL << FMC_BWTR1_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BWTR1_ADDHLD_2 (0x4UL << FMC_BWTR1_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BWTR1_ADDHLD_3 (0x8UL << FMC_BWTR1_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BWTR1_DATAST_Pos (8U) \r
-#define FMC_BWTR1_DATAST_Msk (0xFFUL << FMC_BWTR1_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BWTR1_DATAST FMC_BWTR1_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BWTR1_DATAST_0 (0x01UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BWTR1_DATAST_1 (0x02UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BWTR1_DATAST_2 (0x04UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BWTR1_DATAST_3 (0x08UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BWTR1_DATAST_4 (0x10UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BWTR1_DATAST_5 (0x20UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BWTR1_DATAST_6 (0x40UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BWTR1_DATAST_7 (0x80UL << FMC_BWTR1_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BWTR1_BUSTURN_Pos (16U) \r
-#define FMC_BWTR1_BUSTURN_Msk (0xFUL << FMC_BWTR1_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BWTR1_BUSTURN FMC_BWTR1_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BWTR1_BUSTURN_0 (0x1UL << FMC_BWTR1_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BWTR1_BUSTURN_1 (0x2UL << FMC_BWTR1_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BWTR1_BUSTURN_2 (0x4UL << FMC_BWTR1_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BWTR1_BUSTURN_3 (0x8UL << FMC_BWTR1_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BWTR1_ACCMOD_Pos (28U) \r
-#define FMC_BWTR1_ACCMOD_Msk (0x3UL << FMC_BWTR1_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BWTR1_ACCMOD FMC_BWTR1_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BWTR1_ACCMOD_0 (0x1UL << FMC_BWTR1_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BWTR1_ACCMOD_1 (0x2UL << FMC_BWTR1_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for FMC_BWTR2 register ******************/\r
-#define FMC_BWTR2_ADDSET_Pos (0U) \r
-#define FMC_BWTR2_ADDSET_Msk (0xFUL << FMC_BWTR2_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BWTR2_ADDSET FMC_BWTR2_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BWTR2_ADDSET_0 (0x1UL << FMC_BWTR2_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BWTR2_ADDSET_1 (0x2UL << FMC_BWTR2_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BWTR2_ADDSET_2 (0x4UL << FMC_BWTR2_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BWTR2_ADDSET_3 (0x8UL << FMC_BWTR2_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BWTR2_ADDHLD_Pos (4U) \r
-#define FMC_BWTR2_ADDHLD_Msk (0xFUL << FMC_BWTR2_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BWTR2_ADDHLD FMC_BWTR2_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BWTR2_ADDHLD_0 (0x1UL << FMC_BWTR2_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BWTR2_ADDHLD_1 (0x2UL << FMC_BWTR2_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BWTR2_ADDHLD_2 (0x4UL << FMC_BWTR2_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BWTR2_ADDHLD_3 (0x8UL << FMC_BWTR2_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BWTR2_DATAST_Pos (8U) \r
-#define FMC_BWTR2_DATAST_Msk (0xFFUL << FMC_BWTR2_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BWTR2_DATAST FMC_BWTR2_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BWTR2_DATAST_0 (0x01UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BWTR2_DATAST_1 (0x02UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BWTR2_DATAST_2 (0x04UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BWTR2_DATAST_3 (0x08UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BWTR2_DATAST_4 (0x10UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BWTR2_DATAST_5 (0x20UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BWTR2_DATAST_6 (0x40UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BWTR2_DATAST_7 (0x80UL << FMC_BWTR2_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BWTR2_BUSTURN_Pos (16U) \r
-#define FMC_BWTR2_BUSTURN_Msk (0xFUL << FMC_BWTR2_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BWTR2_BUSTURN FMC_BWTR2_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BWTR2_BUSTURN_0 (0x1UL << FMC_BWTR2_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BWTR2_BUSTURN_1 (0x2UL << FMC_BWTR2_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BWTR2_BUSTURN_2 (0x4UL << FMC_BWTR2_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BWTR2_BUSTURN_3 (0x8UL << FMC_BWTR2_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BWTR2_ACCMOD_Pos (28U) \r
-#define FMC_BWTR2_ACCMOD_Msk (0x3UL << FMC_BWTR2_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BWTR2_ACCMOD FMC_BWTR2_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BWTR2_ACCMOD_0 (0x1UL << FMC_BWTR2_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BWTR2_ACCMOD_1 (0x2UL << FMC_BWTR2_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for FMC_BWTR3 register ******************/\r
-#define FMC_BWTR3_ADDSET_Pos (0U) \r
-#define FMC_BWTR3_ADDSET_Msk (0xFUL << FMC_BWTR3_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BWTR3_ADDSET FMC_BWTR3_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BWTR3_ADDSET_0 (0x1UL << FMC_BWTR3_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BWTR3_ADDSET_1 (0x2UL << FMC_BWTR3_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BWTR3_ADDSET_2 (0x4UL << FMC_BWTR3_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BWTR3_ADDSET_3 (0x8UL << FMC_BWTR3_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BWTR3_ADDHLD_Pos (4U) \r
-#define FMC_BWTR3_ADDHLD_Msk (0xFUL << FMC_BWTR3_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BWTR3_ADDHLD FMC_BWTR3_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BWTR3_ADDHLD_0 (0x1UL << FMC_BWTR3_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BWTR3_ADDHLD_1 (0x2UL << FMC_BWTR3_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BWTR3_ADDHLD_2 (0x4UL << FMC_BWTR3_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BWTR3_ADDHLD_3 (0x8UL << FMC_BWTR3_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BWTR3_DATAST_Pos (8U) \r
-#define FMC_BWTR3_DATAST_Msk (0xFFUL << FMC_BWTR3_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BWTR3_DATAST FMC_BWTR3_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BWTR3_DATAST_0 (0x01UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BWTR3_DATAST_1 (0x02UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BWTR3_DATAST_2 (0x04UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BWTR3_DATAST_3 (0x08UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BWTR3_DATAST_4 (0x10UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BWTR3_DATAST_5 (0x20UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BWTR3_DATAST_6 (0x40UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BWTR3_DATAST_7 (0x80UL << FMC_BWTR3_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BWTR3_BUSTURN_Pos (16U) \r
-#define FMC_BWTR3_BUSTURN_Msk (0xFUL << FMC_BWTR3_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BWTR3_BUSTURN FMC_BWTR3_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BWTR3_BUSTURN_0 (0x1UL << FMC_BWTR3_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BWTR3_BUSTURN_1 (0x2UL << FMC_BWTR3_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BWTR3_BUSTURN_2 (0x4UL << FMC_BWTR3_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BWTR3_BUSTURN_3 (0x8UL << FMC_BWTR3_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BWTR3_ACCMOD_Pos (28U) \r
-#define FMC_BWTR3_ACCMOD_Msk (0x3UL << FMC_BWTR3_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BWTR3_ACCMOD FMC_BWTR3_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BWTR3_ACCMOD_0 (0x1UL << FMC_BWTR3_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BWTR3_ACCMOD_1 (0x2UL << FMC_BWTR3_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for FMC_BWTR4 register ******************/\r
-#define FMC_BWTR4_ADDSET_Pos (0U) \r
-#define FMC_BWTR4_ADDSET_Msk (0xFUL << FMC_BWTR4_ADDSET_Pos) /*!< 0x0000000F */\r
-#define FMC_BWTR4_ADDSET FMC_BWTR4_ADDSET_Msk /*!<ADDSET[3:0] bits (Address setup phase duration) */\r
-#define FMC_BWTR4_ADDSET_0 (0x1UL << FMC_BWTR4_ADDSET_Pos) /*!< 0x00000001 */\r
-#define FMC_BWTR4_ADDSET_1 (0x2UL << FMC_BWTR4_ADDSET_Pos) /*!< 0x00000002 */\r
-#define FMC_BWTR4_ADDSET_2 (0x4UL << FMC_BWTR4_ADDSET_Pos) /*!< 0x00000004 */\r
-#define FMC_BWTR4_ADDSET_3 (0x8UL << FMC_BWTR4_ADDSET_Pos) /*!< 0x00000008 */\r
-#define FMC_BWTR4_ADDHLD_Pos (4U) \r
-#define FMC_BWTR4_ADDHLD_Msk (0xFUL << FMC_BWTR4_ADDHLD_Pos) /*!< 0x000000F0 */\r
-#define FMC_BWTR4_ADDHLD FMC_BWTR4_ADDHLD_Msk /*!<ADDHLD[3:0] bits (Address-hold phase duration) */\r
-#define FMC_BWTR4_ADDHLD_0 (0x1UL << FMC_BWTR4_ADDHLD_Pos) /*!< 0x00000010 */\r
-#define FMC_BWTR4_ADDHLD_1 (0x2UL << FMC_BWTR4_ADDHLD_Pos) /*!< 0x00000020 */\r
-#define FMC_BWTR4_ADDHLD_2 (0x4UL << FMC_BWTR4_ADDHLD_Pos) /*!< 0x00000040 */\r
-#define FMC_BWTR4_ADDHLD_3 (0x8UL << FMC_BWTR4_ADDHLD_Pos) /*!< 0x00000080 */\r
-#define FMC_BWTR4_DATAST_Pos (8U) \r
-#define FMC_BWTR4_DATAST_Msk (0xFFUL << FMC_BWTR4_DATAST_Pos) /*!< 0x0000FF00 */\r
-#define FMC_BWTR4_DATAST FMC_BWTR4_DATAST_Msk /*!<DATAST [3:0] bits (Data-phase duration) */\r
-#define FMC_BWTR4_DATAST_0 (0x01UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00000100 */\r
-#define FMC_BWTR4_DATAST_1 (0x02UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00000200 */\r
-#define FMC_BWTR4_DATAST_2 (0x04UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00000400 */\r
-#define FMC_BWTR4_DATAST_3 (0x08UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00000800 */\r
-#define FMC_BWTR4_DATAST_4 (0x10UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00001000 */\r
-#define FMC_BWTR4_DATAST_5 (0x20UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00002000 */\r
-#define FMC_BWTR4_DATAST_6 (0x40UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00004000 */\r
-#define FMC_BWTR4_DATAST_7 (0x80UL << FMC_BWTR4_DATAST_Pos) /*!< 0x00008000 */\r
-#define FMC_BWTR4_BUSTURN_Pos (16U) \r
-#define FMC_BWTR4_BUSTURN_Msk (0xFUL << FMC_BWTR4_BUSTURN_Pos) /*!< 0x000F0000 */\r
-#define FMC_BWTR4_BUSTURN FMC_BWTR4_BUSTURN_Msk /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */\r
-#define FMC_BWTR4_BUSTURN_0 (0x1UL << FMC_BWTR4_BUSTURN_Pos) /*!< 0x00010000 */\r
-#define FMC_BWTR4_BUSTURN_1 (0x2UL << FMC_BWTR4_BUSTURN_Pos) /*!< 0x00020000 */\r
-#define FMC_BWTR4_BUSTURN_2 (0x4UL << FMC_BWTR4_BUSTURN_Pos) /*!< 0x00040000 */\r
-#define FMC_BWTR4_BUSTURN_3 (0x8UL << FMC_BWTR4_BUSTURN_Pos) /*!< 0x00080000 */\r
-#define FMC_BWTR4_ACCMOD_Pos (28U) \r
-#define FMC_BWTR4_ACCMOD_Msk (0x3UL << FMC_BWTR4_ACCMOD_Pos) /*!< 0x30000000 */\r
-#define FMC_BWTR4_ACCMOD FMC_BWTR4_ACCMOD_Msk /*!<ACCMOD[1:0] bits (Access mode) */\r
-#define FMC_BWTR4_ACCMOD_0 (0x1UL << FMC_BWTR4_ACCMOD_Pos) /*!< 0x10000000 */\r
-#define FMC_BWTR4_ACCMOD_1 (0x2UL << FMC_BWTR4_ACCMOD_Pos) /*!< 0x20000000 */\r
-\r
-/****************** Bit definition for FMC_PCR register *******************/\r
-#define FMC_PCR_PWAITEN_Pos (1U) \r
-#define FMC_PCR_PWAITEN_Msk (0x1UL << FMC_PCR_PWAITEN_Pos) /*!< 0x00000002 */\r
-#define FMC_PCR_PWAITEN FMC_PCR_PWAITEN_Msk /*!<Wait feature enable bit */\r
-#define FMC_PCR_PBKEN_Pos (2U) \r
-#define FMC_PCR_PBKEN_Msk (0x1UL << FMC_PCR_PBKEN_Pos) /*!< 0x00000004 */\r
-#define FMC_PCR_PBKEN FMC_PCR_PBKEN_Msk /*!<PC Card/NAND Flash memory bank enable bit */\r
-#define FMC_PCR_PTYP_Pos (3U) \r
-#define FMC_PCR_PTYP_Msk (0x1UL << FMC_PCR_PTYP_Pos) /*!< 0x00000008 */\r
-#define FMC_PCR_PTYP FMC_PCR_PTYP_Msk /*!<Memory type */\r
-#define FMC_PCR_PWID_Pos (4U) \r
-#define FMC_PCR_PWID_Msk (0x3UL << FMC_PCR_PWID_Pos) /*!< 0x00000030 */\r
-#define FMC_PCR_PWID FMC_PCR_PWID_Msk /*!<PWID[1:0] bits (NAND Flash databus width) */\r
-#define FMC_PCR_PWID_0 (0x1UL << FMC_PCR_PWID_Pos) /*!< 0x00000010 */\r
-#define FMC_PCR_PWID_1 (0x2UL << FMC_PCR_PWID_Pos) /*!< 0x00000020 */\r
-#define FMC_PCR_ECCEN_Pos (6U) \r
-#define FMC_PCR_ECCEN_Msk (0x1UL << FMC_PCR_ECCEN_Pos) /*!< 0x00000040 */\r
-#define FMC_PCR_ECCEN FMC_PCR_ECCEN_Msk /*!<ECC computation logic enable bit */\r
-#define FMC_PCR_TCLR_Pos (9U) \r
-#define FMC_PCR_TCLR_Msk (0xFUL << FMC_PCR_TCLR_Pos) /*!< 0x00001E00 */\r
-#define FMC_PCR_TCLR FMC_PCR_TCLR_Msk /*!<TCLR[3:0] bits (CLE to RE delay) */\r
-#define FMC_PCR_TCLR_0 (0x1UL << FMC_PCR_TCLR_Pos) /*!< 0x00000200 */\r
-#define FMC_PCR_TCLR_1 (0x2UL << FMC_PCR_TCLR_Pos) /*!< 0x00000400 */\r
-#define FMC_PCR_TCLR_2 (0x4UL << FMC_PCR_TCLR_Pos) /*!< 0x00000800 */\r
-#define FMC_PCR_TCLR_3 (0x8UL << FMC_PCR_TCLR_Pos) /*!< 0x00001000 */\r
-#define FMC_PCR_TAR_Pos (13U) \r
-#define FMC_PCR_TAR_Msk (0xFUL << FMC_PCR_TAR_Pos) /*!< 0x0001E000 */\r
-#define FMC_PCR_TAR FMC_PCR_TAR_Msk /*!<TAR[3:0] bits (ALE to RE delay) */\r
-#define FMC_PCR_TAR_0 (0x1UL << FMC_PCR_TAR_Pos) /*!< 0x00002000 */\r
-#define FMC_PCR_TAR_1 (0x2UL << FMC_PCR_TAR_Pos) /*!< 0x00004000 */\r
-#define FMC_PCR_TAR_2 (0x4UL << FMC_PCR_TAR_Pos) /*!< 0x00008000 */\r
-#define FMC_PCR_TAR_3 (0x8UL << FMC_PCR_TAR_Pos) /*!< 0x00010000 */\r
-#define FMC_PCR_ECCPS_Pos (17U) \r
-#define FMC_PCR_ECCPS_Msk (0x7UL << FMC_PCR_ECCPS_Pos) /*!< 0x000E0000 */\r
-#define FMC_PCR_ECCPS FMC_PCR_ECCPS_Msk /*!<ECCPS[2:0] bits (ECC page size) */\r
-#define FMC_PCR_ECCPS_0 (0x1UL << FMC_PCR_ECCPS_Pos) /*!< 0x00020000 */\r
-#define FMC_PCR_ECCPS_1 (0x2UL << FMC_PCR_ECCPS_Pos) /*!< 0x00040000 */\r
-#define FMC_PCR_ECCPS_2 (0x4UL << FMC_PCR_ECCPS_Pos) /*!< 0x00080000 */\r
-\r
-/******************* Bit definition for FMC_SR register *******************/\r
-#define FMC_SR_IRS_Pos (0U) \r
-#define FMC_SR_IRS_Msk (0x1UL << FMC_SR_IRS_Pos) /*!< 0x00000001 */\r
-#define FMC_SR_IRS FMC_SR_IRS_Msk /*!<Interrupt Rising Edge status */\r
-#define FMC_SR_ILS_Pos (1U) \r
-#define FMC_SR_ILS_Msk (0x1UL << FMC_SR_ILS_Pos) /*!< 0x00000002 */\r
-#define FMC_SR_ILS FMC_SR_ILS_Msk /*!<Interrupt Level status */\r
-#define FMC_SR_IFS_Pos (2U) \r
-#define FMC_SR_IFS_Msk (0x1UL << FMC_SR_IFS_Pos) /*!< 0x00000004 */\r
-#define FMC_SR_IFS FMC_SR_IFS_Msk /*!<Interrupt Falling Edge status */\r
-#define FMC_SR_IREN_Pos (3U) \r
-#define FMC_SR_IREN_Msk (0x1UL << FMC_SR_IREN_Pos) /*!< 0x00000008 */\r
-#define FMC_SR_IREN FMC_SR_IREN_Msk /*!<Interrupt Rising Edge detection Enable bit */\r
-#define FMC_SR_ILEN_Pos (4U) \r
-#define FMC_SR_ILEN_Msk (0x1UL << FMC_SR_ILEN_Pos) /*!< 0x00000010 */\r
-#define FMC_SR_ILEN FMC_SR_ILEN_Msk /*!<Interrupt Level detection Enable bit */\r
-#define FMC_SR_IFEN_Pos (5U) \r
-#define FMC_SR_IFEN_Msk (0x1UL << FMC_SR_IFEN_Pos) /*!< 0x00000020 */\r
-#define FMC_SR_IFEN FMC_SR_IFEN_Msk /*!<Interrupt Falling Edge detection Enable bit */\r
-#define FMC_SR_FEMPT_Pos (6U) \r
-#define FMC_SR_FEMPT_Msk (0x1UL << FMC_SR_FEMPT_Pos) /*!< 0x00000040 */\r
-#define FMC_SR_FEMPT FMC_SR_FEMPT_Msk /*!<FIFO empty */\r
-\r
-/****************** Bit definition for FMC_PMEM register ******************/\r
-#define FMC_PMEM_MEMSET3_Pos (0U) \r
-#define FMC_PMEM_MEMSET3_Msk (0xFFUL << FMC_PMEM_MEMSET3_Pos) /*!< 0x000000FF */\r
-#define FMC_PMEM_MEMSET3 FMC_PMEM_MEMSET3_Msk /*!<MEMSET3[7:0] bits (Common memory 3 setup time) */\r
-#define FMC_PMEM_MEMSET3_0 (0x01UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000001 */\r
-#define FMC_PMEM_MEMSET3_1 (0x02UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000002 */\r
-#define FMC_PMEM_MEMSET3_2 (0x04UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000004 */\r
-#define FMC_PMEM_MEMSET3_3 (0x08UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000008 */\r
-#define FMC_PMEM_MEMSET3_4 (0x10UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000010 */\r
-#define FMC_PMEM_MEMSET3_5 (0x20UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000020 */\r
-#define FMC_PMEM_MEMSET3_6 (0x40UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000040 */\r
-#define FMC_PMEM_MEMSET3_7 (0x80UL << FMC_PMEM_MEMSET3_Pos) /*!< 0x00000080 */\r
-#define FMC_PMEM_MEMWAIT3_Pos (8U) \r
-#define FMC_PMEM_MEMWAIT3_Msk (0xFFUL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x0000FF00 */\r
-#define FMC_PMEM_MEMWAIT3 FMC_PMEM_MEMWAIT3_Msk /*!<MEMWAIT3[7:0] bits (Common memory 3 wait time) */\r
-#define FMC_PMEM_MEMWAIT3_0 (0x01UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00000100 */\r
-#define FMC_PMEM_MEMWAIT3_1 (0x02UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00000200 */\r
-#define FMC_PMEM_MEMWAIT3_2 (0x04UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00000400 */\r
-#define FMC_PMEM_MEMWAIT3_3 (0x08UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00000800 */\r
-#define FMC_PMEM_MEMWAIT3_4 (0x10UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00001000 */\r
-#define FMC_PMEM_MEMWAIT3_5 (0x20UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00002000 */\r
-#define FMC_PMEM_MEMWAIT3_6 (0x40UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00004000 */\r
-#define FMC_PMEM_MEMWAIT3_7 (0x80UL << FMC_PMEM_MEMWAIT3_Pos) /*!< 0x00008000 */\r
-#define FMC_PMEM_MEMHOLD3_Pos (16U) \r
-#define FMC_PMEM_MEMHOLD3_Msk (0xFFUL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00FF0000 */\r
-#define FMC_PMEM_MEMHOLD3 FMC_PMEM_MEMHOLD3_Msk /*!<MEMHOLD3[7:0] bits (Common memory 3 hold time) */\r
-#define FMC_PMEM_MEMHOLD3_0 (0x01UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00010000 */\r
-#define FMC_PMEM_MEMHOLD3_1 (0x02UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00020000 */\r
-#define FMC_PMEM_MEMHOLD3_2 (0x04UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00040000 */\r
-#define FMC_PMEM_MEMHOLD3_3 (0x08UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00080000 */\r
-#define FMC_PMEM_MEMHOLD3_4 (0x10UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00100000 */\r
-#define FMC_PMEM_MEMHOLD3_5 (0x20UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00200000 */\r
-#define FMC_PMEM_MEMHOLD3_6 (0x40UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00400000 */\r
-#define FMC_PMEM_MEMHOLD3_7 (0x80UL << FMC_PMEM_MEMHOLD3_Pos) /*!< 0x00800000 */\r
-#define FMC_PMEM_MEMHIZ3_Pos (24U) \r
-#define FMC_PMEM_MEMHIZ3_Msk (0xFFUL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0xFF000000 */\r
-#define FMC_PMEM_MEMHIZ3 FMC_PMEM_MEMHIZ3_Msk /*!<MEMHIZ3[7:0] bits (Common memory 3 databus HiZ time) */\r
-#define FMC_PMEM_MEMHIZ3_0 (0x01UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x01000000 */\r
-#define FMC_PMEM_MEMHIZ3_1 (0x02UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x02000000 */\r
-#define FMC_PMEM_MEMHIZ3_2 (0x04UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x04000000 */\r
-#define FMC_PMEM_MEMHIZ3_3 (0x08UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x08000000 */\r
-#define FMC_PMEM_MEMHIZ3_4 (0x10UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x10000000 */\r
-#define FMC_PMEM_MEMHIZ3_5 (0x20UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x20000000 */\r
-#define FMC_PMEM_MEMHIZ3_6 (0x40UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x40000000 */\r
-#define FMC_PMEM_MEMHIZ3_7 (0x80UL << FMC_PMEM_MEMHIZ3_Pos) /*!< 0x80000000 */\r
-\r
-/****************** Bit definition for FMC_PATT register ******************/\r
-#define FMC_PATT_ATTSET3_Pos (0U) \r
-#define FMC_PATT_ATTSET3_Msk (0xFFUL << FMC_PATT_ATTSET3_Pos) /*!< 0x000000FF */\r
-#define FMC_PATT_ATTSET3 FMC_PATT_ATTSET3_Msk /*!<ATTSET3[7:0] bits (Attribute memory 3 setup time) */\r
-#define FMC_PATT_ATTSET3_0 (0x01UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000001 */\r
-#define FMC_PATT_ATTSET3_1 (0x02UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000002 */\r
-#define FMC_PATT_ATTSET3_2 (0x04UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000004 */\r
-#define FMC_PATT_ATTSET3_3 (0x08UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000008 */\r
-#define FMC_PATT_ATTSET3_4 (0x10UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000010 */\r
-#define FMC_PATT_ATTSET3_5 (0x20UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000020 */\r
-#define FMC_PATT_ATTSET3_6 (0x40UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000040 */\r
-#define FMC_PATT_ATTSET3_7 (0x80UL << FMC_PATT_ATTSET3_Pos) /*!< 0x00000080 */\r
-#define FMC_PATT_ATTWAIT3_Pos (8U) \r
-#define FMC_PATT_ATTWAIT3_Msk (0xFFUL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x0000FF00 */\r
-#define FMC_PATT_ATTWAIT3 FMC_PATT_ATTWAIT3_Msk /*!<ATTWAIT3[7:0] bits (Attribute memory 3 wait time) */\r
-#define FMC_PATT_ATTWAIT3_0 (0x01UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00000100 */\r
-#define FMC_PATT_ATTWAIT3_1 (0x02UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00000200 */\r
-#define FMC_PATT_ATTWAIT3_2 (0x04UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00000400 */\r
-#define FMC_PATT_ATTWAIT3_3 (0x08UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00000800 */\r
-#define FMC_PATT_ATTWAIT3_4 (0x10UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00001000 */\r
-#define FMC_PATT_ATTWAIT3_5 (0x20UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00002000 */\r
-#define FMC_PATT_ATTWAIT3_6 (0x40UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00004000 */\r
-#define FMC_PATT_ATTWAIT3_7 (0x80UL << FMC_PATT_ATTWAIT3_Pos) /*!< 0x00008000 */\r
-#define FMC_PATT_ATTHOLD3_Pos (16U) \r
-#define FMC_PATT_ATTHOLD3_Msk (0xFFUL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00FF0000 */\r
-#define FMC_PATT_ATTHOLD3 FMC_PATT_ATTHOLD3_Msk /*!<ATTHOLD3[7:0] bits (Attribute memory 3 hold time) */\r
-#define FMC_PATT_ATTHOLD3_0 (0x01UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00010000 */\r
-#define FMC_PATT_ATTHOLD3_1 (0x02UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00020000 */\r
-#define FMC_PATT_ATTHOLD3_2 (0x04UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00040000 */\r
-#define FMC_PATT_ATTHOLD3_3 (0x08UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00080000 */\r
-#define FMC_PATT_ATTHOLD3_4 (0x10UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00100000 */\r
-#define FMC_PATT_ATTHOLD3_5 (0x20UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00200000 */\r
-#define FMC_PATT_ATTHOLD3_6 (0x40UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00400000 */\r
-#define FMC_PATT_ATTHOLD3_7 (0x80UL << FMC_PATT_ATTHOLD3_Pos) /*!< 0x00800000 */\r
-#define FMC_PATT_ATTHIZ3_Pos (24U) \r
-#define FMC_PATT_ATTHIZ3_Msk (0xFFUL << FMC_PATT_ATTHIZ3_Pos) /*!< 0xFF000000 */\r
-#define FMC_PATT_ATTHIZ3 FMC_PATT_ATTHIZ3_Msk /*!<ATTHIZ3[7:0] bits (Attribute memory 3 databus HiZ time) */\r
-#define FMC_PATT_ATTHIZ3_0 (0x01UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x01000000 */\r
-#define FMC_PATT_ATTHIZ3_1 (0x02UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x02000000 */\r
-#define FMC_PATT_ATTHIZ3_2 (0x04UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x04000000 */\r
-#define FMC_PATT_ATTHIZ3_3 (0x08UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x08000000 */\r
-#define FMC_PATT_ATTHIZ3_4 (0x10UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x10000000 */\r
-#define FMC_PATT_ATTHIZ3_5 (0x20UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x20000000 */\r
-#define FMC_PATT_ATTHIZ3_6 (0x40UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x40000000 */\r
-#define FMC_PATT_ATTHIZ3_7 (0x80UL << FMC_PATT_ATTHIZ3_Pos) /*!< 0x80000000 */\r
-\r
-/****************** Bit definition for FMC_ECCR register ******************/\r
-#define FMC_ECCR_ECC3_Pos (0U) \r
-#define FMC_ECCR_ECC3_Msk (0xFFFFFFFFUL << FMC_ECCR_ECC3_Pos) /*!< 0xFFFFFFFF */\r
-#define FMC_ECCR_ECC3 FMC_ECCR_ECC3_Msk /*!<ECC result */\r
-\r
-/****************** Bit definition for FMC_SDCR1 register ******************/\r
-#define FMC_SDCR1_NC_Pos (0U) \r
-#define FMC_SDCR1_NC_Msk (0x3UL << FMC_SDCR1_NC_Pos) /*!< 0x00000003 */\r
-#define FMC_SDCR1_NC FMC_SDCR1_NC_Msk /*!<NC[1:0] bits (Number of column bits) */\r
-#define FMC_SDCR1_NC_0 (0x1UL << FMC_SDCR1_NC_Pos) /*!< 0x00000001 */\r
-#define FMC_SDCR1_NC_1 (0x2UL << FMC_SDCR1_NC_Pos) /*!< 0x00000002 */\r
-#define FMC_SDCR1_NR_Pos (2U) \r
-#define FMC_SDCR1_NR_Msk (0x3UL << FMC_SDCR1_NR_Pos) /*!< 0x0000000C */\r
-#define FMC_SDCR1_NR FMC_SDCR1_NR_Msk /*!<NR[1:0] bits (Number of row bits) */\r
-#define FMC_SDCR1_NR_0 (0x1UL << FMC_SDCR1_NR_Pos) /*!< 0x00000004 */\r
-#define FMC_SDCR1_NR_1 (0x2UL << FMC_SDCR1_NR_Pos) /*!< 0x00000008 */\r
-#define FMC_SDCR1_MWID_Pos (4U) \r
-#define FMC_SDCR1_MWID_Msk (0x3UL << FMC_SDCR1_MWID_Pos) /*!< 0x00000030 */\r
-#define FMC_SDCR1_MWID FMC_SDCR1_MWID_Msk /*!<NR[1:0] bits (Number of row bits) */\r
-#define FMC_SDCR1_MWID_0 (0x1UL << FMC_SDCR1_MWID_Pos) /*!< 0x00000010 */\r
-#define FMC_SDCR1_MWID_1 (0x2UL << FMC_SDCR1_MWID_Pos) /*!< 0x00000020 */\r
-#define FMC_SDCR1_NB_Pos (6U) \r
-#define FMC_SDCR1_NB_Msk (0x1UL << FMC_SDCR1_NB_Pos) /*!< 0x00000040 */\r
-#define FMC_SDCR1_NB FMC_SDCR1_NB_Msk /*!<Number of internal bank */\r
-#define FMC_SDCR1_CAS_Pos (7U) \r
-#define FMC_SDCR1_CAS_Msk (0x3UL << FMC_SDCR1_CAS_Pos) /*!< 0x00000180 */\r
-#define FMC_SDCR1_CAS FMC_SDCR1_CAS_Msk /*!<CAS[1:0] bits (CAS latency) */\r
-#define FMC_SDCR1_CAS_0 (0x1UL << FMC_SDCR1_CAS_Pos) /*!< 0x00000080 */\r
-#define FMC_SDCR1_CAS_1 (0x2UL << FMC_SDCR1_CAS_Pos) /*!< 0x00000100 */\r
-#define FMC_SDCR1_WP_Pos (9U) \r
-#define FMC_SDCR1_WP_Msk (0x1UL << FMC_SDCR1_WP_Pos) /*!< 0x00000200 */\r
-#define FMC_SDCR1_WP FMC_SDCR1_WP_Msk /*!<Write protection */\r
-#define FMC_SDCR1_SDCLK_Pos (10U) \r
-#define FMC_SDCR1_SDCLK_Msk (0x3UL << FMC_SDCR1_SDCLK_Pos) /*!< 0x00000C00 */\r
-#define FMC_SDCR1_SDCLK FMC_SDCR1_SDCLK_Msk /*!<SDRAM clock configuration */\r
-#define FMC_SDCR1_SDCLK_0 (0x1UL << FMC_SDCR1_SDCLK_Pos) /*!< 0x00000400 */\r
-#define FMC_SDCR1_SDCLK_1 (0x2UL << FMC_SDCR1_SDCLK_Pos) /*!< 0x00000800 */\r
-#define FMC_SDCR1_RBURST_Pos (12U) \r
-#define FMC_SDCR1_RBURST_Msk (0x1UL << FMC_SDCR1_RBURST_Pos) /*!< 0x00001000 */\r
-#define FMC_SDCR1_RBURST FMC_SDCR1_RBURST_Msk /*!<Read burst */\r
-#define FMC_SDCR1_RPIPE_Pos (13U) \r
-#define FMC_SDCR1_RPIPE_Msk (0x3UL << FMC_SDCR1_RPIPE_Pos) /*!< 0x00006000 */\r
-#define FMC_SDCR1_RPIPE FMC_SDCR1_RPIPE_Msk /*!<Write protection */\r
-#define FMC_SDCR1_RPIPE_0 (0x1UL << FMC_SDCR1_RPIPE_Pos) /*!< 0x00002000 */\r
-#define FMC_SDCR1_RPIPE_1 (0x2UL << FMC_SDCR1_RPIPE_Pos) /*!< 0x00004000 */\r
-\r
-/****************** Bit definition for FMC_SDCR2 register ******************/\r
-#define FMC_SDCR2_NC_Pos (0U) \r
-#define FMC_SDCR2_NC_Msk (0x3UL << FMC_SDCR2_NC_Pos) /*!< 0x00000003 */\r
-#define FMC_SDCR2_NC FMC_SDCR2_NC_Msk /*!<NC[1:0] bits (Number of column bits) */\r
-#define FMC_SDCR2_NC_0 (0x1UL << FMC_SDCR2_NC_Pos) /*!< 0x00000001 */\r
-#define FMC_SDCR2_NC_1 (0x2UL << FMC_SDCR2_NC_Pos) /*!< 0x00000002 */\r
-#define FMC_SDCR2_NR_Pos (2U) \r
-#define FMC_SDCR2_NR_Msk (0x3UL << FMC_SDCR2_NR_Pos) /*!< 0x0000000C */\r
-#define FMC_SDCR2_NR FMC_SDCR2_NR_Msk /*!<NR[1:0] bits (Number of row bits) */\r
-#define FMC_SDCR2_NR_0 (0x1UL << FMC_SDCR2_NR_Pos) /*!< 0x00000004 */\r
-#define FMC_SDCR2_NR_1 (0x2UL << FMC_SDCR2_NR_Pos) /*!< 0x00000008 */\r
-#define FMC_SDCR2_MWID_Pos (4U) \r
-#define FMC_SDCR2_MWID_Msk (0x3UL << FMC_SDCR2_MWID_Pos) /*!< 0x00000030 */\r
-#define FMC_SDCR2_MWID FMC_SDCR2_MWID_Msk /*!<NR[1:0] bits (Number of row bits) */\r
-#define FMC_SDCR2_MWID_0 (0x1UL << FMC_SDCR2_MWID_Pos) /*!< 0x00000010 */\r
-#define FMC_SDCR2_MWID_1 (0x2UL << FMC_SDCR2_MWID_Pos) /*!< 0x00000020 */\r
-#define FMC_SDCR2_NB_Pos (6U) \r
-#define FMC_SDCR2_NB_Msk (0x1UL << FMC_SDCR2_NB_Pos) /*!< 0x00000040 */\r
-#define FMC_SDCR2_NB FMC_SDCR2_NB_Msk /*!<Number of internal bank */\r
-#define FMC_SDCR2_CAS_Pos (7U) \r
-#define FMC_SDCR2_CAS_Msk (0x3UL << FMC_SDCR2_CAS_Pos) /*!< 0x00000180 */\r
-#define FMC_SDCR2_CAS FMC_SDCR2_CAS_Msk /*!<CAS[1:0] bits (CAS latency) */\r
-#define FMC_SDCR2_CAS_0 (0x1UL << FMC_SDCR2_CAS_Pos) /*!< 0x00000080 */\r
-#define FMC_SDCR2_CAS_1 (0x2UL << FMC_SDCR2_CAS_Pos) /*!< 0x00000100 */\r
-#define FMC_SDCR2_WP_Pos (9U) \r
-#define FMC_SDCR2_WP_Msk (0x1UL << FMC_SDCR2_WP_Pos) /*!< 0x00000200 */\r
-#define FMC_SDCR2_WP FMC_SDCR2_WP_Msk /*!<Write protection */\r
-#define FMC_SDCR2_SDCLK_Pos (10U) \r
-#define FMC_SDCR2_SDCLK_Msk (0x3UL << FMC_SDCR2_SDCLK_Pos) /*!< 0x00000C00 */\r
-#define FMC_SDCR2_SDCLK FMC_SDCR2_SDCLK_Msk /*!<SDCLK[1:0] (SDRAM clock configuration) */\r
-#define FMC_SDCR2_SDCLK_0 (0x1UL << FMC_SDCR2_SDCLK_Pos) /*!< 0x00000400 */\r
-#define FMC_SDCR2_SDCLK_1 (0x2UL << FMC_SDCR2_SDCLK_Pos) /*!< 0x00000800 */\r
-#define FMC_SDCR2_RBURST_Pos (12U) \r
-#define FMC_SDCR2_RBURST_Msk (0x1UL << FMC_SDCR2_RBURST_Pos) /*!< 0x00001000 */\r
-#define FMC_SDCR2_RBURST FMC_SDCR2_RBURST_Msk /*!<Read burst */\r
-#define FMC_SDCR2_RPIPE_Pos (13U) \r
-#define FMC_SDCR2_RPIPE_Msk (0x3UL << FMC_SDCR2_RPIPE_Pos) /*!< 0x00006000 */\r
-#define FMC_SDCR2_RPIPE FMC_SDCR2_RPIPE_Msk /*!<RPIPE[1:0](Read pipe) */\r
-#define FMC_SDCR2_RPIPE_0 (0x1UL << FMC_SDCR2_RPIPE_Pos) /*!< 0x00002000 */\r
-#define FMC_SDCR2_RPIPE_1 (0x2UL << FMC_SDCR2_RPIPE_Pos) /*!< 0x00004000 */\r
-\r
-/****************** Bit definition for FMC_SDTR1 register ******************/\r
-#define FMC_SDTR1_TMRD_Pos (0U) \r
-#define FMC_SDTR1_TMRD_Msk (0xFUL << FMC_SDTR1_TMRD_Pos) /*!< 0x0000000F */\r
-#define FMC_SDTR1_TMRD FMC_SDTR1_TMRD_Msk /*!<TMRD[3:0] bits (Load mode register to active) */\r
-#define FMC_SDTR1_TMRD_0 (0x1UL << FMC_SDTR1_TMRD_Pos) /*!< 0x00000001 */\r
-#define FMC_SDTR1_TMRD_1 (0x2UL << FMC_SDTR1_TMRD_Pos) /*!< 0x00000002 */\r
-#define FMC_SDTR1_TMRD_2 (0x4UL << FMC_SDTR1_TMRD_Pos) /*!< 0x00000004 */\r
-#define FMC_SDTR1_TMRD_3 (0x8UL << FMC_SDTR1_TMRD_Pos) /*!< 0x00000008 */\r
-#define FMC_SDTR1_TXSR_Pos (4U) \r
-#define FMC_SDTR1_TXSR_Msk (0xFUL << FMC_SDTR1_TXSR_Pos) /*!< 0x000000F0 */\r
-#define FMC_SDTR1_TXSR FMC_SDTR1_TXSR_Msk /*!<TXSR[3:0] bits (Exit self refresh) */\r
-#define FMC_SDTR1_TXSR_0 (0x1UL << FMC_SDTR1_TXSR_Pos) /*!< 0x00000010 */\r
-#define FMC_SDTR1_TXSR_1 (0x2UL << FMC_SDTR1_TXSR_Pos) /*!< 0x00000020 */\r
-#define FMC_SDTR1_TXSR_2 (0x4UL << FMC_SDTR1_TXSR_Pos) /*!< 0x00000040 */\r
-#define FMC_SDTR1_TXSR_3 (0x8UL << FMC_SDTR1_TXSR_Pos) /*!< 0x00000080 */\r
-#define FMC_SDTR1_TRAS_Pos (8U) \r
-#define FMC_SDTR1_TRAS_Msk (0xFUL << FMC_SDTR1_TRAS_Pos) /*!< 0x00000F00 */\r
-#define FMC_SDTR1_TRAS FMC_SDTR1_TRAS_Msk /*!<TRAS[3:0] bits (Self refresh time) */\r
-#define FMC_SDTR1_TRAS_0 (0x1UL << FMC_SDTR1_TRAS_Pos) /*!< 0x00000100 */\r
-#define FMC_SDTR1_TRAS_1 (0x2UL << FMC_SDTR1_TRAS_Pos) /*!< 0x00000200 */\r
-#define FMC_SDTR1_TRAS_2 (0x4UL << FMC_SDTR1_TRAS_Pos) /*!< 0x00000400 */\r
-#define FMC_SDTR1_TRAS_3 (0x8UL << FMC_SDTR1_TRAS_Pos) /*!< 0x00000800 */\r
-#define FMC_SDTR1_TRC_Pos (12U) \r
-#define FMC_SDTR1_TRC_Msk (0xFUL << FMC_SDTR1_TRC_Pos) /*!< 0x0000F000 */\r
-#define FMC_SDTR1_TRC FMC_SDTR1_TRC_Msk /*!<TRC[2:0] bits (Row cycle delay) */\r
-#define FMC_SDTR1_TRC_0 (0x1UL << FMC_SDTR1_TRC_Pos) /*!< 0x00001000 */\r
-#define FMC_SDTR1_TRC_1 (0x2UL << FMC_SDTR1_TRC_Pos) /*!< 0x00002000 */\r
-#define FMC_SDTR1_TRC_2 (0x4UL << FMC_SDTR1_TRC_Pos) /*!< 0x00004000 */\r
-#define FMC_SDTR1_TWR_Pos (16U) \r
-#define FMC_SDTR1_TWR_Msk (0xFUL << FMC_SDTR1_TWR_Pos) /*!< 0x000F0000 */\r
-#define FMC_SDTR1_TWR FMC_SDTR1_TWR_Msk /*!<TRC[2:0] bits (Write recovery delay) */\r
-#define FMC_SDTR1_TWR_0 (0x1UL << FMC_SDTR1_TWR_Pos) /*!< 0x00010000 */\r
-#define FMC_SDTR1_TWR_1 (0x2UL << FMC_SDTR1_TWR_Pos) /*!< 0x00020000 */\r
-#define FMC_SDTR1_TWR_2 (0x4UL << FMC_SDTR1_TWR_Pos) /*!< 0x00040000 */\r
-#define FMC_SDTR1_TRP_Pos (20U) \r
-#define FMC_SDTR1_TRP_Msk (0xFUL << FMC_SDTR1_TRP_Pos) /*!< 0x00F00000 */\r
-#define FMC_SDTR1_TRP FMC_SDTR1_TRP_Msk /*!<TRP[2:0] bits (Row precharge delay) */\r
-#define FMC_SDTR1_TRP_0 (0x1UL << FMC_SDTR1_TRP_Pos) /*!< 0x00100000 */\r
-#define FMC_SDTR1_TRP_1 (0x2UL << FMC_SDTR1_TRP_Pos) /*!< 0x00200000 */\r
-#define FMC_SDTR1_TRP_2 (0x4UL << FMC_SDTR1_TRP_Pos) /*!< 0x00400000 */\r
-#define FMC_SDTR1_TRCD_Pos (24U) \r
-#define FMC_SDTR1_TRCD_Msk (0xFUL << FMC_SDTR1_TRCD_Pos) /*!< 0x0F000000 */\r
-#define FMC_SDTR1_TRCD FMC_SDTR1_TRCD_Msk /*!<TRP[2:0] bits (Row to column delay) */\r
-#define FMC_SDTR1_TRCD_0 (0x1UL << FMC_SDTR1_TRCD_Pos) /*!< 0x01000000 */\r
-#define FMC_SDTR1_TRCD_1 (0x2UL << FMC_SDTR1_TRCD_Pos) /*!< 0x02000000 */\r
-#define FMC_SDTR1_TRCD_2 (0x4UL << FMC_SDTR1_TRCD_Pos) /*!< 0x04000000 */\r
-\r
-/****************** Bit definition for FMC_SDTR2 register ******************/\r
-#define FMC_SDTR2_TMRD_Pos (0U) \r
-#define FMC_SDTR2_TMRD_Msk (0xFUL << FMC_SDTR2_TMRD_Pos) /*!< 0x0000000F */\r
-#define FMC_SDTR2_TMRD FMC_SDTR2_TMRD_Msk /*!<TMRD[3:0] bits (Load mode register to active) */\r
-#define FMC_SDTR2_TMRD_0 (0x1UL << FMC_SDTR2_TMRD_Pos) /*!< 0x00000001 */\r
-#define FMC_SDTR2_TMRD_1 (0x2UL << FMC_SDTR2_TMRD_Pos) /*!< 0x00000002 */\r
-#define FMC_SDTR2_TMRD_2 (0x4UL << FMC_SDTR2_TMRD_Pos) /*!< 0x00000004 */\r
-#define FMC_SDTR2_TMRD_3 (0x8UL << FMC_SDTR2_TMRD_Pos) /*!< 0x00000008 */\r
-#define FMC_SDTR2_TXSR_Pos (4U) \r
-#define FMC_SDTR2_TXSR_Msk (0xFUL << FMC_SDTR2_TXSR_Pos) /*!< 0x000000F0 */\r
-#define FMC_SDTR2_TXSR FMC_SDTR2_TXSR_Msk /*!<TXSR[3:0] bits (Exit self refresh) */\r
-#define FMC_SDTR2_TXSR_0 (0x1UL << FMC_SDTR2_TXSR_Pos) /*!< 0x00000010 */\r
-#define FMC_SDTR2_TXSR_1 (0x2UL << FMC_SDTR2_TXSR_Pos) /*!< 0x00000020 */\r
-#define FMC_SDTR2_TXSR_2 (0x4UL << FMC_SDTR2_TXSR_Pos) /*!< 0x00000040 */\r
-#define FMC_SDTR2_TXSR_3 (0x8UL << FMC_SDTR2_TXSR_Pos) /*!< 0x00000080 */\r
-#define FMC_SDTR2_TRAS_Pos (8U) \r
-#define FMC_SDTR2_TRAS_Msk (0xFUL << FMC_SDTR2_TRAS_Pos) /*!< 0x00000F00 */\r
-#define FMC_SDTR2_TRAS FMC_SDTR2_TRAS_Msk /*!<TRAS[3:0] bits (Self refresh time) */\r
-#define FMC_SDTR2_TRAS_0 (0x1UL << FMC_SDTR2_TRAS_Pos) /*!< 0x00000100 */\r
-#define FMC_SDTR2_TRAS_1 (0x2UL << FMC_SDTR2_TRAS_Pos) /*!< 0x00000200 */\r
-#define FMC_SDTR2_TRAS_2 (0x4UL << FMC_SDTR2_TRAS_Pos) /*!< 0x00000400 */\r
-#define FMC_SDTR2_TRAS_3 (0x8UL << FMC_SDTR2_TRAS_Pos) /*!< 0x00000800 */\r
-#define FMC_SDTR2_TRC_Pos (12U) \r
-#define FMC_SDTR2_TRC_Msk (0xFUL << FMC_SDTR2_TRC_Pos) /*!< 0x0000F000 */\r
-#define FMC_SDTR2_TRC FMC_SDTR2_TRC_Msk /*!<TRC[2:0] bits (Row cycle delay) */\r
-#define FMC_SDTR2_TRC_0 (0x1UL << FMC_SDTR2_TRC_Pos) /*!< 0x00001000 */\r
-#define FMC_SDTR2_TRC_1 (0x2UL << FMC_SDTR2_TRC_Pos) /*!< 0x00002000 */\r
-#define FMC_SDTR2_TRC_2 (0x4UL << FMC_SDTR2_TRC_Pos) /*!< 0x00004000 */\r
-#define FMC_SDTR2_TWR_Pos (16U) \r
-#define FMC_SDTR2_TWR_Msk (0xFUL << FMC_SDTR2_TWR_Pos) /*!< 0x000F0000 */\r
-#define FMC_SDTR2_TWR FMC_SDTR2_TWR_Msk /*!<TRC[2:0] bits (Write recovery delay) */\r
-#define FMC_SDTR2_TWR_0 (0x1UL << FMC_SDTR2_TWR_Pos) /*!< 0x00010000 */\r
-#define FMC_SDTR2_TWR_1 (0x2UL << FMC_SDTR2_TWR_Pos) /*!< 0x00020000 */\r
-#define FMC_SDTR2_TWR_2 (0x4UL << FMC_SDTR2_TWR_Pos) /*!< 0x00040000 */\r
-#define FMC_SDTR2_TRP_Pos (20U) \r
-#define FMC_SDTR2_TRP_Msk (0xFUL << FMC_SDTR2_TRP_Pos) /*!< 0x00F00000 */\r
-#define FMC_SDTR2_TRP FMC_SDTR2_TRP_Msk /*!<TRP[2:0] bits (Row precharge delay) */\r
-#define FMC_SDTR2_TRP_0 (0x1UL << FMC_SDTR2_TRP_Pos) /*!< 0x00100000 */\r
-#define FMC_SDTR2_TRP_1 (0x2UL << FMC_SDTR2_TRP_Pos) /*!< 0x00200000 */\r
-#define FMC_SDTR2_TRP_2 (0x4UL << FMC_SDTR2_TRP_Pos) /*!< 0x00400000 */\r
-#define FMC_SDTR2_TRCD_Pos (24U) \r
-#define FMC_SDTR2_TRCD_Msk (0xFUL << FMC_SDTR2_TRCD_Pos) /*!< 0x0F000000 */\r
-#define FMC_SDTR2_TRCD FMC_SDTR2_TRCD_Msk /*!<TRP[2:0] bits (Row to column delay) */\r
-#define FMC_SDTR2_TRCD_0 (0x1UL << FMC_SDTR2_TRCD_Pos) /*!< 0x01000000 */\r
-#define FMC_SDTR2_TRCD_1 (0x2UL << FMC_SDTR2_TRCD_Pos) /*!< 0x02000000 */\r
-#define FMC_SDTR2_TRCD_2 (0x4UL << FMC_SDTR2_TRCD_Pos) /*!< 0x04000000 */\r
-\r
-/****************** Bit definition for FMC_SDCMR register ******************/\r
-#define FMC_SDCMR_MODE_Pos (0U) \r
-#define FMC_SDCMR_MODE_Msk (0x7UL << FMC_SDCMR_MODE_Pos) /*!< 0x00000007 */\r
-#define FMC_SDCMR_MODE FMC_SDCMR_MODE_Msk /*!<MODE[2:0] bits (Command mode) */\r
-#define FMC_SDCMR_MODE_0 (0x1UL << FMC_SDCMR_MODE_Pos) /*!< 0x00000001 */\r
-#define FMC_SDCMR_MODE_1 (0x2UL << FMC_SDCMR_MODE_Pos) /*!< 0x00000002 */\r
-#define FMC_SDCMR_MODE_2 (0x4UL << FMC_SDCMR_MODE_Pos) /*!< 0x00000004 */\r
-#define FMC_SDCMR_CTB2_Pos (3U) \r
-#define FMC_SDCMR_CTB2_Msk (0x1UL << FMC_SDCMR_CTB2_Pos) /*!< 0x00000008 */\r
-#define FMC_SDCMR_CTB2 FMC_SDCMR_CTB2_Msk /*!<Command target 2 */\r
-#define FMC_SDCMR_CTB1_Pos (4U) \r
-#define FMC_SDCMR_CTB1_Msk (0x1UL << FMC_SDCMR_CTB1_Pos) /*!< 0x00000010 */\r
-#define FMC_SDCMR_CTB1 FMC_SDCMR_CTB1_Msk /*!<Command target 1 */\r
-#define FMC_SDCMR_NRFS_Pos (5U) \r
-#define FMC_SDCMR_NRFS_Msk (0xFUL << FMC_SDCMR_NRFS_Pos) /*!< 0x000001E0 */\r
-#define FMC_SDCMR_NRFS FMC_SDCMR_NRFS_Msk /*!<NRFS[3:0] bits (Number of auto-refresh) */\r
-#define FMC_SDCMR_NRFS_0 (0x1UL << FMC_SDCMR_NRFS_Pos) /*!< 0x00000020 */\r
-#define FMC_SDCMR_NRFS_1 (0x2UL << FMC_SDCMR_NRFS_Pos) /*!< 0x00000040 */\r
-#define FMC_SDCMR_NRFS_2 (0x4UL << FMC_SDCMR_NRFS_Pos) /*!< 0x00000080 */\r
-#define FMC_SDCMR_NRFS_3 (0x8UL << FMC_SDCMR_NRFS_Pos) /*!< 0x00000100 */\r
-#define FMC_SDCMR_MRD_Pos (9U) \r
-#define FMC_SDCMR_MRD_Msk (0x1FFFUL << FMC_SDCMR_MRD_Pos) /*!< 0x003FFE00 */\r
-#define FMC_SDCMR_MRD FMC_SDCMR_MRD_Msk /*!<MRD[12:0] bits (Mode register definition) */\r
-\r
-/****************** Bit definition for FMC_SDRTR register ******************/\r
-#define FMC_SDRTR_CRE_Pos (0U) \r
-#define FMC_SDRTR_CRE_Msk (0x1UL << FMC_SDRTR_CRE_Pos) /*!< 0x00000001 */\r
-#define FMC_SDRTR_CRE FMC_SDRTR_CRE_Msk /*!<Clear refresh error flag */\r
-#define FMC_SDRTR_COUNT_Pos (1U) \r
-#define FMC_SDRTR_COUNT_Msk (0x1FFFUL << FMC_SDRTR_COUNT_Pos) /*!< 0x00003FFE */\r
-#define FMC_SDRTR_COUNT FMC_SDRTR_COUNT_Msk /*!<COUNT[12:0] bits (Refresh timer count) */\r
-#define FMC_SDRTR_REIE_Pos (14U) \r
-#define FMC_SDRTR_REIE_Msk (0x1UL << FMC_SDRTR_REIE_Pos) /*!< 0x00004000 */\r
-#define FMC_SDRTR_REIE FMC_SDRTR_REIE_Msk /*!<RES interupt enable */\r
-\r
-/****************** Bit definition for FMC_SDSR register ******************/\r
-#define FMC_SDSR_RE_Pos (0U) \r
-#define FMC_SDSR_RE_Msk (0x1UL << FMC_SDSR_RE_Pos) /*!< 0x00000001 */\r
-#define FMC_SDSR_RE FMC_SDSR_RE_Msk /*!<Refresh error flag */\r
-#define FMC_SDSR_MODES1_Pos (1U) \r
-#define FMC_SDSR_MODES1_Msk (0x3UL << FMC_SDSR_MODES1_Pos) /*!< 0x00000006 */\r
-#define FMC_SDSR_MODES1 FMC_SDSR_MODES1_Msk /*!<MODES1[1:0]bits (Status mode for bank 1) */\r
-#define FMC_SDSR_MODES1_0 (0x1UL << FMC_SDSR_MODES1_Pos) /*!< 0x00000002 */\r
-#define FMC_SDSR_MODES1_1 (0x2UL << FMC_SDSR_MODES1_Pos) /*!< 0x00000004 */\r
-#define FMC_SDSR_MODES2_Pos (3U) \r
-#define FMC_SDSR_MODES2_Msk (0x3UL << FMC_SDSR_MODES2_Pos) /*!< 0x00000018 */\r
-#define FMC_SDSR_MODES2 FMC_SDSR_MODES2_Msk /*!<MODES2[1:0]bits (Status mode for bank 2) */\r
-#define FMC_SDSR_MODES2_0 (0x1UL << FMC_SDSR_MODES2_Pos) /*!< 0x00000008 */\r
-#define FMC_SDSR_MODES2_1 (0x2UL << FMC_SDSR_MODES2_Pos) /*!< 0x00000010 */\r
-#define FMC_SDSR_BUSY_Pos (5U) \r
-#define FMC_SDSR_BUSY_Msk (0x1UL << FMC_SDSR_BUSY_Pos) /*!< 0x00000020 */\r
-#define FMC_SDSR_BUSY FMC_SDSR_BUSY_Msk /*!<Busy status */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* General Purpose I/O */\r
-/* */\r
-/******************************************************************************/\r
-/****************** Bits definition for GPIO_MODER register *****************/\r
-#define GPIO_MODER_MODER0_Pos (0U) \r
-#define GPIO_MODER_MODER0_Msk (0x3UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000003 */\r
-#define GPIO_MODER_MODER0 GPIO_MODER_MODER0_Msk \r
-#define GPIO_MODER_MODER0_0 (0x1UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000001 */\r
-#define GPIO_MODER_MODER0_1 (0x2UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000002 */\r
-#define GPIO_MODER_MODER1_Pos (2U) \r
-#define GPIO_MODER_MODER1_Msk (0x3UL << GPIO_MODER_MODER1_Pos) /*!< 0x0000000C */\r
-#define GPIO_MODER_MODER1 GPIO_MODER_MODER1_Msk \r
-#define GPIO_MODER_MODER1_0 (0x1UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000004 */\r
-#define GPIO_MODER_MODER1_1 (0x2UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000008 */\r
-#define GPIO_MODER_MODER2_Pos (4U) \r
-#define GPIO_MODER_MODER2_Msk (0x3UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000030 */\r
-#define GPIO_MODER_MODER2 GPIO_MODER_MODER2_Msk \r
-#define GPIO_MODER_MODER2_0 (0x1UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000010 */\r
-#define GPIO_MODER_MODER2_1 (0x2UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000020 */\r
-#define GPIO_MODER_MODER3_Pos (6U) \r
-#define GPIO_MODER_MODER3_Msk (0x3UL << GPIO_MODER_MODER3_Pos) /*!< 0x000000C0 */\r
-#define GPIO_MODER_MODER3 GPIO_MODER_MODER3_Msk \r
-#define GPIO_MODER_MODER3_0 (0x1UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000040 */\r
-#define GPIO_MODER_MODER3_1 (0x2UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000080 */\r
-#define GPIO_MODER_MODER4_Pos (8U) \r
-#define GPIO_MODER_MODER4_Msk (0x3UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000300 */\r
-#define GPIO_MODER_MODER4 GPIO_MODER_MODER4_Msk \r
-#define GPIO_MODER_MODER4_0 (0x1UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000100 */\r
-#define GPIO_MODER_MODER4_1 (0x2UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000200 */\r
-#define GPIO_MODER_MODER5_Pos (10U) \r
-#define GPIO_MODER_MODER5_Msk (0x3UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000C00 */\r
-#define GPIO_MODER_MODER5 GPIO_MODER_MODER5_Msk \r
-#define GPIO_MODER_MODER5_0 (0x1UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000400 */\r
-#define GPIO_MODER_MODER5_1 (0x2UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000800 */\r
-#define GPIO_MODER_MODER6_Pos (12U) \r
-#define GPIO_MODER_MODER6_Msk (0x3UL << GPIO_MODER_MODER6_Pos) /*!< 0x00003000 */\r
-#define GPIO_MODER_MODER6 GPIO_MODER_MODER6_Msk \r
-#define GPIO_MODER_MODER6_0 (0x1UL << GPIO_MODER_MODER6_Pos) /*!< 0x00001000 */\r
-#define GPIO_MODER_MODER6_1 (0x2UL << GPIO_MODER_MODER6_Pos) /*!< 0x00002000 */\r
-#define GPIO_MODER_MODER7_Pos (14U) \r
-#define GPIO_MODER_MODER7_Msk (0x3UL << GPIO_MODER_MODER7_Pos) /*!< 0x0000C000 */\r
-#define GPIO_MODER_MODER7 GPIO_MODER_MODER7_Msk \r
-#define GPIO_MODER_MODER7_0 (0x1UL << GPIO_MODER_MODER7_Pos) /*!< 0x00004000 */\r
-#define GPIO_MODER_MODER7_1 (0x2UL << GPIO_MODER_MODER7_Pos) /*!< 0x00008000 */\r
-#define GPIO_MODER_MODER8_Pos (16U) \r
-#define GPIO_MODER_MODER8_Msk (0x3UL << GPIO_MODER_MODER8_Pos) /*!< 0x00030000 */\r
-#define GPIO_MODER_MODER8 GPIO_MODER_MODER8_Msk \r
-#define GPIO_MODER_MODER8_0 (0x1UL << GPIO_MODER_MODER8_Pos) /*!< 0x00010000 */\r
-#define GPIO_MODER_MODER8_1 (0x2UL << GPIO_MODER_MODER8_Pos) /*!< 0x00020000 */\r
-#define GPIO_MODER_MODER9_Pos (18U) \r
-#define GPIO_MODER_MODER9_Msk (0x3UL << GPIO_MODER_MODER9_Pos) /*!< 0x000C0000 */\r
-#define GPIO_MODER_MODER9 GPIO_MODER_MODER9_Msk \r
-#define GPIO_MODER_MODER9_0 (0x1UL << GPIO_MODER_MODER9_Pos) /*!< 0x00040000 */\r
-#define GPIO_MODER_MODER9_1 (0x2UL << GPIO_MODER_MODER9_Pos) /*!< 0x00080000 */\r
-#define GPIO_MODER_MODER10_Pos (20U) \r
-#define GPIO_MODER_MODER10_Msk (0x3UL << GPIO_MODER_MODER10_Pos) /*!< 0x00300000 */\r
-#define GPIO_MODER_MODER10 GPIO_MODER_MODER10_Msk \r
-#define GPIO_MODER_MODER10_0 (0x1UL << GPIO_MODER_MODER10_Pos) /*!< 0x00100000 */\r
-#define GPIO_MODER_MODER10_1 (0x2UL << GPIO_MODER_MODER10_Pos) /*!< 0x00200000 */\r
-#define GPIO_MODER_MODER11_Pos (22U) \r
-#define GPIO_MODER_MODER11_Msk (0x3UL << GPIO_MODER_MODER11_Pos) /*!< 0x00C00000 */\r
-#define GPIO_MODER_MODER11 GPIO_MODER_MODER11_Msk \r
-#define GPIO_MODER_MODER11_0 (0x1UL << GPIO_MODER_MODER11_Pos) /*!< 0x00400000 */\r
-#define GPIO_MODER_MODER11_1 (0x2UL << GPIO_MODER_MODER11_Pos) /*!< 0x00800000 */\r
-#define GPIO_MODER_MODER12_Pos (24U) \r
-#define GPIO_MODER_MODER12_Msk (0x3UL << GPIO_MODER_MODER12_Pos) /*!< 0x03000000 */\r
-#define GPIO_MODER_MODER12 GPIO_MODER_MODER12_Msk \r
-#define GPIO_MODER_MODER12_0 (0x1UL << GPIO_MODER_MODER12_Pos) /*!< 0x01000000 */\r
-#define GPIO_MODER_MODER12_1 (0x2UL << GPIO_MODER_MODER12_Pos) /*!< 0x02000000 */\r
-#define GPIO_MODER_MODER13_Pos (26U) \r
-#define GPIO_MODER_MODER13_Msk (0x3UL << GPIO_MODER_MODER13_Pos) /*!< 0x0C000000 */\r
-#define GPIO_MODER_MODER13 GPIO_MODER_MODER13_Msk \r
-#define GPIO_MODER_MODER13_0 (0x1UL << GPIO_MODER_MODER13_Pos) /*!< 0x04000000 */\r
-#define GPIO_MODER_MODER13_1 (0x2UL << GPIO_MODER_MODER13_Pos) /*!< 0x08000000 */\r
-#define GPIO_MODER_MODER14_Pos (28U) \r
-#define GPIO_MODER_MODER14_Msk (0x3UL << GPIO_MODER_MODER14_Pos) /*!< 0x30000000 */\r
-#define GPIO_MODER_MODER14 GPIO_MODER_MODER14_Msk \r
-#define GPIO_MODER_MODER14_0 (0x1UL << GPIO_MODER_MODER14_Pos) /*!< 0x10000000 */\r
-#define GPIO_MODER_MODER14_1 (0x2UL << GPIO_MODER_MODER14_Pos) /*!< 0x20000000 */\r
-#define GPIO_MODER_MODER15_Pos (30U) \r
-#define GPIO_MODER_MODER15_Msk (0x3UL << GPIO_MODER_MODER15_Pos) /*!< 0xC0000000 */\r
-#define GPIO_MODER_MODER15 GPIO_MODER_MODER15_Msk \r
-#define GPIO_MODER_MODER15_0 (0x1UL << GPIO_MODER_MODER15_Pos) /*!< 0x40000000 */\r
-#define GPIO_MODER_MODER15_1 (0x2UL << GPIO_MODER_MODER15_Pos) /*!< 0x80000000 */\r
-\r
-/****************** Bits definition for GPIO_OTYPER register ****************/\r
-#define GPIO_OTYPER_OT_0 0x00000001U \r
-#define GPIO_OTYPER_OT_1 0x00000002U \r
-#define GPIO_OTYPER_OT_2 0x00000004U \r
-#define GPIO_OTYPER_OT_3 0x00000008U \r
-#define GPIO_OTYPER_OT_4 0x00000010U \r
-#define GPIO_OTYPER_OT_5 0x00000020U \r
-#define GPIO_OTYPER_OT_6 0x00000040U \r
-#define GPIO_OTYPER_OT_7 0x00000080U \r
-#define GPIO_OTYPER_OT_8 0x00000100U \r
-#define GPIO_OTYPER_OT_9 0x00000200U \r
-#define GPIO_OTYPER_OT_10 0x00000400U \r
-#define GPIO_OTYPER_OT_11 0x00000800U \r
-#define GPIO_OTYPER_OT_12 0x00001000U \r
-#define GPIO_OTYPER_OT_13 0x00002000U \r
-#define GPIO_OTYPER_OT_14 0x00004000U \r
-#define GPIO_OTYPER_OT_15 0x00008000U \r
-\r
-/****************** Bits definition for GPIO_OSPEEDR register ***************/\r
-#define GPIO_OSPEEDER_OSPEEDR0_Pos (0U) \r
-#define GPIO_OSPEEDER_OSPEEDR0_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR0_Pos) /*!< 0x00000003 */\r
-#define GPIO_OSPEEDER_OSPEEDR0 GPIO_OSPEEDER_OSPEEDR0_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR0_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR0_Pos) /*!< 0x00000001 */\r
-#define GPIO_OSPEEDER_OSPEEDR0_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR0_Pos) /*!< 0x00000002 */\r
-#define GPIO_OSPEEDER_OSPEEDR1_Pos (2U) \r
-#define GPIO_OSPEEDER_OSPEEDR1_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR1_Pos) /*!< 0x0000000C */\r
-#define GPIO_OSPEEDER_OSPEEDR1 GPIO_OSPEEDER_OSPEEDR1_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR1_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR1_Pos) /*!< 0x00000004 */\r
-#define GPIO_OSPEEDER_OSPEEDR1_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR1_Pos) /*!< 0x00000008 */\r
-#define GPIO_OSPEEDER_OSPEEDR2_Pos (4U) \r
-#define GPIO_OSPEEDER_OSPEEDR2_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR2_Pos) /*!< 0x00000030 */\r
-#define GPIO_OSPEEDER_OSPEEDR2 GPIO_OSPEEDER_OSPEEDR2_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR2_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR2_Pos) /*!< 0x00000010 */\r
-#define GPIO_OSPEEDER_OSPEEDR2_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR2_Pos) /*!< 0x00000020 */\r
-#define GPIO_OSPEEDER_OSPEEDR3_Pos (6U) \r
-#define GPIO_OSPEEDER_OSPEEDR3_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR3_Pos) /*!< 0x000000C0 */\r
-#define GPIO_OSPEEDER_OSPEEDR3 GPIO_OSPEEDER_OSPEEDR3_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR3_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR3_Pos) /*!< 0x00000040 */\r
-#define GPIO_OSPEEDER_OSPEEDR3_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR3_Pos) /*!< 0x00000080 */\r
-#define GPIO_OSPEEDER_OSPEEDR4_Pos (8U) \r
-#define GPIO_OSPEEDER_OSPEEDR4_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR4_Pos) /*!< 0x00000300 */\r
-#define GPIO_OSPEEDER_OSPEEDR4 GPIO_OSPEEDER_OSPEEDR4_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR4_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR4_Pos) /*!< 0x00000100 */\r
-#define GPIO_OSPEEDER_OSPEEDR4_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR4_Pos) /*!< 0x00000200 */\r
-#define GPIO_OSPEEDER_OSPEEDR5_Pos (10U) \r
-#define GPIO_OSPEEDER_OSPEEDR5_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR5_Pos) /*!< 0x00000C00 */\r
-#define GPIO_OSPEEDER_OSPEEDR5 GPIO_OSPEEDER_OSPEEDR5_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR5_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR5_Pos) /*!< 0x00000400 */\r
-#define GPIO_OSPEEDER_OSPEEDR5_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR5_Pos) /*!< 0x00000800 */\r
-#define GPIO_OSPEEDER_OSPEEDR6_Pos (12U) \r
-#define GPIO_OSPEEDER_OSPEEDR6_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR6_Pos) /*!< 0x00003000 */\r
-#define GPIO_OSPEEDER_OSPEEDR6 GPIO_OSPEEDER_OSPEEDR6_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR6_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR6_Pos) /*!< 0x00001000 */\r
-#define GPIO_OSPEEDER_OSPEEDR6_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR6_Pos) /*!< 0x00002000 */\r
-#define GPIO_OSPEEDER_OSPEEDR7_Pos (14U) \r
-#define GPIO_OSPEEDER_OSPEEDR7_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR7_Pos) /*!< 0x0000C000 */\r
-#define GPIO_OSPEEDER_OSPEEDR7 GPIO_OSPEEDER_OSPEEDR7_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR7_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR7_Pos) /*!< 0x00004000 */\r
-#define GPIO_OSPEEDER_OSPEEDR7_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR7_Pos) /*!< 0x00008000 */\r
-#define GPIO_OSPEEDER_OSPEEDR8_Pos (16U) \r
-#define GPIO_OSPEEDER_OSPEEDR8_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR8_Pos) /*!< 0x00030000 */\r
-#define GPIO_OSPEEDER_OSPEEDR8 GPIO_OSPEEDER_OSPEEDR8_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR8_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR8_Pos) /*!< 0x00010000 */\r
-#define GPIO_OSPEEDER_OSPEEDR8_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR8_Pos) /*!< 0x00020000 */\r
-#define GPIO_OSPEEDER_OSPEEDR9_Pos (18U) \r
-#define GPIO_OSPEEDER_OSPEEDR9_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR9_Pos) /*!< 0x000C0000 */\r
-#define GPIO_OSPEEDER_OSPEEDR9 GPIO_OSPEEDER_OSPEEDR9_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR9_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR9_Pos) /*!< 0x00040000 */\r
-#define GPIO_OSPEEDER_OSPEEDR9_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR9_Pos) /*!< 0x00080000 */\r
-#define GPIO_OSPEEDER_OSPEEDR10_Pos (20U) \r
-#define GPIO_OSPEEDER_OSPEEDR10_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR10_Pos) /*!< 0x00300000 */\r
-#define GPIO_OSPEEDER_OSPEEDR10 GPIO_OSPEEDER_OSPEEDR10_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR10_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR10_Pos) /*!< 0x00100000 */\r
-#define GPIO_OSPEEDER_OSPEEDR10_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR10_Pos) /*!< 0x00200000 */\r
-#define GPIO_OSPEEDER_OSPEEDR11_Pos (22U) \r
-#define GPIO_OSPEEDER_OSPEEDR11_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR11_Pos) /*!< 0x00C00000 */\r
-#define GPIO_OSPEEDER_OSPEEDR11 GPIO_OSPEEDER_OSPEEDR11_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR11_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR11_Pos) /*!< 0x00400000 */\r
-#define GPIO_OSPEEDER_OSPEEDR11_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR11_Pos) /*!< 0x00800000 */\r
-#define GPIO_OSPEEDER_OSPEEDR12_Pos (24U) \r
-#define GPIO_OSPEEDER_OSPEEDR12_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR12_Pos) /*!< 0x03000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR12 GPIO_OSPEEDER_OSPEEDR12_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR12_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR12_Pos) /*!< 0x01000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR12_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR12_Pos) /*!< 0x02000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR13_Pos (26U) \r
-#define GPIO_OSPEEDER_OSPEEDR13_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR13_Pos) /*!< 0x0C000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR13 GPIO_OSPEEDER_OSPEEDR13_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR13_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR13_Pos) /*!< 0x04000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR13_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR13_Pos) /*!< 0x08000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR14_Pos (28U) \r
-#define GPIO_OSPEEDER_OSPEEDR14_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR14_Pos) /*!< 0x30000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR14 GPIO_OSPEEDER_OSPEEDR14_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR14_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR14_Pos) /*!< 0x10000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR14_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR14_Pos) /*!< 0x20000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR15_Pos (30U) \r
-#define GPIO_OSPEEDER_OSPEEDR15_Msk (0x3UL << GPIO_OSPEEDER_OSPEEDR15_Pos) /*!< 0xC0000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR15 GPIO_OSPEEDER_OSPEEDR15_Msk \r
-#define GPIO_OSPEEDER_OSPEEDR15_0 (0x1UL << GPIO_OSPEEDER_OSPEEDR15_Pos) /*!< 0x40000000 */\r
-#define GPIO_OSPEEDER_OSPEEDR15_1 (0x2UL << GPIO_OSPEEDER_OSPEEDR15_Pos) /*!< 0x80000000 */\r
-\r
-/****************** Bits definition for GPIO_PUPDR register *****************/\r
-#define GPIO_PUPDR_PUPDR0_Pos (0U) \r
-#define GPIO_PUPDR_PUPDR0_Msk (0x3UL << GPIO_PUPDR_PUPDR0_Pos) /*!< 0x00000003 */\r
-#define GPIO_PUPDR_PUPDR0 GPIO_PUPDR_PUPDR0_Msk \r
-#define GPIO_PUPDR_PUPDR0_0 (0x1UL << GPIO_PUPDR_PUPDR0_Pos) /*!< 0x00000001 */\r
-#define GPIO_PUPDR_PUPDR0_1 (0x2UL << GPIO_PUPDR_PUPDR0_Pos) /*!< 0x00000002 */\r
-#define GPIO_PUPDR_PUPDR1_Pos (2U) \r
-#define GPIO_PUPDR_PUPDR1_Msk (0x3UL << GPIO_PUPDR_PUPDR1_Pos) /*!< 0x0000000C */\r
-#define GPIO_PUPDR_PUPDR1 GPIO_PUPDR_PUPDR1_Msk \r
-#define GPIO_PUPDR_PUPDR1_0 (0x1UL << GPIO_PUPDR_PUPDR1_Pos) /*!< 0x00000004 */\r
-#define GPIO_PUPDR_PUPDR1_1 (0x2UL << GPIO_PUPDR_PUPDR1_Pos) /*!< 0x00000008 */\r
-#define GPIO_PUPDR_PUPDR2_Pos (4U) \r
-#define GPIO_PUPDR_PUPDR2_Msk (0x3UL << GPIO_PUPDR_PUPDR2_Pos) /*!< 0x00000030 */\r
-#define GPIO_PUPDR_PUPDR2 GPIO_PUPDR_PUPDR2_Msk \r
-#define GPIO_PUPDR_PUPDR2_0 (0x1UL << GPIO_PUPDR_PUPDR2_Pos) /*!< 0x00000010 */\r
-#define GPIO_PUPDR_PUPDR2_1 (0x2UL << GPIO_PUPDR_PUPDR2_Pos) /*!< 0x00000020 */\r
-#define GPIO_PUPDR_PUPDR3_Pos (6U) \r
-#define GPIO_PUPDR_PUPDR3_Msk (0x3UL << GPIO_PUPDR_PUPDR3_Pos) /*!< 0x000000C0 */\r
-#define GPIO_PUPDR_PUPDR3 GPIO_PUPDR_PUPDR3_Msk \r
-#define GPIO_PUPDR_PUPDR3_0 (0x1UL << GPIO_PUPDR_PUPDR3_Pos) /*!< 0x00000040 */\r
-#define GPIO_PUPDR_PUPDR3_1 (0x2UL << GPIO_PUPDR_PUPDR3_Pos) /*!< 0x00000080 */\r
-#define GPIO_PUPDR_PUPDR4_Pos (8U) \r
-#define GPIO_PUPDR_PUPDR4_Msk (0x3UL << GPIO_PUPDR_PUPDR4_Pos) /*!< 0x00000300 */\r
-#define GPIO_PUPDR_PUPDR4 GPIO_PUPDR_PUPDR4_Msk \r
-#define GPIO_PUPDR_PUPDR4_0 (0x1UL << GPIO_PUPDR_PUPDR4_Pos) /*!< 0x00000100 */\r
-#define GPIO_PUPDR_PUPDR4_1 (0x2UL << GPIO_PUPDR_PUPDR4_Pos) /*!< 0x00000200 */\r
-#define GPIO_PUPDR_PUPDR5_Pos (10U) \r
-#define GPIO_PUPDR_PUPDR5_Msk (0x3UL << GPIO_PUPDR_PUPDR5_Pos) /*!< 0x00000C00 */\r
-#define GPIO_PUPDR_PUPDR5 GPIO_PUPDR_PUPDR5_Msk \r
-#define GPIO_PUPDR_PUPDR5_0 (0x1UL << GPIO_PUPDR_PUPDR5_Pos) /*!< 0x00000400 */\r
-#define GPIO_PUPDR_PUPDR5_1 (0x2UL << GPIO_PUPDR_PUPDR5_Pos) /*!< 0x00000800 */\r
-#define GPIO_PUPDR_PUPDR6_Pos (12U) \r
-#define GPIO_PUPDR_PUPDR6_Msk (0x3UL << GPIO_PUPDR_PUPDR6_Pos) /*!< 0x00003000 */\r
-#define GPIO_PUPDR_PUPDR6 GPIO_PUPDR_PUPDR6_Msk \r
-#define GPIO_PUPDR_PUPDR6_0 (0x1UL << GPIO_PUPDR_PUPDR6_Pos) /*!< 0x00001000 */\r
-#define GPIO_PUPDR_PUPDR6_1 (0x2UL << GPIO_PUPDR_PUPDR6_Pos) /*!< 0x00002000 */\r
-#define GPIO_PUPDR_PUPDR7_Pos (14U) \r
-#define GPIO_PUPDR_PUPDR7_Msk (0x3UL << GPIO_PUPDR_PUPDR7_Pos) /*!< 0x0000C000 */\r
-#define GPIO_PUPDR_PUPDR7 GPIO_PUPDR_PUPDR7_Msk \r
-#define GPIO_PUPDR_PUPDR7_0 (0x1UL << GPIO_PUPDR_PUPDR7_Pos) /*!< 0x00004000 */\r
-#define GPIO_PUPDR_PUPDR7_1 (0x2UL << GPIO_PUPDR_PUPDR7_Pos) /*!< 0x00008000 */\r
-#define GPIO_PUPDR_PUPDR8_Pos (16U) \r
-#define GPIO_PUPDR_PUPDR8_Msk (0x3UL << GPIO_PUPDR_PUPDR8_Pos) /*!< 0x00030000 */\r
-#define GPIO_PUPDR_PUPDR8 GPIO_PUPDR_PUPDR8_Msk \r
-#define GPIO_PUPDR_PUPDR8_0 (0x1UL << GPIO_PUPDR_PUPDR8_Pos) /*!< 0x00010000 */\r
-#define GPIO_PUPDR_PUPDR8_1 (0x2UL << GPIO_PUPDR_PUPDR8_Pos) /*!< 0x00020000 */\r
-#define GPIO_PUPDR_PUPDR9_Pos (18U) \r
-#define GPIO_PUPDR_PUPDR9_Msk (0x3UL << GPIO_PUPDR_PUPDR9_Pos) /*!< 0x000C0000 */\r
-#define GPIO_PUPDR_PUPDR9 GPIO_PUPDR_PUPDR9_Msk \r
-#define GPIO_PUPDR_PUPDR9_0 (0x1UL << GPIO_PUPDR_PUPDR9_Pos) /*!< 0x00040000 */\r
-#define GPIO_PUPDR_PUPDR9_1 (0x2UL << GPIO_PUPDR_PUPDR9_Pos) /*!< 0x00080000 */\r
-#define GPIO_PUPDR_PUPDR10_Pos (20U) \r
-#define GPIO_PUPDR_PUPDR10_Msk (0x3UL << GPIO_PUPDR_PUPDR10_Pos) /*!< 0x00300000 */\r
-#define GPIO_PUPDR_PUPDR10 GPIO_PUPDR_PUPDR10_Msk \r
-#define GPIO_PUPDR_PUPDR10_0 (0x1UL << GPIO_PUPDR_PUPDR10_Pos) /*!< 0x00100000 */\r
-#define GPIO_PUPDR_PUPDR10_1 (0x2UL << GPIO_PUPDR_PUPDR10_Pos) /*!< 0x00200000 */\r
-#define GPIO_PUPDR_PUPDR11_Pos (22U) \r
-#define GPIO_PUPDR_PUPDR11_Msk (0x3UL << GPIO_PUPDR_PUPDR11_Pos) /*!< 0x00C00000 */\r
-#define GPIO_PUPDR_PUPDR11 GPIO_PUPDR_PUPDR11_Msk \r
-#define GPIO_PUPDR_PUPDR11_0 (0x1UL << GPIO_PUPDR_PUPDR11_Pos) /*!< 0x00400000 */\r
-#define GPIO_PUPDR_PUPDR11_1 (0x2UL << GPIO_PUPDR_PUPDR11_Pos) /*!< 0x00800000 */\r
-#define GPIO_PUPDR_PUPDR12_Pos (24U) \r
-#define GPIO_PUPDR_PUPDR12_Msk (0x3UL << GPIO_PUPDR_PUPDR12_Pos) /*!< 0x03000000 */\r
-#define GPIO_PUPDR_PUPDR12 GPIO_PUPDR_PUPDR12_Msk \r
-#define GPIO_PUPDR_PUPDR12_0 (0x1UL << GPIO_PUPDR_PUPDR12_Pos) /*!< 0x01000000 */\r
-#define GPIO_PUPDR_PUPDR12_1 (0x2UL << GPIO_PUPDR_PUPDR12_Pos) /*!< 0x02000000 */\r
-#define GPIO_PUPDR_PUPDR13_Pos (26U) \r
-#define GPIO_PUPDR_PUPDR13_Msk (0x3UL << GPIO_PUPDR_PUPDR13_Pos) /*!< 0x0C000000 */\r
-#define GPIO_PUPDR_PUPDR13 GPIO_PUPDR_PUPDR13_Msk \r
-#define GPIO_PUPDR_PUPDR13_0 (0x1UL << GPIO_PUPDR_PUPDR13_Pos) /*!< 0x04000000 */\r
-#define GPIO_PUPDR_PUPDR13_1 (0x2UL << GPIO_PUPDR_PUPDR13_Pos) /*!< 0x08000000 */\r
-#define GPIO_PUPDR_PUPDR14_Pos (28U) \r
-#define GPIO_PUPDR_PUPDR14_Msk (0x3UL << GPIO_PUPDR_PUPDR14_Pos) /*!< 0x30000000 */\r
-#define GPIO_PUPDR_PUPDR14 GPIO_PUPDR_PUPDR14_Msk \r
-#define GPIO_PUPDR_PUPDR14_0 (0x1UL << GPIO_PUPDR_PUPDR14_Pos) /*!< 0x10000000 */\r
-#define GPIO_PUPDR_PUPDR14_1 (0x2UL << GPIO_PUPDR_PUPDR14_Pos) /*!< 0x20000000 */\r
-#define GPIO_PUPDR_PUPDR15_Pos (30U) \r
-#define GPIO_PUPDR_PUPDR15_Msk (0x3UL << GPIO_PUPDR_PUPDR15_Pos) /*!< 0xC0000000 */\r
-#define GPIO_PUPDR_PUPDR15 GPIO_PUPDR_PUPDR15_Msk \r
-#define GPIO_PUPDR_PUPDR15_0 (0x1UL << GPIO_PUPDR_PUPDR15_Pos) /*!< 0x40000000 */\r
-#define GPIO_PUPDR_PUPDR15_1 (0x2UL << GPIO_PUPDR_PUPDR15_Pos) /*!< 0x80000000 */\r
-\r
-/****************** Bits definition for GPIO_IDR register *******************/\r
-#define GPIO_IDR_IDR_0 0x00000001U \r
-#define GPIO_IDR_IDR_1 0x00000002U \r
-#define GPIO_IDR_IDR_2 0x00000004U \r
-#define GPIO_IDR_IDR_3 0x00000008U \r
-#define GPIO_IDR_IDR_4 0x00000010U \r
-#define GPIO_IDR_IDR_5 0x00000020U \r
-#define GPIO_IDR_IDR_6 0x00000040U \r
-#define GPIO_IDR_IDR_7 0x00000080U \r
-#define GPIO_IDR_IDR_8 0x00000100U \r
-#define GPIO_IDR_IDR_9 0x00000200U \r
-#define GPIO_IDR_IDR_10 0x00000400U \r
-#define GPIO_IDR_IDR_11 0x00000800U \r
-#define GPIO_IDR_IDR_12 0x00001000U \r
-#define GPIO_IDR_IDR_13 0x00002000U \r
-#define GPIO_IDR_IDR_14 0x00004000U \r
-#define GPIO_IDR_IDR_15 0x00008000U \r
-\r
-/****************** Bits definition for GPIO_ODR register *******************/\r
-#define GPIO_ODR_ODR_0 0x00000001U \r
-#define GPIO_ODR_ODR_1 0x00000002U \r
-#define GPIO_ODR_ODR_2 0x00000004U \r
-#define GPIO_ODR_ODR_3 0x00000008U \r
-#define GPIO_ODR_ODR_4 0x00000010U \r
-#define GPIO_ODR_ODR_5 0x00000020U \r
-#define GPIO_ODR_ODR_6 0x00000040U \r
-#define GPIO_ODR_ODR_7 0x00000080U \r
-#define GPIO_ODR_ODR_8 0x00000100U \r
-#define GPIO_ODR_ODR_9 0x00000200U \r
-#define GPIO_ODR_ODR_10 0x00000400U \r
-#define GPIO_ODR_ODR_11 0x00000800U \r
-#define GPIO_ODR_ODR_12 0x00001000U \r
-#define GPIO_ODR_ODR_13 0x00002000U \r
-#define GPIO_ODR_ODR_14 0x00004000U \r
-#define GPIO_ODR_ODR_15 0x00008000U \r
-\r
-/****************** Bits definition for GPIO_BSRR register ******************/\r
-#define GPIO_BSRR_BS_0 0x00000001U \r
-#define GPIO_BSRR_BS_1 0x00000002U \r
-#define GPIO_BSRR_BS_2 0x00000004U \r
-#define GPIO_BSRR_BS_3 0x00000008U \r
-#define GPIO_BSRR_BS_4 0x00000010U \r
-#define GPIO_BSRR_BS_5 0x00000020U \r
-#define GPIO_BSRR_BS_6 0x00000040U \r
-#define GPIO_BSRR_BS_7 0x00000080U \r
-#define GPIO_BSRR_BS_8 0x00000100U \r
-#define GPIO_BSRR_BS_9 0x00000200U \r
-#define GPIO_BSRR_BS_10 0x00000400U \r
-#define GPIO_BSRR_BS_11 0x00000800U \r
-#define GPIO_BSRR_BS_12 0x00001000U \r
-#define GPIO_BSRR_BS_13 0x00002000U \r
-#define GPIO_BSRR_BS_14 0x00004000U \r
-#define GPIO_BSRR_BS_15 0x00008000U \r
-#define GPIO_BSRR_BR_0 0x00010000U \r
-#define GPIO_BSRR_BR_1 0x00020000U \r
-#define GPIO_BSRR_BR_2 0x00040000U \r
-#define GPIO_BSRR_BR_3 0x00080000U \r
-#define GPIO_BSRR_BR_4 0x00100000U \r
-#define GPIO_BSRR_BR_5 0x00200000U \r
-#define GPIO_BSRR_BR_6 0x00400000U \r
-#define GPIO_BSRR_BR_7 0x00800000U \r
-#define GPIO_BSRR_BR_8 0x01000000U \r
-#define GPIO_BSRR_BR_9 0x02000000U \r
-#define GPIO_BSRR_BR_10 0x04000000U \r
-#define GPIO_BSRR_BR_11 0x08000000U \r
-#define GPIO_BSRR_BR_12 0x10000000U \r
-#define GPIO_BSRR_BR_13 0x20000000U \r
-#define GPIO_BSRR_BR_14 0x40000000U \r
-#define GPIO_BSRR_BR_15 0x80000000U \r
-\r
-/****************** Bit definition for GPIO_LCKR register *********************/\r
-#define GPIO_LCKR_LCK0_Pos (0U) \r
-#define GPIO_LCKR_LCK0_Msk (0x1UL << GPIO_LCKR_LCK0_Pos) /*!< 0x00000001 */\r
-#define GPIO_LCKR_LCK0 GPIO_LCKR_LCK0_Msk \r
-#define GPIO_LCKR_LCK1_Pos (1U) \r
-#define GPIO_LCKR_LCK1_Msk (0x1UL << GPIO_LCKR_LCK1_Pos) /*!< 0x00000002 */\r
-#define GPIO_LCKR_LCK1 GPIO_LCKR_LCK1_Msk \r
-#define GPIO_LCKR_LCK2_Pos (2U) \r
-#define GPIO_LCKR_LCK2_Msk (0x1UL << GPIO_LCKR_LCK2_Pos) /*!< 0x00000004 */\r
-#define GPIO_LCKR_LCK2 GPIO_LCKR_LCK2_Msk \r
-#define GPIO_LCKR_LCK3_Pos (3U) \r
-#define GPIO_LCKR_LCK3_Msk (0x1UL << GPIO_LCKR_LCK3_Pos) /*!< 0x00000008 */\r
-#define GPIO_LCKR_LCK3 GPIO_LCKR_LCK3_Msk \r
-#define GPIO_LCKR_LCK4_Pos (4U) \r
-#define GPIO_LCKR_LCK4_Msk (0x1UL << GPIO_LCKR_LCK4_Pos) /*!< 0x00000010 */\r
-#define GPIO_LCKR_LCK4 GPIO_LCKR_LCK4_Msk \r
-#define GPIO_LCKR_LCK5_Pos (5U) \r
-#define GPIO_LCKR_LCK5_Msk (0x1UL << GPIO_LCKR_LCK5_Pos) /*!< 0x00000020 */\r
-#define GPIO_LCKR_LCK5 GPIO_LCKR_LCK5_Msk \r
-#define GPIO_LCKR_LCK6_Pos (6U) \r
-#define GPIO_LCKR_LCK6_Msk (0x1UL << GPIO_LCKR_LCK6_Pos) /*!< 0x00000040 */\r
-#define GPIO_LCKR_LCK6 GPIO_LCKR_LCK6_Msk \r
-#define GPIO_LCKR_LCK7_Pos (7U) \r
-#define GPIO_LCKR_LCK7_Msk (0x1UL << GPIO_LCKR_LCK7_Pos) /*!< 0x00000080 */\r
-#define GPIO_LCKR_LCK7 GPIO_LCKR_LCK7_Msk \r
-#define GPIO_LCKR_LCK8_Pos (8U) \r
-#define GPIO_LCKR_LCK8_Msk (0x1UL << GPIO_LCKR_LCK8_Pos) /*!< 0x00000100 */\r
-#define GPIO_LCKR_LCK8 GPIO_LCKR_LCK8_Msk \r
-#define GPIO_LCKR_LCK9_Pos (9U) \r
-#define GPIO_LCKR_LCK9_Msk (0x1UL << GPIO_LCKR_LCK9_Pos) /*!< 0x00000200 */\r
-#define GPIO_LCKR_LCK9 GPIO_LCKR_LCK9_Msk \r
-#define GPIO_LCKR_LCK10_Pos (10U) \r
-#define GPIO_LCKR_LCK10_Msk (0x1UL << GPIO_LCKR_LCK10_Pos) /*!< 0x00000400 */\r
-#define GPIO_LCKR_LCK10 GPIO_LCKR_LCK10_Msk \r
-#define GPIO_LCKR_LCK11_Pos (11U) \r
-#define GPIO_LCKR_LCK11_Msk (0x1UL << GPIO_LCKR_LCK11_Pos) /*!< 0x00000800 */\r
-#define GPIO_LCKR_LCK11 GPIO_LCKR_LCK11_Msk \r
-#define GPIO_LCKR_LCK12_Pos (12U) \r
-#define GPIO_LCKR_LCK12_Msk (0x1UL << GPIO_LCKR_LCK12_Pos) /*!< 0x00001000 */\r
-#define GPIO_LCKR_LCK12 GPIO_LCKR_LCK12_Msk \r
-#define GPIO_LCKR_LCK13_Pos (13U) \r
-#define GPIO_LCKR_LCK13_Msk (0x1UL << GPIO_LCKR_LCK13_Pos) /*!< 0x00002000 */\r
-#define GPIO_LCKR_LCK13 GPIO_LCKR_LCK13_Msk \r
-#define GPIO_LCKR_LCK14_Pos (14U) \r
-#define GPIO_LCKR_LCK14_Msk (0x1UL << GPIO_LCKR_LCK14_Pos) /*!< 0x00004000 */\r
-#define GPIO_LCKR_LCK14 GPIO_LCKR_LCK14_Msk \r
-#define GPIO_LCKR_LCK15_Pos (15U) \r
-#define GPIO_LCKR_LCK15_Msk (0x1UL << GPIO_LCKR_LCK15_Pos) /*!< 0x00008000 */\r
-#define GPIO_LCKR_LCK15 GPIO_LCKR_LCK15_Msk \r
-#define GPIO_LCKR_LCKK_Pos (16U) \r
-#define GPIO_LCKR_LCKK_Msk (0x1UL << GPIO_LCKR_LCKK_Pos) /*!< 0x00010000 */\r
-#define GPIO_LCKR_LCKK GPIO_LCKR_LCKK_Msk \r
-\r
-/****************** Bit definition for GPIO_AFRL register *********************/\r
-#define GPIO_AFRL_AFRL0_Pos (0U) \r
-#define GPIO_AFRL_AFRL0_Msk (0xFUL << GPIO_AFRL_AFRL0_Pos) /*!< 0x0000000F */\r
-#define GPIO_AFRL_AFRL0 GPIO_AFRL_AFRL0_Msk \r
-#define GPIO_AFRL_AFRL0_0 (0x1UL << GPIO_AFRL_AFRL0_Pos) /*!< 0x00000001 */\r
-#define GPIO_AFRL_AFRL0_1 (0x2UL << GPIO_AFRL_AFRL0_Pos) /*!< 0x00000002 */\r
-#define GPIO_AFRL_AFRL0_2 (0x4UL << GPIO_AFRL_AFRL0_Pos) /*!< 0x00000004 */\r
-#define GPIO_AFRL_AFRL0_3 (0x8UL << GPIO_AFRL_AFRL0_Pos) /*!< 0x00000008 */\r
-#define GPIO_AFRL_AFRL1_Pos (4U) \r
-#define GPIO_AFRL_AFRL1_Msk (0xFUL << GPIO_AFRL_AFRL1_Pos) /*!< 0x000000F0 */\r
-#define GPIO_AFRL_AFRL1 GPIO_AFRL_AFRL1_Msk \r
-#define GPIO_AFRL_AFRL1_0 (0x1UL << GPIO_AFRL_AFRL1_Pos) /*!< 0x00000010 */\r
-#define GPIO_AFRL_AFRL1_1 (0x2UL << GPIO_AFRL_AFRL1_Pos) /*!< 0x00000020 */\r
-#define GPIO_AFRL_AFRL1_2 (0x4UL << GPIO_AFRL_AFRL1_Pos) /*!< 0x00000040 */\r
-#define GPIO_AFRL_AFRL1_3 (0x8UL << GPIO_AFRL_AFRL1_Pos) /*!< 0x00000080 */\r
-#define GPIO_AFRL_AFRL2_Pos (8U) \r
-#define GPIO_AFRL_AFRL2_Msk (0xFUL << GPIO_AFRL_AFRL2_Pos) /*!< 0x00000F00 */\r
-#define GPIO_AFRL_AFRL2 GPIO_AFRL_AFRL2_Msk \r
-#define GPIO_AFRL_AFRL2_0 (0x1UL << GPIO_AFRL_AFRL2_Pos) /*!< 0x00000100 */\r
-#define GPIO_AFRL_AFRL2_1 (0x2UL << GPIO_AFRL_AFRL2_Pos) /*!< 0x00000200 */\r
-#define GPIO_AFRL_AFRL2_2 (0x4UL << GPIO_AFRL_AFRL2_Pos) /*!< 0x00000400 */\r
-#define GPIO_AFRL_AFRL2_3 (0x8UL << GPIO_AFRL_AFRL2_Pos) /*!< 0x00000800 */\r
-#define GPIO_AFRL_AFRL3_Pos (12U) \r
-#define GPIO_AFRL_AFRL3_Msk (0xFUL << GPIO_AFRL_AFRL3_Pos) /*!< 0x0000F000 */\r
-#define GPIO_AFRL_AFRL3 GPIO_AFRL_AFRL3_Msk \r
-#define GPIO_AFRL_AFRL3_0 (0x1UL << GPIO_AFRL_AFRL3_Pos) /*!< 0x00001000 */\r
-#define GPIO_AFRL_AFRL3_1 (0x2UL << GPIO_AFRL_AFRL3_Pos) /*!< 0x00002000 */\r
-#define GPIO_AFRL_AFRL3_2 (0x4UL << GPIO_AFRL_AFRL3_Pos) /*!< 0x00004000 */\r
-#define GPIO_AFRL_AFRL3_3 (0x8UL << GPIO_AFRL_AFRL3_Pos) /*!< 0x00008000 */\r
-#define GPIO_AFRL_AFRL4_Pos (16U) \r
-#define GPIO_AFRL_AFRL4_Msk (0xFUL << GPIO_AFRL_AFRL4_Pos) /*!< 0x000F0000 */\r
-#define GPIO_AFRL_AFRL4 GPIO_AFRL_AFRL4_Msk \r
-#define GPIO_AFRL_AFRL4_0 (0x1UL << GPIO_AFRL_AFRL4_Pos) /*!< 0x00010000 */\r
-#define GPIO_AFRL_AFRL4_1 (0x2UL << GPIO_AFRL_AFRL4_Pos) /*!< 0x00020000 */\r
-#define GPIO_AFRL_AFRL4_2 (0x4UL << GPIO_AFRL_AFRL4_Pos) /*!< 0x00040000 */\r
-#define GPIO_AFRL_AFRL4_3 (0x8UL << GPIO_AFRL_AFRL4_Pos) /*!< 0x00080000 */\r
-#define GPIO_AFRL_AFRL5_Pos (20U) \r
-#define GPIO_AFRL_AFRL5_Msk (0xFUL << GPIO_AFRL_AFRL5_Pos) /*!< 0x00F00000 */\r
-#define GPIO_AFRL_AFRL5 GPIO_AFRL_AFRL5_Msk \r
-#define GPIO_AFRL_AFRL5_0 (0x1UL << GPIO_AFRL_AFRL5_Pos) /*!< 0x00100000 */\r
-#define GPIO_AFRL_AFRL5_1 (0x2UL << GPIO_AFRL_AFRL5_Pos) /*!< 0x00200000 */\r
-#define GPIO_AFRL_AFRL5_2 (0x4UL << GPIO_AFRL_AFRL5_Pos) /*!< 0x00400000 */\r
-#define GPIO_AFRL_AFRL5_3 (0x8UL << GPIO_AFRL_AFRL5_Pos) /*!< 0x00800000 */\r
-#define GPIO_AFRL_AFRL6_Pos (24U) \r
-#define GPIO_AFRL_AFRL6_Msk (0xFUL << GPIO_AFRL_AFRL6_Pos) /*!< 0x0F000000 */\r
-#define GPIO_AFRL_AFRL6 GPIO_AFRL_AFRL6_Msk \r
-#define GPIO_AFRL_AFRL6_0 (0x1UL << GPIO_AFRL_AFRL6_Pos) /*!< 0x01000000 */\r
-#define GPIO_AFRL_AFRL6_1 (0x2UL << GPIO_AFRL_AFRL6_Pos) /*!< 0x02000000 */\r
-#define GPIO_AFRL_AFRL6_2 (0x4UL << GPIO_AFRL_AFRL6_Pos) /*!< 0x04000000 */\r
-#define GPIO_AFRL_AFRL6_3 (0x8UL << GPIO_AFRL_AFRL6_Pos) /*!< 0x08000000 */\r
-#define GPIO_AFRL_AFRL7_Pos (28U) \r
-#define GPIO_AFRL_AFRL7_Msk (0xFUL << GPIO_AFRL_AFRL7_Pos) /*!< 0xF0000000 */\r
-#define GPIO_AFRL_AFRL7 GPIO_AFRL_AFRL7_Msk \r
-#define GPIO_AFRL_AFRL7_0 (0x1UL << GPIO_AFRL_AFRL7_Pos) /*!< 0x10000000 */\r
-#define GPIO_AFRL_AFRL7_1 (0x2UL << GPIO_AFRL_AFRL7_Pos) /*!< 0x20000000 */\r
-#define GPIO_AFRL_AFRL7_2 (0x4UL << GPIO_AFRL_AFRL7_Pos) /*!< 0x40000000 */\r
-#define GPIO_AFRL_AFRL7_3 (0x8UL << GPIO_AFRL_AFRL7_Pos) /*!< 0x80000000 */\r
-\r
-/****************** Bit definition for GPIO_AFRH register *********************/\r
-#define GPIO_AFRH_AFRH0_Pos (0U) \r
-#define GPIO_AFRH_AFRH0_Msk (0xFUL << GPIO_AFRH_AFRH0_Pos) /*!< 0x0000000F */\r
-#define GPIO_AFRH_AFRH0 GPIO_AFRH_AFRH0_Msk \r
-#define GPIO_AFRH_AFRH0_0 (0x1UL << GPIO_AFRH_AFRH0_Pos) /*!< 0x00000001 */\r
-#define GPIO_AFRH_AFRH0_1 (0x2UL << GPIO_AFRH_AFRH0_Pos) /*!< 0x00000002 */\r
-#define GPIO_AFRH_AFRH0_2 (0x4UL << GPIO_AFRH_AFRH0_Pos) /*!< 0x00000004 */\r
-#define GPIO_AFRH_AFRH0_3 (0x8UL << GPIO_AFRH_AFRH0_Pos) /*!< 0x00000008 */\r
-#define GPIO_AFRH_AFRH1_Pos (4U) \r
-#define GPIO_AFRH_AFRH1_Msk (0xFUL << GPIO_AFRH_AFRH1_Pos) /*!< 0x000000F0 */\r
-#define GPIO_AFRH_AFRH1 GPIO_AFRH_AFRH1_Msk \r
-#define GPIO_AFRH_AFRH1_0 (0x1UL << GPIO_AFRH_AFRH1_Pos) /*!< 0x00000010 */\r
-#define GPIO_AFRH_AFRH1_1 (0x2UL << GPIO_AFRH_AFRH1_Pos) /*!< 0x00000020 */\r
-#define GPIO_AFRH_AFRH1_2 (0x4UL << GPIO_AFRH_AFRH1_Pos) /*!< 0x00000040 */\r
-#define GPIO_AFRH_AFRH1_3 (0x8UL << GPIO_AFRH_AFRH1_Pos) /*!< 0x00000080 */\r
-#define GPIO_AFRH_AFRH2_Pos (8U) \r
-#define GPIO_AFRH_AFRH2_Msk (0xFUL << GPIO_AFRH_AFRH2_Pos) /*!< 0x00000F00 */\r
-#define GPIO_AFRH_AFRH2 GPIO_AFRH_AFRH2_Msk \r
-#define GPIO_AFRH_AFRH2_0 (0x1UL << GPIO_AFRH_AFRH2_Pos) /*!< 0x00000100 */\r
-#define GPIO_AFRH_AFRH2_1 (0x2UL << GPIO_AFRH_AFRH2_Pos) /*!< 0x00000200 */\r
-#define GPIO_AFRH_AFRH2_2 (0x4UL << GPIO_AFRH_AFRH2_Pos) /*!< 0x00000400 */\r
-#define GPIO_AFRH_AFRH2_3 (0x8UL << GPIO_AFRH_AFRH2_Pos) /*!< 0x00000800 */\r
-#define GPIO_AFRH_AFRH3_Pos (12U) \r
-#define GPIO_AFRH_AFRH3_Msk (0xFUL << GPIO_AFRH_AFRH3_Pos) /*!< 0x0000F000 */\r
-#define GPIO_AFRH_AFRH3 GPIO_AFRH_AFRH3_Msk \r
-#define GPIO_AFRH_AFRH3_0 (0x1UL << GPIO_AFRH_AFRH3_Pos) /*!< 0x00001000 */\r
-#define GPIO_AFRH_AFRH3_1 (0x2UL << GPIO_AFRH_AFRH3_Pos) /*!< 0x00002000 */\r
-#define GPIO_AFRH_AFRH3_2 (0x4UL << GPIO_AFRH_AFRH3_Pos) /*!< 0x00004000 */\r
-#define GPIO_AFRH_AFRH3_3 (0x8UL << GPIO_AFRH_AFRH3_Pos) /*!< 0x00008000 */\r
-#define GPIO_AFRH_AFRH4_Pos (16U) \r
-#define GPIO_AFRH_AFRH4_Msk (0xFUL << GPIO_AFRH_AFRH4_Pos) /*!< 0x000F0000 */\r
-#define GPIO_AFRH_AFRH4 GPIO_AFRH_AFRH4_Msk \r
-#define GPIO_AFRH_AFRH4_0 (0x1UL << GPIO_AFRH_AFRH4_Pos) /*!< 0x00010000 */\r
-#define GPIO_AFRH_AFRH4_1 (0x2UL << GPIO_AFRH_AFRH4_Pos) /*!< 0x00020000 */\r
-#define GPIO_AFRH_AFRH4_2 (0x4UL << GPIO_AFRH_AFRH4_Pos) /*!< 0x00040000 */\r
-#define GPIO_AFRH_AFRH4_3 (0x8UL << GPIO_AFRH_AFRH4_Pos) /*!< 0x00080000 */\r
-#define GPIO_AFRH_AFRH5_Pos (20U) \r
-#define GPIO_AFRH_AFRH5_Msk (0xFUL << GPIO_AFRH_AFRH5_Pos) /*!< 0x00F00000 */\r
-#define GPIO_AFRH_AFRH5 GPIO_AFRH_AFRH5_Msk \r
-#define GPIO_AFRH_AFRH5_0 (0x1UL << GPIO_AFRH_AFRH5_Pos) /*!< 0x00100000 */\r
-#define GPIO_AFRH_AFRH5_1 (0x2UL << GPIO_AFRH_AFRH5_Pos) /*!< 0x00200000 */\r
-#define GPIO_AFRH_AFRH5_2 (0x4UL << GPIO_AFRH_AFRH5_Pos) /*!< 0x00400000 */\r
-#define GPIO_AFRH_AFRH5_3 (0x8UL << GPIO_AFRH_AFRH5_Pos) /*!< 0x00800000 */\r
-#define GPIO_AFRH_AFRH6_Pos (24U) \r
-#define GPIO_AFRH_AFRH6_Msk (0xFUL << GPIO_AFRH_AFRH6_Pos) /*!< 0x0F000000 */\r
-#define GPIO_AFRH_AFRH6 GPIO_AFRH_AFRH6_Msk \r
-#define GPIO_AFRH_AFRH6_0 (0x1UL << GPIO_AFRH_AFRH6_Pos) /*!< 0x01000000 */\r
-#define GPIO_AFRH_AFRH6_1 (0x2UL << GPIO_AFRH_AFRH6_Pos) /*!< 0x02000000 */\r
-#define GPIO_AFRH_AFRH6_2 (0x4UL << GPIO_AFRH_AFRH6_Pos) /*!< 0x04000000 */\r
-#define GPIO_AFRH_AFRH6_3 (0x8UL << GPIO_AFRH_AFRH6_Pos) /*!< 0x08000000 */\r
-#define GPIO_AFRH_AFRH7_Pos (28U) \r
-#define GPIO_AFRH_AFRH7_Msk (0xFUL << GPIO_AFRH_AFRH7_Pos) /*!< 0xF0000000 */\r
-#define GPIO_AFRH_AFRH7 GPIO_AFRH_AFRH7_Msk \r
-#define GPIO_AFRH_AFRH7_0 (0x1UL << GPIO_AFRH_AFRH7_Pos) /*!< 0x10000000 */\r
-#define GPIO_AFRH_AFRH7_1 (0x2UL << GPIO_AFRH_AFRH7_Pos) /*!< 0x20000000 */\r
-#define GPIO_AFRH_AFRH7_2 (0x4UL << GPIO_AFRH_AFRH7_Pos) /*!< 0x40000000 */\r
-#define GPIO_AFRH_AFRH7_3 (0x8UL << GPIO_AFRH_AFRH7_Pos) /*!< 0x80000000 */\r
-\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Inter-integrated Circuit Interface (I2C) */\r
-/* */\r
-/******************************************************************************/\r
-/******************* Bit definition for I2C_CR1 register *******************/\r
-#define I2C_CR1_PE_Pos (0U) \r
-#define I2C_CR1_PE_Msk (0x1UL << I2C_CR1_PE_Pos) /*!< 0x00000001 */\r
-#define I2C_CR1_PE I2C_CR1_PE_Msk /*!< Peripheral enable */\r
-#define I2C_CR1_TXIE_Pos (1U) \r
-#define I2C_CR1_TXIE_Msk (0x1UL << I2C_CR1_TXIE_Pos) /*!< 0x00000002 */\r
-#define I2C_CR1_TXIE I2C_CR1_TXIE_Msk /*!< TX interrupt enable */\r
-#define I2C_CR1_RXIE_Pos (2U) \r
-#define I2C_CR1_RXIE_Msk (0x1UL << I2C_CR1_RXIE_Pos) /*!< 0x00000004 */\r
-#define I2C_CR1_RXIE I2C_CR1_RXIE_Msk /*!< RX interrupt enable */\r
-#define I2C_CR1_ADDRIE_Pos (3U) \r
-#define I2C_CR1_ADDRIE_Msk (0x1UL << I2C_CR1_ADDRIE_Pos) /*!< 0x00000008 */\r
-#define I2C_CR1_ADDRIE I2C_CR1_ADDRIE_Msk /*!< Address match interrupt enable */\r
-#define I2C_CR1_NACKIE_Pos (4U) \r
-#define I2C_CR1_NACKIE_Msk (0x1UL << I2C_CR1_NACKIE_Pos) /*!< 0x00000010 */\r
-#define I2C_CR1_NACKIE I2C_CR1_NACKIE_Msk /*!< NACK received interrupt enable */\r
-#define I2C_CR1_STOPIE_Pos (5U) \r
-#define I2C_CR1_STOPIE_Msk (0x1UL << I2C_CR1_STOPIE_Pos) /*!< 0x00000020 */\r
-#define I2C_CR1_STOPIE I2C_CR1_STOPIE_Msk /*!< STOP detection interrupt enable */\r
-#define I2C_CR1_TCIE_Pos (6U) \r
-#define I2C_CR1_TCIE_Msk (0x1UL << I2C_CR1_TCIE_Pos) /*!< 0x00000040 */\r
-#define I2C_CR1_TCIE I2C_CR1_TCIE_Msk /*!< Transfer complete interrupt enable */\r
-#define I2C_CR1_ERRIE_Pos (7U) \r
-#define I2C_CR1_ERRIE_Msk (0x1UL << I2C_CR1_ERRIE_Pos) /*!< 0x00000080 */\r
-#define I2C_CR1_ERRIE I2C_CR1_ERRIE_Msk /*!< Errors interrupt enable */\r
-#define I2C_CR1_DNF_Pos (8U) \r
-#define I2C_CR1_DNF_Msk (0xFUL << I2C_CR1_DNF_Pos) /*!< 0x00000F00 */\r
-#define I2C_CR1_DNF I2C_CR1_DNF_Msk /*!< Digital noise filter */\r
-#define I2C_CR1_ANFOFF_Pos (12U) \r
-#define I2C_CR1_ANFOFF_Msk (0x1UL << I2C_CR1_ANFOFF_Pos) /*!< 0x00001000 */\r
-#define I2C_CR1_ANFOFF I2C_CR1_ANFOFF_Msk /*!< Analog noise filter OFF */\r
-#define I2C_CR1_TXDMAEN_Pos (14U) \r
-#define I2C_CR1_TXDMAEN_Msk (0x1UL << I2C_CR1_TXDMAEN_Pos) /*!< 0x00004000 */\r
-#define I2C_CR1_TXDMAEN I2C_CR1_TXDMAEN_Msk /*!< DMA transmission requests enable */\r
-#define I2C_CR1_RXDMAEN_Pos (15U) \r
-#define I2C_CR1_RXDMAEN_Msk (0x1UL << I2C_CR1_RXDMAEN_Pos) /*!< 0x00008000 */\r
-#define I2C_CR1_RXDMAEN I2C_CR1_RXDMAEN_Msk /*!< DMA reception requests enable */\r
-#define I2C_CR1_SBC_Pos (16U) \r
-#define I2C_CR1_SBC_Msk (0x1UL << I2C_CR1_SBC_Pos) /*!< 0x00010000 */\r
-#define I2C_CR1_SBC I2C_CR1_SBC_Msk /*!< Slave byte control */\r
-#define I2C_CR1_NOSTRETCH_Pos (17U) \r
-#define I2C_CR1_NOSTRETCH_Msk (0x1UL << I2C_CR1_NOSTRETCH_Pos) /*!< 0x00020000 */\r
-#define I2C_CR1_NOSTRETCH I2C_CR1_NOSTRETCH_Msk /*!< Clock stretching disable */\r
-#define I2C_CR1_GCEN_Pos (19U) \r
-#define I2C_CR1_GCEN_Msk (0x1UL << I2C_CR1_GCEN_Pos) /*!< 0x00080000 */\r
-#define I2C_CR1_GCEN I2C_CR1_GCEN_Msk /*!< General call enable */\r
-#define I2C_CR1_SMBHEN_Pos (20U) \r
-#define I2C_CR1_SMBHEN_Msk (0x1UL << I2C_CR1_SMBHEN_Pos) /*!< 0x00100000 */\r
-#define I2C_CR1_SMBHEN I2C_CR1_SMBHEN_Msk /*!< SMBus host address enable */\r
-#define I2C_CR1_SMBDEN_Pos (21U) \r
-#define I2C_CR1_SMBDEN_Msk (0x1UL << I2C_CR1_SMBDEN_Pos) /*!< 0x00200000 */\r
-#define I2C_CR1_SMBDEN I2C_CR1_SMBDEN_Msk /*!< SMBus device default address enable */\r
-#define I2C_CR1_ALERTEN_Pos (22U) \r
-#define I2C_CR1_ALERTEN_Msk (0x1UL << I2C_CR1_ALERTEN_Pos) /*!< 0x00400000 */\r
-#define I2C_CR1_ALERTEN I2C_CR1_ALERTEN_Msk /*!< SMBus alert enable */\r
-#define I2C_CR1_PECEN_Pos (23U) \r
-#define I2C_CR1_PECEN_Msk (0x1UL << I2C_CR1_PECEN_Pos) /*!< 0x00800000 */\r
-#define I2C_CR1_PECEN I2C_CR1_PECEN_Msk /*!< PEC enable */\r
-\r
-\r
-/****************** Bit definition for I2C_CR2 register ********************/\r
-#define I2C_CR2_SADD_Pos (0U) \r
-#define I2C_CR2_SADD_Msk (0x3FFUL << I2C_CR2_SADD_Pos) /*!< 0x000003FF */\r
-#define I2C_CR2_SADD I2C_CR2_SADD_Msk /*!< Slave address (master mode) */\r
-#define I2C_CR2_RD_WRN_Pos (10U) \r
-#define I2C_CR2_RD_WRN_Msk (0x1UL << I2C_CR2_RD_WRN_Pos) /*!< 0x00000400 */\r
-#define I2C_CR2_RD_WRN I2C_CR2_RD_WRN_Msk /*!< Transfer direction (master mode) */\r
-#define I2C_CR2_ADD10_Pos (11U) \r
-#define I2C_CR2_ADD10_Msk (0x1UL << I2C_CR2_ADD10_Pos) /*!< 0x00000800 */\r
-#define I2C_CR2_ADD10 I2C_CR2_ADD10_Msk /*!< 10-bit addressing mode (master mode) */\r
-#define I2C_CR2_HEAD10R_Pos (12U) \r
-#define I2C_CR2_HEAD10R_Msk (0x1UL << I2C_CR2_HEAD10R_Pos) /*!< 0x00001000 */\r
-#define I2C_CR2_HEAD10R I2C_CR2_HEAD10R_Msk /*!< 10-bit address header only read direction (master mode) */\r
-#define I2C_CR2_START_Pos (13U) \r
-#define I2C_CR2_START_Msk (0x1UL << I2C_CR2_START_Pos) /*!< 0x00002000 */\r
-#define I2C_CR2_START I2C_CR2_START_Msk /*!< START generation */\r
-#define I2C_CR2_STOP_Pos (14U) \r
-#define I2C_CR2_STOP_Msk (0x1UL << I2C_CR2_STOP_Pos) /*!< 0x00004000 */\r
-#define I2C_CR2_STOP I2C_CR2_STOP_Msk /*!< STOP generation (master mode) */\r
-#define I2C_CR2_NACK_Pos (15U) \r
-#define I2C_CR2_NACK_Msk (0x1UL << I2C_CR2_NACK_Pos) /*!< 0x00008000 */\r
-#define I2C_CR2_NACK I2C_CR2_NACK_Msk /*!< NACK generation (slave mode) */\r
-#define I2C_CR2_NBYTES_Pos (16U) \r
-#define I2C_CR2_NBYTES_Msk (0xFFUL << I2C_CR2_NBYTES_Pos) /*!< 0x00FF0000 */\r
-#define I2C_CR2_NBYTES I2C_CR2_NBYTES_Msk /*!< Number of bytes */\r
-#define I2C_CR2_RELOAD_Pos (24U) \r
-#define I2C_CR2_RELOAD_Msk (0x1UL << I2C_CR2_RELOAD_Pos) /*!< 0x01000000 */\r
-#define I2C_CR2_RELOAD I2C_CR2_RELOAD_Msk /*!< NBYTES reload mode */\r
-#define I2C_CR2_AUTOEND_Pos (25U) \r
-#define I2C_CR2_AUTOEND_Msk (0x1UL << I2C_CR2_AUTOEND_Pos) /*!< 0x02000000 */\r
-#define I2C_CR2_AUTOEND I2C_CR2_AUTOEND_Msk /*!< Automatic end mode (master mode) */\r
-#define I2C_CR2_PECBYTE_Pos (26U) \r
-#define I2C_CR2_PECBYTE_Msk (0x1UL << I2C_CR2_PECBYTE_Pos) /*!< 0x04000000 */\r
-#define I2C_CR2_PECBYTE I2C_CR2_PECBYTE_Msk /*!< Packet error checking byte */\r
-\r
-/******************* Bit definition for I2C_OAR1 register ******************/\r
-#define I2C_OAR1_OA1_Pos (0U) \r
-#define I2C_OAR1_OA1_Msk (0x3FFUL << I2C_OAR1_OA1_Pos) /*!< 0x000003FF */\r
-#define I2C_OAR1_OA1 I2C_OAR1_OA1_Msk /*!< Interface own address 1 */\r
-#define I2C_OAR1_OA1MODE_Pos (10U) \r
-#define I2C_OAR1_OA1MODE_Msk (0x1UL << I2C_OAR1_OA1MODE_Pos) /*!< 0x00000400 */\r
-#define I2C_OAR1_OA1MODE I2C_OAR1_OA1MODE_Msk /*!< Own address 1 10-bit mode */\r
-#define I2C_OAR1_OA1EN_Pos (15U) \r
-#define I2C_OAR1_OA1EN_Msk (0x1UL << I2C_OAR1_OA1EN_Pos) /*!< 0x00008000 */\r
-#define I2C_OAR1_OA1EN I2C_OAR1_OA1EN_Msk /*!< Own address 1 enable */\r
-\r
-/******************* Bit definition for I2C_OAR2 register ******************/\r
-#define I2C_OAR2_OA2_Pos (1U) \r
-#define I2C_OAR2_OA2_Msk (0x7FUL << I2C_OAR2_OA2_Pos) /*!< 0x000000FE */\r
-#define I2C_OAR2_OA2 I2C_OAR2_OA2_Msk /*!< Interface own address 2 */\r
-#define I2C_OAR2_OA2MSK_Pos (8U) \r
-#define I2C_OAR2_OA2MSK_Msk (0x7UL << I2C_OAR2_OA2MSK_Pos) /*!< 0x00000700 */\r
-#define I2C_OAR2_OA2MSK I2C_OAR2_OA2MSK_Msk /*!< Own address 2 masks */\r
-#define I2C_OAR2_OA2NOMASK 0x00000000U /*!< No mask */\r
-#define I2C_OAR2_OA2MASK01_Pos (8U) \r
-#define I2C_OAR2_OA2MASK01_Msk (0x1UL << I2C_OAR2_OA2MASK01_Pos) /*!< 0x00000100 */\r
-#define I2C_OAR2_OA2MASK01 I2C_OAR2_OA2MASK01_Msk /*!< OA2[1] is masked, Only OA2[7:2] are compared */\r
-#define I2C_OAR2_OA2MASK02_Pos (9U) \r
-#define I2C_OAR2_OA2MASK02_Msk (0x1UL << I2C_OAR2_OA2MASK02_Pos) /*!< 0x00000200 */\r
-#define I2C_OAR2_OA2MASK02 I2C_OAR2_OA2MASK02_Msk /*!< OA2[2:1] is masked, Only OA2[7:3] are compared */\r
-#define I2C_OAR2_OA2MASK03_Pos (8U) \r
-#define I2C_OAR2_OA2MASK03_Msk (0x3UL << I2C_OAR2_OA2MASK03_Pos) /*!< 0x00000300 */\r
-#define I2C_OAR2_OA2MASK03 I2C_OAR2_OA2MASK03_Msk /*!< OA2[3:1] is masked, Only OA2[7:4] are compared */\r
-#define I2C_OAR2_OA2MASK04_Pos (10U) \r
-#define I2C_OAR2_OA2MASK04_Msk (0x1UL << I2C_OAR2_OA2MASK04_Pos) /*!< 0x00000400 */\r
-#define I2C_OAR2_OA2MASK04 I2C_OAR2_OA2MASK04_Msk /*!< OA2[4:1] is masked, Only OA2[7:5] are compared */\r
-#define I2C_OAR2_OA2MASK05_Pos (8U) \r
-#define I2C_OAR2_OA2MASK05_Msk (0x5UL << I2C_OAR2_OA2MASK05_Pos) /*!< 0x00000500 */\r
-#define I2C_OAR2_OA2MASK05 I2C_OAR2_OA2MASK05_Msk /*!< OA2[5:1] is masked, Only OA2[7:6] are compared */\r
-#define I2C_OAR2_OA2MASK06_Pos (9U) \r
-#define I2C_OAR2_OA2MASK06_Msk (0x3UL << I2C_OAR2_OA2MASK06_Pos) /*!< 0x00000600 */\r
-#define I2C_OAR2_OA2MASK06 I2C_OAR2_OA2MASK06_Msk /*!< OA2[6:1] is masked, Only OA2[7] are compared */\r
-#define I2C_OAR2_OA2MASK07_Pos (8U) \r
-#define I2C_OAR2_OA2MASK07_Msk (0x7UL << I2C_OAR2_OA2MASK07_Pos) /*!< 0x00000700 */\r
-#define I2C_OAR2_OA2MASK07 I2C_OAR2_OA2MASK07_Msk /*!< OA2[7:1] is masked, No comparison is done */\r
-#define I2C_OAR2_OA2EN_Pos (15U) \r
-#define I2C_OAR2_OA2EN_Msk (0x1UL << I2C_OAR2_OA2EN_Pos) /*!< 0x00008000 */\r
-#define I2C_OAR2_OA2EN I2C_OAR2_OA2EN_Msk /*!< Own address 2 enable */\r
-\r
-/******************* Bit definition for I2C_TIMINGR register *******************/\r
-#define I2C_TIMINGR_SCLL_Pos (0U) \r
-#define I2C_TIMINGR_SCLL_Msk (0xFFUL << I2C_TIMINGR_SCLL_Pos) /*!< 0x000000FF */\r
-#define I2C_TIMINGR_SCLL I2C_TIMINGR_SCLL_Msk /*!< SCL low period (master mode) */\r
-#define I2C_TIMINGR_SCLH_Pos (8U) \r
-#define I2C_TIMINGR_SCLH_Msk (0xFFUL << I2C_TIMINGR_SCLH_Pos) /*!< 0x0000FF00 */\r
-#define I2C_TIMINGR_SCLH I2C_TIMINGR_SCLH_Msk /*!< SCL high period (master mode) */\r
-#define I2C_TIMINGR_SDADEL_Pos (16U) \r
-#define I2C_TIMINGR_SDADEL_Msk (0xFUL << I2C_TIMINGR_SDADEL_Pos) /*!< 0x000F0000 */\r
-#define I2C_TIMINGR_SDADEL I2C_TIMINGR_SDADEL_Msk /*!< Data hold time */\r
-#define I2C_TIMINGR_SCLDEL_Pos (20U) \r
-#define I2C_TIMINGR_SCLDEL_Msk (0xFUL << I2C_TIMINGR_SCLDEL_Pos) /*!< 0x00F00000 */\r
-#define I2C_TIMINGR_SCLDEL I2C_TIMINGR_SCLDEL_Msk /*!< Data setup time */\r
-#define I2C_TIMINGR_PRESC_Pos (28U) \r
-#define I2C_TIMINGR_PRESC_Msk (0xFUL << I2C_TIMINGR_PRESC_Pos) /*!< 0xF0000000 */\r
-#define I2C_TIMINGR_PRESC I2C_TIMINGR_PRESC_Msk /*!< Timings prescaler */\r
-\r
-/******************* Bit definition for I2C_TIMEOUTR register *******************/\r
-#define I2C_TIMEOUTR_TIMEOUTA_Pos (0U) \r
-#define I2C_TIMEOUTR_TIMEOUTA_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTA_Pos) /*!< 0x00000FFF */\r
-#define I2C_TIMEOUTR_TIMEOUTA I2C_TIMEOUTR_TIMEOUTA_Msk /*!< Bus timeout A */\r
-#define I2C_TIMEOUTR_TIDLE_Pos (12U) \r
-#define I2C_TIMEOUTR_TIDLE_Msk (0x1UL << I2C_TIMEOUTR_TIDLE_Pos) /*!< 0x00001000 */\r
-#define I2C_TIMEOUTR_TIDLE I2C_TIMEOUTR_TIDLE_Msk /*!< Idle clock timeout detection */\r
-#define I2C_TIMEOUTR_TIMOUTEN_Pos (15U) \r
-#define I2C_TIMEOUTR_TIMOUTEN_Msk (0x1UL << I2C_TIMEOUTR_TIMOUTEN_Pos) /*!< 0x00008000 */\r
-#define I2C_TIMEOUTR_TIMOUTEN I2C_TIMEOUTR_TIMOUTEN_Msk /*!< Clock timeout enable */\r
-#define I2C_TIMEOUTR_TIMEOUTB_Pos (16U) \r
-#define I2C_TIMEOUTR_TIMEOUTB_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTB_Pos) /*!< 0x0FFF0000 */\r
-#define I2C_TIMEOUTR_TIMEOUTB I2C_TIMEOUTR_TIMEOUTB_Msk /*!< Bus timeout B */\r
-#define I2C_TIMEOUTR_TEXTEN_Pos (31U) \r
-#define I2C_TIMEOUTR_TEXTEN_Msk (0x1UL << I2C_TIMEOUTR_TEXTEN_Pos) /*!< 0x80000000 */\r
-#define I2C_TIMEOUTR_TEXTEN I2C_TIMEOUTR_TEXTEN_Msk /*!< Extended clock timeout enable */\r
-\r
-/****************** Bit definition for I2C_ISR register *********************/\r
-#define I2C_ISR_TXE_Pos (0U) \r
-#define I2C_ISR_TXE_Msk (0x1UL << I2C_ISR_TXE_Pos) /*!< 0x00000001 */\r
-#define I2C_ISR_TXE I2C_ISR_TXE_Msk /*!< Transmit data register empty */\r
-#define I2C_ISR_TXIS_Pos (1U) \r
-#define I2C_ISR_TXIS_Msk (0x1UL << I2C_ISR_TXIS_Pos) /*!< 0x00000002 */\r
-#define I2C_ISR_TXIS I2C_ISR_TXIS_Msk /*!< Transmit interrupt status */\r
-#define I2C_ISR_RXNE_Pos (2U) \r
-#define I2C_ISR_RXNE_Msk (0x1UL << I2C_ISR_RXNE_Pos) /*!< 0x00000004 */\r
-#define I2C_ISR_RXNE I2C_ISR_RXNE_Msk /*!< Receive data register not empty */\r
-#define I2C_ISR_ADDR_Pos (3U) \r
-#define I2C_ISR_ADDR_Msk (0x1UL << I2C_ISR_ADDR_Pos) /*!< 0x00000008 */\r
-#define I2C_ISR_ADDR I2C_ISR_ADDR_Msk /*!< Address matched (slave mode) */\r
-#define I2C_ISR_NACKF_Pos (4U) \r
-#define I2C_ISR_NACKF_Msk (0x1UL << I2C_ISR_NACKF_Pos) /*!< 0x00000010 */\r
-#define I2C_ISR_NACKF I2C_ISR_NACKF_Msk /*!< NACK received flag */\r
-#define I2C_ISR_STOPF_Pos (5U) \r
-#define I2C_ISR_STOPF_Msk (0x1UL << I2C_ISR_STOPF_Pos) /*!< 0x00000020 */\r
-#define I2C_ISR_STOPF I2C_ISR_STOPF_Msk /*!< STOP detection flag */\r
-#define I2C_ISR_TC_Pos (6U) \r
-#define I2C_ISR_TC_Msk (0x1UL << I2C_ISR_TC_Pos) /*!< 0x00000040 */\r
-#define I2C_ISR_TC I2C_ISR_TC_Msk /*!< Transfer complete (master mode) */\r
-#define I2C_ISR_TCR_Pos (7U) \r
-#define I2C_ISR_TCR_Msk (0x1UL << I2C_ISR_TCR_Pos) /*!< 0x00000080 */\r
-#define I2C_ISR_TCR I2C_ISR_TCR_Msk /*!< Transfer complete reload */\r
-#define I2C_ISR_BERR_Pos (8U) \r
-#define I2C_ISR_BERR_Msk (0x1UL << I2C_ISR_BERR_Pos) /*!< 0x00000100 */\r
-#define I2C_ISR_BERR I2C_ISR_BERR_Msk /*!< Bus error */\r
-#define I2C_ISR_ARLO_Pos (9U) \r
-#define I2C_ISR_ARLO_Msk (0x1UL << I2C_ISR_ARLO_Pos) /*!< 0x00000200 */\r
-#define I2C_ISR_ARLO I2C_ISR_ARLO_Msk /*!< Arbitration lost */\r
-#define I2C_ISR_OVR_Pos (10U) \r
-#define I2C_ISR_OVR_Msk (0x1UL << I2C_ISR_OVR_Pos) /*!< 0x00000400 */\r
-#define I2C_ISR_OVR I2C_ISR_OVR_Msk /*!< Overrun/Underrun */\r
-#define I2C_ISR_PECERR_Pos (11U) \r
-#define I2C_ISR_PECERR_Msk (0x1UL << I2C_ISR_PECERR_Pos) /*!< 0x00000800 */\r
-#define I2C_ISR_PECERR I2C_ISR_PECERR_Msk /*!< PEC error in reception */\r
-#define I2C_ISR_TIMEOUT_Pos (12U) \r
-#define I2C_ISR_TIMEOUT_Msk (0x1UL << I2C_ISR_TIMEOUT_Pos) /*!< 0x00001000 */\r
-#define I2C_ISR_TIMEOUT I2C_ISR_TIMEOUT_Msk /*!< Timeout or Tlow detection flag */\r
-#define I2C_ISR_ALERT_Pos (13U) \r
-#define I2C_ISR_ALERT_Msk (0x1UL << I2C_ISR_ALERT_Pos) /*!< 0x00002000 */\r
-#define I2C_ISR_ALERT I2C_ISR_ALERT_Msk /*!< SMBus alert */\r
-#define I2C_ISR_BUSY_Pos (15U) \r
-#define I2C_ISR_BUSY_Msk (0x1UL << I2C_ISR_BUSY_Pos) /*!< 0x00008000 */\r
-#define I2C_ISR_BUSY I2C_ISR_BUSY_Msk /*!< Bus busy */\r
-#define I2C_ISR_DIR_Pos (16U) \r
-#define I2C_ISR_DIR_Msk (0x1UL << I2C_ISR_DIR_Pos) /*!< 0x00010000 */\r
-#define I2C_ISR_DIR I2C_ISR_DIR_Msk /*!< Transfer direction (slave mode) */\r
-#define I2C_ISR_ADDCODE_Pos (17U) \r
-#define I2C_ISR_ADDCODE_Msk (0x7FUL << I2C_ISR_ADDCODE_Pos) /*!< 0x00FE0000 */\r
-#define I2C_ISR_ADDCODE I2C_ISR_ADDCODE_Msk /*!< Address match code (slave mode) */\r
-\r
-/****************** Bit definition for I2C_ICR register *********************/\r
-#define I2C_ICR_ADDRCF_Pos (3U) \r
-#define I2C_ICR_ADDRCF_Msk (0x1UL << I2C_ICR_ADDRCF_Pos) /*!< 0x00000008 */\r
-#define I2C_ICR_ADDRCF I2C_ICR_ADDRCF_Msk /*!< Address matched clear flag */\r
-#define I2C_ICR_NACKCF_Pos (4U) \r
-#define I2C_ICR_NACKCF_Msk (0x1UL << I2C_ICR_NACKCF_Pos) /*!< 0x00000010 */\r
-#define I2C_ICR_NACKCF I2C_ICR_NACKCF_Msk /*!< NACK clear flag */\r
-#define I2C_ICR_STOPCF_Pos (5U) \r
-#define I2C_ICR_STOPCF_Msk (0x1UL << I2C_ICR_STOPCF_Pos) /*!< 0x00000020 */\r
-#define I2C_ICR_STOPCF I2C_ICR_STOPCF_Msk /*!< STOP detection clear flag */\r
-#define I2C_ICR_BERRCF_Pos (8U) \r
-#define I2C_ICR_BERRCF_Msk (0x1UL << I2C_ICR_BERRCF_Pos) /*!< 0x00000100 */\r
-#define I2C_ICR_BERRCF I2C_ICR_BERRCF_Msk /*!< Bus error clear flag */\r
-#define I2C_ICR_ARLOCF_Pos (9U) \r
-#define I2C_ICR_ARLOCF_Msk (0x1UL << I2C_ICR_ARLOCF_Pos) /*!< 0x00000200 */\r
-#define I2C_ICR_ARLOCF I2C_ICR_ARLOCF_Msk /*!< Arbitration lost clear flag */\r
-#define I2C_ICR_OVRCF_Pos (10U) \r
-#define I2C_ICR_OVRCF_Msk (0x1UL << I2C_ICR_OVRCF_Pos) /*!< 0x00000400 */\r
-#define I2C_ICR_OVRCF I2C_ICR_OVRCF_Msk /*!< Overrun/Underrun clear flag */\r
-#define I2C_ICR_PECCF_Pos (11U) \r
-#define I2C_ICR_PECCF_Msk (0x1UL << I2C_ICR_PECCF_Pos) /*!< 0x00000800 */\r
-#define I2C_ICR_PECCF I2C_ICR_PECCF_Msk /*!< PAC error clear flag */\r
-#define I2C_ICR_TIMOUTCF_Pos (12U) \r
-#define I2C_ICR_TIMOUTCF_Msk (0x1UL << I2C_ICR_TIMOUTCF_Pos) /*!< 0x00001000 */\r
-#define I2C_ICR_TIMOUTCF I2C_ICR_TIMOUTCF_Msk /*!< Timeout clear flag */\r
-#define I2C_ICR_ALERTCF_Pos (13U) \r
-#define I2C_ICR_ALERTCF_Msk (0x1UL << I2C_ICR_ALERTCF_Pos) /*!< 0x00002000 */\r
-#define I2C_ICR_ALERTCF I2C_ICR_ALERTCF_Msk /*!< Alert clear flag */\r
-\r
-/****************** Bit definition for I2C_PECR register *********************/\r
-#define I2C_PECR_PEC_Pos (0U) \r
-#define I2C_PECR_PEC_Msk (0xFFUL << I2C_PECR_PEC_Pos) /*!< 0x000000FF */\r
-#define I2C_PECR_PEC I2C_PECR_PEC_Msk /*!< PEC register */\r
-\r
-/****************** Bit definition for I2C_RXDR register *********************/\r
-#define I2C_RXDR_RXDATA_Pos (0U) \r
-#define I2C_RXDR_RXDATA_Msk (0xFFUL << I2C_RXDR_RXDATA_Pos) /*!< 0x000000FF */\r
-#define I2C_RXDR_RXDATA I2C_RXDR_RXDATA_Msk /*!< 8-bit receive data */\r
-\r
-/****************** Bit definition for I2C_TXDR register *********************/\r
-#define I2C_TXDR_TXDATA_Pos (0U) \r
-#define I2C_TXDR_TXDATA_Msk (0xFFUL << I2C_TXDR_TXDATA_Pos) /*!< 0x000000FF */\r
-#define I2C_TXDR_TXDATA I2C_TXDR_TXDATA_Msk /*!< 8-bit transmit data */\r
-\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Independent WATCHDOG */\r
-/* */\r
-/******************************************************************************/\r
-/******************* Bit definition for IWDG_KR register ********************/\r
-#define IWDG_KR_KEY_Pos (0U) \r
-#define IWDG_KR_KEY_Msk (0xFFFFUL << IWDG_KR_KEY_Pos) /*!< 0x0000FFFF */\r
-#define IWDG_KR_KEY IWDG_KR_KEY_Msk /*!<Key value (write only, read 0000h) */\r
-\r
-/******************* Bit definition for IWDG_PR register ********************/\r
-#define IWDG_PR_PR_Pos (0U) \r
-#define IWDG_PR_PR_Msk (0x7UL << IWDG_PR_PR_Pos) /*!< 0x00000007 */\r
-#define IWDG_PR_PR IWDG_PR_PR_Msk /*!<PR[2:0] (Prescaler divider) */\r
-#define IWDG_PR_PR_0 (0x1UL << IWDG_PR_PR_Pos) /*!< 0x01 */\r
-#define IWDG_PR_PR_1 (0x2UL << IWDG_PR_PR_Pos) /*!< 0x02 */\r
-#define IWDG_PR_PR_2 (0x4UL << IWDG_PR_PR_Pos) /*!< 0x04 */\r
-\r
-/******************* Bit definition for IWDG_RLR register *******************/\r
-#define IWDG_RLR_RL_Pos (0U) \r
-#define IWDG_RLR_RL_Msk (0xFFFUL << IWDG_RLR_RL_Pos) /*!< 0x00000FFF */\r
-#define IWDG_RLR_RL IWDG_RLR_RL_Msk /*!<Watchdog counter reload value */\r
-\r
-/******************* Bit definition for IWDG_SR register ********************/\r
-#define IWDG_SR_PVU_Pos (0U) \r
-#define IWDG_SR_PVU_Msk (0x1UL << IWDG_SR_PVU_Pos) /*!< 0x00000001 */\r
-#define IWDG_SR_PVU IWDG_SR_PVU_Msk /*!< Watchdog prescaler value update */\r
-#define IWDG_SR_RVU_Pos (1U) \r
-#define IWDG_SR_RVU_Msk (0x1UL << IWDG_SR_RVU_Pos) /*!< 0x00000002 */\r
-#define IWDG_SR_RVU IWDG_SR_RVU_Msk /*!< Watchdog counter reload value update */\r
-#define IWDG_SR_WVU_Pos (2U) \r
-#define IWDG_SR_WVU_Msk (0x1UL << IWDG_SR_WVU_Pos) /*!< 0x00000004 */\r
-#define IWDG_SR_WVU IWDG_SR_WVU_Msk /*!< Watchdog counter window value update */\r
-\r
-/******************* Bit definition for IWDG_KR register ********************/\r
-#define IWDG_WINR_WIN_Pos (0U) \r
-#define IWDG_WINR_WIN_Msk (0xFFFUL << IWDG_WINR_WIN_Pos) /*!< 0x00000FFF */\r
-#define IWDG_WINR_WIN IWDG_WINR_WIN_Msk /*!< Watchdog counter window value */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* LCD-TFT Display Controller (LTDC) */\r
-/* */\r
-/******************************************************************************/\r
-\r
-/******************** Bit definition for LTDC_SSCR register *****************/\r
-\r
-#define LTDC_SSCR_VSH_Pos (0U) \r
-#define LTDC_SSCR_VSH_Msk (0x7FFUL << LTDC_SSCR_VSH_Pos) /*!< 0x000007FF */\r
-#define LTDC_SSCR_VSH LTDC_SSCR_VSH_Msk /*!< Vertical Synchronization Height */\r
-#define LTDC_SSCR_HSW_Pos (16U) \r
-#define LTDC_SSCR_HSW_Msk (0xFFFUL << LTDC_SSCR_HSW_Pos) /*!< 0x0FFF0000 */\r
-#define LTDC_SSCR_HSW LTDC_SSCR_HSW_Msk /*!< Horizontal Synchronization Width */\r
-\r
-/******************** Bit definition for LTDC_BPCR register *****************/\r
-\r
-#define LTDC_BPCR_AVBP_Pos (0U) \r
-#define LTDC_BPCR_AVBP_Msk (0x7FFUL << LTDC_BPCR_AVBP_Pos) /*!< 0x000007FF */\r
-#define LTDC_BPCR_AVBP LTDC_BPCR_AVBP_Msk /*!< Accumulated Vertical Back Porch */\r
-#define LTDC_BPCR_AHBP_Pos (16U) \r
-#define LTDC_BPCR_AHBP_Msk (0xFFFUL << LTDC_BPCR_AHBP_Pos) /*!< 0x0FFF0000 */\r
-#define LTDC_BPCR_AHBP LTDC_BPCR_AHBP_Msk /*!< Accumulated Horizontal Back Porch */\r
-\r
-/******************** Bit definition for LTDC_AWCR register *****************/\r
-\r
-#define LTDC_AWCR_AAH_Pos (0U) \r
-#define LTDC_AWCR_AAH_Msk (0x7FFUL << LTDC_AWCR_AAH_Pos) /*!< 0x000007FF */\r
-#define LTDC_AWCR_AAH LTDC_AWCR_AAH_Msk /*!< Accumulated Active heigh */\r
-#define LTDC_AWCR_AAW_Pos (16U) \r
-#define LTDC_AWCR_AAW_Msk (0xFFFUL << LTDC_AWCR_AAW_Pos) /*!< 0x0FFF0000 */\r
-#define LTDC_AWCR_AAW LTDC_AWCR_AAW_Msk /*!< Accumulated Active Width */\r
-\r
-/******************** Bit definition for LTDC_TWCR register *****************/\r
-\r
-#define LTDC_TWCR_TOTALH_Pos (0U) \r
-#define LTDC_TWCR_TOTALH_Msk (0x7FFUL << LTDC_TWCR_TOTALH_Pos) /*!< 0x000007FF */\r
-#define LTDC_TWCR_TOTALH LTDC_TWCR_TOTALH_Msk /*!< Total Heigh */\r
-#define LTDC_TWCR_TOTALW_Pos (16U) \r
-#define LTDC_TWCR_TOTALW_Msk (0xFFFUL << LTDC_TWCR_TOTALW_Pos) /*!< 0x0FFF0000 */\r
-#define LTDC_TWCR_TOTALW LTDC_TWCR_TOTALW_Msk /*!< Total Width */\r
-\r
-/******************** Bit definition for LTDC_GCR register ******************/\r
-\r
-#define LTDC_GCR_LTDCEN_Pos (0U) \r
-#define LTDC_GCR_LTDCEN_Msk (0x1UL << LTDC_GCR_LTDCEN_Pos) /*!< 0x00000001 */\r
-#define LTDC_GCR_LTDCEN LTDC_GCR_LTDCEN_Msk /*!< LCD-TFT controller enable bit */\r
-#define LTDC_GCR_DBW_Pos (4U) \r
-#define LTDC_GCR_DBW_Msk (0x7UL << LTDC_GCR_DBW_Pos) /*!< 0x00000070 */\r
-#define LTDC_GCR_DBW LTDC_GCR_DBW_Msk /*!< Dither Blue Width */\r
-#define LTDC_GCR_DGW_Pos (8U) \r
-#define LTDC_GCR_DGW_Msk (0x7UL << LTDC_GCR_DGW_Pos) /*!< 0x00000700 */\r
-#define LTDC_GCR_DGW LTDC_GCR_DGW_Msk /*!< Dither Green Width */\r
-#define LTDC_GCR_DRW_Pos (12U) \r
-#define LTDC_GCR_DRW_Msk (0x7UL << LTDC_GCR_DRW_Pos) /*!< 0x00007000 */\r
-#define LTDC_GCR_DRW LTDC_GCR_DRW_Msk /*!< Dither Red Width */\r
-#define LTDC_GCR_DEN_Pos (16U) \r
-#define LTDC_GCR_DEN_Msk (0x1UL << LTDC_GCR_DEN_Pos) /*!< 0x00010000 */\r
-#define LTDC_GCR_DEN LTDC_GCR_DEN_Msk /*!< Dither Enable */\r
-#define LTDC_GCR_PCPOL_Pos (28U) \r
-#define LTDC_GCR_PCPOL_Msk (0x1UL << LTDC_GCR_PCPOL_Pos) /*!< 0x10000000 */\r
-#define LTDC_GCR_PCPOL LTDC_GCR_PCPOL_Msk /*!< Pixel Clock Polarity */\r
-#define LTDC_GCR_DEPOL_Pos (29U) \r
-#define LTDC_GCR_DEPOL_Msk (0x1UL << LTDC_GCR_DEPOL_Pos) /*!< 0x20000000 */\r
-#define LTDC_GCR_DEPOL LTDC_GCR_DEPOL_Msk /*!< Data Enable Polarity */\r
-#define LTDC_GCR_VSPOL_Pos (30U) \r
-#define LTDC_GCR_VSPOL_Msk (0x1UL << LTDC_GCR_VSPOL_Pos) /*!< 0x40000000 */\r
-#define LTDC_GCR_VSPOL LTDC_GCR_VSPOL_Msk /*!< Vertical Synchronization Polarity */\r
-#define LTDC_GCR_HSPOL_Pos (31U) \r
-#define LTDC_GCR_HSPOL_Msk (0x1UL << LTDC_GCR_HSPOL_Pos) /*!< 0x80000000 */\r
-#define LTDC_GCR_HSPOL LTDC_GCR_HSPOL_Msk /*!< Horizontal Synchronization Polarity */\r
-\r
-\r
-/******************** Bit definition for LTDC_SRCR register *****************/\r
-\r
-#define LTDC_SRCR_IMR_Pos (0U) \r
-#define LTDC_SRCR_IMR_Msk (0x1UL << LTDC_SRCR_IMR_Pos) /*!< 0x00000001 */\r
-#define LTDC_SRCR_IMR LTDC_SRCR_IMR_Msk /*!< Immediate Reload */\r
-#define LTDC_SRCR_VBR_Pos (1U) \r
-#define LTDC_SRCR_VBR_Msk (0x1UL << LTDC_SRCR_VBR_Pos) /*!< 0x00000002 */\r
-#define LTDC_SRCR_VBR LTDC_SRCR_VBR_Msk /*!< Vertical Blanking Reload */\r
-\r
-/******************** Bit definition for LTDC_BCCR register *****************/\r
-\r
-#define LTDC_BCCR_BCBLUE_Pos (0U) \r
-#define LTDC_BCCR_BCBLUE_Msk (0xFFUL << LTDC_BCCR_BCBLUE_Pos) /*!< 0x000000FF */\r
-#define LTDC_BCCR_BCBLUE LTDC_BCCR_BCBLUE_Msk /*!< Background Blue value */\r
-#define LTDC_BCCR_BCGREEN_Pos (8U) \r
-#define LTDC_BCCR_BCGREEN_Msk (0xFFUL << LTDC_BCCR_BCGREEN_Pos) /*!< 0x0000FF00 */\r
-#define LTDC_BCCR_BCGREEN LTDC_BCCR_BCGREEN_Msk /*!< Background Green value */\r
-#define LTDC_BCCR_BCRED_Pos (16U) \r
-#define LTDC_BCCR_BCRED_Msk (0xFFUL << LTDC_BCCR_BCRED_Pos) /*!< 0x00FF0000 */\r
-#define LTDC_BCCR_BCRED LTDC_BCCR_BCRED_Msk /*!< Background Red value */\r
-\r
-/******************** Bit definition for LTDC_IER register ******************/\r
-\r
-#define LTDC_IER_LIE_Pos (0U) \r
-#define LTDC_IER_LIE_Msk (0x1UL << LTDC_IER_LIE_Pos) /*!< 0x00000001 */\r
-#define LTDC_IER_LIE LTDC_IER_LIE_Msk /*!< Line Interrupt Enable */\r
-#define LTDC_IER_FUIE_Pos (1U) \r
-#define LTDC_IER_FUIE_Msk (0x1UL << LTDC_IER_FUIE_Pos) /*!< 0x00000002 */\r
-#define LTDC_IER_FUIE LTDC_IER_FUIE_Msk /*!< FIFO Underrun Interrupt Enable */\r
-#define LTDC_IER_TERRIE_Pos (2U) \r
-#define LTDC_IER_TERRIE_Msk (0x1UL << LTDC_IER_TERRIE_Pos) /*!< 0x00000004 */\r
-#define LTDC_IER_TERRIE LTDC_IER_TERRIE_Msk /*!< Transfer Error Interrupt Enable */\r
-#define LTDC_IER_RRIE_Pos (3U) \r
-#define LTDC_IER_RRIE_Msk (0x1UL << LTDC_IER_RRIE_Pos) /*!< 0x00000008 */\r
-#define LTDC_IER_RRIE LTDC_IER_RRIE_Msk /*!< Register Reload interrupt enable */\r
-\r
-/******************** Bit definition for LTDC_ISR register ******************/\r
-\r
-#define LTDC_ISR_LIF_Pos (0U) \r
-#define LTDC_ISR_LIF_Msk (0x1UL << LTDC_ISR_LIF_Pos) /*!< 0x00000001 */\r
-#define LTDC_ISR_LIF LTDC_ISR_LIF_Msk /*!< Line Interrupt Flag */\r
-#define LTDC_ISR_FUIF_Pos (1U) \r
-#define LTDC_ISR_FUIF_Msk (0x1UL << LTDC_ISR_FUIF_Pos) /*!< 0x00000002 */\r
-#define LTDC_ISR_FUIF LTDC_ISR_FUIF_Msk /*!< FIFO Underrun Interrupt Flag */\r
-#define LTDC_ISR_TERRIF_Pos (2U) \r
-#define LTDC_ISR_TERRIF_Msk (0x1UL << LTDC_ISR_TERRIF_Pos) /*!< 0x00000004 */\r
-#define LTDC_ISR_TERRIF LTDC_ISR_TERRIF_Msk /*!< Transfer Error Interrupt Flag */\r
-#define LTDC_ISR_RRIF_Pos (3U) \r
-#define LTDC_ISR_RRIF_Msk (0x1UL << LTDC_ISR_RRIF_Pos) /*!< 0x00000008 */\r
-#define LTDC_ISR_RRIF LTDC_ISR_RRIF_Msk /*!< Register Reload interrupt Flag */\r
-\r
-/******************** Bit definition for LTDC_ICR register ******************/\r
-\r
-#define LTDC_ICR_CLIF_Pos (0U) \r
-#define LTDC_ICR_CLIF_Msk (0x1UL << LTDC_ICR_CLIF_Pos) /*!< 0x00000001 */\r
-#define LTDC_ICR_CLIF LTDC_ICR_CLIF_Msk /*!< Clears the Line Interrupt Flag */\r
-#define LTDC_ICR_CFUIF_Pos (1U) \r
-#define LTDC_ICR_CFUIF_Msk (0x1UL << LTDC_ICR_CFUIF_Pos) /*!< 0x00000002 */\r
-#define LTDC_ICR_CFUIF LTDC_ICR_CFUIF_Msk /*!< Clears the FIFO Underrun Interrupt Flag */\r
-#define LTDC_ICR_CTERRIF_Pos (2U) \r
-#define LTDC_ICR_CTERRIF_Msk (0x1UL << LTDC_ICR_CTERRIF_Pos) /*!< 0x00000004 */\r
-#define LTDC_ICR_CTERRIF LTDC_ICR_CTERRIF_Msk /*!< Clears the Transfer Error Interrupt Flag */\r
-#define LTDC_ICR_CRRIF_Pos (3U) \r
-#define LTDC_ICR_CRRIF_Msk (0x1UL << LTDC_ICR_CRRIF_Pos) /*!< 0x00000008 */\r
-#define LTDC_ICR_CRRIF LTDC_ICR_CRRIF_Msk /*!< Clears Register Reload interrupt Flag */\r
-\r
-/******************** Bit definition for LTDC_LIPCR register ****************/\r
-\r
-#define LTDC_LIPCR_LIPOS_Pos (0U) \r
-#define LTDC_LIPCR_LIPOS_Msk (0x7FFUL << LTDC_LIPCR_LIPOS_Pos) /*!< 0x000007FF */\r
-#define LTDC_LIPCR_LIPOS LTDC_LIPCR_LIPOS_Msk /*!< Line Interrupt Position */\r
-\r
-/******************** Bit definition for LTDC_CPSR register *****************/\r
-\r
-#define LTDC_CPSR_CYPOS_Pos (0U) \r
-#define LTDC_CPSR_CYPOS_Msk (0xFFFFUL << LTDC_CPSR_CYPOS_Pos) /*!< 0x0000FFFF */\r
-#define LTDC_CPSR_CYPOS LTDC_CPSR_CYPOS_Msk /*!< Current Y Position */\r
-#define LTDC_CPSR_CXPOS_Pos (16U) \r
-#define LTDC_CPSR_CXPOS_Msk (0xFFFFUL << LTDC_CPSR_CXPOS_Pos) /*!< 0xFFFF0000 */\r
-#define LTDC_CPSR_CXPOS LTDC_CPSR_CXPOS_Msk /*!< Current X Position */\r
-\r
-/******************** Bit definition for LTDC_CDSR register *****************/\r
-\r
-#define LTDC_CDSR_VDES_Pos (0U) \r
-#define LTDC_CDSR_VDES_Msk (0x1UL << LTDC_CDSR_VDES_Pos) /*!< 0x00000001 */\r
-#define LTDC_CDSR_VDES LTDC_CDSR_VDES_Msk /*!< Vertical Data Enable Status */\r
-#define LTDC_CDSR_HDES_Pos (1U) \r
-#define LTDC_CDSR_HDES_Msk (0x1UL << LTDC_CDSR_HDES_Pos) /*!< 0x00000002 */\r
-#define LTDC_CDSR_HDES LTDC_CDSR_HDES_Msk /*!< Horizontal Data Enable Status */\r
-#define LTDC_CDSR_VSYNCS_Pos (2U) \r
-#define LTDC_CDSR_VSYNCS_Msk (0x1UL << LTDC_CDSR_VSYNCS_Pos) /*!< 0x00000004 */\r
-#define LTDC_CDSR_VSYNCS LTDC_CDSR_VSYNCS_Msk /*!< Vertical Synchronization Status */\r
-#define LTDC_CDSR_HSYNCS_Pos (3U) \r
-#define LTDC_CDSR_HSYNCS_Msk (0x1UL << LTDC_CDSR_HSYNCS_Pos) /*!< 0x00000008 */\r
-#define LTDC_CDSR_HSYNCS LTDC_CDSR_HSYNCS_Msk /*!< Horizontal Synchronization Status */\r
-\r
-/******************** Bit definition for LTDC_LxCR register *****************/\r
-\r
-#define LTDC_LxCR_LEN_Pos (0U) \r
-#define LTDC_LxCR_LEN_Msk (0x1UL << LTDC_LxCR_LEN_Pos) /*!< 0x00000001 */\r
-#define LTDC_LxCR_LEN LTDC_LxCR_LEN_Msk /*!< Layer Enable */\r
-#define LTDC_LxCR_COLKEN_Pos (1U) \r
-#define LTDC_LxCR_COLKEN_Msk (0x1UL << LTDC_LxCR_COLKEN_Pos) /*!< 0x00000002 */\r
-#define LTDC_LxCR_COLKEN LTDC_LxCR_COLKEN_Msk /*!< Color Keying Enable */\r
-#define LTDC_LxCR_CLUTEN_Pos (4U) \r
-#define LTDC_LxCR_CLUTEN_Msk (0x1UL << LTDC_LxCR_CLUTEN_Pos) /*!< 0x00000010 */\r
-#define LTDC_LxCR_CLUTEN LTDC_LxCR_CLUTEN_Msk /*!< Color Lockup Table Enable */\r
-\r
-/******************** Bit definition for LTDC_LxWHPCR register **************/\r
-\r
-#define LTDC_LxWHPCR_WHSTPOS_Pos (0U) \r
-#define LTDC_LxWHPCR_WHSTPOS_Msk (0xFFFUL << LTDC_LxWHPCR_WHSTPOS_Pos) /*!< 0x00000FFF */\r
-#define LTDC_LxWHPCR_WHSTPOS LTDC_LxWHPCR_WHSTPOS_Msk /*!< Window Horizontal Start Position */\r
-#define LTDC_LxWHPCR_WHSPPOS_Pos (16U) \r
-#define LTDC_LxWHPCR_WHSPPOS_Msk (0xFFFFUL << LTDC_LxWHPCR_WHSPPOS_Pos) /*!< 0xFFFF0000 */\r
-#define LTDC_LxWHPCR_WHSPPOS LTDC_LxWHPCR_WHSPPOS_Msk /*!< Window Horizontal Stop Position */\r
-\r
-/******************** Bit definition for LTDC_LxWVPCR register **************/\r
-\r
-#define LTDC_LxWVPCR_WVSTPOS_Pos (0U) \r
-#define LTDC_LxWVPCR_WVSTPOS_Msk (0xFFFUL << LTDC_LxWVPCR_WVSTPOS_Pos) /*!< 0x00000FFF */\r
-#define LTDC_LxWVPCR_WVSTPOS LTDC_LxWVPCR_WVSTPOS_Msk /*!< Window Vertical Start Position */\r
-#define LTDC_LxWVPCR_WVSPPOS_Pos (16U) \r
-#define LTDC_LxWVPCR_WVSPPOS_Msk (0xFFFFUL << LTDC_LxWVPCR_WVSPPOS_Pos) /*!< 0xFFFF0000 */\r
-#define LTDC_LxWVPCR_WVSPPOS LTDC_LxWVPCR_WVSPPOS_Msk /*!< Window Vertical Stop Position */\r
-\r
-/******************** Bit definition for LTDC_LxCKCR register ***************/\r
-\r
-#define LTDC_LxCKCR_CKBLUE_Pos (0U) \r
-#define LTDC_LxCKCR_CKBLUE_Msk (0xFFUL << LTDC_LxCKCR_CKBLUE_Pos) /*!< 0x000000FF */\r
-#define LTDC_LxCKCR_CKBLUE LTDC_LxCKCR_CKBLUE_Msk /*!< Color Key Blue value */\r
-#define LTDC_LxCKCR_CKGREEN_Pos (8U) \r
-#define LTDC_LxCKCR_CKGREEN_Msk (0xFFUL << LTDC_LxCKCR_CKGREEN_Pos) /*!< 0x0000FF00 */\r
-#define LTDC_LxCKCR_CKGREEN LTDC_LxCKCR_CKGREEN_Msk /*!< Color Key Green value */\r
-#define LTDC_LxCKCR_CKRED_Pos (16U) \r
-#define LTDC_LxCKCR_CKRED_Msk (0xFFUL << LTDC_LxCKCR_CKRED_Pos) /*!< 0x00FF0000 */\r
-#define LTDC_LxCKCR_CKRED LTDC_LxCKCR_CKRED_Msk /*!< Color Key Red value */\r
-\r
-/******************** Bit definition for LTDC_LxPFCR register ***************/\r
-\r
-#define LTDC_LxPFCR_PF_Pos (0U) \r
-#define LTDC_LxPFCR_PF_Msk (0x7UL << LTDC_LxPFCR_PF_Pos) /*!< 0x00000007 */\r
-#define LTDC_LxPFCR_PF LTDC_LxPFCR_PF_Msk /*!< Pixel Format */\r
-\r
-/******************** Bit definition for LTDC_LxCACR register ***************/\r
-\r
-#define LTDC_LxCACR_CONSTA_Pos (0U) \r
-#define LTDC_LxCACR_CONSTA_Msk (0xFFUL << LTDC_LxCACR_CONSTA_Pos) /*!< 0x000000FF */\r
-#define LTDC_LxCACR_CONSTA LTDC_LxCACR_CONSTA_Msk /*!< Constant Alpha */\r
-\r
-/******************** Bit definition for LTDC_LxDCCR register ***************/\r
-\r
-#define LTDC_LxDCCR_DCBLUE_Pos (0U) \r
-#define LTDC_LxDCCR_DCBLUE_Msk (0xFFUL << LTDC_LxDCCR_DCBLUE_Pos) /*!< 0x000000FF */\r
-#define LTDC_LxDCCR_DCBLUE LTDC_LxDCCR_DCBLUE_Msk /*!< Default Color Blue */\r
-#define LTDC_LxDCCR_DCGREEN_Pos (8U) \r
-#define LTDC_LxDCCR_DCGREEN_Msk (0xFFUL << LTDC_LxDCCR_DCGREEN_Pos) /*!< 0x0000FF00 */\r
-#define LTDC_LxDCCR_DCGREEN LTDC_LxDCCR_DCGREEN_Msk /*!< Default Color Green */\r
-#define LTDC_LxDCCR_DCRED_Pos (16U) \r
-#define LTDC_LxDCCR_DCRED_Msk (0xFFUL << LTDC_LxDCCR_DCRED_Pos) /*!< 0x00FF0000 */\r
-#define LTDC_LxDCCR_DCRED LTDC_LxDCCR_DCRED_Msk /*!< Default Color Red */\r
-#define LTDC_LxDCCR_DCALPHA_Pos (24U) \r
-#define LTDC_LxDCCR_DCALPHA_Msk (0xFFUL << LTDC_LxDCCR_DCALPHA_Pos) /*!< 0xFF000000 */\r
-#define LTDC_LxDCCR_DCALPHA LTDC_LxDCCR_DCALPHA_Msk /*!< Default Color Alpha */\r
-\r
-/******************** Bit definition for LTDC_LxBFCR register ***************/\r
-\r
-#define LTDC_LxBFCR_BF2_Pos (0U) \r
-#define LTDC_LxBFCR_BF2_Msk (0x7UL << LTDC_LxBFCR_BF2_Pos) /*!< 0x00000007 */\r
-#define LTDC_LxBFCR_BF2 LTDC_LxBFCR_BF2_Msk /*!< Blending Factor 2 */\r
-#define LTDC_LxBFCR_BF1_Pos (8U) \r
-#define LTDC_LxBFCR_BF1_Msk (0x7UL << LTDC_LxBFCR_BF1_Pos) /*!< 0x00000700 */\r
-#define LTDC_LxBFCR_BF1 LTDC_LxBFCR_BF1_Msk /*!< Blending Factor 1 */\r
-\r
-/******************** Bit definition for LTDC_LxCFBAR register **************/\r
-\r
-#define LTDC_LxCFBAR_CFBADD_Pos (0U) \r
-#define LTDC_LxCFBAR_CFBADD_Msk (0xFFFFFFFFUL << LTDC_LxCFBAR_CFBADD_Pos) /*!< 0xFFFFFFFF */\r
-#define LTDC_LxCFBAR_CFBADD LTDC_LxCFBAR_CFBADD_Msk /*!< Color Frame Buffer Start Address */\r
-\r
-/******************** Bit definition for LTDC_LxCFBLR register **************/\r
-\r
-#define LTDC_LxCFBLR_CFBLL_Pos (0U) \r
-#define LTDC_LxCFBLR_CFBLL_Msk (0x1FFFUL << LTDC_LxCFBLR_CFBLL_Pos) /*!< 0x00001FFF */\r
-#define LTDC_LxCFBLR_CFBLL LTDC_LxCFBLR_CFBLL_Msk /*!< Color Frame Buffer Line Length */\r
-#define LTDC_LxCFBLR_CFBP_Pos (16U) \r
-#define LTDC_LxCFBLR_CFBP_Msk (0x1FFFUL << LTDC_LxCFBLR_CFBP_Pos) /*!< 0x1FFF0000 */\r
-#define LTDC_LxCFBLR_CFBP LTDC_LxCFBLR_CFBP_Msk /*!< Color Frame Buffer Pitch in bytes */\r
-\r
-/******************** Bit definition for LTDC_LxCFBLNR register *************/\r
-\r
-#define LTDC_LxCFBLNR_CFBLNBR_Pos (0U) \r
-#define LTDC_LxCFBLNR_CFBLNBR_Msk (0x7FFUL << LTDC_LxCFBLNR_CFBLNBR_Pos) /*!< 0x000007FF */\r
-#define LTDC_LxCFBLNR_CFBLNBR LTDC_LxCFBLNR_CFBLNBR_Msk /*!< Frame Buffer Line Number */\r
-\r
-/******************** Bit definition for LTDC_LxCLUTWR register *************/\r
-\r
-#define LTDC_LxCLUTWR_BLUE_Pos (0U) \r
-#define LTDC_LxCLUTWR_BLUE_Msk (0xFFUL << LTDC_LxCLUTWR_BLUE_Pos) /*!< 0x000000FF */\r
-#define LTDC_LxCLUTWR_BLUE LTDC_LxCLUTWR_BLUE_Msk /*!< Blue value */\r
-#define LTDC_LxCLUTWR_GREEN_Pos (8U) \r
-#define LTDC_LxCLUTWR_GREEN_Msk (0xFFUL << LTDC_LxCLUTWR_GREEN_Pos) /*!< 0x0000FF00 */\r
-#define LTDC_LxCLUTWR_GREEN LTDC_LxCLUTWR_GREEN_Msk /*!< Green value */\r
-#define LTDC_LxCLUTWR_RED_Pos (16U) \r
-#define LTDC_LxCLUTWR_RED_Msk (0xFFUL << LTDC_LxCLUTWR_RED_Pos) /*!< 0x00FF0000 */\r
-#define LTDC_LxCLUTWR_RED LTDC_LxCLUTWR_RED_Msk /*!< Red value */\r
-#define LTDC_LxCLUTWR_CLUTADD_Pos (24U) \r
-#define LTDC_LxCLUTWR_CLUTADD_Msk (0xFFUL << LTDC_LxCLUTWR_CLUTADD_Pos) /*!< 0xFF000000 */\r
-#define LTDC_LxCLUTWR_CLUTADD LTDC_LxCLUTWR_CLUTADD_Msk /*!< CLUT address */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Power Control */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for PWR_CR1 register ********************/\r
-#define PWR_CR1_LPDS_Pos (0U) \r
-#define PWR_CR1_LPDS_Msk (0x1UL << PWR_CR1_LPDS_Pos) /*!< 0x00000001 */\r
-#define PWR_CR1_LPDS PWR_CR1_LPDS_Msk /*!< Low-Power Deepsleep */\r
-#define PWR_CR1_PDDS_Pos (1U) \r
-#define PWR_CR1_PDDS_Msk (0x1UL << PWR_CR1_PDDS_Pos) /*!< 0x00000002 */\r
-#define PWR_CR1_PDDS PWR_CR1_PDDS_Msk /*!< Power Down Deepsleep */\r
-#define PWR_CR1_CSBF_Pos (3U) \r
-#define PWR_CR1_CSBF_Msk (0x1UL << PWR_CR1_CSBF_Pos) /*!< 0x00000008 */\r
-#define PWR_CR1_CSBF PWR_CR1_CSBF_Msk /*!< Clear Standby Flag */\r
-#define PWR_CR1_PVDE_Pos (4U) \r
-#define PWR_CR1_PVDE_Msk (0x1UL << PWR_CR1_PVDE_Pos) /*!< 0x00000010 */\r
-#define PWR_CR1_PVDE PWR_CR1_PVDE_Msk /*!< Power Voltage Detector Enable */\r
-#define PWR_CR1_PLS_Pos (5U) \r
-#define PWR_CR1_PLS_Msk (0x7UL << PWR_CR1_PLS_Pos) /*!< 0x000000E0 */\r
-#define PWR_CR1_PLS PWR_CR1_PLS_Msk /*!< PLS[2:0] bits (PVD Level Selection) */\r
-#define PWR_CR1_PLS_0 (0x1UL << PWR_CR1_PLS_Pos) /*!< 0x00000020 */\r
-#define PWR_CR1_PLS_1 (0x2UL << PWR_CR1_PLS_Pos) /*!< 0x00000040 */\r
-#define PWR_CR1_PLS_2 (0x4UL << PWR_CR1_PLS_Pos) /*!< 0x00000080 */\r
-\r
-/*!< PVD level configuration */\r
-#define PWR_CR1_PLS_LEV0 0x00000000U /*!< PVD level 0 */\r
-#define PWR_CR1_PLS_LEV1_Pos (5U) \r
-#define PWR_CR1_PLS_LEV1_Msk (0x1UL << PWR_CR1_PLS_LEV1_Pos) /*!< 0x00000020 */\r
-#define PWR_CR1_PLS_LEV1 PWR_CR1_PLS_LEV1_Msk /*!< PVD level 1 */\r
-#define PWR_CR1_PLS_LEV2_Pos (6U) \r
-#define PWR_CR1_PLS_LEV2_Msk (0x1UL << PWR_CR1_PLS_LEV2_Pos) /*!< 0x00000040 */\r
-#define PWR_CR1_PLS_LEV2 PWR_CR1_PLS_LEV2_Msk /*!< PVD level 2 */\r
-#define PWR_CR1_PLS_LEV3_Pos (5U) \r
-#define PWR_CR1_PLS_LEV3_Msk (0x3UL << PWR_CR1_PLS_LEV3_Pos) /*!< 0x00000060 */\r
-#define PWR_CR1_PLS_LEV3 PWR_CR1_PLS_LEV3_Msk /*!< PVD level 3 */\r
-#define PWR_CR1_PLS_LEV4_Pos (7U) \r
-#define PWR_CR1_PLS_LEV4_Msk (0x1UL << PWR_CR1_PLS_LEV4_Pos) /*!< 0x00000080 */\r
-#define PWR_CR1_PLS_LEV4 PWR_CR1_PLS_LEV4_Msk /*!< PVD level 4 */\r
-#define PWR_CR1_PLS_LEV5_Pos (5U) \r
-#define PWR_CR1_PLS_LEV5_Msk (0x5UL << PWR_CR1_PLS_LEV5_Pos) /*!< 0x000000A0 */\r
-#define PWR_CR1_PLS_LEV5 PWR_CR1_PLS_LEV5_Msk /*!< PVD level 5 */\r
-#define PWR_CR1_PLS_LEV6_Pos (6U) \r
-#define PWR_CR1_PLS_LEV6_Msk (0x3UL << PWR_CR1_PLS_LEV6_Pos) /*!< 0x000000C0 */\r
-#define PWR_CR1_PLS_LEV6 PWR_CR1_PLS_LEV6_Msk /*!< PVD level 6 */\r
-#define PWR_CR1_PLS_LEV7_Pos (5U) \r
-#define PWR_CR1_PLS_LEV7_Msk (0x7UL << PWR_CR1_PLS_LEV7_Pos) /*!< 0x000000E0 */\r
-#define PWR_CR1_PLS_LEV7 PWR_CR1_PLS_LEV7_Msk /*!< PVD level 7 */\r
-#define PWR_CR1_DBP_Pos (8U) \r
-#define PWR_CR1_DBP_Msk (0x1UL << PWR_CR1_DBP_Pos) /*!< 0x00000100 */\r
-#define PWR_CR1_DBP PWR_CR1_DBP_Msk /*!< Disable Backup Domain write protection */\r
-#define PWR_CR1_FPDS_Pos (9U) \r
-#define PWR_CR1_FPDS_Msk (0x1UL << PWR_CR1_FPDS_Pos) /*!< 0x00000200 */\r
-#define PWR_CR1_FPDS PWR_CR1_FPDS_Msk /*!< Flash power down in Stop mode */\r
-#define PWR_CR1_LPUDS_Pos (10U) \r
-#define PWR_CR1_LPUDS_Msk (0x1UL << PWR_CR1_LPUDS_Pos) /*!< 0x00000400 */\r
-#define PWR_CR1_LPUDS PWR_CR1_LPUDS_Msk /*!< Low-power regulator in deepsleep under-drive mode */\r
-#define PWR_CR1_MRUDS_Pos (11U) \r
-#define PWR_CR1_MRUDS_Msk (0x1UL << PWR_CR1_MRUDS_Pos) /*!< 0x00000800 */\r
-#define PWR_CR1_MRUDS PWR_CR1_MRUDS_Msk /*!< Main regulator in deepsleep under-drive mode */\r
-#define PWR_CR1_ADCDC1_Pos (13U) \r
-#define PWR_CR1_ADCDC1_Msk (0x1UL << PWR_CR1_ADCDC1_Pos) /*!< 0x00002000 */\r
-#define PWR_CR1_ADCDC1 PWR_CR1_ADCDC1_Msk /*!< Refer to AN4073 on how to use this bit */\r
-#define PWR_CR1_VOS_Pos (14U) \r
-#define PWR_CR1_VOS_Msk (0x3UL << PWR_CR1_VOS_Pos) /*!< 0x0000C000 */\r
-#define PWR_CR1_VOS PWR_CR1_VOS_Msk /*!< VOS[1:0] bits (Regulator voltage scaling output selection) */\r
-#define PWR_CR1_VOS_0 (0x1UL << PWR_CR1_VOS_Pos) /*!< 0x00004000 */\r
-#define PWR_CR1_VOS_1 (0x2UL << PWR_CR1_VOS_Pos) /*!< 0x00008000 */\r
-#define PWR_CR1_ODEN_Pos (16U) \r
-#define PWR_CR1_ODEN_Msk (0x1UL << PWR_CR1_ODEN_Pos) /*!< 0x00010000 */\r
-#define PWR_CR1_ODEN PWR_CR1_ODEN_Msk /*!< Over Drive enable */\r
-#define PWR_CR1_ODSWEN_Pos (17U) \r
-#define PWR_CR1_ODSWEN_Msk (0x1UL << PWR_CR1_ODSWEN_Pos) /*!< 0x00020000 */\r
-#define PWR_CR1_ODSWEN PWR_CR1_ODSWEN_Msk /*!< Over Drive switch enabled */\r
-#define PWR_CR1_UDEN_Pos (18U) \r
-#define PWR_CR1_UDEN_Msk (0x3UL << PWR_CR1_UDEN_Pos) /*!< 0x000C0000 */\r
-#define PWR_CR1_UDEN PWR_CR1_UDEN_Msk /*!< Under Drive enable in stop mode */\r
-#define PWR_CR1_UDEN_0 (0x1UL << PWR_CR1_UDEN_Pos) /*!< 0x00040000 */\r
-#define PWR_CR1_UDEN_1 (0x2UL << PWR_CR1_UDEN_Pos) /*!< 0x00080000 */\r
-\r
-/******************* Bit definition for PWR_CSR1 register ********************/\r
-#define PWR_CSR1_WUIF_Pos (0U) \r
-#define PWR_CSR1_WUIF_Msk (0x1UL << PWR_CSR1_WUIF_Pos) /*!< 0x00000001 */\r
-#define PWR_CSR1_WUIF PWR_CSR1_WUIF_Msk /*!< Wake up internal Flag */\r
-#define PWR_CSR1_SBF_Pos (1U) \r
-#define PWR_CSR1_SBF_Msk (0x1UL << PWR_CSR1_SBF_Pos) /*!< 0x00000002 */\r
-#define PWR_CSR1_SBF PWR_CSR1_SBF_Msk /*!< Standby Flag */\r
-#define PWR_CSR1_PVDO_Pos (2U) \r
-#define PWR_CSR1_PVDO_Msk (0x1UL << PWR_CSR1_PVDO_Pos) /*!< 0x00000004 */\r
-#define PWR_CSR1_PVDO PWR_CSR1_PVDO_Msk /*!< PVD Output */\r
-#define PWR_CSR1_BRR_Pos (3U) \r
-#define PWR_CSR1_BRR_Msk (0x1UL << PWR_CSR1_BRR_Pos) /*!< 0x00000008 */\r
-#define PWR_CSR1_BRR PWR_CSR1_BRR_Msk /*!< Backup regulator ready */\r
-#define PWR_CSR1_EIWUP_Pos (8U) \r
-#define PWR_CSR1_EIWUP_Msk (0x1UL << PWR_CSR1_EIWUP_Pos) /*!< 0x00000100 */\r
-#define PWR_CSR1_EIWUP PWR_CSR1_EIWUP_Msk /*!< Enable internal wakeup */\r
-#define PWR_CSR1_BRE_Pos (9U) \r
-#define PWR_CSR1_BRE_Msk (0x1UL << PWR_CSR1_BRE_Pos) /*!< 0x00000200 */\r
-#define PWR_CSR1_BRE PWR_CSR1_BRE_Msk /*!< Backup regulator enable */\r
-#define PWR_CSR1_VOSRDY_Pos (14U) \r
-#define PWR_CSR1_VOSRDY_Msk (0x1UL << PWR_CSR1_VOSRDY_Pos) /*!< 0x00004000 */\r
-#define PWR_CSR1_VOSRDY PWR_CSR1_VOSRDY_Msk /*!< Regulator voltage scaling output selection ready */\r
-#define PWR_CSR1_ODRDY_Pos (16U) \r
-#define PWR_CSR1_ODRDY_Msk (0x1UL << PWR_CSR1_ODRDY_Pos) /*!< 0x00010000 */\r
-#define PWR_CSR1_ODRDY PWR_CSR1_ODRDY_Msk /*!< Over Drive generator ready */\r
-#define PWR_CSR1_ODSWRDY_Pos (17U) \r
-#define PWR_CSR1_ODSWRDY_Msk (0x1UL << PWR_CSR1_ODSWRDY_Pos) /*!< 0x00020000 */\r
-#define PWR_CSR1_ODSWRDY PWR_CSR1_ODSWRDY_Msk /*!< Over Drive Switch ready */\r
-#define PWR_CSR1_UDRDY_Pos (18U) \r
-#define PWR_CSR1_UDRDY_Msk (0x3UL << PWR_CSR1_UDRDY_Pos) /*!< 0x000C0000 */\r
-#define PWR_CSR1_UDRDY PWR_CSR1_UDRDY_Msk /*!< Under Drive ready */\r
-\r
-\r
-/******************** Bit definition for PWR_CR2 register ********************/\r
-#define PWR_CR2_CWUPF1_Pos (0U) \r
-#define PWR_CR2_CWUPF1_Msk (0x1UL << PWR_CR2_CWUPF1_Pos) /*!< 0x00000001 */\r
-#define PWR_CR2_CWUPF1 PWR_CR2_CWUPF1_Msk /*!< Clear Wakeup Pin Flag for PA0 */\r
-#define PWR_CR2_CWUPF2_Pos (1U) \r
-#define PWR_CR2_CWUPF2_Msk (0x1UL << PWR_CR2_CWUPF2_Pos) /*!< 0x00000002 */\r
-#define PWR_CR2_CWUPF2 PWR_CR2_CWUPF2_Msk /*!< Clear Wakeup Pin Flag for PA2 */\r
-#define PWR_CR2_CWUPF3_Pos (2U) \r
-#define PWR_CR2_CWUPF3_Msk (0x1UL << PWR_CR2_CWUPF3_Pos) /*!< 0x00000004 */\r
-#define PWR_CR2_CWUPF3 PWR_CR2_CWUPF3_Msk /*!< Clear Wakeup Pin Flag for PC1 */\r
-#define PWR_CR2_CWUPF4_Pos (3U) \r
-#define PWR_CR2_CWUPF4_Msk (0x1UL << PWR_CR2_CWUPF4_Pos) /*!< 0x00000008 */\r
-#define PWR_CR2_CWUPF4 PWR_CR2_CWUPF4_Msk /*!< Clear Wakeup Pin Flag for PC13 */\r
-#define PWR_CR2_CWUPF5_Pos (4U) \r
-#define PWR_CR2_CWUPF5_Msk (0x1UL << PWR_CR2_CWUPF5_Pos) /*!< 0x00000010 */\r
-#define PWR_CR2_CWUPF5 PWR_CR2_CWUPF5_Msk /*!< Clear Wakeup Pin Flag for PI8 */\r
-#define PWR_CR2_CWUPF6_Pos (5U) \r
-#define PWR_CR2_CWUPF6_Msk (0x1UL << PWR_CR2_CWUPF6_Pos) /*!< 0x00000020 */\r
-#define PWR_CR2_CWUPF6 PWR_CR2_CWUPF6_Msk /*!< Clear Wakeup Pin Flag for PI11 */\r
-#define PWR_CR2_WUPP1_Pos (8U) \r
-#define PWR_CR2_WUPP1_Msk (0x1UL << PWR_CR2_WUPP1_Pos) /*!< 0x00000100 */\r
-#define PWR_CR2_WUPP1 PWR_CR2_WUPP1_Msk /*!< Wakeup Pin Polarity bit for PA0 */\r
-#define PWR_CR2_WUPP2_Pos (9U) \r
-#define PWR_CR2_WUPP2_Msk (0x1UL << PWR_CR2_WUPP2_Pos) /*!< 0x00000200 */\r
-#define PWR_CR2_WUPP2 PWR_CR2_WUPP2_Msk /*!< Wakeup Pin Polarity bit for PA2 */\r
-#define PWR_CR2_WUPP3_Pos (10U) \r
-#define PWR_CR2_WUPP3_Msk (0x1UL << PWR_CR2_WUPP3_Pos) /*!< 0x00000400 */\r
-#define PWR_CR2_WUPP3 PWR_CR2_WUPP3_Msk /*!< Wakeup Pin Polarity bit for PC1 */\r
-#define PWR_CR2_WUPP4_Pos (11U) \r
-#define PWR_CR2_WUPP4_Msk (0x1UL << PWR_CR2_WUPP4_Pos) /*!< 0x00000800 */\r
-#define PWR_CR2_WUPP4 PWR_CR2_WUPP4_Msk /*!< Wakeup Pin Polarity bit for PC13 */\r
-#define PWR_CR2_WUPP5_Pos (12U) \r
-#define PWR_CR2_WUPP5_Msk (0x1UL << PWR_CR2_WUPP5_Pos) /*!< 0x00001000 */\r
-#define PWR_CR2_WUPP5 PWR_CR2_WUPP5_Msk /*!< Wakeup Pin Polarity bit for PI8 */\r
-#define PWR_CR2_WUPP6_Pos (13U) \r
-#define PWR_CR2_WUPP6_Msk (0x1UL << PWR_CR2_WUPP6_Pos) /*!< 0x00002000 */\r
-#define PWR_CR2_WUPP6 PWR_CR2_WUPP6_Msk /*!< Wakeup Pin Polarity bit for PI11 */\r
-\r
-/******************* Bit definition for PWR_CSR2 register ********************/\r
-#define PWR_CSR2_WUPF1_Pos (0U) \r
-#define PWR_CSR2_WUPF1_Msk (0x1UL << PWR_CSR2_WUPF1_Pos) /*!< 0x00000001 */\r
-#define PWR_CSR2_WUPF1 PWR_CSR2_WUPF1_Msk /*!< Wakeup Pin Flag for PA0 */\r
-#define PWR_CSR2_WUPF2_Pos (1U) \r
-#define PWR_CSR2_WUPF2_Msk (0x1UL << PWR_CSR2_WUPF2_Pos) /*!< 0x00000002 */\r
-#define PWR_CSR2_WUPF2 PWR_CSR2_WUPF2_Msk /*!< Wakeup Pin Flag for PA2 */\r
-#define PWR_CSR2_WUPF3_Pos (2U) \r
-#define PWR_CSR2_WUPF3_Msk (0x1UL << PWR_CSR2_WUPF3_Pos) /*!< 0x00000004 */\r
-#define PWR_CSR2_WUPF3 PWR_CSR2_WUPF3_Msk /*!< Wakeup Pin Flag for PC1 */\r
-#define PWR_CSR2_WUPF4_Pos (3U) \r
-#define PWR_CSR2_WUPF4_Msk (0x1UL << PWR_CSR2_WUPF4_Pos) /*!< 0x00000008 */\r
-#define PWR_CSR2_WUPF4 PWR_CSR2_WUPF4_Msk /*!< Wakeup Pin Flag for PC13 */\r
-#define PWR_CSR2_WUPF5_Pos (4U) \r
-#define PWR_CSR2_WUPF5_Msk (0x1UL << PWR_CSR2_WUPF5_Pos) /*!< 0x00000010 */\r
-#define PWR_CSR2_WUPF5 PWR_CSR2_WUPF5_Msk /*!< Wakeup Pin Flag for PI8 */\r
-#define PWR_CSR2_WUPF6_Pos (5U) \r
-#define PWR_CSR2_WUPF6_Msk (0x1UL << PWR_CSR2_WUPF6_Pos) /*!< 0x00000020 */\r
-#define PWR_CSR2_WUPF6 PWR_CSR2_WUPF6_Msk /*!< Wakeup Pin Flag for PI11 */\r
-#define PWR_CSR2_EWUP1_Pos (8U) \r
-#define PWR_CSR2_EWUP1_Msk (0x1UL << PWR_CSR2_EWUP1_Pos) /*!< 0x00000100 */\r
-#define PWR_CSR2_EWUP1 PWR_CSR2_EWUP1_Msk /*!< Enable Wakeup Pin PA0 */\r
-#define PWR_CSR2_EWUP2_Pos (9U) \r
-#define PWR_CSR2_EWUP2_Msk (0x1UL << PWR_CSR2_EWUP2_Pos) /*!< 0x00000200 */\r
-#define PWR_CSR2_EWUP2 PWR_CSR2_EWUP2_Msk /*!< Enable Wakeup Pin PA2 */\r
-#define PWR_CSR2_EWUP3_Pos (10U) \r
-#define PWR_CSR2_EWUP3_Msk (0x1UL << PWR_CSR2_EWUP3_Pos) /*!< 0x00000400 */\r
-#define PWR_CSR2_EWUP3 PWR_CSR2_EWUP3_Msk /*!< Enable Wakeup Pin PC1 */\r
-#define PWR_CSR2_EWUP4_Pos (11U) \r
-#define PWR_CSR2_EWUP4_Msk (0x1UL << PWR_CSR2_EWUP4_Pos) /*!< 0x00000800 */\r
-#define PWR_CSR2_EWUP4 PWR_CSR2_EWUP4_Msk /*!< Enable Wakeup Pin PC13 */\r
-#define PWR_CSR2_EWUP5_Pos (12U) \r
-#define PWR_CSR2_EWUP5_Msk (0x1UL << PWR_CSR2_EWUP5_Pos) /*!< 0x00001000 */\r
-#define PWR_CSR2_EWUP5 PWR_CSR2_EWUP5_Msk /*!< Enable Wakeup Pin PI8 */\r
-#define PWR_CSR2_EWUP6_Pos (13U) \r
-#define PWR_CSR2_EWUP6_Msk (0x1UL << PWR_CSR2_EWUP6_Pos) /*!< 0x00002000 */\r
-#define PWR_CSR2_EWUP6 PWR_CSR2_EWUP6_Msk /*!< Enable Wakeup Pin PI11 */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* QUADSPI */\r
-/* */\r
-/******************************************************************************/\r
-/***************** Bit definition for QUADSPI_CR register *******************/\r
-#define QUADSPI_CR_EN_Pos (0U) \r
-#define QUADSPI_CR_EN_Msk (0x1UL << QUADSPI_CR_EN_Pos) /*!< 0x00000001 */\r
-#define QUADSPI_CR_EN QUADSPI_CR_EN_Msk /*!< Enable */\r
-#define QUADSPI_CR_ABORT_Pos (1U) \r
-#define QUADSPI_CR_ABORT_Msk (0x1UL << QUADSPI_CR_ABORT_Pos) /*!< 0x00000002 */\r
-#define QUADSPI_CR_ABORT QUADSPI_CR_ABORT_Msk /*!< Abort request */\r
-#define QUADSPI_CR_DMAEN_Pos (2U) \r
-#define QUADSPI_CR_DMAEN_Msk (0x1UL << QUADSPI_CR_DMAEN_Pos) /*!< 0x00000004 */\r
-#define QUADSPI_CR_DMAEN QUADSPI_CR_DMAEN_Msk /*!< DMA Enable */\r
-#define QUADSPI_CR_TCEN_Pos (3U) \r
-#define QUADSPI_CR_TCEN_Msk (0x1UL << QUADSPI_CR_TCEN_Pos) /*!< 0x00000008 */\r
-#define QUADSPI_CR_TCEN QUADSPI_CR_TCEN_Msk /*!< Timeout Counter Enable */\r
-#define QUADSPI_CR_SSHIFT_Pos (4U) \r
-#define QUADSPI_CR_SSHIFT_Msk (0x1UL << QUADSPI_CR_SSHIFT_Pos) /*!< 0x00000010 */\r
-#define QUADSPI_CR_SSHIFT QUADSPI_CR_SSHIFT_Msk /*!< Sample Shift */\r
-#define QUADSPI_CR_DFM_Pos (6U) \r
-#define QUADSPI_CR_DFM_Msk (0x1UL << QUADSPI_CR_DFM_Pos) /*!< 0x00000040 */\r
-#define QUADSPI_CR_DFM QUADSPI_CR_DFM_Msk /*!< Dual Flash Mode */\r
-#define QUADSPI_CR_FSEL_Pos (7U) \r
-#define QUADSPI_CR_FSEL_Msk (0x1UL << QUADSPI_CR_FSEL_Pos) /*!< 0x00000080 */\r
-#define QUADSPI_CR_FSEL QUADSPI_CR_FSEL_Msk /*!< Flash Select */\r
-#define QUADSPI_CR_FTHRES_Pos (8U) \r
-#define QUADSPI_CR_FTHRES_Msk (0x1FUL << QUADSPI_CR_FTHRES_Pos) /*!< 0x00001F00 */\r
-#define QUADSPI_CR_FTHRES QUADSPI_CR_FTHRES_Msk /*!< FTHRES[4:0] FIFO Level */\r
-#define QUADSPI_CR_FTHRES_0 (0x01UL << QUADSPI_CR_FTHRES_Pos) /*!< 0x00000100 */\r
-#define QUADSPI_CR_FTHRES_1 (0x02UL << QUADSPI_CR_FTHRES_Pos) /*!< 0x00000200 */\r
-#define QUADSPI_CR_FTHRES_2 (0x04UL << QUADSPI_CR_FTHRES_Pos) /*!< 0x00000400 */\r
-#define QUADSPI_CR_FTHRES_3 (0x08UL << QUADSPI_CR_FTHRES_Pos) /*!< 0x00000800 */\r
-#define QUADSPI_CR_FTHRES_4 (0x10UL << QUADSPI_CR_FTHRES_Pos) /*!< 0x00001000 */\r
-#define QUADSPI_CR_TEIE_Pos (16U) \r
-#define QUADSPI_CR_TEIE_Msk (0x1UL << QUADSPI_CR_TEIE_Pos) /*!< 0x00010000 */\r
-#define QUADSPI_CR_TEIE QUADSPI_CR_TEIE_Msk /*!< Transfer Error Interrupt Enable */\r
-#define QUADSPI_CR_TCIE_Pos (17U) \r
-#define QUADSPI_CR_TCIE_Msk (0x1UL << QUADSPI_CR_TCIE_Pos) /*!< 0x00020000 */\r
-#define QUADSPI_CR_TCIE QUADSPI_CR_TCIE_Msk /*!< Transfer Complete Interrupt Enable */\r
-#define QUADSPI_CR_FTIE_Pos (18U) \r
-#define QUADSPI_CR_FTIE_Msk (0x1UL << QUADSPI_CR_FTIE_Pos) /*!< 0x00040000 */\r
-#define QUADSPI_CR_FTIE QUADSPI_CR_FTIE_Msk /*!< FIFO Threshold Interrupt Enable */\r
-#define QUADSPI_CR_SMIE_Pos (19U) \r
-#define QUADSPI_CR_SMIE_Msk (0x1UL << QUADSPI_CR_SMIE_Pos) /*!< 0x00080000 */\r
-#define QUADSPI_CR_SMIE QUADSPI_CR_SMIE_Msk /*!< Status Match Interrupt Enable */\r
-#define QUADSPI_CR_TOIE_Pos (20U) \r
-#define QUADSPI_CR_TOIE_Msk (0x1UL << QUADSPI_CR_TOIE_Pos) /*!< 0x00100000 */\r
-#define QUADSPI_CR_TOIE QUADSPI_CR_TOIE_Msk /*!< TimeOut Interrupt Enable */\r
-#define QUADSPI_CR_APMS_Pos (22U) \r
-#define QUADSPI_CR_APMS_Msk (0x1UL << QUADSPI_CR_APMS_Pos) /*!< 0x00400000 */\r
-#define QUADSPI_CR_APMS QUADSPI_CR_APMS_Msk /*!< Bit 1 */\r
-#define QUADSPI_CR_PMM_Pos (23U) \r
-#define QUADSPI_CR_PMM_Msk (0x1UL << QUADSPI_CR_PMM_Pos) /*!< 0x00800000 */\r
-#define QUADSPI_CR_PMM QUADSPI_CR_PMM_Msk /*!< Polling Match Mode */\r
-#define QUADSPI_CR_PRESCALER_Pos (24U) \r
-#define QUADSPI_CR_PRESCALER_Msk (0xFFUL << QUADSPI_CR_PRESCALER_Pos) /*!< 0xFF000000 */\r
-#define QUADSPI_CR_PRESCALER QUADSPI_CR_PRESCALER_Msk /*!< PRESCALER[7:0] Clock prescaler */\r
-#define QUADSPI_CR_PRESCALER_0 (0x01UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x01000000 */\r
-#define QUADSPI_CR_PRESCALER_1 (0x02UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x02000000 */\r
-#define QUADSPI_CR_PRESCALER_2 (0x04UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x04000000 */\r
-#define QUADSPI_CR_PRESCALER_3 (0x08UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x08000000 */\r
-#define QUADSPI_CR_PRESCALER_4 (0x10UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x10000000 */\r
-#define QUADSPI_CR_PRESCALER_5 (0x20UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x20000000 */\r
-#define QUADSPI_CR_PRESCALER_6 (0x40UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x40000000 */\r
-#define QUADSPI_CR_PRESCALER_7 (0x80UL << QUADSPI_CR_PRESCALER_Pos) /*!< 0x80000000 */\r
-\r
-/***************** Bit definition for QUADSPI_DCR register ******************/\r
-#define QUADSPI_DCR_CKMODE_Pos (0U) \r
-#define QUADSPI_DCR_CKMODE_Msk (0x1UL << QUADSPI_DCR_CKMODE_Pos) /*!< 0x00000001 */\r
-#define QUADSPI_DCR_CKMODE QUADSPI_DCR_CKMODE_Msk /*!< Mode 0 / Mode 3 */\r
-#define QUADSPI_DCR_CSHT_Pos (8U) \r
-#define QUADSPI_DCR_CSHT_Msk (0x7UL << QUADSPI_DCR_CSHT_Pos) /*!< 0x00000700 */\r
-#define QUADSPI_DCR_CSHT QUADSPI_DCR_CSHT_Msk /*!< CSHT[2:0]: ChipSelect High Time */\r
-#define QUADSPI_DCR_CSHT_0 (0x1UL << QUADSPI_DCR_CSHT_Pos) /*!< 0x00000100 */\r
-#define QUADSPI_DCR_CSHT_1 (0x2UL << QUADSPI_DCR_CSHT_Pos) /*!< 0x00000200 */\r
-#define QUADSPI_DCR_CSHT_2 (0x4UL << QUADSPI_DCR_CSHT_Pos) /*!< 0x00000400 */\r
-#define QUADSPI_DCR_FSIZE_Pos (16U) \r
-#define QUADSPI_DCR_FSIZE_Msk (0x1FUL << QUADSPI_DCR_FSIZE_Pos) /*!< 0x001F0000 */\r
-#define QUADSPI_DCR_FSIZE QUADSPI_DCR_FSIZE_Msk /*!< FSIZE[4:0]: Flash Size */\r
-#define QUADSPI_DCR_FSIZE_0 (0x01UL << QUADSPI_DCR_FSIZE_Pos) /*!< 0x00010000 */\r
-#define QUADSPI_DCR_FSIZE_1 (0x02UL << QUADSPI_DCR_FSIZE_Pos) /*!< 0x00020000 */\r
-#define QUADSPI_DCR_FSIZE_2 (0x04UL << QUADSPI_DCR_FSIZE_Pos) /*!< 0x00040000 */\r
-#define QUADSPI_DCR_FSIZE_3 (0x08UL << QUADSPI_DCR_FSIZE_Pos) /*!< 0x00080000 */\r
-#define QUADSPI_DCR_FSIZE_4 (0x10UL << QUADSPI_DCR_FSIZE_Pos) /*!< 0x00100000 */\r
-\r
-/****************** Bit definition for QUADSPI_SR register *******************/\r
-#define QUADSPI_SR_TEF_Pos (0U) \r
-#define QUADSPI_SR_TEF_Msk (0x1UL << QUADSPI_SR_TEF_Pos) /*!< 0x00000001 */\r
-#define QUADSPI_SR_TEF QUADSPI_SR_TEF_Msk /*!< Transfer Error Flag */\r
-#define QUADSPI_SR_TCF_Pos (1U) \r
-#define QUADSPI_SR_TCF_Msk (0x1UL << QUADSPI_SR_TCF_Pos) /*!< 0x00000002 */\r
-#define QUADSPI_SR_TCF QUADSPI_SR_TCF_Msk /*!< Transfer Complete Flag */\r
-#define QUADSPI_SR_FTF_Pos (2U) \r
-#define QUADSPI_SR_FTF_Msk (0x1UL << QUADSPI_SR_FTF_Pos) /*!< 0x00000004 */\r
-#define QUADSPI_SR_FTF QUADSPI_SR_FTF_Msk /*!< FIFO Threshlod Flag */\r
-#define QUADSPI_SR_SMF_Pos (3U) \r
-#define QUADSPI_SR_SMF_Msk (0x1UL << QUADSPI_SR_SMF_Pos) /*!< 0x00000008 */\r
-#define QUADSPI_SR_SMF QUADSPI_SR_SMF_Msk /*!< Status Match Flag */\r
-#define QUADSPI_SR_TOF_Pos (4U) \r
-#define QUADSPI_SR_TOF_Msk (0x1UL << QUADSPI_SR_TOF_Pos) /*!< 0x00000010 */\r
-#define QUADSPI_SR_TOF QUADSPI_SR_TOF_Msk /*!< Timeout Flag */\r
-#define QUADSPI_SR_BUSY_Pos (5U) \r
-#define QUADSPI_SR_BUSY_Msk (0x1UL << QUADSPI_SR_BUSY_Pos) /*!< 0x00000020 */\r
-#define QUADSPI_SR_BUSY QUADSPI_SR_BUSY_Msk /*!< Busy */\r
-#define QUADSPI_SR_FLEVEL_Pos (8U) \r
-#define QUADSPI_SR_FLEVEL_Msk (0x3FUL << QUADSPI_SR_FLEVEL_Pos) /*!< 0x00003F00 */\r
-#define QUADSPI_SR_FLEVEL QUADSPI_SR_FLEVEL_Msk /*!< FIFO Threshlod Flag */\r
-#define QUADSPI_SR_FLEVEL_0 (0x01UL << QUADSPI_SR_FLEVEL_Pos) /*!< 0x00000100 */\r
-#define QUADSPI_SR_FLEVEL_1 (0x02UL << QUADSPI_SR_FLEVEL_Pos) /*!< 0x00000200 */\r
-#define QUADSPI_SR_FLEVEL_2 (0x04UL << QUADSPI_SR_FLEVEL_Pos) /*!< 0x00000400 */\r
-#define QUADSPI_SR_FLEVEL_3 (0x08UL << QUADSPI_SR_FLEVEL_Pos) /*!< 0x00000800 */\r
-#define QUADSPI_SR_FLEVEL_4 (0x10UL << QUADSPI_SR_FLEVEL_Pos) /*!< 0x00001000 */\r
-#define QUADSPI_SR_FLEVEL_5 (0x20UL << QUADSPI_SR_FLEVEL_Pos) /*!< 0x00002000 */\r
-\r
-/****************** Bit definition for QUADSPI_FCR register ******************/\r
-#define QUADSPI_FCR_CTEF_Pos (0U) \r
-#define QUADSPI_FCR_CTEF_Msk (0x1UL << QUADSPI_FCR_CTEF_Pos) /*!< 0x00000001 */\r
-#define QUADSPI_FCR_CTEF QUADSPI_FCR_CTEF_Msk /*!< Clear Transfer Error Flag */\r
-#define QUADSPI_FCR_CTCF_Pos (1U) \r
-#define QUADSPI_FCR_CTCF_Msk (0x1UL << QUADSPI_FCR_CTCF_Pos) /*!< 0x00000002 */\r
-#define QUADSPI_FCR_CTCF QUADSPI_FCR_CTCF_Msk /*!< Clear Transfer Complete Flag */\r
-#define QUADSPI_FCR_CSMF_Pos (3U) \r
-#define QUADSPI_FCR_CSMF_Msk (0x1UL << QUADSPI_FCR_CSMF_Pos) /*!< 0x00000008 */\r
-#define QUADSPI_FCR_CSMF QUADSPI_FCR_CSMF_Msk /*!< Clear Status Match Flag */\r
-#define QUADSPI_FCR_CTOF_Pos (4U) \r
-#define QUADSPI_FCR_CTOF_Msk (0x1UL << QUADSPI_FCR_CTOF_Pos) /*!< 0x00000010 */\r
-#define QUADSPI_FCR_CTOF QUADSPI_FCR_CTOF_Msk /*!< Clear Timeout Flag */\r
-\r
-/****************** Bit definition for QUADSPI_DLR register ******************/\r
-#define QUADSPI_DLR_DL_Pos (0U) \r
-#define QUADSPI_DLR_DL_Msk (0xFFFFFFFFUL << QUADSPI_DLR_DL_Pos) /*!< 0xFFFFFFFF */\r
-#define QUADSPI_DLR_DL QUADSPI_DLR_DL_Msk /*!< DL[31:0]: Data Length */\r
-\r
-/****************** Bit definition for QUADSPI_CCR register ******************/\r
-#define QUADSPI_CCR_INSTRUCTION_Pos (0U) \r
-#define QUADSPI_CCR_INSTRUCTION_Msk (0xFFUL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x000000FF */\r
-#define QUADSPI_CCR_INSTRUCTION QUADSPI_CCR_INSTRUCTION_Msk /*!< INSTRUCTION[7:0]: Instruction */\r
-#define QUADSPI_CCR_INSTRUCTION_0 (0x01UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000001 */\r
-#define QUADSPI_CCR_INSTRUCTION_1 (0x02UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000002 */\r
-#define QUADSPI_CCR_INSTRUCTION_2 (0x04UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000004 */\r
-#define QUADSPI_CCR_INSTRUCTION_3 (0x08UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000008 */\r
-#define QUADSPI_CCR_INSTRUCTION_4 (0x10UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000010 */\r
-#define QUADSPI_CCR_INSTRUCTION_5 (0x20UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000020 */\r
-#define QUADSPI_CCR_INSTRUCTION_6 (0x40UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000040 */\r
-#define QUADSPI_CCR_INSTRUCTION_7 (0x80UL << QUADSPI_CCR_INSTRUCTION_Pos) /*!< 0x00000080 */\r
-#define QUADSPI_CCR_IMODE_Pos (8U) \r
-#define QUADSPI_CCR_IMODE_Msk (0x3UL << QUADSPI_CCR_IMODE_Pos) /*!< 0x00000300 */\r
-#define QUADSPI_CCR_IMODE QUADSPI_CCR_IMODE_Msk /*!< IMODE[1:0]: Instruction Mode */\r
-#define QUADSPI_CCR_IMODE_0 (0x1UL << QUADSPI_CCR_IMODE_Pos) /*!< 0x00000100 */\r
-#define QUADSPI_CCR_IMODE_1 (0x2UL << QUADSPI_CCR_IMODE_Pos) /*!< 0x00000200 */\r
-#define QUADSPI_CCR_ADMODE_Pos (10U) \r
-#define QUADSPI_CCR_ADMODE_Msk (0x3UL << QUADSPI_CCR_ADMODE_Pos) /*!< 0x00000C00 */\r
-#define QUADSPI_CCR_ADMODE QUADSPI_CCR_ADMODE_Msk /*!< ADMODE[1:0]: Address Mode */\r
-#define QUADSPI_CCR_ADMODE_0 (0x1UL << QUADSPI_CCR_ADMODE_Pos) /*!< 0x00000400 */\r
-#define QUADSPI_CCR_ADMODE_1 (0x2UL << QUADSPI_CCR_ADMODE_Pos) /*!< 0x00000800 */\r
-#define QUADSPI_CCR_ADSIZE_Pos (12U) \r
-#define QUADSPI_CCR_ADSIZE_Msk (0x3UL << QUADSPI_CCR_ADSIZE_Pos) /*!< 0x00003000 */\r
-#define QUADSPI_CCR_ADSIZE QUADSPI_CCR_ADSIZE_Msk /*!< ADSIZE[1:0]: Address Size */\r
-#define QUADSPI_CCR_ADSIZE_0 (0x1UL << QUADSPI_CCR_ADSIZE_Pos) /*!< 0x00001000 */\r
-#define QUADSPI_CCR_ADSIZE_1 (0x2UL << QUADSPI_CCR_ADSIZE_Pos) /*!< 0x00002000 */\r
-#define QUADSPI_CCR_ABMODE_Pos (14U) \r
-#define QUADSPI_CCR_ABMODE_Msk (0x3UL << QUADSPI_CCR_ABMODE_Pos) /*!< 0x0000C000 */\r
-#define QUADSPI_CCR_ABMODE QUADSPI_CCR_ABMODE_Msk /*!< ABMODE[1:0]: Alternate Bytes Mode */\r
-#define QUADSPI_CCR_ABMODE_0 (0x1UL << QUADSPI_CCR_ABMODE_Pos) /*!< 0x00004000 */\r
-#define QUADSPI_CCR_ABMODE_1 (0x2UL << QUADSPI_CCR_ABMODE_Pos) /*!< 0x00008000 */\r
-#define QUADSPI_CCR_ABSIZE_Pos (16U) \r
-#define QUADSPI_CCR_ABSIZE_Msk (0x3UL << QUADSPI_CCR_ABSIZE_Pos) /*!< 0x00030000 */\r
-#define QUADSPI_CCR_ABSIZE QUADSPI_CCR_ABSIZE_Msk /*!< ABSIZE[1:0]: Instruction Mode */\r
-#define QUADSPI_CCR_ABSIZE_0 (0x1UL << QUADSPI_CCR_ABSIZE_Pos) /*!< 0x00010000 */\r
-#define QUADSPI_CCR_ABSIZE_1 (0x2UL << QUADSPI_CCR_ABSIZE_Pos) /*!< 0x00020000 */\r
-#define QUADSPI_CCR_DCYC_Pos (18U) \r
-#define QUADSPI_CCR_DCYC_Msk (0x1FUL << QUADSPI_CCR_DCYC_Pos) /*!< 0x007C0000 */\r
-#define QUADSPI_CCR_DCYC QUADSPI_CCR_DCYC_Msk /*!< DCYC[4:0]: Dummy Cycles */\r
-#define QUADSPI_CCR_DCYC_0 (0x01UL << QUADSPI_CCR_DCYC_Pos) /*!< 0x00040000 */\r
-#define QUADSPI_CCR_DCYC_1 (0x02UL << QUADSPI_CCR_DCYC_Pos) /*!< 0x00080000 */\r
-#define QUADSPI_CCR_DCYC_2 (0x04UL << QUADSPI_CCR_DCYC_Pos) /*!< 0x00100000 */\r
-#define QUADSPI_CCR_DCYC_3 (0x08UL << QUADSPI_CCR_DCYC_Pos) /*!< 0x00200000 */\r
-#define QUADSPI_CCR_DCYC_4 (0x10UL << QUADSPI_CCR_DCYC_Pos) /*!< 0x00400000 */\r
-#define QUADSPI_CCR_DMODE_Pos (24U) \r
-#define QUADSPI_CCR_DMODE_Msk (0x3UL << QUADSPI_CCR_DMODE_Pos) /*!< 0x03000000 */\r
-#define QUADSPI_CCR_DMODE QUADSPI_CCR_DMODE_Msk /*!< DMODE[1:0]: Data Mode */\r
-#define QUADSPI_CCR_DMODE_0 (0x1UL << QUADSPI_CCR_DMODE_Pos) /*!< 0x01000000 */\r
-#define QUADSPI_CCR_DMODE_1 (0x2UL << QUADSPI_CCR_DMODE_Pos) /*!< 0x02000000 */\r
-#define QUADSPI_CCR_FMODE_Pos (26U) \r
-#define QUADSPI_CCR_FMODE_Msk (0x3UL << QUADSPI_CCR_FMODE_Pos) /*!< 0x0C000000 */\r
-#define QUADSPI_CCR_FMODE QUADSPI_CCR_FMODE_Msk /*!< FMODE[1:0]: Functional Mode */\r
-#define QUADSPI_CCR_FMODE_0 (0x1UL << QUADSPI_CCR_FMODE_Pos) /*!< 0x04000000 */\r
-#define QUADSPI_CCR_FMODE_1 (0x2UL << QUADSPI_CCR_FMODE_Pos) /*!< 0x08000000 */\r
-#define QUADSPI_CCR_SIOO_Pos (28U) \r
-#define QUADSPI_CCR_SIOO_Msk (0x1UL << QUADSPI_CCR_SIOO_Pos) /*!< 0x10000000 */\r
-#define QUADSPI_CCR_SIOO QUADSPI_CCR_SIOO_Msk /*!< SIOO: Send Instruction Only Once Mode */\r
-#define QUADSPI_CCR_DHHC_Pos (30U) \r
-#define QUADSPI_CCR_DHHC_Msk (0x1UL << QUADSPI_CCR_DHHC_Pos) /*!< 0x40000000 */\r
-#define QUADSPI_CCR_DHHC QUADSPI_CCR_DHHC_Msk /*!< DHHC: Delay Half Hclk Cycle */\r
-#define QUADSPI_CCR_DDRM_Pos (31U) \r
-#define QUADSPI_CCR_DDRM_Msk (0x1UL << QUADSPI_CCR_DDRM_Pos) /*!< 0x80000000 */\r
-#define QUADSPI_CCR_DDRM QUADSPI_CCR_DDRM_Msk /*!< DDRM: Double Data Rate Mode */\r
-/****************** Bit definition for QUADSPI_AR register *******************/\r
-#define QUADSPI_AR_ADDRESS_Pos (0U) \r
-#define QUADSPI_AR_ADDRESS_Msk (0xFFFFFFFFUL << QUADSPI_AR_ADDRESS_Pos) /*!< 0xFFFFFFFF */\r
-#define QUADSPI_AR_ADDRESS QUADSPI_AR_ADDRESS_Msk /*!< ADDRESS[31:0]: Address */\r
-\r
-/****************** Bit definition for QUADSPI_ABR register ******************/\r
-#define QUADSPI_ABR_ALTERNATE_Pos (0U) \r
-#define QUADSPI_ABR_ALTERNATE_Msk (0xFFFFFFFFUL << QUADSPI_ABR_ALTERNATE_Pos) /*!< 0xFFFFFFFF */\r
-#define QUADSPI_ABR_ALTERNATE QUADSPI_ABR_ALTERNATE_Msk /*!< ALTERNATE[31:0]: Alternate Bytes */\r
-\r
-/****************** Bit definition for QUADSPI_DR register *******************/\r
-#define QUADSPI_DR_DATA_Pos (0U) \r
-#define QUADSPI_DR_DATA_Msk (0xFFFFFFFFUL << QUADSPI_DR_DATA_Pos) /*!< 0xFFFFFFFF */\r
-#define QUADSPI_DR_DATA QUADSPI_DR_DATA_Msk /*!< DATA[31:0]: Data */\r
-\r
-/****************** Bit definition for QUADSPI_PSMKR register ****************/\r
-#define QUADSPI_PSMKR_MASK_Pos (0U) \r
-#define QUADSPI_PSMKR_MASK_Msk (0xFFFFFFFFUL << QUADSPI_PSMKR_MASK_Pos) /*!< 0xFFFFFFFF */\r
-#define QUADSPI_PSMKR_MASK QUADSPI_PSMKR_MASK_Msk /*!< MASK[31:0]: Status Mask */\r
-\r
-/****************** Bit definition for QUADSPI_PSMAR register ****************/\r
-#define QUADSPI_PSMAR_MATCH_Pos (0U) \r
-#define QUADSPI_PSMAR_MATCH_Msk (0xFFFFFFFFUL << QUADSPI_PSMAR_MATCH_Pos) /*!< 0xFFFFFFFF */\r
-#define QUADSPI_PSMAR_MATCH QUADSPI_PSMAR_MATCH_Msk /*!< MATCH[31:0]: Status Match */\r
-\r
-/****************** Bit definition for QUADSPI_PIR register *****************/\r
-#define QUADSPI_PIR_INTERVAL_Pos (0U) \r
-#define QUADSPI_PIR_INTERVAL_Msk (0xFFFFUL << QUADSPI_PIR_INTERVAL_Pos) /*!< 0x0000FFFF */\r
-#define QUADSPI_PIR_INTERVAL QUADSPI_PIR_INTERVAL_Msk /*!< INTERVAL[15:0]: Polling Interval */\r
-\r
-/****************** Bit definition for QUADSPI_LPTR register *****************/\r
-#define QUADSPI_LPTR_TIMEOUT_Pos (0U) \r
-#define QUADSPI_LPTR_TIMEOUT_Msk (0xFFFFUL << QUADSPI_LPTR_TIMEOUT_Pos) /*!< 0x0000FFFF */\r
-#define QUADSPI_LPTR_TIMEOUT QUADSPI_LPTR_TIMEOUT_Msk /*!< TIMEOUT[15:0]: Timeout period */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Reset and Clock Control */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for RCC_CR register ********************/\r
-#define RCC_CR_HSION_Pos (0U) \r
-#define RCC_CR_HSION_Msk (0x1UL << RCC_CR_HSION_Pos) /*!< 0x00000001 */\r
-#define RCC_CR_HSION RCC_CR_HSION_Msk \r
-#define RCC_CR_HSIRDY_Pos (1U) \r
-#define RCC_CR_HSIRDY_Msk (0x1UL << RCC_CR_HSIRDY_Pos) /*!< 0x00000002 */\r
-#define RCC_CR_HSIRDY RCC_CR_HSIRDY_Msk \r
-#define RCC_CR_HSITRIM_Pos (3U) \r
-#define RCC_CR_HSITRIM_Msk (0x1FUL << RCC_CR_HSITRIM_Pos) /*!< 0x000000F8 */\r
-#define RCC_CR_HSITRIM RCC_CR_HSITRIM_Msk \r
-#define RCC_CR_HSITRIM_0 (0x01UL << RCC_CR_HSITRIM_Pos) /*!< 0x00000008 */\r
-#define RCC_CR_HSITRIM_1 (0x02UL << RCC_CR_HSITRIM_Pos) /*!< 0x00000010 */\r
-#define RCC_CR_HSITRIM_2 (0x04UL << RCC_CR_HSITRIM_Pos) /*!< 0x00000020 */\r
-#define RCC_CR_HSITRIM_3 (0x08UL << RCC_CR_HSITRIM_Pos) /*!< 0x00000040 */\r
-#define RCC_CR_HSITRIM_4 (0x10UL << RCC_CR_HSITRIM_Pos) /*!< 0x00000080 */\r
-#define RCC_CR_HSICAL_Pos (8U) \r
-#define RCC_CR_HSICAL_Msk (0xFFUL << RCC_CR_HSICAL_Pos) /*!< 0x0000FF00 */\r
-#define RCC_CR_HSICAL RCC_CR_HSICAL_Msk \r
-#define RCC_CR_HSICAL_0 (0x01UL << RCC_CR_HSICAL_Pos) /*!< 0x00000100 */\r
-#define RCC_CR_HSICAL_1 (0x02UL << RCC_CR_HSICAL_Pos) /*!< 0x00000200 */\r
-#define RCC_CR_HSICAL_2 (0x04UL << RCC_CR_HSICAL_Pos) /*!< 0x00000400 */\r
-#define RCC_CR_HSICAL_3 (0x08UL << RCC_CR_HSICAL_Pos) /*!< 0x00000800 */\r
-#define RCC_CR_HSICAL_4 (0x10UL << RCC_CR_HSICAL_Pos) /*!< 0x00001000 */\r
-#define RCC_CR_HSICAL_5 (0x20UL << RCC_CR_HSICAL_Pos) /*!< 0x00002000 */\r
-#define RCC_CR_HSICAL_6 (0x40UL << RCC_CR_HSICAL_Pos) /*!< 0x00004000 */\r
-#define RCC_CR_HSICAL_7 (0x80UL << RCC_CR_HSICAL_Pos) /*!< 0x00008000 */\r
-#define RCC_CR_HSEON_Pos (16U) \r
-#define RCC_CR_HSEON_Msk (0x1UL << RCC_CR_HSEON_Pos) /*!< 0x00010000 */\r
-#define RCC_CR_HSEON RCC_CR_HSEON_Msk \r
-#define RCC_CR_HSERDY_Pos (17U) \r
-#define RCC_CR_HSERDY_Msk (0x1UL << RCC_CR_HSERDY_Pos) /*!< 0x00020000 */\r
-#define RCC_CR_HSERDY RCC_CR_HSERDY_Msk \r
-#define RCC_CR_HSEBYP_Pos (18U) \r
-#define RCC_CR_HSEBYP_Msk (0x1UL << RCC_CR_HSEBYP_Pos) /*!< 0x00040000 */\r
-#define RCC_CR_HSEBYP RCC_CR_HSEBYP_Msk \r
-#define RCC_CR_CSSON_Pos (19U) \r
-#define RCC_CR_CSSON_Msk (0x1UL << RCC_CR_CSSON_Pos) /*!< 0x00080000 */\r
-#define RCC_CR_CSSON RCC_CR_CSSON_Msk \r
-#define RCC_CR_PLLON_Pos (24U) \r
-#define RCC_CR_PLLON_Msk (0x1UL << RCC_CR_PLLON_Pos) /*!< 0x01000000 */\r
-#define RCC_CR_PLLON RCC_CR_PLLON_Msk \r
-#define RCC_CR_PLLRDY_Pos (25U) \r
-#define RCC_CR_PLLRDY_Msk (0x1UL << RCC_CR_PLLRDY_Pos) /*!< 0x02000000 */\r
-#define RCC_CR_PLLRDY RCC_CR_PLLRDY_Msk \r
-#define RCC_CR_PLLI2SON_Pos (26U) \r
-#define RCC_CR_PLLI2SON_Msk (0x1UL << RCC_CR_PLLI2SON_Pos) /*!< 0x04000000 */\r
-#define RCC_CR_PLLI2SON RCC_CR_PLLI2SON_Msk \r
-#define RCC_CR_PLLI2SRDY_Pos (27U) \r
-#define RCC_CR_PLLI2SRDY_Msk (0x1UL << RCC_CR_PLLI2SRDY_Pos) /*!< 0x08000000 */\r
-#define RCC_CR_PLLI2SRDY RCC_CR_PLLI2SRDY_Msk \r
-#define RCC_CR_PLLSAION_Pos (28U) \r
-#define RCC_CR_PLLSAION_Msk (0x1UL << RCC_CR_PLLSAION_Pos) /*!< 0x10000000 */\r
-#define RCC_CR_PLLSAION RCC_CR_PLLSAION_Msk \r
-#define RCC_CR_PLLSAIRDY_Pos (29U) \r
-#define RCC_CR_PLLSAIRDY_Msk (0x1UL << RCC_CR_PLLSAIRDY_Pos) /*!< 0x20000000 */\r
-#define RCC_CR_PLLSAIRDY RCC_CR_PLLSAIRDY_Msk \r
-\r
-/******************** Bit definition for RCC_PLLCFGR register ***************/\r
-#define RCC_PLLCFGR_PLLM_Pos (0U) \r
-#define RCC_PLLCFGR_PLLM_Msk (0x3FUL << RCC_PLLCFGR_PLLM_Pos) /*!< 0x0000003F */\r
-#define RCC_PLLCFGR_PLLM RCC_PLLCFGR_PLLM_Msk \r
-#define RCC_PLLCFGR_PLLM_0 (0x01UL << RCC_PLLCFGR_PLLM_Pos) /*!< 0x00000001 */\r
-#define RCC_PLLCFGR_PLLM_1 (0x02UL << RCC_PLLCFGR_PLLM_Pos) /*!< 0x00000002 */\r
-#define RCC_PLLCFGR_PLLM_2 (0x04UL << RCC_PLLCFGR_PLLM_Pos) /*!< 0x00000004 */\r
-#define RCC_PLLCFGR_PLLM_3 (0x08UL << RCC_PLLCFGR_PLLM_Pos) /*!< 0x00000008 */\r
-#define RCC_PLLCFGR_PLLM_4 (0x10UL << RCC_PLLCFGR_PLLM_Pos) /*!< 0x00000010 */\r
-#define RCC_PLLCFGR_PLLM_5 (0x20UL << RCC_PLLCFGR_PLLM_Pos) /*!< 0x00000020 */\r
-#define RCC_PLLCFGR_PLLN_Pos (6U) \r
-#define RCC_PLLCFGR_PLLN_Msk (0x1FFUL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00007FC0 */\r
-#define RCC_PLLCFGR_PLLN RCC_PLLCFGR_PLLN_Msk \r
-#define RCC_PLLCFGR_PLLN_0 (0x001UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00000040 */\r
-#define RCC_PLLCFGR_PLLN_1 (0x002UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00000080 */\r
-#define RCC_PLLCFGR_PLLN_2 (0x004UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00000100 */\r
-#define RCC_PLLCFGR_PLLN_3 (0x008UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00000200 */\r
-#define RCC_PLLCFGR_PLLN_4 (0x010UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00000400 */\r
-#define RCC_PLLCFGR_PLLN_5 (0x020UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00000800 */\r
-#define RCC_PLLCFGR_PLLN_6 (0x040UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00001000 */\r
-#define RCC_PLLCFGR_PLLN_7 (0x080UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00002000 */\r
-#define RCC_PLLCFGR_PLLN_8 (0x100UL << RCC_PLLCFGR_PLLN_Pos) /*!< 0x00004000 */\r
-#define RCC_PLLCFGR_PLLP_Pos (16U) \r
-#define RCC_PLLCFGR_PLLP_Msk (0x3UL << RCC_PLLCFGR_PLLP_Pos) /*!< 0x00030000 */\r
-#define RCC_PLLCFGR_PLLP RCC_PLLCFGR_PLLP_Msk \r
-#define RCC_PLLCFGR_PLLP_0 (0x1UL << RCC_PLLCFGR_PLLP_Pos) /*!< 0x00010000 */\r
-#define RCC_PLLCFGR_PLLP_1 (0x2UL << RCC_PLLCFGR_PLLP_Pos) /*!< 0x00020000 */\r
-#define RCC_PLLCFGR_PLLSRC_Pos (22U) \r
-#define RCC_PLLCFGR_PLLSRC_Msk (0x1UL << RCC_PLLCFGR_PLLSRC_Pos) /*!< 0x00400000 */\r
-#define RCC_PLLCFGR_PLLSRC RCC_PLLCFGR_PLLSRC_Msk \r
-#define RCC_PLLCFGR_PLLSRC_HSE_Pos (22U) \r
-#define RCC_PLLCFGR_PLLSRC_HSE_Msk (0x1UL << RCC_PLLCFGR_PLLSRC_HSE_Pos) /*!< 0x00400000 */\r
-#define RCC_PLLCFGR_PLLSRC_HSE RCC_PLLCFGR_PLLSRC_HSE_Msk \r
-#define RCC_PLLCFGR_PLLSRC_HSI 0x00000000U \r
-#define RCC_PLLCFGR_PLLQ_Pos (24U) \r
-#define RCC_PLLCFGR_PLLQ_Msk (0xFUL << RCC_PLLCFGR_PLLQ_Pos) /*!< 0x0F000000 */\r
-#define RCC_PLLCFGR_PLLQ RCC_PLLCFGR_PLLQ_Msk \r
-#define RCC_PLLCFGR_PLLQ_0 (0x1UL << RCC_PLLCFGR_PLLQ_Pos) /*!< 0x01000000 */\r
-#define RCC_PLLCFGR_PLLQ_1 (0x2UL << RCC_PLLCFGR_PLLQ_Pos) /*!< 0x02000000 */\r
-#define RCC_PLLCFGR_PLLQ_2 (0x4UL << RCC_PLLCFGR_PLLQ_Pos) /*!< 0x04000000 */\r
-#define RCC_PLLCFGR_PLLQ_3 (0x8UL << RCC_PLLCFGR_PLLQ_Pos) /*!< 0x08000000 */\r
-\r
-#define RCC_PLLCFGR_PLLR_Pos (28U) \r
-#define RCC_PLLCFGR_PLLR_Msk (0x7UL << RCC_PLLCFGR_PLLR_Pos) /*!< 0x70000000 */\r
-#define RCC_PLLCFGR_PLLR RCC_PLLCFGR_PLLR_Msk \r
-#define RCC_PLLCFGR_PLLR_0 (0x1UL << RCC_PLLCFGR_PLLR_Pos) /*!< 0x10000000 */\r
-#define RCC_PLLCFGR_PLLR_1 (0x2UL << RCC_PLLCFGR_PLLR_Pos) /*!< 0x20000000 */\r
-#define RCC_PLLCFGR_PLLR_2 (0x4UL << RCC_PLLCFGR_PLLR_Pos) /*!< 0x40000000 */\r
-\r
-/******************** Bit definition for RCC_CFGR register ******************/\r
-/*!< SW configuration */\r
-#define RCC_CFGR_SW_Pos (0U) \r
-#define RCC_CFGR_SW_Msk (0x3UL << RCC_CFGR_SW_Pos) /*!< 0x00000003 */\r
-#define RCC_CFGR_SW RCC_CFGR_SW_Msk /*!< SW[1:0] bits (System clock Switch) */\r
-#define RCC_CFGR_SW_0 (0x1UL << RCC_CFGR_SW_Pos) /*!< 0x00000001 */\r
-#define RCC_CFGR_SW_1 (0x2UL << RCC_CFGR_SW_Pos) /*!< 0x00000002 */\r
-#define RCC_CFGR_SW_HSI 0x00000000U /*!< HSI selected as system clock */\r
-#define RCC_CFGR_SW_HSE 0x00000001U /*!< HSE selected as system clock */\r
-#define RCC_CFGR_SW_PLL 0x00000002U /*!< PLL selected as system clock */\r
-\r
-/*!< SWS configuration */\r
-#define RCC_CFGR_SWS_Pos (2U) \r
-#define RCC_CFGR_SWS_Msk (0x3UL << RCC_CFGR_SWS_Pos) /*!< 0x0000000C */\r
-#define RCC_CFGR_SWS RCC_CFGR_SWS_Msk /*!< SWS[1:0] bits (System Clock Switch Status) */\r
-#define RCC_CFGR_SWS_0 (0x1UL << RCC_CFGR_SWS_Pos) /*!< 0x00000004 */\r
-#define RCC_CFGR_SWS_1 (0x2UL << RCC_CFGR_SWS_Pos) /*!< 0x00000008 */\r
-#define RCC_CFGR_SWS_HSI 0x00000000U /*!< HSI oscillator used as system clock */\r
-#define RCC_CFGR_SWS_HSE 0x00000004U /*!< HSE oscillator used as system clock */\r
-#define RCC_CFGR_SWS_PLL 0x00000008U /*!< PLL used as system clock */\r
-\r
-/*!< HPRE configuration */\r
-#define RCC_CFGR_HPRE_Pos (4U) \r
-#define RCC_CFGR_HPRE_Msk (0xFUL << RCC_CFGR_HPRE_Pos) /*!< 0x000000F0 */\r
-#define RCC_CFGR_HPRE RCC_CFGR_HPRE_Msk /*!< HPRE[3:0] bits (AHB prescaler) */\r
-#define RCC_CFGR_HPRE_0 (0x1UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000010 */\r
-#define RCC_CFGR_HPRE_1 (0x2UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000020 */\r
-#define RCC_CFGR_HPRE_2 (0x4UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000040 */\r
-#define RCC_CFGR_HPRE_3 (0x8UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000080 */\r
-\r
-#define RCC_CFGR_HPRE_DIV1 0x00000000U /*!< SYSCLK not divided */\r
-#define RCC_CFGR_HPRE_DIV2 0x00000080U /*!< SYSCLK divided by 2 */\r
-#define RCC_CFGR_HPRE_DIV4 0x00000090U /*!< SYSCLK divided by 4 */\r
-#define RCC_CFGR_HPRE_DIV8 0x000000A0U /*!< SYSCLK divided by 8 */\r
-#define RCC_CFGR_HPRE_DIV16 0x000000B0U /*!< SYSCLK divided by 16 */\r
-#define RCC_CFGR_HPRE_DIV64 0x000000C0U /*!< SYSCLK divided by 64 */\r
-#define RCC_CFGR_HPRE_DIV128 0x000000D0U /*!< SYSCLK divided by 128 */\r
-#define RCC_CFGR_HPRE_DIV256 0x000000E0U /*!< SYSCLK divided by 256 */\r
-#define RCC_CFGR_HPRE_DIV512 0x000000F0U /*!< SYSCLK divided by 512 */\r
-\r
-/*!< PPRE1 configuration */\r
-#define RCC_CFGR_PPRE1_Pos (10U) \r
-#define RCC_CFGR_PPRE1_Msk (0x7UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00001C00 */\r
-#define RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_Msk /*!< PRE1[2:0] bits (APB1 prescaler) */\r
-#define RCC_CFGR_PPRE1_0 (0x1UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00000400 */\r
-#define RCC_CFGR_PPRE1_1 (0x2UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00000800 */\r
-#define RCC_CFGR_PPRE1_2 (0x4UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00001000 */\r
-\r
-#define RCC_CFGR_PPRE1_DIV1 0x00000000U /*!< HCLK not divided */\r
-#define RCC_CFGR_PPRE1_DIV2 0x00001000U /*!< HCLK divided by 2 */\r
-#define RCC_CFGR_PPRE1_DIV4 0x00001400U /*!< HCLK divided by 4 */\r
-#define RCC_CFGR_PPRE1_DIV8 0x00001800U /*!< HCLK divided by 8 */\r
-#define RCC_CFGR_PPRE1_DIV16 0x00001C00U /*!< HCLK divided by 16 */\r
-\r
-/*!< PPRE2 configuration */\r
-#define RCC_CFGR_PPRE2_Pos (13U) \r
-#define RCC_CFGR_PPRE2_Msk (0x7UL << RCC_CFGR_PPRE2_Pos) /*!< 0x0000E000 */\r
-#define RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_Msk /*!< PRE2[2:0] bits (APB2 prescaler) */\r
-#define RCC_CFGR_PPRE2_0 (0x1UL << RCC_CFGR_PPRE2_Pos) /*!< 0x00002000 */\r
-#define RCC_CFGR_PPRE2_1 (0x2UL << RCC_CFGR_PPRE2_Pos) /*!< 0x00004000 */\r
-#define RCC_CFGR_PPRE2_2 (0x4UL << RCC_CFGR_PPRE2_Pos) /*!< 0x00008000 */\r
-\r
-#define RCC_CFGR_PPRE2_DIV1 0x00000000U /*!< HCLK not divided */\r
-#define RCC_CFGR_PPRE2_DIV2 0x00008000U /*!< HCLK divided by 2 */\r
-#define RCC_CFGR_PPRE2_DIV4 0x0000A000U /*!< HCLK divided by 4 */\r
-#define RCC_CFGR_PPRE2_DIV8 0x0000C000U /*!< HCLK divided by 8 */\r
-#define RCC_CFGR_PPRE2_DIV16 0x0000E000U /*!< HCLK divided by 16 */\r
-\r
-/*!< RTCPRE configuration */\r
-#define RCC_CFGR_RTCPRE_Pos (16U) \r
-#define RCC_CFGR_RTCPRE_Msk (0x1FUL << RCC_CFGR_RTCPRE_Pos) /*!< 0x001F0000 */\r
-#define RCC_CFGR_RTCPRE RCC_CFGR_RTCPRE_Msk \r
-#define RCC_CFGR_RTCPRE_0 (0x01UL << RCC_CFGR_RTCPRE_Pos) /*!< 0x00010000 */\r
-#define RCC_CFGR_RTCPRE_1 (0x02UL << RCC_CFGR_RTCPRE_Pos) /*!< 0x00020000 */\r
-#define RCC_CFGR_RTCPRE_2 (0x04UL << RCC_CFGR_RTCPRE_Pos) /*!< 0x00040000 */\r
-#define RCC_CFGR_RTCPRE_3 (0x08UL << RCC_CFGR_RTCPRE_Pos) /*!< 0x00080000 */\r
-#define RCC_CFGR_RTCPRE_4 (0x10UL << RCC_CFGR_RTCPRE_Pos) /*!< 0x00100000 */\r
-\r
-/*!< MCO1 configuration */\r
-#define RCC_CFGR_MCO1_Pos (21U) \r
-#define RCC_CFGR_MCO1_Msk (0x3UL << RCC_CFGR_MCO1_Pos) /*!< 0x00600000 */\r
-#define RCC_CFGR_MCO1 RCC_CFGR_MCO1_Msk \r
-#define RCC_CFGR_MCO1_0 (0x1UL << RCC_CFGR_MCO1_Pos) /*!< 0x00200000 */\r
-#define RCC_CFGR_MCO1_1 (0x2UL << RCC_CFGR_MCO1_Pos) /*!< 0x00400000 */\r
-\r
-#define RCC_CFGR_I2SSRC_Pos (23U) \r
-#define RCC_CFGR_I2SSRC_Msk (0x1UL << RCC_CFGR_I2SSRC_Pos) /*!< 0x00800000 */\r
-#define RCC_CFGR_I2SSRC RCC_CFGR_I2SSRC_Msk \r
-\r
-#define RCC_CFGR_MCO1PRE_Pos (24U) \r
-#define RCC_CFGR_MCO1PRE_Msk (0x7UL << RCC_CFGR_MCO1PRE_Pos) /*!< 0x07000000 */\r
-#define RCC_CFGR_MCO1PRE RCC_CFGR_MCO1PRE_Msk \r
-#define RCC_CFGR_MCO1PRE_0 (0x1UL << RCC_CFGR_MCO1PRE_Pos) /*!< 0x01000000 */\r
-#define RCC_CFGR_MCO1PRE_1 (0x2UL << RCC_CFGR_MCO1PRE_Pos) /*!< 0x02000000 */\r
-#define RCC_CFGR_MCO1PRE_2 (0x4UL << RCC_CFGR_MCO1PRE_Pos) /*!< 0x04000000 */\r
-\r
-#define RCC_CFGR_MCO2PRE_Pos (27U) \r
-#define RCC_CFGR_MCO2PRE_Msk (0x7UL << RCC_CFGR_MCO2PRE_Pos) /*!< 0x38000000 */\r
-#define RCC_CFGR_MCO2PRE RCC_CFGR_MCO2PRE_Msk \r
-#define RCC_CFGR_MCO2PRE_0 (0x1UL << RCC_CFGR_MCO2PRE_Pos) /*!< 0x08000000 */\r
-#define RCC_CFGR_MCO2PRE_1 (0x2UL << RCC_CFGR_MCO2PRE_Pos) /*!< 0x10000000 */\r
-#define RCC_CFGR_MCO2PRE_2 (0x4UL << RCC_CFGR_MCO2PRE_Pos) /*!< 0x20000000 */\r
-\r
-#define RCC_CFGR_MCO2_Pos (30U) \r
-#define RCC_CFGR_MCO2_Msk (0x3UL << RCC_CFGR_MCO2_Pos) /*!< 0xC0000000 */\r
-#define RCC_CFGR_MCO2 RCC_CFGR_MCO2_Msk \r
-#define RCC_CFGR_MCO2_0 (0x1UL << RCC_CFGR_MCO2_Pos) /*!< 0x40000000 */\r
-#define RCC_CFGR_MCO2_1 (0x2UL << RCC_CFGR_MCO2_Pos) /*!< 0x80000000 */\r
-\r
-/******************** Bit definition for RCC_CIR register *******************/\r
-#define RCC_CIR_LSIRDYF_Pos (0U) \r
-#define RCC_CIR_LSIRDYF_Msk (0x1UL << RCC_CIR_LSIRDYF_Pos) /*!< 0x00000001 */\r
-#define RCC_CIR_LSIRDYF RCC_CIR_LSIRDYF_Msk \r
-#define RCC_CIR_LSERDYF_Pos (1U) \r
-#define RCC_CIR_LSERDYF_Msk (0x1UL << RCC_CIR_LSERDYF_Pos) /*!< 0x00000002 */\r
-#define RCC_CIR_LSERDYF RCC_CIR_LSERDYF_Msk \r
-#define RCC_CIR_HSIRDYF_Pos (2U) \r
-#define RCC_CIR_HSIRDYF_Msk (0x1UL << RCC_CIR_HSIRDYF_Pos) /*!< 0x00000004 */\r
-#define RCC_CIR_HSIRDYF RCC_CIR_HSIRDYF_Msk \r
-#define RCC_CIR_HSERDYF_Pos (3U) \r
-#define RCC_CIR_HSERDYF_Msk (0x1UL << RCC_CIR_HSERDYF_Pos) /*!< 0x00000008 */\r
-#define RCC_CIR_HSERDYF RCC_CIR_HSERDYF_Msk \r
-#define RCC_CIR_PLLRDYF_Pos (4U) \r
-#define RCC_CIR_PLLRDYF_Msk (0x1UL << RCC_CIR_PLLRDYF_Pos) /*!< 0x00000010 */\r
-#define RCC_CIR_PLLRDYF RCC_CIR_PLLRDYF_Msk \r
-#define RCC_CIR_PLLI2SRDYF_Pos (5U) \r
-#define RCC_CIR_PLLI2SRDYF_Msk (0x1UL << RCC_CIR_PLLI2SRDYF_Pos) /*!< 0x00000020 */\r
-#define RCC_CIR_PLLI2SRDYF RCC_CIR_PLLI2SRDYF_Msk \r
-#define RCC_CIR_PLLSAIRDYF_Pos (6U) \r
-#define RCC_CIR_PLLSAIRDYF_Msk (0x1UL << RCC_CIR_PLLSAIRDYF_Pos) /*!< 0x00000040 */\r
-#define RCC_CIR_PLLSAIRDYF RCC_CIR_PLLSAIRDYF_Msk \r
-#define RCC_CIR_CSSF_Pos (7U) \r
-#define RCC_CIR_CSSF_Msk (0x1UL << RCC_CIR_CSSF_Pos) /*!< 0x00000080 */\r
-#define RCC_CIR_CSSF RCC_CIR_CSSF_Msk \r
-#define RCC_CIR_LSIRDYIE_Pos (8U) \r
-#define RCC_CIR_LSIRDYIE_Msk (0x1UL << RCC_CIR_LSIRDYIE_Pos) /*!< 0x00000100 */\r
-#define RCC_CIR_LSIRDYIE RCC_CIR_LSIRDYIE_Msk \r
-#define RCC_CIR_LSERDYIE_Pos (9U) \r
-#define RCC_CIR_LSERDYIE_Msk (0x1UL << RCC_CIR_LSERDYIE_Pos) /*!< 0x00000200 */\r
-#define RCC_CIR_LSERDYIE RCC_CIR_LSERDYIE_Msk \r
-#define RCC_CIR_HSIRDYIE_Pos (10U) \r
-#define RCC_CIR_HSIRDYIE_Msk (0x1UL << RCC_CIR_HSIRDYIE_Pos) /*!< 0x00000400 */\r
-#define RCC_CIR_HSIRDYIE RCC_CIR_HSIRDYIE_Msk \r
-#define RCC_CIR_HSERDYIE_Pos (11U) \r
-#define RCC_CIR_HSERDYIE_Msk (0x1UL << RCC_CIR_HSERDYIE_Pos) /*!< 0x00000800 */\r
-#define RCC_CIR_HSERDYIE RCC_CIR_HSERDYIE_Msk \r
-#define RCC_CIR_PLLRDYIE_Pos (12U) \r
-#define RCC_CIR_PLLRDYIE_Msk (0x1UL << RCC_CIR_PLLRDYIE_Pos) /*!< 0x00001000 */\r
-#define RCC_CIR_PLLRDYIE RCC_CIR_PLLRDYIE_Msk \r
-#define RCC_CIR_PLLI2SRDYIE_Pos (13U) \r
-#define RCC_CIR_PLLI2SRDYIE_Msk (0x1UL << RCC_CIR_PLLI2SRDYIE_Pos) /*!< 0x00002000 */\r
-#define RCC_CIR_PLLI2SRDYIE RCC_CIR_PLLI2SRDYIE_Msk \r
-#define RCC_CIR_PLLSAIRDYIE_Pos (14U) \r
-#define RCC_CIR_PLLSAIRDYIE_Msk (0x1UL << RCC_CIR_PLLSAIRDYIE_Pos) /*!< 0x00004000 */\r
-#define RCC_CIR_PLLSAIRDYIE RCC_CIR_PLLSAIRDYIE_Msk \r
-#define RCC_CIR_LSIRDYC_Pos (16U) \r
-#define RCC_CIR_LSIRDYC_Msk (0x1UL << RCC_CIR_LSIRDYC_Pos) /*!< 0x00010000 */\r
-#define RCC_CIR_LSIRDYC RCC_CIR_LSIRDYC_Msk \r
-#define RCC_CIR_LSERDYC_Pos (17U) \r
-#define RCC_CIR_LSERDYC_Msk (0x1UL << RCC_CIR_LSERDYC_Pos) /*!< 0x00020000 */\r
-#define RCC_CIR_LSERDYC RCC_CIR_LSERDYC_Msk \r
-#define RCC_CIR_HSIRDYC_Pos (18U) \r
-#define RCC_CIR_HSIRDYC_Msk (0x1UL << RCC_CIR_HSIRDYC_Pos) /*!< 0x00040000 */\r
-#define RCC_CIR_HSIRDYC RCC_CIR_HSIRDYC_Msk \r
-#define RCC_CIR_HSERDYC_Pos (19U) \r
-#define RCC_CIR_HSERDYC_Msk (0x1UL << RCC_CIR_HSERDYC_Pos) /*!< 0x00080000 */\r
-#define RCC_CIR_HSERDYC RCC_CIR_HSERDYC_Msk \r
-#define RCC_CIR_PLLRDYC_Pos (20U) \r
-#define RCC_CIR_PLLRDYC_Msk (0x1UL << RCC_CIR_PLLRDYC_Pos) /*!< 0x00100000 */\r
-#define RCC_CIR_PLLRDYC RCC_CIR_PLLRDYC_Msk \r
-#define RCC_CIR_PLLI2SRDYC_Pos (21U) \r
-#define RCC_CIR_PLLI2SRDYC_Msk (0x1UL << RCC_CIR_PLLI2SRDYC_Pos) /*!< 0x00200000 */\r
-#define RCC_CIR_PLLI2SRDYC RCC_CIR_PLLI2SRDYC_Msk \r
-#define RCC_CIR_PLLSAIRDYC_Pos (22U) \r
-#define RCC_CIR_PLLSAIRDYC_Msk (0x1UL << RCC_CIR_PLLSAIRDYC_Pos) /*!< 0x00400000 */\r
-#define RCC_CIR_PLLSAIRDYC RCC_CIR_PLLSAIRDYC_Msk \r
-#define RCC_CIR_CSSC_Pos (23U) \r
-#define RCC_CIR_CSSC_Msk (0x1UL << RCC_CIR_CSSC_Pos) /*!< 0x00800000 */\r
-#define RCC_CIR_CSSC RCC_CIR_CSSC_Msk \r
-\r
-/******************** Bit definition for RCC_AHB1RSTR register **************/\r
-#define RCC_AHB1RSTR_GPIOARST_Pos (0U) \r
-#define RCC_AHB1RSTR_GPIOARST_Msk (0x1UL << RCC_AHB1RSTR_GPIOARST_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB1RSTR_GPIOARST RCC_AHB1RSTR_GPIOARST_Msk \r
-#define RCC_AHB1RSTR_GPIOBRST_Pos (1U) \r
-#define RCC_AHB1RSTR_GPIOBRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOBRST_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB1RSTR_GPIOBRST RCC_AHB1RSTR_GPIOBRST_Msk \r
-#define RCC_AHB1RSTR_GPIOCRST_Pos (2U) \r
-#define RCC_AHB1RSTR_GPIOCRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOCRST_Pos) /*!< 0x00000004 */\r
-#define RCC_AHB1RSTR_GPIOCRST RCC_AHB1RSTR_GPIOCRST_Msk \r
-#define RCC_AHB1RSTR_GPIODRST_Pos (3U) \r
-#define RCC_AHB1RSTR_GPIODRST_Msk (0x1UL << RCC_AHB1RSTR_GPIODRST_Pos) /*!< 0x00000008 */\r
-#define RCC_AHB1RSTR_GPIODRST RCC_AHB1RSTR_GPIODRST_Msk \r
-#define RCC_AHB1RSTR_GPIOERST_Pos (4U) \r
-#define RCC_AHB1RSTR_GPIOERST_Msk (0x1UL << RCC_AHB1RSTR_GPIOERST_Pos) /*!< 0x00000010 */\r
-#define RCC_AHB1RSTR_GPIOERST RCC_AHB1RSTR_GPIOERST_Msk \r
-#define RCC_AHB1RSTR_GPIOFRST_Pos (5U) \r
-#define RCC_AHB1RSTR_GPIOFRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOFRST_Pos) /*!< 0x00000020 */\r
-#define RCC_AHB1RSTR_GPIOFRST RCC_AHB1RSTR_GPIOFRST_Msk \r
-#define RCC_AHB1RSTR_GPIOGRST_Pos (6U) \r
-#define RCC_AHB1RSTR_GPIOGRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOGRST_Pos) /*!< 0x00000040 */\r
-#define RCC_AHB1RSTR_GPIOGRST RCC_AHB1RSTR_GPIOGRST_Msk \r
-#define RCC_AHB1RSTR_GPIOHRST_Pos (7U) \r
-#define RCC_AHB1RSTR_GPIOHRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOHRST_Pos) /*!< 0x00000080 */\r
-#define RCC_AHB1RSTR_GPIOHRST RCC_AHB1RSTR_GPIOHRST_Msk \r
-#define RCC_AHB1RSTR_GPIOIRST_Pos (8U) \r
-#define RCC_AHB1RSTR_GPIOIRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOIRST_Pos) /*!< 0x00000100 */\r
-#define RCC_AHB1RSTR_GPIOIRST RCC_AHB1RSTR_GPIOIRST_Msk \r
-#define RCC_AHB1RSTR_GPIOJRST_Pos (9U) \r
-#define RCC_AHB1RSTR_GPIOJRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOJRST_Pos) /*!< 0x00000200 */\r
-#define RCC_AHB1RSTR_GPIOJRST RCC_AHB1RSTR_GPIOJRST_Msk \r
-#define RCC_AHB1RSTR_GPIOKRST_Pos (10U) \r
-#define RCC_AHB1RSTR_GPIOKRST_Msk (0x1UL << RCC_AHB1RSTR_GPIOKRST_Pos) /*!< 0x00000400 */\r
-#define RCC_AHB1RSTR_GPIOKRST RCC_AHB1RSTR_GPIOKRST_Msk \r
-#define RCC_AHB1RSTR_CRCRST_Pos (12U) \r
-#define RCC_AHB1RSTR_CRCRST_Msk (0x1UL << RCC_AHB1RSTR_CRCRST_Pos) /*!< 0x00001000 */\r
-#define RCC_AHB1RSTR_CRCRST RCC_AHB1RSTR_CRCRST_Msk \r
-#define RCC_AHB1RSTR_DMA1RST_Pos (21U) \r
-#define RCC_AHB1RSTR_DMA1RST_Msk (0x1UL << RCC_AHB1RSTR_DMA1RST_Pos) /*!< 0x00200000 */\r
-#define RCC_AHB1RSTR_DMA1RST RCC_AHB1RSTR_DMA1RST_Msk \r
-#define RCC_AHB1RSTR_DMA2RST_Pos (22U) \r
-#define RCC_AHB1RSTR_DMA2RST_Msk (0x1UL << RCC_AHB1RSTR_DMA2RST_Pos) /*!< 0x00400000 */\r
-#define RCC_AHB1RSTR_DMA2RST RCC_AHB1RSTR_DMA2RST_Msk \r
-#define RCC_AHB1RSTR_DMA2DRST_Pos (23U) \r
-#define RCC_AHB1RSTR_DMA2DRST_Msk (0x1UL << RCC_AHB1RSTR_DMA2DRST_Pos) /*!< 0x00800000 */\r
-#define RCC_AHB1RSTR_DMA2DRST RCC_AHB1RSTR_DMA2DRST_Msk \r
-#define RCC_AHB1RSTR_ETHMACRST_Pos (25U) \r
-#define RCC_AHB1RSTR_ETHMACRST_Msk (0x1UL << RCC_AHB1RSTR_ETHMACRST_Pos) /*!< 0x02000000 */\r
-#define RCC_AHB1RSTR_ETHMACRST RCC_AHB1RSTR_ETHMACRST_Msk \r
-#define RCC_AHB1RSTR_OTGHRST_Pos (29U) \r
-#define RCC_AHB1RSTR_OTGHRST_Msk (0x1UL << RCC_AHB1RSTR_OTGHRST_Pos) /*!< 0x20000000 */\r
-#define RCC_AHB1RSTR_OTGHRST RCC_AHB1RSTR_OTGHRST_Msk \r
-\r
-/******************** Bit definition for RCC_AHB2RSTR register **************/\r
-#define RCC_AHB2RSTR_DCMIRST_Pos (0U) \r
-#define RCC_AHB2RSTR_DCMIRST_Msk (0x1UL << RCC_AHB2RSTR_DCMIRST_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB2RSTR_DCMIRST RCC_AHB2RSTR_DCMIRST_Msk \r
-#define RCC_AHB2RSTR_JPEGRST_Pos (1U) \r
-#define RCC_AHB2RSTR_JPEGRST_Msk (0x1UL << RCC_AHB2RSTR_JPEGRST_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB2RSTR_JPEGRST RCC_AHB2RSTR_JPEGRST_Msk \r
-#define RCC_AHB2RSTR_RNGRST_Pos (6U) \r
-#define RCC_AHB2RSTR_RNGRST_Msk (0x1UL << RCC_AHB2RSTR_RNGRST_Pos) /*!< 0x00000040 */\r
-#define RCC_AHB2RSTR_RNGRST RCC_AHB2RSTR_RNGRST_Msk \r
-#define RCC_AHB2RSTR_OTGFSRST_Pos (7U) \r
-#define RCC_AHB2RSTR_OTGFSRST_Msk (0x1UL << RCC_AHB2RSTR_OTGFSRST_Pos) /*!< 0x00000080 */\r
-#define RCC_AHB2RSTR_OTGFSRST RCC_AHB2RSTR_OTGFSRST_Msk \r
-\r
-/******************** Bit definition for RCC_AHB3RSTR register **************/\r
-\r
-#define RCC_AHB3RSTR_FMCRST_Pos (0U) \r
-#define RCC_AHB3RSTR_FMCRST_Msk (0x1UL << RCC_AHB3RSTR_FMCRST_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB3RSTR_FMCRST RCC_AHB3RSTR_FMCRST_Msk \r
-#define RCC_AHB3RSTR_QSPIRST_Pos (1U) \r
-#define RCC_AHB3RSTR_QSPIRST_Msk (0x1UL << RCC_AHB3RSTR_QSPIRST_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB3RSTR_QSPIRST RCC_AHB3RSTR_QSPIRST_Msk \r
-\r
-/******************** Bit definition for RCC_APB1RSTR register **************/\r
-#define RCC_APB1RSTR_TIM2RST_Pos (0U) \r
-#define RCC_APB1RSTR_TIM2RST_Msk (0x1UL << RCC_APB1RSTR_TIM2RST_Pos) /*!< 0x00000001 */\r
-#define RCC_APB1RSTR_TIM2RST RCC_APB1RSTR_TIM2RST_Msk \r
-#define RCC_APB1RSTR_TIM3RST_Pos (1U) \r
-#define RCC_APB1RSTR_TIM3RST_Msk (0x1UL << RCC_APB1RSTR_TIM3RST_Pos) /*!< 0x00000002 */\r
-#define RCC_APB1RSTR_TIM3RST RCC_APB1RSTR_TIM3RST_Msk \r
-#define RCC_APB1RSTR_TIM4RST_Pos (2U) \r
-#define RCC_APB1RSTR_TIM4RST_Msk (0x1UL << RCC_APB1RSTR_TIM4RST_Pos) /*!< 0x00000004 */\r
-#define RCC_APB1RSTR_TIM4RST RCC_APB1RSTR_TIM4RST_Msk \r
-#define RCC_APB1RSTR_TIM5RST_Pos (3U) \r
-#define RCC_APB1RSTR_TIM5RST_Msk (0x1UL << RCC_APB1RSTR_TIM5RST_Pos) /*!< 0x00000008 */\r
-#define RCC_APB1RSTR_TIM5RST RCC_APB1RSTR_TIM5RST_Msk \r
-#define RCC_APB1RSTR_TIM6RST_Pos (4U) \r
-#define RCC_APB1RSTR_TIM6RST_Msk (0x1UL << RCC_APB1RSTR_TIM6RST_Pos) /*!< 0x00000010 */\r
-#define RCC_APB1RSTR_TIM6RST RCC_APB1RSTR_TIM6RST_Msk \r
-#define RCC_APB1RSTR_TIM7RST_Pos (5U) \r
-#define RCC_APB1RSTR_TIM7RST_Msk (0x1UL << RCC_APB1RSTR_TIM7RST_Pos) /*!< 0x00000020 */\r
-#define RCC_APB1RSTR_TIM7RST RCC_APB1RSTR_TIM7RST_Msk \r
-#define RCC_APB1RSTR_TIM12RST_Pos (6U) \r
-#define RCC_APB1RSTR_TIM12RST_Msk (0x1UL << RCC_APB1RSTR_TIM12RST_Pos) /*!< 0x00000040 */\r
-#define RCC_APB1RSTR_TIM12RST RCC_APB1RSTR_TIM12RST_Msk \r
-#define RCC_APB1RSTR_TIM13RST_Pos (7U) \r
-#define RCC_APB1RSTR_TIM13RST_Msk (0x1UL << RCC_APB1RSTR_TIM13RST_Pos) /*!< 0x00000080 */\r
-#define RCC_APB1RSTR_TIM13RST RCC_APB1RSTR_TIM13RST_Msk \r
-#define RCC_APB1RSTR_TIM14RST_Pos (8U) \r
-#define RCC_APB1RSTR_TIM14RST_Msk (0x1UL << RCC_APB1RSTR_TIM14RST_Pos) /*!< 0x00000100 */\r
-#define RCC_APB1RSTR_TIM14RST RCC_APB1RSTR_TIM14RST_Msk \r
-#define RCC_APB1RSTR_LPTIM1RST_Pos (9U) \r
-#define RCC_APB1RSTR_LPTIM1RST_Msk (0x1UL << RCC_APB1RSTR_LPTIM1RST_Pos) /*!< 0x00000200 */\r
-#define RCC_APB1RSTR_LPTIM1RST RCC_APB1RSTR_LPTIM1RST_Msk \r
-#define RCC_APB1RSTR_WWDGRST_Pos (11U) \r
-#define RCC_APB1RSTR_WWDGRST_Msk (0x1UL << RCC_APB1RSTR_WWDGRST_Pos) /*!< 0x00000800 */\r
-#define RCC_APB1RSTR_WWDGRST RCC_APB1RSTR_WWDGRST_Msk \r
-#define RCC_APB1RSTR_CAN3RST_Pos (13U) \r
-#define RCC_APB1RSTR_CAN3RST_Msk (0x1UL << RCC_APB1RSTR_CAN3RST_Pos) /*!< 0x00002000 */\r
-#define RCC_APB1RSTR_CAN3RST RCC_APB1RSTR_CAN3RST_Msk \r
-#define RCC_APB1RSTR_SPI2RST_Pos (14U) \r
-#define RCC_APB1RSTR_SPI2RST_Msk (0x1UL << RCC_APB1RSTR_SPI2RST_Pos) /*!< 0x00004000 */\r
-#define RCC_APB1RSTR_SPI2RST RCC_APB1RSTR_SPI2RST_Msk \r
-#define RCC_APB1RSTR_SPI3RST_Pos (15U) \r
-#define RCC_APB1RSTR_SPI3RST_Msk (0x1UL << RCC_APB1RSTR_SPI3RST_Pos) /*!< 0x00008000 */\r
-#define RCC_APB1RSTR_SPI3RST RCC_APB1RSTR_SPI3RST_Msk \r
-#define RCC_APB1RSTR_SPDIFRXRST_Pos (16U) \r
-#define RCC_APB1RSTR_SPDIFRXRST_Msk (0x1UL << RCC_APB1RSTR_SPDIFRXRST_Pos) /*!< 0x00010000 */\r
-#define RCC_APB1RSTR_SPDIFRXRST RCC_APB1RSTR_SPDIFRXRST_Msk \r
-#define RCC_APB1RSTR_USART2RST_Pos (17U) \r
-#define RCC_APB1RSTR_USART2RST_Msk (0x1UL << RCC_APB1RSTR_USART2RST_Pos) /*!< 0x00020000 */\r
-#define RCC_APB1RSTR_USART2RST RCC_APB1RSTR_USART2RST_Msk \r
-#define RCC_APB1RSTR_USART3RST_Pos (18U) \r
-#define RCC_APB1RSTR_USART3RST_Msk (0x1UL << RCC_APB1RSTR_USART3RST_Pos) /*!< 0x00040000 */\r
-#define RCC_APB1RSTR_USART3RST RCC_APB1RSTR_USART3RST_Msk \r
-#define RCC_APB1RSTR_UART4RST_Pos (19U) \r
-#define RCC_APB1RSTR_UART4RST_Msk (0x1UL << RCC_APB1RSTR_UART4RST_Pos) /*!< 0x00080000 */\r
-#define RCC_APB1RSTR_UART4RST RCC_APB1RSTR_UART4RST_Msk \r
-#define RCC_APB1RSTR_UART5RST_Pos (20U) \r
-#define RCC_APB1RSTR_UART5RST_Msk (0x1UL << RCC_APB1RSTR_UART5RST_Pos) /*!< 0x00100000 */\r
-#define RCC_APB1RSTR_UART5RST RCC_APB1RSTR_UART5RST_Msk \r
-#define RCC_APB1RSTR_I2C1RST_Pos (21U) \r
-#define RCC_APB1RSTR_I2C1RST_Msk (0x1UL << RCC_APB1RSTR_I2C1RST_Pos) /*!< 0x00200000 */\r
-#define RCC_APB1RSTR_I2C1RST RCC_APB1RSTR_I2C1RST_Msk \r
-#define RCC_APB1RSTR_I2C2RST_Pos (22U) \r
-#define RCC_APB1RSTR_I2C2RST_Msk (0x1UL << RCC_APB1RSTR_I2C2RST_Pos) /*!< 0x00400000 */\r
-#define RCC_APB1RSTR_I2C2RST RCC_APB1RSTR_I2C2RST_Msk \r
-#define RCC_APB1RSTR_I2C3RST_Pos (23U) \r
-#define RCC_APB1RSTR_I2C3RST_Msk (0x1UL << RCC_APB1RSTR_I2C3RST_Pos) /*!< 0x00800000 */\r
-#define RCC_APB1RSTR_I2C3RST RCC_APB1RSTR_I2C3RST_Msk \r
-#define RCC_APB1RSTR_I2C4RST_Pos (24U) \r
-#define RCC_APB1RSTR_I2C4RST_Msk (0x1UL << RCC_APB1RSTR_I2C4RST_Pos) /*!< 0x01000000 */\r
-#define RCC_APB1RSTR_I2C4RST RCC_APB1RSTR_I2C4RST_Msk \r
-#define RCC_APB1RSTR_CAN1RST_Pos (25U) \r
-#define RCC_APB1RSTR_CAN1RST_Msk (0x1UL << RCC_APB1RSTR_CAN1RST_Pos) /*!< 0x02000000 */\r
-#define RCC_APB1RSTR_CAN1RST RCC_APB1RSTR_CAN1RST_Msk \r
-#define RCC_APB1RSTR_CAN2RST_Pos (26U) \r
-#define RCC_APB1RSTR_CAN2RST_Msk (0x1UL << RCC_APB1RSTR_CAN2RST_Pos) /*!< 0x04000000 */\r
-#define RCC_APB1RSTR_CAN2RST RCC_APB1RSTR_CAN2RST_Msk \r
-#define RCC_APB1RSTR_CECRST_Pos (27U) \r
-#define RCC_APB1RSTR_CECRST_Msk (0x1UL << RCC_APB1RSTR_CECRST_Pos) /*!< 0x08000000 */\r
-#define RCC_APB1RSTR_CECRST RCC_APB1RSTR_CECRST_Msk \r
-#define RCC_APB1RSTR_PWRRST_Pos (28U) \r
-#define RCC_APB1RSTR_PWRRST_Msk (0x1UL << RCC_APB1RSTR_PWRRST_Pos) /*!< 0x10000000 */\r
-#define RCC_APB1RSTR_PWRRST RCC_APB1RSTR_PWRRST_Msk \r
-#define RCC_APB1RSTR_DACRST_Pos (29U) \r
-#define RCC_APB1RSTR_DACRST_Msk (0x1UL << RCC_APB1RSTR_DACRST_Pos) /*!< 0x20000000 */\r
-#define RCC_APB1RSTR_DACRST RCC_APB1RSTR_DACRST_Msk \r
-#define RCC_APB1RSTR_UART7RST_Pos (30U) \r
-#define RCC_APB1RSTR_UART7RST_Msk (0x1UL << RCC_APB1RSTR_UART7RST_Pos) /*!< 0x40000000 */\r
-#define RCC_APB1RSTR_UART7RST RCC_APB1RSTR_UART7RST_Msk \r
-#define RCC_APB1RSTR_UART8RST_Pos (31U) \r
-#define RCC_APB1RSTR_UART8RST_Msk (0x1UL << RCC_APB1RSTR_UART8RST_Pos) /*!< 0x80000000 */\r
-#define RCC_APB1RSTR_UART8RST RCC_APB1RSTR_UART8RST_Msk \r
-\r
-/******************** Bit definition for RCC_APB2RSTR register **************/\r
-#define RCC_APB2RSTR_TIM1RST_Pos (0U) \r
-#define RCC_APB2RSTR_TIM1RST_Msk (0x1UL << RCC_APB2RSTR_TIM1RST_Pos) /*!< 0x00000001 */\r
-#define RCC_APB2RSTR_TIM1RST RCC_APB2RSTR_TIM1RST_Msk \r
-#define RCC_APB2RSTR_TIM8RST_Pos (1U) \r
-#define RCC_APB2RSTR_TIM8RST_Msk (0x1UL << RCC_APB2RSTR_TIM8RST_Pos) /*!< 0x00000002 */\r
-#define RCC_APB2RSTR_TIM8RST RCC_APB2RSTR_TIM8RST_Msk \r
-#define RCC_APB2RSTR_USART1RST_Pos (4U) \r
-#define RCC_APB2RSTR_USART1RST_Msk (0x1UL << RCC_APB2RSTR_USART1RST_Pos) /*!< 0x00000010 */\r
-#define RCC_APB2RSTR_USART1RST RCC_APB2RSTR_USART1RST_Msk \r
-#define RCC_APB2RSTR_USART6RST_Pos (5U) \r
-#define RCC_APB2RSTR_USART6RST_Msk (0x1UL << RCC_APB2RSTR_USART6RST_Pos) /*!< 0x00000020 */\r
-#define RCC_APB2RSTR_USART6RST RCC_APB2RSTR_USART6RST_Msk \r
-#define RCC_APB2RSTR_SDMMC2RST_Pos (7U) \r
-#define RCC_APB2RSTR_SDMMC2RST_Msk (0x1UL << RCC_APB2RSTR_SDMMC2RST_Pos) /*!< 0x00000080 */\r
-#define RCC_APB2RSTR_SDMMC2RST RCC_APB2RSTR_SDMMC2RST_Msk \r
-#define RCC_APB2RSTR_ADCRST_Pos (8U) \r
-#define RCC_APB2RSTR_ADCRST_Msk (0x1UL << RCC_APB2RSTR_ADCRST_Pos) /*!< 0x00000100 */\r
-#define RCC_APB2RSTR_ADCRST RCC_APB2RSTR_ADCRST_Msk \r
-#define RCC_APB2RSTR_SDMMC1RST_Pos (11U) \r
-#define RCC_APB2RSTR_SDMMC1RST_Msk (0x1UL << RCC_APB2RSTR_SDMMC1RST_Pos) /*!< 0x00000800 */\r
-#define RCC_APB2RSTR_SDMMC1RST RCC_APB2RSTR_SDMMC1RST_Msk \r
-#define RCC_APB2RSTR_SPI1RST_Pos (12U) \r
-#define RCC_APB2RSTR_SPI1RST_Msk (0x1UL << RCC_APB2RSTR_SPI1RST_Pos) /*!< 0x00001000 */\r
-#define RCC_APB2RSTR_SPI1RST RCC_APB2RSTR_SPI1RST_Msk \r
-#define RCC_APB2RSTR_SPI4RST_Pos (13U) \r
-#define RCC_APB2RSTR_SPI4RST_Msk (0x1UL << RCC_APB2RSTR_SPI4RST_Pos) /*!< 0x00002000 */\r
-#define RCC_APB2RSTR_SPI4RST RCC_APB2RSTR_SPI4RST_Msk \r
-#define RCC_APB2RSTR_SYSCFGRST_Pos (14U) \r
-#define RCC_APB2RSTR_SYSCFGRST_Msk (0x1UL << RCC_APB2RSTR_SYSCFGRST_Pos) /*!< 0x00004000 */\r
-#define RCC_APB2RSTR_SYSCFGRST RCC_APB2RSTR_SYSCFGRST_Msk \r
-#define RCC_APB2RSTR_TIM9RST_Pos (16U) \r
-#define RCC_APB2RSTR_TIM9RST_Msk (0x1UL << RCC_APB2RSTR_TIM9RST_Pos) /*!< 0x00010000 */\r
-#define RCC_APB2RSTR_TIM9RST RCC_APB2RSTR_TIM9RST_Msk \r
-#define RCC_APB2RSTR_TIM10RST_Pos (17U) \r
-#define RCC_APB2RSTR_TIM10RST_Msk (0x1UL << RCC_APB2RSTR_TIM10RST_Pos) /*!< 0x00020000 */\r
-#define RCC_APB2RSTR_TIM10RST RCC_APB2RSTR_TIM10RST_Msk \r
-#define RCC_APB2RSTR_TIM11RST_Pos (18U) \r
-#define RCC_APB2RSTR_TIM11RST_Msk (0x1UL << RCC_APB2RSTR_TIM11RST_Pos) /*!< 0x00040000 */\r
-#define RCC_APB2RSTR_TIM11RST RCC_APB2RSTR_TIM11RST_Msk \r
-#define RCC_APB2RSTR_SPI5RST_Pos (20U) \r
-#define RCC_APB2RSTR_SPI5RST_Msk (0x1UL << RCC_APB2RSTR_SPI5RST_Pos) /*!< 0x00100000 */\r
-#define RCC_APB2RSTR_SPI5RST RCC_APB2RSTR_SPI5RST_Msk \r
-#define RCC_APB2RSTR_SPI6RST_Pos (21U) \r
-#define RCC_APB2RSTR_SPI6RST_Msk (0x1UL << RCC_APB2RSTR_SPI6RST_Pos) /*!< 0x00200000 */\r
-#define RCC_APB2RSTR_SPI6RST RCC_APB2RSTR_SPI6RST_Msk \r
-#define RCC_APB2RSTR_SAI1RST_Pos (22U) \r
-#define RCC_APB2RSTR_SAI1RST_Msk (0x1UL << RCC_APB2RSTR_SAI1RST_Pos) /*!< 0x00400000 */\r
-#define RCC_APB2RSTR_SAI1RST RCC_APB2RSTR_SAI1RST_Msk \r
-#define RCC_APB2RSTR_SAI2RST_Pos (23U) \r
-#define RCC_APB2RSTR_SAI2RST_Msk (0x1UL << RCC_APB2RSTR_SAI2RST_Pos) /*!< 0x00800000 */\r
-#define RCC_APB2RSTR_SAI2RST RCC_APB2RSTR_SAI2RST_Msk \r
-#define RCC_APB2RSTR_LTDCRST_Pos (26U) \r
-#define RCC_APB2RSTR_LTDCRST_Msk (0x1UL << RCC_APB2RSTR_LTDCRST_Pos) /*!< 0x04000000 */\r
-#define RCC_APB2RSTR_LTDCRST RCC_APB2RSTR_LTDCRST_Msk \r
-#define RCC_APB2RSTR_DFSDM1RST_Pos (29U) \r
-#define RCC_APB2RSTR_DFSDM1RST_Msk (0x1UL << RCC_APB2RSTR_DFSDM1RST_Pos) /*!< 0x20000000 */\r
-#define RCC_APB2RSTR_DFSDM1RST RCC_APB2RSTR_DFSDM1RST_Msk \r
-#define RCC_APB2RSTR_MDIORST_Pos (30U) \r
-#define RCC_APB2RSTR_MDIORST_Msk (0x1UL << RCC_APB2RSTR_MDIORST_Pos) /*!< 0x40000000 */\r
-#define RCC_APB2RSTR_MDIORST RCC_APB2RSTR_MDIORST_Msk \r
-\r
-/******************** Bit definition for RCC_AHB1ENR register ***************/\r
-#define RCC_AHB1ENR_GPIOAEN_Pos (0U) \r
-#define RCC_AHB1ENR_GPIOAEN_Msk (0x1UL << RCC_AHB1ENR_GPIOAEN_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB1ENR_GPIOAEN RCC_AHB1ENR_GPIOAEN_Msk \r
-#define RCC_AHB1ENR_GPIOBEN_Pos (1U) \r
-#define RCC_AHB1ENR_GPIOBEN_Msk (0x1UL << RCC_AHB1ENR_GPIOBEN_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB1ENR_GPIOBEN RCC_AHB1ENR_GPIOBEN_Msk \r
-#define RCC_AHB1ENR_GPIOCEN_Pos (2U) \r
-#define RCC_AHB1ENR_GPIOCEN_Msk (0x1UL << RCC_AHB1ENR_GPIOCEN_Pos) /*!< 0x00000004 */\r
-#define RCC_AHB1ENR_GPIOCEN RCC_AHB1ENR_GPIOCEN_Msk \r
-#define RCC_AHB1ENR_GPIODEN_Pos (3U) \r
-#define RCC_AHB1ENR_GPIODEN_Msk (0x1UL << RCC_AHB1ENR_GPIODEN_Pos) /*!< 0x00000008 */\r
-#define RCC_AHB1ENR_GPIODEN RCC_AHB1ENR_GPIODEN_Msk \r
-#define RCC_AHB1ENR_GPIOEEN_Pos (4U) \r
-#define RCC_AHB1ENR_GPIOEEN_Msk (0x1UL << RCC_AHB1ENR_GPIOEEN_Pos) /*!< 0x00000010 */\r
-#define RCC_AHB1ENR_GPIOEEN RCC_AHB1ENR_GPIOEEN_Msk \r
-#define RCC_AHB1ENR_GPIOFEN_Pos (5U) \r
-#define RCC_AHB1ENR_GPIOFEN_Msk (0x1UL << RCC_AHB1ENR_GPIOFEN_Pos) /*!< 0x00000020 */\r
-#define RCC_AHB1ENR_GPIOFEN RCC_AHB1ENR_GPIOFEN_Msk \r
-#define RCC_AHB1ENR_GPIOGEN_Pos (6U) \r
-#define RCC_AHB1ENR_GPIOGEN_Msk (0x1UL << RCC_AHB1ENR_GPIOGEN_Pos) /*!< 0x00000040 */\r
-#define RCC_AHB1ENR_GPIOGEN RCC_AHB1ENR_GPIOGEN_Msk \r
-#define RCC_AHB1ENR_GPIOHEN_Pos (7U) \r
-#define RCC_AHB1ENR_GPIOHEN_Msk (0x1UL << RCC_AHB1ENR_GPIOHEN_Pos) /*!< 0x00000080 */\r
-#define RCC_AHB1ENR_GPIOHEN RCC_AHB1ENR_GPIOHEN_Msk \r
-#define RCC_AHB1ENR_GPIOIEN_Pos (8U) \r
-#define RCC_AHB1ENR_GPIOIEN_Msk (0x1UL << RCC_AHB1ENR_GPIOIEN_Pos) /*!< 0x00000100 */\r
-#define RCC_AHB1ENR_GPIOIEN RCC_AHB1ENR_GPIOIEN_Msk \r
-#define RCC_AHB1ENR_GPIOJEN_Pos (9U) \r
-#define RCC_AHB1ENR_GPIOJEN_Msk (0x1UL << RCC_AHB1ENR_GPIOJEN_Pos) /*!< 0x00000200 */\r
-#define RCC_AHB1ENR_GPIOJEN RCC_AHB1ENR_GPIOJEN_Msk \r
-#define RCC_AHB1ENR_GPIOKEN_Pos (10U) \r
-#define RCC_AHB1ENR_GPIOKEN_Msk (0x1UL << RCC_AHB1ENR_GPIOKEN_Pos) /*!< 0x00000400 */\r
-#define RCC_AHB1ENR_GPIOKEN RCC_AHB1ENR_GPIOKEN_Msk \r
-#define RCC_AHB1ENR_CRCEN_Pos (12U) \r
-#define RCC_AHB1ENR_CRCEN_Msk (0x1UL << RCC_AHB1ENR_CRCEN_Pos) /*!< 0x00001000 */\r
-#define RCC_AHB1ENR_CRCEN RCC_AHB1ENR_CRCEN_Msk \r
-#define RCC_AHB1ENR_BKPSRAMEN_Pos (18U) \r
-#define RCC_AHB1ENR_BKPSRAMEN_Msk (0x1UL << RCC_AHB1ENR_BKPSRAMEN_Pos) /*!< 0x00040000 */\r
-#define RCC_AHB1ENR_BKPSRAMEN RCC_AHB1ENR_BKPSRAMEN_Msk \r
-#define RCC_AHB1ENR_DTCMRAMEN_Pos (20U) \r
-#define RCC_AHB1ENR_DTCMRAMEN_Msk (0x1UL << RCC_AHB1ENR_DTCMRAMEN_Pos) /*!< 0x00100000 */\r
-#define RCC_AHB1ENR_DTCMRAMEN RCC_AHB1ENR_DTCMRAMEN_Msk \r
-#define RCC_AHB1ENR_DMA1EN_Pos (21U) \r
-#define RCC_AHB1ENR_DMA1EN_Msk (0x1UL << RCC_AHB1ENR_DMA1EN_Pos) /*!< 0x00200000 */\r
-#define RCC_AHB1ENR_DMA1EN RCC_AHB1ENR_DMA1EN_Msk \r
-#define RCC_AHB1ENR_DMA2EN_Pos (22U) \r
-#define RCC_AHB1ENR_DMA2EN_Msk (0x1UL << RCC_AHB1ENR_DMA2EN_Pos) /*!< 0x00400000 */\r
-#define RCC_AHB1ENR_DMA2EN RCC_AHB1ENR_DMA2EN_Msk \r
-#define RCC_AHB1ENR_DMA2DEN_Pos (23U) \r
-#define RCC_AHB1ENR_DMA2DEN_Msk (0x1UL << RCC_AHB1ENR_DMA2DEN_Pos) /*!< 0x00800000 */\r
-#define RCC_AHB1ENR_DMA2DEN RCC_AHB1ENR_DMA2DEN_Msk \r
-#define RCC_AHB1ENR_ETHMACEN_Pos (25U) \r
-#define RCC_AHB1ENR_ETHMACEN_Msk (0x1UL << RCC_AHB1ENR_ETHMACEN_Pos) /*!< 0x02000000 */\r
-#define RCC_AHB1ENR_ETHMACEN RCC_AHB1ENR_ETHMACEN_Msk \r
-#define RCC_AHB1ENR_ETHMACTXEN_Pos (26U) \r
-#define RCC_AHB1ENR_ETHMACTXEN_Msk (0x1UL << RCC_AHB1ENR_ETHMACTXEN_Pos) /*!< 0x04000000 */\r
-#define RCC_AHB1ENR_ETHMACTXEN RCC_AHB1ENR_ETHMACTXEN_Msk \r
-#define RCC_AHB1ENR_ETHMACRXEN_Pos (27U) \r
-#define RCC_AHB1ENR_ETHMACRXEN_Msk (0x1UL << RCC_AHB1ENR_ETHMACRXEN_Pos) /*!< 0x08000000 */\r
-#define RCC_AHB1ENR_ETHMACRXEN RCC_AHB1ENR_ETHMACRXEN_Msk \r
-#define RCC_AHB1ENR_ETHMACPTPEN_Pos (28U) \r
-#define RCC_AHB1ENR_ETHMACPTPEN_Msk (0x1UL << RCC_AHB1ENR_ETHMACPTPEN_Pos) /*!< 0x10000000 */\r
-#define RCC_AHB1ENR_ETHMACPTPEN RCC_AHB1ENR_ETHMACPTPEN_Msk \r
-#define RCC_AHB1ENR_OTGHSEN_Pos (29U) \r
-#define RCC_AHB1ENR_OTGHSEN_Msk (0x1UL << RCC_AHB1ENR_OTGHSEN_Pos) /*!< 0x20000000 */\r
-#define RCC_AHB1ENR_OTGHSEN RCC_AHB1ENR_OTGHSEN_Msk \r
-#define RCC_AHB1ENR_OTGHSULPIEN_Pos (30U) \r
-#define RCC_AHB1ENR_OTGHSULPIEN_Msk (0x1UL << RCC_AHB1ENR_OTGHSULPIEN_Pos) /*!< 0x40000000 */\r
-#define RCC_AHB1ENR_OTGHSULPIEN RCC_AHB1ENR_OTGHSULPIEN_Msk \r
-\r
-/******************** Bit definition for RCC_AHB2ENR register ***************/\r
-#define RCC_AHB2ENR_DCMIEN_Pos (0U) \r
-#define RCC_AHB2ENR_DCMIEN_Msk (0x1UL << RCC_AHB2ENR_DCMIEN_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB2ENR_DCMIEN RCC_AHB2ENR_DCMIEN_Msk \r
-#define RCC_AHB2ENR_JPEGEN_Pos (1U) \r
-#define RCC_AHB2ENR_JPEGEN_Msk (0x1UL << RCC_AHB2ENR_JPEGEN_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB2ENR_JPEGEN RCC_AHB2ENR_JPEGEN_Msk \r
-#define RCC_AHB2ENR_RNGEN_Pos (6U) \r
-#define RCC_AHB2ENR_RNGEN_Msk (0x1UL << RCC_AHB2ENR_RNGEN_Pos) /*!< 0x00000040 */\r
-#define RCC_AHB2ENR_RNGEN RCC_AHB2ENR_RNGEN_Msk \r
-#define RCC_AHB2ENR_OTGFSEN_Pos (7U) \r
-#define RCC_AHB2ENR_OTGFSEN_Msk (0x1UL << RCC_AHB2ENR_OTGFSEN_Pos) /*!< 0x00000080 */\r
-#define RCC_AHB2ENR_OTGFSEN RCC_AHB2ENR_OTGFSEN_Msk \r
-\r
-/******************** Bit definition for RCC_AHB3ENR register ***************/\r
-#define RCC_AHB3ENR_FMCEN_Pos (0U) \r
-#define RCC_AHB3ENR_FMCEN_Msk (0x1UL << RCC_AHB3ENR_FMCEN_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB3ENR_FMCEN RCC_AHB3ENR_FMCEN_Msk \r
-#define RCC_AHB3ENR_QSPIEN_Pos (1U) \r
-#define RCC_AHB3ENR_QSPIEN_Msk (0x1UL << RCC_AHB3ENR_QSPIEN_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB3ENR_QSPIEN RCC_AHB3ENR_QSPIEN_Msk \r
-\r
-/******************** Bit definition for RCC_APB1ENR register ***************/\r
-#define RCC_APB1ENR_TIM2EN_Pos (0U) \r
-#define RCC_APB1ENR_TIM2EN_Msk (0x1UL << RCC_APB1ENR_TIM2EN_Pos) /*!< 0x00000001 */\r
-#define RCC_APB1ENR_TIM2EN RCC_APB1ENR_TIM2EN_Msk \r
-#define RCC_APB1ENR_TIM3EN_Pos (1U) \r
-#define RCC_APB1ENR_TIM3EN_Msk (0x1UL << RCC_APB1ENR_TIM3EN_Pos) /*!< 0x00000002 */\r
-#define RCC_APB1ENR_TIM3EN RCC_APB1ENR_TIM3EN_Msk \r
-#define RCC_APB1ENR_TIM4EN_Pos (2U) \r
-#define RCC_APB1ENR_TIM4EN_Msk (0x1UL << RCC_APB1ENR_TIM4EN_Pos) /*!< 0x00000004 */\r
-#define RCC_APB1ENR_TIM4EN RCC_APB1ENR_TIM4EN_Msk \r
-#define RCC_APB1ENR_TIM5EN_Pos (3U) \r
-#define RCC_APB1ENR_TIM5EN_Msk (0x1UL << RCC_APB1ENR_TIM5EN_Pos) /*!< 0x00000008 */\r
-#define RCC_APB1ENR_TIM5EN RCC_APB1ENR_TIM5EN_Msk \r
-#define RCC_APB1ENR_TIM6EN_Pos (4U) \r
-#define RCC_APB1ENR_TIM6EN_Msk (0x1UL << RCC_APB1ENR_TIM6EN_Pos) /*!< 0x00000010 */\r
-#define RCC_APB1ENR_TIM6EN RCC_APB1ENR_TIM6EN_Msk \r
-#define RCC_APB1ENR_TIM7EN_Pos (5U) \r
-#define RCC_APB1ENR_TIM7EN_Msk (0x1UL << RCC_APB1ENR_TIM7EN_Pos) /*!< 0x00000020 */\r
-#define RCC_APB1ENR_TIM7EN RCC_APB1ENR_TIM7EN_Msk \r
-#define RCC_APB1ENR_TIM12EN_Pos (6U) \r
-#define RCC_APB1ENR_TIM12EN_Msk (0x1UL << RCC_APB1ENR_TIM12EN_Pos) /*!< 0x00000040 */\r
-#define RCC_APB1ENR_TIM12EN RCC_APB1ENR_TIM12EN_Msk \r
-#define RCC_APB1ENR_TIM13EN_Pos (7U) \r
-#define RCC_APB1ENR_TIM13EN_Msk (0x1UL << RCC_APB1ENR_TIM13EN_Pos) /*!< 0x00000080 */\r
-#define RCC_APB1ENR_TIM13EN RCC_APB1ENR_TIM13EN_Msk \r
-#define RCC_APB1ENR_TIM14EN_Pos (8U) \r
-#define RCC_APB1ENR_TIM14EN_Msk (0x1UL << RCC_APB1ENR_TIM14EN_Pos) /*!< 0x00000100 */\r
-#define RCC_APB1ENR_TIM14EN RCC_APB1ENR_TIM14EN_Msk \r
-#define RCC_APB1ENR_LPTIM1EN_Pos (9U) \r
-#define RCC_APB1ENR_LPTIM1EN_Msk (0x1UL << RCC_APB1ENR_LPTIM1EN_Pos) /*!< 0x00000200 */\r
-#define RCC_APB1ENR_LPTIM1EN RCC_APB1ENR_LPTIM1EN_Msk \r
-#define RCC_APB1ENR_RTCEN_Pos (10U) \r
-#define RCC_APB1ENR_RTCEN_Msk (0x1UL << RCC_APB1ENR_RTCEN_Pos) /*!< 0x00000400 */\r
-#define RCC_APB1ENR_RTCEN RCC_APB1ENR_RTCEN_Msk \r
-#define RCC_APB1ENR_WWDGEN_Pos (11U) \r
-#define RCC_APB1ENR_WWDGEN_Msk (0x1UL << RCC_APB1ENR_WWDGEN_Pos) /*!< 0x00000800 */\r
-#define RCC_APB1ENR_WWDGEN RCC_APB1ENR_WWDGEN_Msk \r
-#define RCC_APB1ENR_CAN3EN_Pos (13U) \r
-#define RCC_APB1ENR_CAN3EN_Msk (0x1UL << RCC_APB1ENR_CAN3EN_Pos) /*!< 0x00002000 */\r
-#define RCC_APB1ENR_CAN3EN RCC_APB1ENR_CAN3EN_Msk \r
-#define RCC_APB1ENR_SPI2EN_Pos (14U) \r
-#define RCC_APB1ENR_SPI2EN_Msk (0x1UL << RCC_APB1ENR_SPI2EN_Pos) /*!< 0x00004000 */\r
-#define RCC_APB1ENR_SPI2EN RCC_APB1ENR_SPI2EN_Msk \r
-#define RCC_APB1ENR_SPI3EN_Pos (15U) \r
-#define RCC_APB1ENR_SPI3EN_Msk (0x1UL << RCC_APB1ENR_SPI3EN_Pos) /*!< 0x00008000 */\r
-#define RCC_APB1ENR_SPI3EN RCC_APB1ENR_SPI3EN_Msk \r
-#define RCC_APB1ENR_SPDIFRXEN_Pos (16U) \r
-#define RCC_APB1ENR_SPDIFRXEN_Msk (0x1UL << RCC_APB1ENR_SPDIFRXEN_Pos) /*!< 0x00010000 */\r
-#define RCC_APB1ENR_SPDIFRXEN RCC_APB1ENR_SPDIFRXEN_Msk \r
-#define RCC_APB1ENR_USART2EN_Pos (17U) \r
-#define RCC_APB1ENR_USART2EN_Msk (0x1UL << RCC_APB1ENR_USART2EN_Pos) /*!< 0x00020000 */\r
-#define RCC_APB1ENR_USART2EN RCC_APB1ENR_USART2EN_Msk \r
-#define RCC_APB1ENR_USART3EN_Pos (18U) \r
-#define RCC_APB1ENR_USART3EN_Msk (0x1UL << RCC_APB1ENR_USART3EN_Pos) /*!< 0x00040000 */\r
-#define RCC_APB1ENR_USART3EN RCC_APB1ENR_USART3EN_Msk \r
-#define RCC_APB1ENR_UART4EN_Pos (19U) \r
-#define RCC_APB1ENR_UART4EN_Msk (0x1UL << RCC_APB1ENR_UART4EN_Pos) /*!< 0x00080000 */\r
-#define RCC_APB1ENR_UART4EN RCC_APB1ENR_UART4EN_Msk \r
-#define RCC_APB1ENR_UART5EN_Pos (20U) \r
-#define RCC_APB1ENR_UART5EN_Msk (0x1UL << RCC_APB1ENR_UART5EN_Pos) /*!< 0x00100000 */\r
-#define RCC_APB1ENR_UART5EN RCC_APB1ENR_UART5EN_Msk \r
-#define RCC_APB1ENR_I2C1EN_Pos (21U) \r
-#define RCC_APB1ENR_I2C1EN_Msk (0x1UL << RCC_APB1ENR_I2C1EN_Pos) /*!< 0x00200000 */\r
-#define RCC_APB1ENR_I2C1EN RCC_APB1ENR_I2C1EN_Msk \r
-#define RCC_APB1ENR_I2C2EN_Pos (22U) \r
-#define RCC_APB1ENR_I2C2EN_Msk (0x1UL << RCC_APB1ENR_I2C2EN_Pos) /*!< 0x00400000 */\r
-#define RCC_APB1ENR_I2C2EN RCC_APB1ENR_I2C2EN_Msk \r
-#define RCC_APB1ENR_I2C3EN_Pos (23U) \r
-#define RCC_APB1ENR_I2C3EN_Msk (0x1UL << RCC_APB1ENR_I2C3EN_Pos) /*!< 0x00800000 */\r
-#define RCC_APB1ENR_I2C3EN RCC_APB1ENR_I2C3EN_Msk \r
-#define RCC_APB1ENR_I2C4EN_Pos (24U) \r
-#define RCC_APB1ENR_I2C4EN_Msk (0x1UL << RCC_APB1ENR_I2C4EN_Pos) /*!< 0x01000000 */\r
-#define RCC_APB1ENR_I2C4EN RCC_APB1ENR_I2C4EN_Msk \r
-#define RCC_APB1ENR_CAN1EN_Pos (25U) \r
-#define RCC_APB1ENR_CAN1EN_Msk (0x1UL << RCC_APB1ENR_CAN1EN_Pos) /*!< 0x02000000 */\r
-#define RCC_APB1ENR_CAN1EN RCC_APB1ENR_CAN1EN_Msk \r
-#define RCC_APB1ENR_CAN2EN_Pos (26U) \r
-#define RCC_APB1ENR_CAN2EN_Msk (0x1UL << RCC_APB1ENR_CAN2EN_Pos) /*!< 0x04000000 */\r
-#define RCC_APB1ENR_CAN2EN RCC_APB1ENR_CAN2EN_Msk \r
-#define RCC_APB1ENR_CECEN_Pos (27U) \r
-#define RCC_APB1ENR_CECEN_Msk (0x1UL << RCC_APB1ENR_CECEN_Pos) /*!< 0x08000000 */\r
-#define RCC_APB1ENR_CECEN RCC_APB1ENR_CECEN_Msk \r
-#define RCC_APB1ENR_PWREN_Pos (28U) \r
-#define RCC_APB1ENR_PWREN_Msk (0x1UL << RCC_APB1ENR_PWREN_Pos) /*!< 0x10000000 */\r
-#define RCC_APB1ENR_PWREN RCC_APB1ENR_PWREN_Msk \r
-#define RCC_APB1ENR_DACEN_Pos (29U) \r
-#define RCC_APB1ENR_DACEN_Msk (0x1UL << RCC_APB1ENR_DACEN_Pos) /*!< 0x20000000 */\r
-#define RCC_APB1ENR_DACEN RCC_APB1ENR_DACEN_Msk \r
-#define RCC_APB1ENR_UART7EN_Pos (30U) \r
-#define RCC_APB1ENR_UART7EN_Msk (0x1UL << RCC_APB1ENR_UART7EN_Pos) /*!< 0x40000000 */\r
-#define RCC_APB1ENR_UART7EN RCC_APB1ENR_UART7EN_Msk \r
-#define RCC_APB1ENR_UART8EN_Pos (31U) \r
-#define RCC_APB1ENR_UART8EN_Msk (0x1UL << RCC_APB1ENR_UART8EN_Pos) /*!< 0x80000000 */\r
-#define RCC_APB1ENR_UART8EN RCC_APB1ENR_UART8EN_Msk \r
-\r
-/******************** Bit definition for RCC_APB2ENR register ***************/\r
-#define RCC_APB2ENR_TIM1EN_Pos (0U) \r
-#define RCC_APB2ENR_TIM1EN_Msk (0x1UL << RCC_APB2ENR_TIM1EN_Pos) /*!< 0x00000001 */\r
-#define RCC_APB2ENR_TIM1EN RCC_APB2ENR_TIM1EN_Msk \r
-#define RCC_APB2ENR_TIM8EN_Pos (1U) \r
-#define RCC_APB2ENR_TIM8EN_Msk (0x1UL << RCC_APB2ENR_TIM8EN_Pos) /*!< 0x00000002 */\r
-#define RCC_APB2ENR_TIM8EN RCC_APB2ENR_TIM8EN_Msk \r
-#define RCC_APB2ENR_USART1EN_Pos (4U) \r
-#define RCC_APB2ENR_USART1EN_Msk (0x1UL << RCC_APB2ENR_USART1EN_Pos) /*!< 0x00000010 */\r
-#define RCC_APB2ENR_USART1EN RCC_APB2ENR_USART1EN_Msk \r
-#define RCC_APB2ENR_USART6EN_Pos (5U) \r
-#define RCC_APB2ENR_USART6EN_Msk (0x1UL << RCC_APB2ENR_USART6EN_Pos) /*!< 0x00000020 */\r
-#define RCC_APB2ENR_USART6EN RCC_APB2ENR_USART6EN_Msk \r
-#define RCC_APB2ENR_SDMMC2EN_Pos (7U) \r
-#define RCC_APB2ENR_SDMMC2EN_Msk (0x1UL << RCC_APB2ENR_SDMMC2EN_Pos) /*!< 0x00000080 */\r
-#define RCC_APB2ENR_SDMMC2EN RCC_APB2ENR_SDMMC2EN_Msk \r
-#define RCC_APB2ENR_ADC1EN_Pos (8U) \r
-#define RCC_APB2ENR_ADC1EN_Msk (0x1UL << RCC_APB2ENR_ADC1EN_Pos) /*!< 0x00000100 */\r
-#define RCC_APB2ENR_ADC1EN RCC_APB2ENR_ADC1EN_Msk \r
-#define RCC_APB2ENR_ADC2EN_Pos (9U) \r
-#define RCC_APB2ENR_ADC2EN_Msk (0x1UL << RCC_APB2ENR_ADC2EN_Pos) /*!< 0x00000200 */\r
-#define RCC_APB2ENR_ADC2EN RCC_APB2ENR_ADC2EN_Msk \r
-#define RCC_APB2ENR_ADC3EN_Pos (10U) \r
-#define RCC_APB2ENR_ADC3EN_Msk (0x1UL << RCC_APB2ENR_ADC3EN_Pos) /*!< 0x00000400 */\r
-#define RCC_APB2ENR_ADC3EN RCC_APB2ENR_ADC3EN_Msk \r
-#define RCC_APB2ENR_SDMMC1EN_Pos (11U) \r
-#define RCC_APB2ENR_SDMMC1EN_Msk (0x1UL << RCC_APB2ENR_SDMMC1EN_Pos) /*!< 0x00000800 */\r
-#define RCC_APB2ENR_SDMMC1EN RCC_APB2ENR_SDMMC1EN_Msk \r
-#define RCC_APB2ENR_SPI1EN_Pos (12U) \r
-#define RCC_APB2ENR_SPI1EN_Msk (0x1UL << RCC_APB2ENR_SPI1EN_Pos) /*!< 0x00001000 */\r
-#define RCC_APB2ENR_SPI1EN RCC_APB2ENR_SPI1EN_Msk \r
-#define RCC_APB2ENR_SPI4EN_Pos (13U) \r
-#define RCC_APB2ENR_SPI4EN_Msk (0x1UL << RCC_APB2ENR_SPI4EN_Pos) /*!< 0x00002000 */\r
-#define RCC_APB2ENR_SPI4EN RCC_APB2ENR_SPI4EN_Msk \r
-#define RCC_APB2ENR_SYSCFGEN_Pos (14U) \r
-#define RCC_APB2ENR_SYSCFGEN_Msk (0x1UL << RCC_APB2ENR_SYSCFGEN_Pos) /*!< 0x00004000 */\r
-#define RCC_APB2ENR_SYSCFGEN RCC_APB2ENR_SYSCFGEN_Msk \r
-#define RCC_APB2ENR_TIM9EN_Pos (16U) \r
-#define RCC_APB2ENR_TIM9EN_Msk (0x1UL << RCC_APB2ENR_TIM9EN_Pos) /*!< 0x00010000 */\r
-#define RCC_APB2ENR_TIM9EN RCC_APB2ENR_TIM9EN_Msk \r
-#define RCC_APB2ENR_TIM10EN_Pos (17U) \r
-#define RCC_APB2ENR_TIM10EN_Msk (0x1UL << RCC_APB2ENR_TIM10EN_Pos) /*!< 0x00020000 */\r
-#define RCC_APB2ENR_TIM10EN RCC_APB2ENR_TIM10EN_Msk \r
-#define RCC_APB2ENR_TIM11EN_Pos (18U) \r
-#define RCC_APB2ENR_TIM11EN_Msk (0x1UL << RCC_APB2ENR_TIM11EN_Pos) /*!< 0x00040000 */\r
-#define RCC_APB2ENR_TIM11EN RCC_APB2ENR_TIM11EN_Msk \r
-#define RCC_APB2ENR_SPI5EN_Pos (20U) \r
-#define RCC_APB2ENR_SPI5EN_Msk (0x1UL << RCC_APB2ENR_SPI5EN_Pos) /*!< 0x00100000 */\r
-#define RCC_APB2ENR_SPI5EN RCC_APB2ENR_SPI5EN_Msk \r
-#define RCC_APB2ENR_SPI6EN_Pos (21U) \r
-#define RCC_APB2ENR_SPI6EN_Msk (0x1UL << RCC_APB2ENR_SPI6EN_Pos) /*!< 0x00200000 */\r
-#define RCC_APB2ENR_SPI6EN RCC_APB2ENR_SPI6EN_Msk \r
-#define RCC_APB2ENR_SAI1EN_Pos (22U) \r
-#define RCC_APB2ENR_SAI1EN_Msk (0x1UL << RCC_APB2ENR_SAI1EN_Pos) /*!< 0x00400000 */\r
-#define RCC_APB2ENR_SAI1EN RCC_APB2ENR_SAI1EN_Msk \r
-#define RCC_APB2ENR_SAI2EN_Pos (23U) \r
-#define RCC_APB2ENR_SAI2EN_Msk (0x1UL << RCC_APB2ENR_SAI2EN_Pos) /*!< 0x00800000 */\r
-#define RCC_APB2ENR_SAI2EN RCC_APB2ENR_SAI2EN_Msk \r
-#define RCC_APB2ENR_LTDCEN_Pos (26U) \r
-#define RCC_APB2ENR_LTDCEN_Msk (0x1UL << RCC_APB2ENR_LTDCEN_Pos) /*!< 0x04000000 */\r
-#define RCC_APB2ENR_LTDCEN RCC_APB2ENR_LTDCEN_Msk \r
-#define RCC_APB2ENR_DFSDM1EN_Pos (29U) \r
-#define RCC_APB2ENR_DFSDM1EN_Msk (0x1UL << RCC_APB2ENR_DFSDM1EN_Pos) /*!< 0x20000000 */\r
-#define RCC_APB2ENR_DFSDM1EN RCC_APB2ENR_DFSDM1EN_Msk \r
-#define RCC_APB2ENR_MDIOEN_Pos (30U) \r
-#define RCC_APB2ENR_MDIOEN_Msk (0x1UL << RCC_APB2ENR_MDIOEN_Pos) /*!< 0x40000000 */\r
-#define RCC_APB2ENR_MDIOEN RCC_APB2ENR_MDIOEN_Msk \r
-\r
-/******************** Bit definition for RCC_AHB1LPENR register *************/\r
-#define RCC_AHB1LPENR_GPIOALPEN_Pos (0U) \r
-#define RCC_AHB1LPENR_GPIOALPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOALPEN_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB1LPENR_GPIOALPEN RCC_AHB1LPENR_GPIOALPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOBLPEN_Pos (1U) \r
-#define RCC_AHB1LPENR_GPIOBLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOBLPEN_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB1LPENR_GPIOBLPEN RCC_AHB1LPENR_GPIOBLPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOCLPEN_Pos (2U) \r
-#define RCC_AHB1LPENR_GPIOCLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOCLPEN_Pos) /*!< 0x00000004 */\r
-#define RCC_AHB1LPENR_GPIOCLPEN RCC_AHB1LPENR_GPIOCLPEN_Msk \r
-#define RCC_AHB1LPENR_GPIODLPEN_Pos (3U) \r
-#define RCC_AHB1LPENR_GPIODLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIODLPEN_Pos) /*!< 0x00000008 */\r
-#define RCC_AHB1LPENR_GPIODLPEN RCC_AHB1LPENR_GPIODLPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOELPEN_Pos (4U) \r
-#define RCC_AHB1LPENR_GPIOELPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOELPEN_Pos) /*!< 0x00000010 */\r
-#define RCC_AHB1LPENR_GPIOELPEN RCC_AHB1LPENR_GPIOELPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOFLPEN_Pos (5U) \r
-#define RCC_AHB1LPENR_GPIOFLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOFLPEN_Pos) /*!< 0x00000020 */\r
-#define RCC_AHB1LPENR_GPIOFLPEN RCC_AHB1LPENR_GPIOFLPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOGLPEN_Pos (6U) \r
-#define RCC_AHB1LPENR_GPIOGLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOGLPEN_Pos) /*!< 0x00000040 */\r
-#define RCC_AHB1LPENR_GPIOGLPEN RCC_AHB1LPENR_GPIOGLPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOHLPEN_Pos (7U) \r
-#define RCC_AHB1LPENR_GPIOHLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOHLPEN_Pos) /*!< 0x00000080 */\r
-#define RCC_AHB1LPENR_GPIOHLPEN RCC_AHB1LPENR_GPIOHLPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOILPEN_Pos (8U) \r
-#define RCC_AHB1LPENR_GPIOILPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOILPEN_Pos) /*!< 0x00000100 */\r
-#define RCC_AHB1LPENR_GPIOILPEN RCC_AHB1LPENR_GPIOILPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOJLPEN_Pos (9U) \r
-#define RCC_AHB1LPENR_GPIOJLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOJLPEN_Pos) /*!< 0x00000200 */\r
-#define RCC_AHB1LPENR_GPIOJLPEN RCC_AHB1LPENR_GPIOJLPEN_Msk \r
-#define RCC_AHB1LPENR_GPIOKLPEN_Pos (10U) \r
-#define RCC_AHB1LPENR_GPIOKLPEN_Msk (0x1UL << RCC_AHB1LPENR_GPIOKLPEN_Pos) /*!< 0x00000400 */\r
-#define RCC_AHB1LPENR_GPIOKLPEN RCC_AHB1LPENR_GPIOKLPEN_Msk \r
-#define RCC_AHB1LPENR_CRCLPEN_Pos (12U) \r
-#define RCC_AHB1LPENR_CRCLPEN_Msk (0x1UL << RCC_AHB1LPENR_CRCLPEN_Pos) /*!< 0x00001000 */\r
-#define RCC_AHB1LPENR_CRCLPEN RCC_AHB1LPENR_CRCLPEN_Msk \r
-#define RCC_AHB1LPENR_AXILPEN_Pos (13U) \r
-#define RCC_AHB1LPENR_AXILPEN_Msk (0x1UL << RCC_AHB1LPENR_AXILPEN_Pos) /*!< 0x00002000 */\r
-#define RCC_AHB1LPENR_AXILPEN RCC_AHB1LPENR_AXILPEN_Msk \r
-#define RCC_AHB1LPENR_FLITFLPEN_Pos (15U) \r
-#define RCC_AHB1LPENR_FLITFLPEN_Msk (0x1UL << RCC_AHB1LPENR_FLITFLPEN_Pos) /*!< 0x00008000 */\r
-#define RCC_AHB1LPENR_FLITFLPEN RCC_AHB1LPENR_FLITFLPEN_Msk \r
-#define RCC_AHB1LPENR_SRAM1LPEN_Pos (16U) \r
-#define RCC_AHB1LPENR_SRAM1LPEN_Msk (0x1UL << RCC_AHB1LPENR_SRAM1LPEN_Pos) /*!< 0x00010000 */\r
-#define RCC_AHB1LPENR_SRAM1LPEN RCC_AHB1LPENR_SRAM1LPEN_Msk \r
-#define RCC_AHB1LPENR_SRAM2LPEN_Pos (17U) \r
-#define RCC_AHB1LPENR_SRAM2LPEN_Msk (0x1UL << RCC_AHB1LPENR_SRAM2LPEN_Pos) /*!< 0x00020000 */\r
-#define RCC_AHB1LPENR_SRAM2LPEN RCC_AHB1LPENR_SRAM2LPEN_Msk \r
-#define RCC_AHB1LPENR_BKPSRAMLPEN_Pos (18U) \r
-#define RCC_AHB1LPENR_BKPSRAMLPEN_Msk (0x1UL << RCC_AHB1LPENR_BKPSRAMLPEN_Pos) /*!< 0x00040000 */\r
-#define RCC_AHB1LPENR_BKPSRAMLPEN RCC_AHB1LPENR_BKPSRAMLPEN_Msk \r
-#define RCC_AHB1LPENR_DTCMLPEN_Pos (20U) \r
-#define RCC_AHB1LPENR_DTCMLPEN_Msk (0x1UL << RCC_AHB1LPENR_DTCMLPEN_Pos) /*!< 0x00100000 */\r
-#define RCC_AHB1LPENR_DTCMLPEN RCC_AHB1LPENR_DTCMLPEN_Msk \r
-#define RCC_AHB1LPENR_DMA1LPEN_Pos (21U) \r
-#define RCC_AHB1LPENR_DMA1LPEN_Msk (0x1UL << RCC_AHB1LPENR_DMA1LPEN_Pos) /*!< 0x00200000 */\r
-#define RCC_AHB1LPENR_DMA1LPEN RCC_AHB1LPENR_DMA1LPEN_Msk \r
-#define RCC_AHB1LPENR_DMA2LPEN_Pos (22U) \r
-#define RCC_AHB1LPENR_DMA2LPEN_Msk (0x1UL << RCC_AHB1LPENR_DMA2LPEN_Pos) /*!< 0x00400000 */\r
-#define RCC_AHB1LPENR_DMA2LPEN RCC_AHB1LPENR_DMA2LPEN_Msk \r
-#define RCC_AHB1LPENR_DMA2DLPEN_Pos (23U) \r
-#define RCC_AHB1LPENR_DMA2DLPEN_Msk (0x1UL << RCC_AHB1LPENR_DMA2DLPEN_Pos) /*!< 0x00800000 */\r
-#define RCC_AHB1LPENR_DMA2DLPEN RCC_AHB1LPENR_DMA2DLPEN_Msk \r
-#define RCC_AHB1LPENR_ETHMACLPEN_Pos (25U) \r
-#define RCC_AHB1LPENR_ETHMACLPEN_Msk (0x1UL << RCC_AHB1LPENR_ETHMACLPEN_Pos) /*!< 0x02000000 */\r
-#define RCC_AHB1LPENR_ETHMACLPEN RCC_AHB1LPENR_ETHMACLPEN_Msk \r
-#define RCC_AHB1LPENR_ETHMACTXLPEN_Pos (26U) \r
-#define RCC_AHB1LPENR_ETHMACTXLPEN_Msk (0x1UL << RCC_AHB1LPENR_ETHMACTXLPEN_Pos) /*!< 0x04000000 */\r
-#define RCC_AHB1LPENR_ETHMACTXLPEN RCC_AHB1LPENR_ETHMACTXLPEN_Msk \r
-#define RCC_AHB1LPENR_ETHMACRXLPEN_Pos (27U) \r
-#define RCC_AHB1LPENR_ETHMACRXLPEN_Msk (0x1UL << RCC_AHB1LPENR_ETHMACRXLPEN_Pos) /*!< 0x08000000 */\r
-#define RCC_AHB1LPENR_ETHMACRXLPEN RCC_AHB1LPENR_ETHMACRXLPEN_Msk \r
-#define RCC_AHB1LPENR_ETHMACPTPLPEN_Pos (28U) \r
-#define RCC_AHB1LPENR_ETHMACPTPLPEN_Msk (0x1UL << RCC_AHB1LPENR_ETHMACPTPLPEN_Pos) /*!< 0x10000000 */\r
-#define RCC_AHB1LPENR_ETHMACPTPLPEN RCC_AHB1LPENR_ETHMACPTPLPEN_Msk \r
-#define RCC_AHB1LPENR_OTGHSLPEN_Pos (29U) \r
-#define RCC_AHB1LPENR_OTGHSLPEN_Msk (0x1UL << RCC_AHB1LPENR_OTGHSLPEN_Pos) /*!< 0x20000000 */\r
-#define RCC_AHB1LPENR_OTGHSLPEN RCC_AHB1LPENR_OTGHSLPEN_Msk \r
-#define RCC_AHB1LPENR_OTGHSULPILPEN_Pos (30U) \r
-#define RCC_AHB1LPENR_OTGHSULPILPEN_Msk (0x1UL << RCC_AHB1LPENR_OTGHSULPILPEN_Pos) /*!< 0x40000000 */\r
-#define RCC_AHB1LPENR_OTGHSULPILPEN RCC_AHB1LPENR_OTGHSULPILPEN_Msk \r
-\r
-/******************** Bit definition for RCC_AHB2LPENR register *************/\r
-#define RCC_AHB2LPENR_DCMILPEN_Pos (0U) \r
-#define RCC_AHB2LPENR_DCMILPEN_Msk (0x1UL << RCC_AHB2LPENR_DCMILPEN_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB2LPENR_DCMILPEN RCC_AHB2LPENR_DCMILPEN_Msk \r
-#define RCC_AHB2LPENR_JPEGLPEN_Pos (1U) \r
-#define RCC_AHB2LPENR_JPEGLPEN_Msk (0x1UL << RCC_AHB2LPENR_JPEGLPEN_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB2LPENR_JPEGLPEN RCC_AHB2LPENR_JPEGLPEN_Msk \r
-#define RCC_AHB2LPENR_RNGLPEN_Pos (6U) \r
-#define RCC_AHB2LPENR_RNGLPEN_Msk (0x1UL << RCC_AHB2LPENR_RNGLPEN_Pos) /*!< 0x00000040 */\r
-#define RCC_AHB2LPENR_RNGLPEN RCC_AHB2LPENR_RNGLPEN_Msk \r
-#define RCC_AHB2LPENR_OTGFSLPEN_Pos (7U) \r
-#define RCC_AHB2LPENR_OTGFSLPEN_Msk (0x1UL << RCC_AHB2LPENR_OTGFSLPEN_Pos) /*!< 0x00000080 */\r
-#define RCC_AHB2LPENR_OTGFSLPEN RCC_AHB2LPENR_OTGFSLPEN_Msk \r
-\r
-/******************** Bit definition for RCC_AHB3LPENR register *************/\r
-#define RCC_AHB3LPENR_FMCLPEN_Pos (0U) \r
-#define RCC_AHB3LPENR_FMCLPEN_Msk (0x1UL << RCC_AHB3LPENR_FMCLPEN_Pos) /*!< 0x00000001 */\r
-#define RCC_AHB3LPENR_FMCLPEN RCC_AHB3LPENR_FMCLPEN_Msk \r
-#define RCC_AHB3LPENR_QSPILPEN_Pos (1U) \r
-#define RCC_AHB3LPENR_QSPILPEN_Msk (0x1UL << RCC_AHB3LPENR_QSPILPEN_Pos) /*!< 0x00000002 */\r
-#define RCC_AHB3LPENR_QSPILPEN RCC_AHB3LPENR_QSPILPEN_Msk \r
-/******************** Bit definition for RCC_APB1LPENR register *************/\r
-#define RCC_APB1LPENR_TIM2LPEN_Pos (0U) \r
-#define RCC_APB1LPENR_TIM2LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM2LPEN_Pos) /*!< 0x00000001 */\r
-#define RCC_APB1LPENR_TIM2LPEN RCC_APB1LPENR_TIM2LPEN_Msk \r
-#define RCC_APB1LPENR_TIM3LPEN_Pos (1U) \r
-#define RCC_APB1LPENR_TIM3LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM3LPEN_Pos) /*!< 0x00000002 */\r
-#define RCC_APB1LPENR_TIM3LPEN RCC_APB1LPENR_TIM3LPEN_Msk \r
-#define RCC_APB1LPENR_TIM4LPEN_Pos (2U) \r
-#define RCC_APB1LPENR_TIM4LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM4LPEN_Pos) /*!< 0x00000004 */\r
-#define RCC_APB1LPENR_TIM4LPEN RCC_APB1LPENR_TIM4LPEN_Msk \r
-#define RCC_APB1LPENR_TIM5LPEN_Pos (3U) \r
-#define RCC_APB1LPENR_TIM5LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM5LPEN_Pos) /*!< 0x00000008 */\r
-#define RCC_APB1LPENR_TIM5LPEN RCC_APB1LPENR_TIM5LPEN_Msk \r
-#define RCC_APB1LPENR_TIM6LPEN_Pos (4U) \r
-#define RCC_APB1LPENR_TIM6LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM6LPEN_Pos) /*!< 0x00000010 */\r
-#define RCC_APB1LPENR_TIM6LPEN RCC_APB1LPENR_TIM6LPEN_Msk \r
-#define RCC_APB1LPENR_TIM7LPEN_Pos (5U) \r
-#define RCC_APB1LPENR_TIM7LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM7LPEN_Pos) /*!< 0x00000020 */\r
-#define RCC_APB1LPENR_TIM7LPEN RCC_APB1LPENR_TIM7LPEN_Msk \r
-#define RCC_APB1LPENR_TIM12LPEN_Pos (6U) \r
-#define RCC_APB1LPENR_TIM12LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM12LPEN_Pos) /*!< 0x00000040 */\r
-#define RCC_APB1LPENR_TIM12LPEN RCC_APB1LPENR_TIM12LPEN_Msk \r
-#define RCC_APB1LPENR_TIM13LPEN_Pos (7U) \r
-#define RCC_APB1LPENR_TIM13LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM13LPEN_Pos) /*!< 0x00000080 */\r
-#define RCC_APB1LPENR_TIM13LPEN RCC_APB1LPENR_TIM13LPEN_Msk \r
-#define RCC_APB1LPENR_TIM14LPEN_Pos (8U) \r
-#define RCC_APB1LPENR_TIM14LPEN_Msk (0x1UL << RCC_APB1LPENR_TIM14LPEN_Pos) /*!< 0x00000100 */\r
-#define RCC_APB1LPENR_TIM14LPEN RCC_APB1LPENR_TIM14LPEN_Msk \r
-#define RCC_APB1LPENR_LPTIM1LPEN_Pos (9U) \r
-#define RCC_APB1LPENR_LPTIM1LPEN_Msk (0x1UL << RCC_APB1LPENR_LPTIM1LPEN_Pos) /*!< 0x00000200 */\r
-#define RCC_APB1LPENR_LPTIM1LPEN RCC_APB1LPENR_LPTIM1LPEN_Msk \r
-#define RCC_APB1LPENR_RTCLPEN_Pos (10U) \r
-#define RCC_APB1LPENR_RTCLPEN_Msk (0x1UL << RCC_APB1LPENR_RTCLPEN_Pos) /*!< 0x00000400 */\r
-#define RCC_APB1LPENR_RTCLPEN RCC_APB1LPENR_RTCLPEN_Msk \r
-#define RCC_APB1LPENR_WWDGLPEN_Pos (11U) \r
-#define RCC_APB1LPENR_WWDGLPEN_Msk (0x1UL << RCC_APB1LPENR_WWDGLPEN_Pos) /*!< 0x00000800 */\r
-#define RCC_APB1LPENR_WWDGLPEN RCC_APB1LPENR_WWDGLPEN_Msk \r
-#define RCC_APB1LPENR_CAN3LPEN_Pos (13U) \r
-#define RCC_APB1LPENR_CAN3LPEN_Msk (0x1UL << RCC_APB1LPENR_CAN3LPEN_Pos) /*!< 0x00002000 */\r
-#define RCC_APB1LPENR_CAN3LPEN RCC_APB1LPENR_CAN3LPEN_Msk \r
-#define RCC_APB1LPENR_SPI2LPEN_Pos (14U) \r
-#define RCC_APB1LPENR_SPI2LPEN_Msk (0x1UL << RCC_APB1LPENR_SPI2LPEN_Pos) /*!< 0x00004000 */\r
-#define RCC_APB1LPENR_SPI2LPEN RCC_APB1LPENR_SPI2LPEN_Msk \r
-#define RCC_APB1LPENR_SPI3LPEN_Pos (15U) \r
-#define RCC_APB1LPENR_SPI3LPEN_Msk (0x1UL << RCC_APB1LPENR_SPI3LPEN_Pos) /*!< 0x00008000 */\r
-#define RCC_APB1LPENR_SPI3LPEN RCC_APB1LPENR_SPI3LPEN_Msk \r
-#define RCC_APB1LPENR_SPDIFRXLPEN_Pos (16U) \r
-#define RCC_APB1LPENR_SPDIFRXLPEN_Msk (0x1UL << RCC_APB1LPENR_SPDIFRXLPEN_Pos) /*!< 0x00010000 */\r
-#define RCC_APB1LPENR_SPDIFRXLPEN RCC_APB1LPENR_SPDIFRXLPEN_Msk \r
-#define RCC_APB1LPENR_USART2LPEN_Pos (17U) \r
-#define RCC_APB1LPENR_USART2LPEN_Msk (0x1UL << RCC_APB1LPENR_USART2LPEN_Pos) /*!< 0x00020000 */\r
-#define RCC_APB1LPENR_USART2LPEN RCC_APB1LPENR_USART2LPEN_Msk \r
-#define RCC_APB1LPENR_USART3LPEN_Pos (18U) \r
-#define RCC_APB1LPENR_USART3LPEN_Msk (0x1UL << RCC_APB1LPENR_USART3LPEN_Pos) /*!< 0x00040000 */\r
-#define RCC_APB1LPENR_USART3LPEN RCC_APB1LPENR_USART3LPEN_Msk \r
-#define RCC_APB1LPENR_UART4LPEN_Pos (19U) \r
-#define RCC_APB1LPENR_UART4LPEN_Msk (0x1UL << RCC_APB1LPENR_UART4LPEN_Pos) /*!< 0x00080000 */\r
-#define RCC_APB1LPENR_UART4LPEN RCC_APB1LPENR_UART4LPEN_Msk \r
-#define RCC_APB1LPENR_UART5LPEN_Pos (20U) \r
-#define RCC_APB1LPENR_UART5LPEN_Msk (0x1UL << RCC_APB1LPENR_UART5LPEN_Pos) /*!< 0x00100000 */\r
-#define RCC_APB1LPENR_UART5LPEN RCC_APB1LPENR_UART5LPEN_Msk \r
-#define RCC_APB1LPENR_I2C1LPEN_Pos (21U) \r
-#define RCC_APB1LPENR_I2C1LPEN_Msk (0x1UL << RCC_APB1LPENR_I2C1LPEN_Pos) /*!< 0x00200000 */\r
-#define RCC_APB1LPENR_I2C1LPEN RCC_APB1LPENR_I2C1LPEN_Msk \r
-#define RCC_APB1LPENR_I2C2LPEN_Pos (22U) \r
-#define RCC_APB1LPENR_I2C2LPEN_Msk (0x1UL << RCC_APB1LPENR_I2C2LPEN_Pos) /*!< 0x00400000 */\r
-#define RCC_APB1LPENR_I2C2LPEN RCC_APB1LPENR_I2C2LPEN_Msk \r
-#define RCC_APB1LPENR_I2C3LPEN_Pos (23U) \r
-#define RCC_APB1LPENR_I2C3LPEN_Msk (0x1UL << RCC_APB1LPENR_I2C3LPEN_Pos) /*!< 0x00800000 */\r
-#define RCC_APB1LPENR_I2C3LPEN RCC_APB1LPENR_I2C3LPEN_Msk \r
-#define RCC_APB1LPENR_I2C4LPEN_Pos (24U) \r
-#define RCC_APB1LPENR_I2C4LPEN_Msk (0x1UL << RCC_APB1LPENR_I2C4LPEN_Pos) /*!< 0x01000000 */\r
-#define RCC_APB1LPENR_I2C4LPEN RCC_APB1LPENR_I2C4LPEN_Msk \r
-#define RCC_APB1LPENR_CAN1LPEN_Pos (25U) \r
-#define RCC_APB1LPENR_CAN1LPEN_Msk (0x1UL << RCC_APB1LPENR_CAN1LPEN_Pos) /*!< 0x02000000 */\r
-#define RCC_APB1LPENR_CAN1LPEN RCC_APB1LPENR_CAN1LPEN_Msk \r
-#define RCC_APB1LPENR_CAN2LPEN_Pos (26U) \r
-#define RCC_APB1LPENR_CAN2LPEN_Msk (0x1UL << RCC_APB1LPENR_CAN2LPEN_Pos) /*!< 0x04000000 */\r
-#define RCC_APB1LPENR_CAN2LPEN RCC_APB1LPENR_CAN2LPEN_Msk \r
-#define RCC_APB1LPENR_CECLPEN_Pos (27U) \r
-#define RCC_APB1LPENR_CECLPEN_Msk (0x1UL << RCC_APB1LPENR_CECLPEN_Pos) /*!< 0x08000000 */\r
-#define RCC_APB1LPENR_CECLPEN RCC_APB1LPENR_CECLPEN_Msk \r
-#define RCC_APB1LPENR_PWRLPEN_Pos (28U) \r
-#define RCC_APB1LPENR_PWRLPEN_Msk (0x1UL << RCC_APB1LPENR_PWRLPEN_Pos) /*!< 0x10000000 */\r
-#define RCC_APB1LPENR_PWRLPEN RCC_APB1LPENR_PWRLPEN_Msk \r
-#define RCC_APB1LPENR_DACLPEN_Pos (29U) \r
-#define RCC_APB1LPENR_DACLPEN_Msk (0x1UL << RCC_APB1LPENR_DACLPEN_Pos) /*!< 0x20000000 */\r
-#define RCC_APB1LPENR_DACLPEN RCC_APB1LPENR_DACLPEN_Msk \r
-#define RCC_APB1LPENR_UART7LPEN_Pos (30U) \r
-#define RCC_APB1LPENR_UART7LPEN_Msk (0x1UL << RCC_APB1LPENR_UART7LPEN_Pos) /*!< 0x40000000 */\r
-#define RCC_APB1LPENR_UART7LPEN RCC_APB1LPENR_UART7LPEN_Msk \r
-#define RCC_APB1LPENR_UART8LPEN_Pos (31U) \r
-#define RCC_APB1LPENR_UART8LPEN_Msk (0x1UL << RCC_APB1LPENR_UART8LPEN_Pos) /*!< 0x80000000 */\r
-#define RCC_APB1LPENR_UART8LPEN RCC_APB1LPENR_UART8LPEN_Msk \r
-\r
-/******************** Bit definition for RCC_APB2LPENR register *************/\r
-#define RCC_APB2LPENR_TIM1LPEN_Pos (0U) \r
-#define RCC_APB2LPENR_TIM1LPEN_Msk (0x1UL << RCC_APB2LPENR_TIM1LPEN_Pos) /*!< 0x00000001 */\r
-#define RCC_APB2LPENR_TIM1LPEN RCC_APB2LPENR_TIM1LPEN_Msk \r
-#define RCC_APB2LPENR_TIM8LPEN_Pos (1U) \r
-#define RCC_APB2LPENR_TIM8LPEN_Msk (0x1UL << RCC_APB2LPENR_TIM8LPEN_Pos) /*!< 0x00000002 */\r
-#define RCC_APB2LPENR_TIM8LPEN RCC_APB2LPENR_TIM8LPEN_Msk \r
-#define RCC_APB2LPENR_USART1LPEN_Pos (4U) \r
-#define RCC_APB2LPENR_USART1LPEN_Msk (0x1UL << RCC_APB2LPENR_USART1LPEN_Pos) /*!< 0x00000010 */\r
-#define RCC_APB2LPENR_USART1LPEN RCC_APB2LPENR_USART1LPEN_Msk \r
-#define RCC_APB2LPENR_USART6LPEN_Pos (5U) \r
-#define RCC_APB2LPENR_USART6LPEN_Msk (0x1UL << RCC_APB2LPENR_USART6LPEN_Pos) /*!< 0x00000020 */\r
-#define RCC_APB2LPENR_USART6LPEN RCC_APB2LPENR_USART6LPEN_Msk \r
-#define RCC_APB2LPENR_SDMMC2LPEN_Pos (7U) \r
-#define RCC_APB2LPENR_SDMMC2LPEN_Msk (0x1UL << RCC_APB2LPENR_SDMMC2LPEN_Pos) /*!< 0x00000080 */\r
-#define RCC_APB2LPENR_SDMMC2LPEN RCC_APB2LPENR_SDMMC2LPEN_Msk \r
-#define RCC_APB2LPENR_ADC1LPEN_Pos (8U) \r
-#define RCC_APB2LPENR_ADC1LPEN_Msk (0x1UL << RCC_APB2LPENR_ADC1LPEN_Pos) /*!< 0x00000100 */\r
-#define RCC_APB2LPENR_ADC1LPEN RCC_APB2LPENR_ADC1LPEN_Msk \r
-#define RCC_APB2LPENR_ADC2LPEN_Pos (9U) \r
-#define RCC_APB2LPENR_ADC2LPEN_Msk (0x1UL << RCC_APB2LPENR_ADC2LPEN_Pos) /*!< 0x00000200 */\r
-#define RCC_APB2LPENR_ADC2LPEN RCC_APB2LPENR_ADC2LPEN_Msk \r
-#define RCC_APB2LPENR_ADC3LPEN_Pos (10U) \r
-#define RCC_APB2LPENR_ADC3LPEN_Msk (0x1UL << RCC_APB2LPENR_ADC3LPEN_Pos) /*!< 0x00000400 */\r
-#define RCC_APB2LPENR_ADC3LPEN RCC_APB2LPENR_ADC3LPEN_Msk \r
-#define RCC_APB2LPENR_SDMMC1LPEN_Pos (11U) \r
-#define RCC_APB2LPENR_SDMMC1LPEN_Msk (0x1UL << RCC_APB2LPENR_SDMMC1LPEN_Pos) /*!< 0x00000800 */\r
-#define RCC_APB2LPENR_SDMMC1LPEN RCC_APB2LPENR_SDMMC1LPEN_Msk \r
-#define RCC_APB2LPENR_SPI1LPEN_Pos (12U) \r
-#define RCC_APB2LPENR_SPI1LPEN_Msk (0x1UL << RCC_APB2LPENR_SPI1LPEN_Pos) /*!< 0x00001000 */\r
-#define RCC_APB2LPENR_SPI1LPEN RCC_APB2LPENR_SPI1LPEN_Msk \r
-#define RCC_APB2LPENR_SPI4LPEN_Pos (13U) \r
-#define RCC_APB2LPENR_SPI4LPEN_Msk (0x1UL << RCC_APB2LPENR_SPI4LPEN_Pos) /*!< 0x00002000 */\r
-#define RCC_APB2LPENR_SPI4LPEN RCC_APB2LPENR_SPI4LPEN_Msk \r
-#define RCC_APB2LPENR_SYSCFGLPEN_Pos (14U) \r
-#define RCC_APB2LPENR_SYSCFGLPEN_Msk (0x1UL << RCC_APB2LPENR_SYSCFGLPEN_Pos) /*!< 0x00004000 */\r
-#define RCC_APB2LPENR_SYSCFGLPEN RCC_APB2LPENR_SYSCFGLPEN_Msk \r
-#define RCC_APB2LPENR_TIM9LPEN_Pos (16U) \r
-#define RCC_APB2LPENR_TIM9LPEN_Msk (0x1UL << RCC_APB2LPENR_TIM9LPEN_Pos) /*!< 0x00010000 */\r
-#define RCC_APB2LPENR_TIM9LPEN RCC_APB2LPENR_TIM9LPEN_Msk \r
-#define RCC_APB2LPENR_TIM10LPEN_Pos (17U) \r
-#define RCC_APB2LPENR_TIM10LPEN_Msk (0x1UL << RCC_APB2LPENR_TIM10LPEN_Pos) /*!< 0x00020000 */\r
-#define RCC_APB2LPENR_TIM10LPEN RCC_APB2LPENR_TIM10LPEN_Msk \r
-#define RCC_APB2LPENR_TIM11LPEN_Pos (18U) \r
-#define RCC_APB2LPENR_TIM11LPEN_Msk (0x1UL << RCC_APB2LPENR_TIM11LPEN_Pos) /*!< 0x00040000 */\r
-#define RCC_APB2LPENR_TIM11LPEN RCC_APB2LPENR_TIM11LPEN_Msk \r
-#define RCC_APB2LPENR_SPI5LPEN_Pos (20U) \r
-#define RCC_APB2LPENR_SPI5LPEN_Msk (0x1UL << RCC_APB2LPENR_SPI5LPEN_Pos) /*!< 0x00100000 */\r
-#define RCC_APB2LPENR_SPI5LPEN RCC_APB2LPENR_SPI5LPEN_Msk \r
-#define RCC_APB2LPENR_SPI6LPEN_Pos (21U) \r
-#define RCC_APB2LPENR_SPI6LPEN_Msk (0x1UL << RCC_APB2LPENR_SPI6LPEN_Pos) /*!< 0x00200000 */\r
-#define RCC_APB2LPENR_SPI6LPEN RCC_APB2LPENR_SPI6LPEN_Msk \r
-#define RCC_APB2LPENR_SAI1LPEN_Pos (22U) \r
-#define RCC_APB2LPENR_SAI1LPEN_Msk (0x1UL << RCC_APB2LPENR_SAI1LPEN_Pos) /*!< 0x00400000 */\r
-#define RCC_APB2LPENR_SAI1LPEN RCC_APB2LPENR_SAI1LPEN_Msk \r
-#define RCC_APB2LPENR_SAI2LPEN_Pos (23U) \r
-#define RCC_APB2LPENR_SAI2LPEN_Msk (0x1UL << RCC_APB2LPENR_SAI2LPEN_Pos) /*!< 0x00800000 */\r
-#define RCC_APB2LPENR_SAI2LPEN RCC_APB2LPENR_SAI2LPEN_Msk \r
-#define RCC_APB2LPENR_LTDCLPEN_Pos (26U) \r
-#define RCC_APB2LPENR_LTDCLPEN_Msk (0x1UL << RCC_APB2LPENR_LTDCLPEN_Pos) /*!< 0x04000000 */\r
-#define RCC_APB2LPENR_LTDCLPEN RCC_APB2LPENR_LTDCLPEN_Msk \r
-#define RCC_APB2LPENR_DFSDM1LPEN_Pos (29U) \r
-#define RCC_APB2LPENR_DFSDM1LPEN_Msk (0x1UL << RCC_APB2LPENR_DFSDM1LPEN_Pos) /*!< 0x20000000 */\r
-#define RCC_APB2LPENR_DFSDM1LPEN RCC_APB2LPENR_DFSDM1LPEN_Msk \r
-#define RCC_APB2LPENR_MDIOLPEN_Pos (30U) \r
-#define RCC_APB2LPENR_MDIOLPEN_Msk (0x1UL << RCC_APB2LPENR_MDIOLPEN_Pos) /*!< 0x40000000 */\r
-#define RCC_APB2LPENR_MDIOLPEN RCC_APB2LPENR_MDIOLPEN_Msk \r
-\r
-/******************** Bit definition for RCC_BDCR register ******************/\r
-#define RCC_BDCR_LSEON_Pos (0U) \r
-#define RCC_BDCR_LSEON_Msk (0x1UL << RCC_BDCR_LSEON_Pos) /*!< 0x00000001 */\r
-#define RCC_BDCR_LSEON RCC_BDCR_LSEON_Msk \r
-#define RCC_BDCR_LSERDY_Pos (1U) \r
-#define RCC_BDCR_LSERDY_Msk (0x1UL << RCC_BDCR_LSERDY_Pos) /*!< 0x00000002 */\r
-#define RCC_BDCR_LSERDY RCC_BDCR_LSERDY_Msk \r
-#define RCC_BDCR_LSEBYP_Pos (2U) \r
-#define RCC_BDCR_LSEBYP_Msk (0x1UL << RCC_BDCR_LSEBYP_Pos) /*!< 0x00000004 */\r
-#define RCC_BDCR_LSEBYP RCC_BDCR_LSEBYP_Msk \r
-#define RCC_BDCR_LSEDRV_Pos (3U) \r
-#define RCC_BDCR_LSEDRV_Msk (0x3UL << RCC_BDCR_LSEDRV_Pos) /*!< 0x00000018 */\r
-#define RCC_BDCR_LSEDRV RCC_BDCR_LSEDRV_Msk \r
-#define RCC_BDCR_LSEDRV_0 (0x1UL << RCC_BDCR_LSEDRV_Pos) /*!< 0x00000008 */\r
-#define RCC_BDCR_LSEDRV_1 (0x2UL << RCC_BDCR_LSEDRV_Pos) /*!< 0x00000010 */\r
-#define RCC_BDCR_RTCSEL_Pos (8U) \r
-#define RCC_BDCR_RTCSEL_Msk (0x3UL << RCC_BDCR_RTCSEL_Pos) /*!< 0x00000300 */\r
-#define RCC_BDCR_RTCSEL RCC_BDCR_RTCSEL_Msk \r
-#define RCC_BDCR_RTCSEL_0 (0x1UL << RCC_BDCR_RTCSEL_Pos) /*!< 0x00000100 */\r
-#define RCC_BDCR_RTCSEL_1 (0x2UL << RCC_BDCR_RTCSEL_Pos) /*!< 0x00000200 */\r
-#define RCC_BDCR_RTCEN_Pos (15U) \r
-#define RCC_BDCR_RTCEN_Msk (0x1UL << RCC_BDCR_RTCEN_Pos) /*!< 0x00008000 */\r
-#define RCC_BDCR_RTCEN RCC_BDCR_RTCEN_Msk \r
-#define RCC_BDCR_BDRST_Pos (16U) \r
-#define RCC_BDCR_BDRST_Msk (0x1UL << RCC_BDCR_BDRST_Pos) /*!< 0x00010000 */\r
-#define RCC_BDCR_BDRST RCC_BDCR_BDRST_Msk \r
-\r
-/******************** Bit definition for RCC_CSR register *******************/\r
-#define RCC_CSR_LSION_Pos (0U) \r
-#define RCC_CSR_LSION_Msk (0x1UL << RCC_CSR_LSION_Pos) /*!< 0x00000001 */\r
-#define RCC_CSR_LSION RCC_CSR_LSION_Msk \r
-#define RCC_CSR_LSIRDY_Pos (1U) \r
-#define RCC_CSR_LSIRDY_Msk (0x1UL << RCC_CSR_LSIRDY_Pos) /*!< 0x00000002 */\r
-#define RCC_CSR_LSIRDY RCC_CSR_LSIRDY_Msk \r
-#define RCC_CSR_RMVF_Pos (24U) \r
-#define RCC_CSR_RMVF_Msk (0x1UL << RCC_CSR_RMVF_Pos) /*!< 0x01000000 */\r
-#define RCC_CSR_RMVF RCC_CSR_RMVF_Msk \r
-#define RCC_CSR_BORRSTF_Pos (25U) \r
-#define RCC_CSR_BORRSTF_Msk (0x1UL << RCC_CSR_BORRSTF_Pos) /*!< 0x02000000 */\r
-#define RCC_CSR_BORRSTF RCC_CSR_BORRSTF_Msk \r
-#define RCC_CSR_PINRSTF_Pos (26U) \r
-#define RCC_CSR_PINRSTF_Msk (0x1UL << RCC_CSR_PINRSTF_Pos) /*!< 0x04000000 */\r
-#define RCC_CSR_PINRSTF RCC_CSR_PINRSTF_Msk \r
-#define RCC_CSR_PORRSTF_Pos (27U) \r
-#define RCC_CSR_PORRSTF_Msk (0x1UL << RCC_CSR_PORRSTF_Pos) /*!< 0x08000000 */\r
-#define RCC_CSR_PORRSTF RCC_CSR_PORRSTF_Msk \r
-#define RCC_CSR_SFTRSTF_Pos (28U) \r
-#define RCC_CSR_SFTRSTF_Msk (0x1UL << RCC_CSR_SFTRSTF_Pos) /*!< 0x10000000 */\r
-#define RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF_Msk \r
-#define RCC_CSR_IWDGRSTF_Pos (29U) \r
-#define RCC_CSR_IWDGRSTF_Msk (0x1UL << RCC_CSR_IWDGRSTF_Pos) /*!< 0x20000000 */\r
-#define RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF_Msk \r
-#define RCC_CSR_WWDGRSTF_Pos (30U) \r
-#define RCC_CSR_WWDGRSTF_Msk (0x1UL << RCC_CSR_WWDGRSTF_Pos) /*!< 0x40000000 */\r
-#define RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF_Msk \r
-#define RCC_CSR_LPWRRSTF_Pos (31U) \r
-#define RCC_CSR_LPWRRSTF_Msk (0x1UL << RCC_CSR_LPWRRSTF_Pos) /*!< 0x80000000 */\r
-#define RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF_Msk \r
-\r
-/******************** Bit definition for RCC_SSCGR register *****************/\r
-#define RCC_SSCGR_MODPER_Pos (0U) \r
-#define RCC_SSCGR_MODPER_Msk (0x1FFFUL << RCC_SSCGR_MODPER_Pos) /*!< 0x00001FFF */\r
-#define RCC_SSCGR_MODPER RCC_SSCGR_MODPER_Msk \r
-#define RCC_SSCGR_INCSTEP_Pos (13U) \r
-#define RCC_SSCGR_INCSTEP_Msk (0x7FFFUL << RCC_SSCGR_INCSTEP_Pos) /*!< 0x0FFFE000 */\r
-#define RCC_SSCGR_INCSTEP RCC_SSCGR_INCSTEP_Msk \r
-#define RCC_SSCGR_SPREADSEL_Pos (30U) \r
-#define RCC_SSCGR_SPREADSEL_Msk (0x1UL << RCC_SSCGR_SPREADSEL_Pos) /*!< 0x40000000 */\r
-#define RCC_SSCGR_SPREADSEL RCC_SSCGR_SPREADSEL_Msk \r
-#define RCC_SSCGR_SSCGEN_Pos (31U) \r
-#define RCC_SSCGR_SSCGEN_Msk (0x1UL << RCC_SSCGR_SSCGEN_Pos) /*!< 0x80000000 */\r
-#define RCC_SSCGR_SSCGEN RCC_SSCGR_SSCGEN_Msk \r
-\r
-/******************** Bit definition for RCC_PLLI2SCFGR register ************/\r
-#define RCC_PLLI2SCFGR_PLLI2SN_Pos (6U) \r
-#define RCC_PLLI2SCFGR_PLLI2SN_Msk (0x1FFUL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00007FC0 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN RCC_PLLI2SCFGR_PLLI2SN_Msk \r
-#define RCC_PLLI2SCFGR_PLLI2SN_0 (0x001UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00000040 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_1 (0x002UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00000080 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_2 (0x004UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00000100 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_3 (0x008UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00000200 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_4 (0x010UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00000400 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_5 (0x020UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00000800 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_6 (0x040UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00001000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_7 (0x080UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00002000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SN_8 (0x100UL << RCC_PLLI2SCFGR_PLLI2SN_Pos) /*!< 0x00004000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SP_Pos (16U) \r
-#define RCC_PLLI2SCFGR_PLLI2SP_Msk (0x3UL << RCC_PLLI2SCFGR_PLLI2SP_Pos) /*!< 0x00030000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SP RCC_PLLI2SCFGR_PLLI2SP_Msk \r
-#define RCC_PLLI2SCFGR_PLLI2SP_0 (0x1UL << RCC_PLLI2SCFGR_PLLI2SP_Pos) /*!< 0x00010000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SP_1 (0x2UL << RCC_PLLI2SCFGR_PLLI2SP_Pos) /*!< 0x00020000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SQ_Pos (24U) \r
-#define RCC_PLLI2SCFGR_PLLI2SQ_Msk (0xFUL << RCC_PLLI2SCFGR_PLLI2SQ_Pos) /*!< 0x0F000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SQ RCC_PLLI2SCFGR_PLLI2SQ_Msk \r
-#define RCC_PLLI2SCFGR_PLLI2SQ_0 (0x1UL << RCC_PLLI2SCFGR_PLLI2SQ_Pos) /*!< 0x01000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SQ_1 (0x2UL << RCC_PLLI2SCFGR_PLLI2SQ_Pos) /*!< 0x02000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SQ_2 (0x4UL << RCC_PLLI2SCFGR_PLLI2SQ_Pos) /*!< 0x04000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SQ_3 (0x8UL << RCC_PLLI2SCFGR_PLLI2SQ_Pos) /*!< 0x08000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SR_Pos (28U) \r
-#define RCC_PLLI2SCFGR_PLLI2SR_Msk (0x7UL << RCC_PLLI2SCFGR_PLLI2SR_Pos) /*!< 0x70000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SR RCC_PLLI2SCFGR_PLLI2SR_Msk \r
-#define RCC_PLLI2SCFGR_PLLI2SR_0 (0x1UL << RCC_PLLI2SCFGR_PLLI2SR_Pos) /*!< 0x10000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SR_1 (0x2UL << RCC_PLLI2SCFGR_PLLI2SR_Pos) /*!< 0x20000000 */\r
-#define RCC_PLLI2SCFGR_PLLI2SR_2 (0x4UL << RCC_PLLI2SCFGR_PLLI2SR_Pos) /*!< 0x40000000 */\r
-\r
-/******************** Bit definition for RCC_PLLSAICFGR register ************/\r
-#define RCC_PLLSAICFGR_PLLSAIN_Pos (6U) \r
-#define RCC_PLLSAICFGR_PLLSAIN_Msk (0x1FFUL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00007FC0 */\r
-#define RCC_PLLSAICFGR_PLLSAIN RCC_PLLSAICFGR_PLLSAIN_Msk \r
-#define RCC_PLLSAICFGR_PLLSAIN_0 (0x001UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00000040 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_1 (0x002UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00000080 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_2 (0x004UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00000100 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_3 (0x008UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00000200 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_4 (0x010UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00000400 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_5 (0x020UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00000800 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_6 (0x040UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00001000 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_7 (0x080UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00002000 */\r
-#define RCC_PLLSAICFGR_PLLSAIN_8 (0x100UL << RCC_PLLSAICFGR_PLLSAIN_Pos) /*!< 0x00004000 */\r
-#define RCC_PLLSAICFGR_PLLSAIP_Pos (16U) \r
-#define RCC_PLLSAICFGR_PLLSAIP_Msk (0x3UL << RCC_PLLSAICFGR_PLLSAIP_Pos) /*!< 0x00030000 */\r
-#define RCC_PLLSAICFGR_PLLSAIP RCC_PLLSAICFGR_PLLSAIP_Msk \r
-#define RCC_PLLSAICFGR_PLLSAIP_0 (0x1UL << RCC_PLLSAICFGR_PLLSAIP_Pos) /*!< 0x00010000 */\r
-#define RCC_PLLSAICFGR_PLLSAIP_1 (0x2UL << RCC_PLLSAICFGR_PLLSAIP_Pos) /*!< 0x00020000 */\r
-#define RCC_PLLSAICFGR_PLLSAIQ_Pos (24U) \r
-#define RCC_PLLSAICFGR_PLLSAIQ_Msk (0xFUL << RCC_PLLSAICFGR_PLLSAIQ_Pos) /*!< 0x0F000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIQ RCC_PLLSAICFGR_PLLSAIQ_Msk \r
-#define RCC_PLLSAICFGR_PLLSAIQ_0 (0x1UL << RCC_PLLSAICFGR_PLLSAIQ_Pos) /*!< 0x01000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIQ_1 (0x2UL << RCC_PLLSAICFGR_PLLSAIQ_Pos) /*!< 0x02000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIQ_2 (0x4UL << RCC_PLLSAICFGR_PLLSAIQ_Pos) /*!< 0x04000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIQ_3 (0x8UL << RCC_PLLSAICFGR_PLLSAIQ_Pos) /*!< 0x08000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIR_Pos (28U) \r
-#define RCC_PLLSAICFGR_PLLSAIR_Msk (0x7UL << RCC_PLLSAICFGR_PLLSAIR_Pos) /*!< 0x70000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIR RCC_PLLSAICFGR_PLLSAIR_Msk \r
-#define RCC_PLLSAICFGR_PLLSAIR_0 (0x1UL << RCC_PLLSAICFGR_PLLSAIR_Pos) /*!< 0x10000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIR_1 (0x2UL << RCC_PLLSAICFGR_PLLSAIR_Pos) /*!< 0x20000000 */\r
-#define RCC_PLLSAICFGR_PLLSAIR_2 (0x4UL << RCC_PLLSAICFGR_PLLSAIR_Pos) /*!< 0x40000000 */\r
-\r
-/******************** Bit definition for RCC_DCKCFGR1 register ***************/\r
-#define RCC_DCKCFGR1_PLLI2SDIVQ_Pos (0U) \r
-#define RCC_DCKCFGR1_PLLI2SDIVQ_Msk (0x1FUL << RCC_DCKCFGR1_PLLI2SDIVQ_Pos) /*!< 0x0000001F */\r
-#define RCC_DCKCFGR1_PLLI2SDIVQ RCC_DCKCFGR1_PLLI2SDIVQ_Msk \r
-#define RCC_DCKCFGR1_PLLI2SDIVQ_0 (0x01UL << RCC_DCKCFGR1_PLLI2SDIVQ_Pos) /*!< 0x00000001 */\r
-#define RCC_DCKCFGR1_PLLI2SDIVQ_1 (0x02UL << RCC_DCKCFGR1_PLLI2SDIVQ_Pos) /*!< 0x00000002 */\r
-#define RCC_DCKCFGR1_PLLI2SDIVQ_2 (0x04UL << RCC_DCKCFGR1_PLLI2SDIVQ_Pos) /*!< 0x00000004 */\r
-#define RCC_DCKCFGR1_PLLI2SDIVQ_3 (0x08UL << RCC_DCKCFGR1_PLLI2SDIVQ_Pos) /*!< 0x00000008 */\r
-#define RCC_DCKCFGR1_PLLI2SDIVQ_4 (0x10UL << RCC_DCKCFGR1_PLLI2SDIVQ_Pos) /*!< 0x00000010 */\r
-\r
-#define RCC_DCKCFGR1_PLLSAIDIVQ_Pos (8U) \r
-#define RCC_DCKCFGR1_PLLSAIDIVQ_Msk (0x1FUL << RCC_DCKCFGR1_PLLSAIDIVQ_Pos) /*!< 0x00001F00 */\r
-#define RCC_DCKCFGR1_PLLSAIDIVQ RCC_DCKCFGR1_PLLSAIDIVQ_Msk \r
-#define RCC_DCKCFGR1_PLLSAIDIVQ_0 (0x01UL << RCC_DCKCFGR1_PLLSAIDIVQ_Pos) /*!< 0x00000100 */\r
-#define RCC_DCKCFGR1_PLLSAIDIVQ_1 (0x02UL << RCC_DCKCFGR1_PLLSAIDIVQ_Pos) /*!< 0x00000200 */\r
-#define RCC_DCKCFGR1_PLLSAIDIVQ_2 (0x04UL << RCC_DCKCFGR1_PLLSAIDIVQ_Pos) /*!< 0x00000400 */\r
-#define RCC_DCKCFGR1_PLLSAIDIVQ_3 (0x08UL << RCC_DCKCFGR1_PLLSAIDIVQ_Pos) /*!< 0x00000800 */\r
-#define RCC_DCKCFGR1_PLLSAIDIVQ_4 (0x10UL << RCC_DCKCFGR1_PLLSAIDIVQ_Pos) /*!< 0x00001000 */\r
-\r
-#define RCC_DCKCFGR1_PLLSAIDIVR_Pos (16U) \r
-#define RCC_DCKCFGR1_PLLSAIDIVR_Msk (0x3UL << RCC_DCKCFGR1_PLLSAIDIVR_Pos) /*!< 0x00030000 */\r
-#define RCC_DCKCFGR1_PLLSAIDIVR RCC_DCKCFGR1_PLLSAIDIVR_Msk \r
-#define RCC_DCKCFGR1_PLLSAIDIVR_0 (0x1UL << RCC_DCKCFGR1_PLLSAIDIVR_Pos) /*!< 0x00010000 */\r
-#define RCC_DCKCFGR1_PLLSAIDIVR_1 (0x2UL << RCC_DCKCFGR1_PLLSAIDIVR_Pos) /*!< 0x00020000 */\r
-\r
-/*\r
- * @brief Specific device feature definitions (not present on all devices in the STM32F7 serie)\r
- */\r
-#define RCC_SAI1SEL_PLLSRC_SUPPORT\r
-#define RCC_DCKCFGR1_SAI1SEL_Pos (20U) \r
-#define RCC_DCKCFGR1_SAI1SEL_Msk (0x3UL << RCC_DCKCFGR1_SAI1SEL_Pos) /*!< 0x00300000 */\r
-#define RCC_DCKCFGR1_SAI1SEL RCC_DCKCFGR1_SAI1SEL_Msk \r
-#define RCC_DCKCFGR1_SAI1SEL_0 (0x1UL << RCC_DCKCFGR1_SAI1SEL_Pos) /*!< 0x00100000 */\r
-#define RCC_DCKCFGR1_SAI1SEL_1 (0x2UL << RCC_DCKCFGR1_SAI1SEL_Pos) /*!< 0x00200000 */\r
-\r
-/*\r
- * @brief Specific device feature definitions (not present on all devices in the STM32F7 serie)\r
- */\r
-#define RCC_SAI2SEL_PLLSRC_SUPPORT\r
-#define RCC_DCKCFGR1_SAI2SEL_Pos (22U) \r
-#define RCC_DCKCFGR1_SAI2SEL_Msk (0x3UL << RCC_DCKCFGR1_SAI2SEL_Pos) /*!< 0x00C00000 */\r
-#define RCC_DCKCFGR1_SAI2SEL RCC_DCKCFGR1_SAI2SEL_Msk \r
-#define RCC_DCKCFGR1_SAI2SEL_0 (0x1UL << RCC_DCKCFGR1_SAI2SEL_Pos) /*!< 0x00400000 */\r
-#define RCC_DCKCFGR1_SAI2SEL_1 (0x2UL << RCC_DCKCFGR1_SAI2SEL_Pos) /*!< 0x00800000 */\r
-\r
-#define RCC_DCKCFGR1_TIMPRE_Pos (24U) \r
-#define RCC_DCKCFGR1_TIMPRE_Msk (0x1UL << RCC_DCKCFGR1_TIMPRE_Pos) /*!< 0x01000000 */\r
-#define RCC_DCKCFGR1_TIMPRE RCC_DCKCFGR1_TIMPRE_Msk \r
-#define RCC_DCKCFGR1_DFSDM1SEL_Pos (25U) \r
-#define RCC_DCKCFGR1_DFSDM1SEL_Msk (0x1UL << RCC_DCKCFGR1_DFSDM1SEL_Pos) /*!< 0x02000000 */\r
-#define RCC_DCKCFGR1_DFSDM1SEL RCC_DCKCFGR1_DFSDM1SEL_Msk \r
-#define RCC_DCKCFGR1_ADFSDM1SEL_Pos (26U) \r
-#define RCC_DCKCFGR1_ADFSDM1SEL_Msk (0x1UL << RCC_DCKCFGR1_ADFSDM1SEL_Pos) /*!< 0x04000000 */\r
-#define RCC_DCKCFGR1_ADFSDM1SEL RCC_DCKCFGR1_ADFSDM1SEL_Msk \r
-\r
-/******************** Bit definition for RCC_DCKCFGR2 register ***************/\r
-#define RCC_DCKCFGR2_USART1SEL_Pos (0U) \r
-#define RCC_DCKCFGR2_USART1SEL_Msk (0x3UL << RCC_DCKCFGR2_USART1SEL_Pos) /*!< 0x00000003 */\r
-#define RCC_DCKCFGR2_USART1SEL RCC_DCKCFGR2_USART1SEL_Msk \r
-#define RCC_DCKCFGR2_USART1SEL_0 (0x1UL << RCC_DCKCFGR2_USART1SEL_Pos) /*!< 0x00000001 */\r
-#define RCC_DCKCFGR2_USART1SEL_1 (0x2UL << RCC_DCKCFGR2_USART1SEL_Pos) /*!< 0x00000002 */\r
-#define RCC_DCKCFGR2_USART2SEL_Pos (2U) \r
-#define RCC_DCKCFGR2_USART2SEL_Msk (0x3UL << RCC_DCKCFGR2_USART2SEL_Pos) /*!< 0x0000000C */\r
-#define RCC_DCKCFGR2_USART2SEL RCC_DCKCFGR2_USART2SEL_Msk \r
-#define RCC_DCKCFGR2_USART2SEL_0 (0x1UL << RCC_DCKCFGR2_USART2SEL_Pos) /*!< 0x00000004 */\r
-#define RCC_DCKCFGR2_USART2SEL_1 (0x2UL << RCC_DCKCFGR2_USART2SEL_Pos) /*!< 0x00000008 */\r
-#define RCC_DCKCFGR2_USART3SEL_Pos (4U) \r
-#define RCC_DCKCFGR2_USART3SEL_Msk (0x3UL << RCC_DCKCFGR2_USART3SEL_Pos) /*!< 0x00000030 */\r
-#define RCC_DCKCFGR2_USART3SEL RCC_DCKCFGR2_USART3SEL_Msk \r
-#define RCC_DCKCFGR2_USART3SEL_0 (0x1UL << RCC_DCKCFGR2_USART3SEL_Pos) /*!< 0x00000010 */\r
-#define RCC_DCKCFGR2_USART3SEL_1 (0x2UL << RCC_DCKCFGR2_USART3SEL_Pos) /*!< 0x00000020 */\r
-#define RCC_DCKCFGR2_UART4SEL_Pos (6U) \r
-#define RCC_DCKCFGR2_UART4SEL_Msk (0x3UL << RCC_DCKCFGR2_UART4SEL_Pos) /*!< 0x000000C0 */\r
-#define RCC_DCKCFGR2_UART4SEL RCC_DCKCFGR2_UART4SEL_Msk \r
-#define RCC_DCKCFGR2_UART4SEL_0 (0x1UL << RCC_DCKCFGR2_UART4SEL_Pos) /*!< 0x00000040 */\r
-#define RCC_DCKCFGR2_UART4SEL_1 (0x2UL << RCC_DCKCFGR2_UART4SEL_Pos) /*!< 0x00000080 */\r
-#define RCC_DCKCFGR2_UART5SEL_Pos (8U) \r
-#define RCC_DCKCFGR2_UART5SEL_Msk (0x3UL << RCC_DCKCFGR2_UART5SEL_Pos) /*!< 0x00000300 */\r
-#define RCC_DCKCFGR2_UART5SEL RCC_DCKCFGR2_UART5SEL_Msk \r
-#define RCC_DCKCFGR2_UART5SEL_0 (0x1UL << RCC_DCKCFGR2_UART5SEL_Pos) /*!< 0x00000100 */\r
-#define RCC_DCKCFGR2_UART5SEL_1 (0x2UL << RCC_DCKCFGR2_UART5SEL_Pos) /*!< 0x00000200 */\r
-#define RCC_DCKCFGR2_USART6SEL_Pos (10U) \r
-#define RCC_DCKCFGR2_USART6SEL_Msk (0x3UL << RCC_DCKCFGR2_USART6SEL_Pos) /*!< 0x00000C00 */\r
-#define RCC_DCKCFGR2_USART6SEL RCC_DCKCFGR2_USART6SEL_Msk \r
-#define RCC_DCKCFGR2_USART6SEL_0 (0x1UL << RCC_DCKCFGR2_USART6SEL_Pos) /*!< 0x00000400 */\r
-#define RCC_DCKCFGR2_USART6SEL_1 (0x2UL << RCC_DCKCFGR2_USART6SEL_Pos) /*!< 0x00000800 */\r
-#define RCC_DCKCFGR2_UART7SEL_Pos (12U) \r
-#define RCC_DCKCFGR2_UART7SEL_Msk (0x3UL << RCC_DCKCFGR2_UART7SEL_Pos) /*!< 0x00003000 */\r
-#define RCC_DCKCFGR2_UART7SEL RCC_DCKCFGR2_UART7SEL_Msk \r
-#define RCC_DCKCFGR2_UART7SEL_0 (0x1UL << RCC_DCKCFGR2_UART7SEL_Pos) /*!< 0x00001000 */\r
-#define RCC_DCKCFGR2_UART7SEL_1 (0x2UL << RCC_DCKCFGR2_UART7SEL_Pos) /*!< 0x00002000 */\r
-#define RCC_DCKCFGR2_UART8SEL_Pos (14U) \r
-#define RCC_DCKCFGR2_UART8SEL_Msk (0x3UL << RCC_DCKCFGR2_UART8SEL_Pos) /*!< 0x0000C000 */\r
-#define RCC_DCKCFGR2_UART8SEL RCC_DCKCFGR2_UART8SEL_Msk \r
-#define RCC_DCKCFGR2_UART8SEL_0 (0x1UL << RCC_DCKCFGR2_UART8SEL_Pos) /*!< 0x00004000 */\r
-#define RCC_DCKCFGR2_UART8SEL_1 (0x2UL << RCC_DCKCFGR2_UART8SEL_Pos) /*!< 0x00008000 */\r
-#define RCC_DCKCFGR2_I2C1SEL_Pos (16U) \r
-#define RCC_DCKCFGR2_I2C1SEL_Msk (0x3UL << RCC_DCKCFGR2_I2C1SEL_Pos) /*!< 0x00030000 */\r
-#define RCC_DCKCFGR2_I2C1SEL RCC_DCKCFGR2_I2C1SEL_Msk \r
-#define RCC_DCKCFGR2_I2C1SEL_0 (0x1UL << RCC_DCKCFGR2_I2C1SEL_Pos) /*!< 0x00010000 */\r
-#define RCC_DCKCFGR2_I2C1SEL_1 (0x2UL << RCC_DCKCFGR2_I2C1SEL_Pos) /*!< 0x00020000 */\r
-#define RCC_DCKCFGR2_I2C2SEL_Pos (18U) \r
-#define RCC_DCKCFGR2_I2C2SEL_Msk (0x3UL << RCC_DCKCFGR2_I2C2SEL_Pos) /*!< 0x000C0000 */\r
-#define RCC_DCKCFGR2_I2C2SEL RCC_DCKCFGR2_I2C2SEL_Msk \r
-#define RCC_DCKCFGR2_I2C2SEL_0 (0x1UL << RCC_DCKCFGR2_I2C2SEL_Pos) /*!< 0x00040000 */\r
-#define RCC_DCKCFGR2_I2C2SEL_1 (0x2UL << RCC_DCKCFGR2_I2C2SEL_Pos) /*!< 0x00080000 */\r
-#define RCC_DCKCFGR2_I2C3SEL_Pos (20U) \r
-#define RCC_DCKCFGR2_I2C3SEL_Msk (0x3UL << RCC_DCKCFGR2_I2C3SEL_Pos) /*!< 0x00300000 */\r
-#define RCC_DCKCFGR2_I2C3SEL RCC_DCKCFGR2_I2C3SEL_Msk \r
-#define RCC_DCKCFGR2_I2C3SEL_0 (0x1UL << RCC_DCKCFGR2_I2C3SEL_Pos) /*!< 0x00100000 */\r
-#define RCC_DCKCFGR2_I2C3SEL_1 (0x2UL << RCC_DCKCFGR2_I2C3SEL_Pos) /*!< 0x00200000 */\r
-#define RCC_DCKCFGR2_I2C4SEL_Pos (22U) \r
-#define RCC_DCKCFGR2_I2C4SEL_Msk (0x3UL << RCC_DCKCFGR2_I2C4SEL_Pos) /*!< 0x00C00000 */\r
-#define RCC_DCKCFGR2_I2C4SEL RCC_DCKCFGR2_I2C4SEL_Msk \r
-#define RCC_DCKCFGR2_I2C4SEL_0 (0x1UL << RCC_DCKCFGR2_I2C4SEL_Pos) /*!< 0x00400000 */\r
-#define RCC_DCKCFGR2_I2C4SEL_1 (0x2UL << RCC_DCKCFGR2_I2C4SEL_Pos) /*!< 0x00800000 */\r
-#define RCC_DCKCFGR2_LPTIM1SEL_Pos (24U) \r
-#define RCC_DCKCFGR2_LPTIM1SEL_Msk (0x3UL << RCC_DCKCFGR2_LPTIM1SEL_Pos) /*!< 0x03000000 */\r
-#define RCC_DCKCFGR2_LPTIM1SEL RCC_DCKCFGR2_LPTIM1SEL_Msk \r
-#define RCC_DCKCFGR2_LPTIM1SEL_0 (0x1UL << RCC_DCKCFGR2_LPTIM1SEL_Pos) /*!< 0x01000000 */\r
-#define RCC_DCKCFGR2_LPTIM1SEL_1 (0x2UL << RCC_DCKCFGR2_LPTIM1SEL_Pos) /*!< 0x02000000 */\r
-#define RCC_DCKCFGR2_CECSEL_Pos (26U) \r
-#define RCC_DCKCFGR2_CECSEL_Msk (0x1UL << RCC_DCKCFGR2_CECSEL_Pos) /*!< 0x04000000 */\r
-#define RCC_DCKCFGR2_CECSEL RCC_DCKCFGR2_CECSEL_Msk \r
-#define RCC_DCKCFGR2_CK48MSEL_Pos (27U) \r
-#define RCC_DCKCFGR2_CK48MSEL_Msk (0x1UL << RCC_DCKCFGR2_CK48MSEL_Pos) /*!< 0x08000000 */\r
-#define RCC_DCKCFGR2_CK48MSEL RCC_DCKCFGR2_CK48MSEL_Msk \r
-#define RCC_DCKCFGR2_SDMMC1SEL_Pos (28U) \r
-#define RCC_DCKCFGR2_SDMMC1SEL_Msk (0x1UL << RCC_DCKCFGR2_SDMMC1SEL_Pos) /*!< 0x10000000 */\r
-#define RCC_DCKCFGR2_SDMMC1SEL RCC_DCKCFGR2_SDMMC1SEL_Msk \r
-#define RCC_DCKCFGR2_SDMMC2SEL_Pos (29U) \r
-#define RCC_DCKCFGR2_SDMMC2SEL_Msk (0x1UL << RCC_DCKCFGR2_SDMMC2SEL_Pos) /*!< 0x20000000 */\r
-#define RCC_DCKCFGR2_SDMMC2SEL RCC_DCKCFGR2_SDMMC2SEL_Msk \r
-\r
-/******************************************************************************/\r
-/* */\r
-/* RNG */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bits definition for RNG_CR register *******************/\r
-#define RNG_CR_RNGEN_Pos (2U) \r
-#define RNG_CR_RNGEN_Msk (0x1UL << RNG_CR_RNGEN_Pos) /*!< 0x00000004 */\r
-#define RNG_CR_RNGEN RNG_CR_RNGEN_Msk \r
-#define RNG_CR_IE_Pos (3U) \r
-#define RNG_CR_IE_Msk (0x1UL << RNG_CR_IE_Pos) /*!< 0x00000008 */\r
-#define RNG_CR_IE RNG_CR_IE_Msk \r
-\r
-/******************** Bits definition for RNG_SR register *******************/\r
-#define RNG_SR_DRDY_Pos (0U) \r
-#define RNG_SR_DRDY_Msk (0x1UL << RNG_SR_DRDY_Pos) /*!< 0x00000001 */\r
-#define RNG_SR_DRDY RNG_SR_DRDY_Msk \r
-#define RNG_SR_CECS_Pos (1U) \r
-#define RNG_SR_CECS_Msk (0x1UL << RNG_SR_CECS_Pos) /*!< 0x00000002 */\r
-#define RNG_SR_CECS RNG_SR_CECS_Msk \r
-#define RNG_SR_SECS_Pos (2U) \r
-#define RNG_SR_SECS_Msk (0x1UL << RNG_SR_SECS_Pos) /*!< 0x00000004 */\r
-#define RNG_SR_SECS RNG_SR_SECS_Msk \r
-#define RNG_SR_CEIS_Pos (5U) \r
-#define RNG_SR_CEIS_Msk (0x1UL << RNG_SR_CEIS_Pos) /*!< 0x00000020 */\r
-#define RNG_SR_CEIS RNG_SR_CEIS_Msk \r
-#define RNG_SR_SEIS_Pos (6U) \r
-#define RNG_SR_SEIS_Msk (0x1UL << RNG_SR_SEIS_Pos) /*!< 0x00000040 */\r
-#define RNG_SR_SEIS RNG_SR_SEIS_Msk \r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Real-Time Clock (RTC) */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bits definition for RTC_TR register *******************/\r
-#define RTC_TR_PM_Pos (22U) \r
-#define RTC_TR_PM_Msk (0x1UL << RTC_TR_PM_Pos) /*!< 0x00400000 */\r
-#define RTC_TR_PM RTC_TR_PM_Msk \r
-#define RTC_TR_HT_Pos (20U) \r
-#define RTC_TR_HT_Msk (0x3UL << RTC_TR_HT_Pos) /*!< 0x00300000 */\r
-#define RTC_TR_HT RTC_TR_HT_Msk \r
-#define RTC_TR_HT_0 (0x1UL << RTC_TR_HT_Pos) /*!< 0x00100000 */\r
-#define RTC_TR_HT_1 (0x2UL << RTC_TR_HT_Pos) /*!< 0x00200000 */\r
-#define RTC_TR_HU_Pos (16U) \r
-#define RTC_TR_HU_Msk (0xFUL << RTC_TR_HU_Pos) /*!< 0x000F0000 */\r
-#define RTC_TR_HU RTC_TR_HU_Msk \r
-#define RTC_TR_HU_0 (0x1UL << RTC_TR_HU_Pos) /*!< 0x00010000 */\r
-#define RTC_TR_HU_1 (0x2UL << RTC_TR_HU_Pos) /*!< 0x00020000 */\r
-#define RTC_TR_HU_2 (0x4UL << RTC_TR_HU_Pos) /*!< 0x00040000 */\r
-#define RTC_TR_HU_3 (0x8UL << RTC_TR_HU_Pos) /*!< 0x00080000 */\r
-#define RTC_TR_MNT_Pos (12U) \r
-#define RTC_TR_MNT_Msk (0x7UL << RTC_TR_MNT_Pos) /*!< 0x00007000 */\r
-#define RTC_TR_MNT RTC_TR_MNT_Msk \r
-#define RTC_TR_MNT_0 (0x1UL << RTC_TR_MNT_Pos) /*!< 0x00001000 */\r
-#define RTC_TR_MNT_1 (0x2UL << RTC_TR_MNT_Pos) /*!< 0x00002000 */\r
-#define RTC_TR_MNT_2 (0x4UL << RTC_TR_MNT_Pos) /*!< 0x00004000 */\r
-#define RTC_TR_MNU_Pos (8U) \r
-#define RTC_TR_MNU_Msk (0xFUL << RTC_TR_MNU_Pos) /*!< 0x00000F00 */\r
-#define RTC_TR_MNU RTC_TR_MNU_Msk \r
-#define RTC_TR_MNU_0 (0x1UL << RTC_TR_MNU_Pos) /*!< 0x00000100 */\r
-#define RTC_TR_MNU_1 (0x2UL << RTC_TR_MNU_Pos) /*!< 0x00000200 */\r
-#define RTC_TR_MNU_2 (0x4UL << RTC_TR_MNU_Pos) /*!< 0x00000400 */\r
-#define RTC_TR_MNU_3 (0x8UL << RTC_TR_MNU_Pos) /*!< 0x00000800 */\r
-#define RTC_TR_ST_Pos (4U) \r
-#define RTC_TR_ST_Msk (0x7UL << RTC_TR_ST_Pos) /*!< 0x00000070 */\r
-#define RTC_TR_ST RTC_TR_ST_Msk \r
-#define RTC_TR_ST_0 (0x1UL << RTC_TR_ST_Pos) /*!< 0x00000010 */\r
-#define RTC_TR_ST_1 (0x2UL << RTC_TR_ST_Pos) /*!< 0x00000020 */\r
-#define RTC_TR_ST_2 (0x4UL << RTC_TR_ST_Pos) /*!< 0x00000040 */\r
-#define RTC_TR_SU_Pos (0U) \r
-#define RTC_TR_SU_Msk (0xFUL << RTC_TR_SU_Pos) /*!< 0x0000000F */\r
-#define RTC_TR_SU RTC_TR_SU_Msk \r
-#define RTC_TR_SU_0 (0x1UL << RTC_TR_SU_Pos) /*!< 0x00000001 */\r
-#define RTC_TR_SU_1 (0x2UL << RTC_TR_SU_Pos) /*!< 0x00000002 */\r
-#define RTC_TR_SU_2 (0x4UL << RTC_TR_SU_Pos) /*!< 0x00000004 */\r
-#define RTC_TR_SU_3 (0x8UL << RTC_TR_SU_Pos) /*!< 0x00000008 */\r
-\r
-/******************** Bits definition for RTC_DR register *******************/\r
-#define RTC_DR_YT_Pos (20U) \r
-#define RTC_DR_YT_Msk (0xFUL << RTC_DR_YT_Pos) /*!< 0x00F00000 */\r
-#define RTC_DR_YT RTC_DR_YT_Msk \r
-#define RTC_DR_YT_0 (0x1UL << RTC_DR_YT_Pos) /*!< 0x00100000 */\r
-#define RTC_DR_YT_1 (0x2UL << RTC_DR_YT_Pos) /*!< 0x00200000 */\r
-#define RTC_DR_YT_2 (0x4UL << RTC_DR_YT_Pos) /*!< 0x00400000 */\r
-#define RTC_DR_YT_3 (0x8UL << RTC_DR_YT_Pos) /*!< 0x00800000 */\r
-#define RTC_DR_YU_Pos (16U) \r
-#define RTC_DR_YU_Msk (0xFUL << RTC_DR_YU_Pos) /*!< 0x000F0000 */\r
-#define RTC_DR_YU RTC_DR_YU_Msk \r
-#define RTC_DR_YU_0 (0x1UL << RTC_DR_YU_Pos) /*!< 0x00010000 */\r
-#define RTC_DR_YU_1 (0x2UL << RTC_DR_YU_Pos) /*!< 0x00020000 */\r
-#define RTC_DR_YU_2 (0x4UL << RTC_DR_YU_Pos) /*!< 0x00040000 */\r
-#define RTC_DR_YU_3 (0x8UL << RTC_DR_YU_Pos) /*!< 0x00080000 */\r
-#define RTC_DR_WDU_Pos (13U) \r
-#define RTC_DR_WDU_Msk (0x7UL << RTC_DR_WDU_Pos) /*!< 0x0000E000 */\r
-#define RTC_DR_WDU RTC_DR_WDU_Msk \r
-#define RTC_DR_WDU_0 (0x1UL << RTC_DR_WDU_Pos) /*!< 0x00002000 */\r
-#define RTC_DR_WDU_1 (0x2UL << RTC_DR_WDU_Pos) /*!< 0x00004000 */\r
-#define RTC_DR_WDU_2 (0x4UL << RTC_DR_WDU_Pos) /*!< 0x00008000 */\r
-#define RTC_DR_MT_Pos (12U) \r
-#define RTC_DR_MT_Msk (0x1UL << RTC_DR_MT_Pos) /*!< 0x00001000 */\r
-#define RTC_DR_MT RTC_DR_MT_Msk \r
-#define RTC_DR_MU_Pos (8U) \r
-#define RTC_DR_MU_Msk (0xFUL << RTC_DR_MU_Pos) /*!< 0x00000F00 */\r
-#define RTC_DR_MU RTC_DR_MU_Msk \r
-#define RTC_DR_MU_0 (0x1UL << RTC_DR_MU_Pos) /*!< 0x00000100 */\r
-#define RTC_DR_MU_1 (0x2UL << RTC_DR_MU_Pos) /*!< 0x00000200 */\r
-#define RTC_DR_MU_2 (0x4UL << RTC_DR_MU_Pos) /*!< 0x00000400 */\r
-#define RTC_DR_MU_3 (0x8UL << RTC_DR_MU_Pos) /*!< 0x00000800 */\r
-#define RTC_DR_DT_Pos (4U) \r
-#define RTC_DR_DT_Msk (0x3UL << RTC_DR_DT_Pos) /*!< 0x00000030 */\r
-#define RTC_DR_DT RTC_DR_DT_Msk \r
-#define RTC_DR_DT_0 (0x1UL << RTC_DR_DT_Pos) /*!< 0x00000010 */\r
-#define RTC_DR_DT_1 (0x2UL << RTC_DR_DT_Pos) /*!< 0x00000020 */\r
-#define RTC_DR_DU_Pos (0U) \r
-#define RTC_DR_DU_Msk (0xFUL << RTC_DR_DU_Pos) /*!< 0x0000000F */\r
-#define RTC_DR_DU RTC_DR_DU_Msk \r
-#define RTC_DR_DU_0 (0x1UL << RTC_DR_DU_Pos) /*!< 0x00000001 */\r
-#define RTC_DR_DU_1 (0x2UL << RTC_DR_DU_Pos) /*!< 0x00000002 */\r
-#define RTC_DR_DU_2 (0x4UL << RTC_DR_DU_Pos) /*!< 0x00000004 */\r
-#define RTC_DR_DU_3 (0x8UL << RTC_DR_DU_Pos) /*!< 0x00000008 */\r
-\r
-/******************** Bits definition for RTC_CR register *******************/\r
-#define RTC_CR_ITSE_Pos (24U) \r
-#define RTC_CR_ITSE_Msk (0x1UL << RTC_CR_ITSE_Pos) /*!< 0x01000000 */\r
-#define RTC_CR_ITSE RTC_CR_ITSE_Msk \r
-#define RTC_CR_COE_Pos (23U) \r
-#define RTC_CR_COE_Msk (0x1UL << RTC_CR_COE_Pos) /*!< 0x00800000 */\r
-#define RTC_CR_COE RTC_CR_COE_Msk \r
-#define RTC_CR_OSEL_Pos (21U) \r
-#define RTC_CR_OSEL_Msk (0x3UL << RTC_CR_OSEL_Pos) /*!< 0x00600000 */\r
-#define RTC_CR_OSEL RTC_CR_OSEL_Msk \r
-#define RTC_CR_OSEL_0 (0x1UL << RTC_CR_OSEL_Pos) /*!< 0x00200000 */\r
-#define RTC_CR_OSEL_1 (0x2UL << RTC_CR_OSEL_Pos) /*!< 0x00400000 */\r
-#define RTC_CR_POL_Pos (20U) \r
-#define RTC_CR_POL_Msk (0x1UL << RTC_CR_POL_Pos) /*!< 0x00100000 */\r
-#define RTC_CR_POL RTC_CR_POL_Msk \r
-#define RTC_CR_COSEL_Pos (19U) \r
-#define RTC_CR_COSEL_Msk (0x1UL << RTC_CR_COSEL_Pos) /*!< 0x00080000 */\r
-#define RTC_CR_COSEL RTC_CR_COSEL_Msk \r
-#define RTC_CR_BKP_Pos (18U) \r
-#define RTC_CR_BKP_Msk (0x1UL << RTC_CR_BKP_Pos) /*!< 0x00040000 */\r
-#define RTC_CR_BKP RTC_CR_BKP_Msk \r
-#define RTC_CR_SUB1H_Pos (17U) \r
-#define RTC_CR_SUB1H_Msk (0x1UL << RTC_CR_SUB1H_Pos) /*!< 0x00020000 */\r
-#define RTC_CR_SUB1H RTC_CR_SUB1H_Msk \r
-#define RTC_CR_ADD1H_Pos (16U) \r
-#define RTC_CR_ADD1H_Msk (0x1UL << RTC_CR_ADD1H_Pos) /*!< 0x00010000 */\r
-#define RTC_CR_ADD1H RTC_CR_ADD1H_Msk \r
-#define RTC_CR_TSIE_Pos (15U) \r
-#define RTC_CR_TSIE_Msk (0x1UL << RTC_CR_TSIE_Pos) /*!< 0x00008000 */\r
-#define RTC_CR_TSIE RTC_CR_TSIE_Msk \r
-#define RTC_CR_WUTIE_Pos (14U) \r
-#define RTC_CR_WUTIE_Msk (0x1UL << RTC_CR_WUTIE_Pos) /*!< 0x00004000 */\r
-#define RTC_CR_WUTIE RTC_CR_WUTIE_Msk \r
-#define RTC_CR_ALRBIE_Pos (13U) \r
-#define RTC_CR_ALRBIE_Msk (0x1UL << RTC_CR_ALRBIE_Pos) /*!< 0x00002000 */\r
-#define RTC_CR_ALRBIE RTC_CR_ALRBIE_Msk \r
-#define RTC_CR_ALRAIE_Pos (12U) \r
-#define RTC_CR_ALRAIE_Msk (0x1UL << RTC_CR_ALRAIE_Pos) /*!< 0x00001000 */\r
-#define RTC_CR_ALRAIE RTC_CR_ALRAIE_Msk \r
-#define RTC_CR_TSE_Pos (11U) \r
-#define RTC_CR_TSE_Msk (0x1UL << RTC_CR_TSE_Pos) /*!< 0x00000800 */\r
-#define RTC_CR_TSE RTC_CR_TSE_Msk \r
-#define RTC_CR_WUTE_Pos (10U) \r
-#define RTC_CR_WUTE_Msk (0x1UL << RTC_CR_WUTE_Pos) /*!< 0x00000400 */\r
-#define RTC_CR_WUTE RTC_CR_WUTE_Msk \r
-#define RTC_CR_ALRBE_Pos (9U) \r
-#define RTC_CR_ALRBE_Msk (0x1UL << RTC_CR_ALRBE_Pos) /*!< 0x00000200 */\r
-#define RTC_CR_ALRBE RTC_CR_ALRBE_Msk \r
-#define RTC_CR_ALRAE_Pos (8U) \r
-#define RTC_CR_ALRAE_Msk (0x1UL << RTC_CR_ALRAE_Pos) /*!< 0x00000100 */\r
-#define RTC_CR_ALRAE RTC_CR_ALRAE_Msk \r
-#define RTC_CR_FMT_Pos (6U) \r
-#define RTC_CR_FMT_Msk (0x1UL << RTC_CR_FMT_Pos) /*!< 0x00000040 */\r
-#define RTC_CR_FMT RTC_CR_FMT_Msk \r
-#define RTC_CR_BYPSHAD_Pos (5U) \r
-#define RTC_CR_BYPSHAD_Msk (0x1UL << RTC_CR_BYPSHAD_Pos) /*!< 0x00000020 */\r
-#define RTC_CR_BYPSHAD RTC_CR_BYPSHAD_Msk \r
-#define RTC_CR_REFCKON_Pos (4U) \r
-#define RTC_CR_REFCKON_Msk (0x1UL << RTC_CR_REFCKON_Pos) /*!< 0x00000010 */\r
-#define RTC_CR_REFCKON RTC_CR_REFCKON_Msk \r
-#define RTC_CR_TSEDGE_Pos (3U) \r
-#define RTC_CR_TSEDGE_Msk (0x1UL << RTC_CR_TSEDGE_Pos) /*!< 0x00000008 */\r
-#define RTC_CR_TSEDGE RTC_CR_TSEDGE_Msk \r
-#define RTC_CR_WUCKSEL_Pos (0U) \r
-#define RTC_CR_WUCKSEL_Msk (0x7UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000007 */\r
-#define RTC_CR_WUCKSEL RTC_CR_WUCKSEL_Msk \r
-#define RTC_CR_WUCKSEL_0 (0x1UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000001 */\r
-#define RTC_CR_WUCKSEL_1 (0x2UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000002 */\r
-#define RTC_CR_WUCKSEL_2 (0x4UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000004 */\r
-\r
-/* Legacy define */\r
-#define RTC_CR_BCK RTC_CR_BKP\r
-\r
-/******************** Bits definition for RTC_ISR register ******************/\r
-#define RTC_ISR_ITSF_Pos (17U) \r
-#define RTC_ISR_ITSF_Msk (0x1UL << RTC_ISR_ITSF_Pos) /*!< 0x00020000 */\r
-#define RTC_ISR_ITSF RTC_ISR_ITSF_Msk \r
-#define RTC_ISR_RECALPF_Pos (16U) \r
-#define RTC_ISR_RECALPF_Msk (0x1UL << RTC_ISR_RECALPF_Pos) /*!< 0x00010000 */\r
-#define RTC_ISR_RECALPF RTC_ISR_RECALPF_Msk \r
-#define RTC_ISR_TAMP3F_Pos (15U) \r
-#define RTC_ISR_TAMP3F_Msk (0x1UL << RTC_ISR_TAMP3F_Pos) /*!< 0x00008000 */\r
-#define RTC_ISR_TAMP3F RTC_ISR_TAMP3F_Msk \r
-#define RTC_ISR_TAMP2F_Pos (14U) \r
-#define RTC_ISR_TAMP2F_Msk (0x1UL << RTC_ISR_TAMP2F_Pos) /*!< 0x00004000 */\r
-#define RTC_ISR_TAMP2F RTC_ISR_TAMP2F_Msk \r
-#define RTC_ISR_TAMP1F_Pos (13U) \r
-#define RTC_ISR_TAMP1F_Msk (0x1UL << RTC_ISR_TAMP1F_Pos) /*!< 0x00002000 */\r
-#define RTC_ISR_TAMP1F RTC_ISR_TAMP1F_Msk \r
-#define RTC_ISR_TSOVF_Pos (12U) \r
-#define RTC_ISR_TSOVF_Msk (0x1UL << RTC_ISR_TSOVF_Pos) /*!< 0x00001000 */\r
-#define RTC_ISR_TSOVF RTC_ISR_TSOVF_Msk \r
-#define RTC_ISR_TSF_Pos (11U) \r
-#define RTC_ISR_TSF_Msk (0x1UL << RTC_ISR_TSF_Pos) /*!< 0x00000800 */\r
-#define RTC_ISR_TSF RTC_ISR_TSF_Msk \r
-#define RTC_ISR_WUTF_Pos (10U) \r
-#define RTC_ISR_WUTF_Msk (0x1UL << RTC_ISR_WUTF_Pos) /*!< 0x00000400 */\r
-#define RTC_ISR_WUTF RTC_ISR_WUTF_Msk \r
-#define RTC_ISR_ALRBF_Pos (9U) \r
-#define RTC_ISR_ALRBF_Msk (0x1UL << RTC_ISR_ALRBF_Pos) /*!< 0x00000200 */\r
-#define RTC_ISR_ALRBF RTC_ISR_ALRBF_Msk \r
-#define RTC_ISR_ALRAF_Pos (8U) \r
-#define RTC_ISR_ALRAF_Msk (0x1UL << RTC_ISR_ALRAF_Pos) /*!< 0x00000100 */\r
-#define RTC_ISR_ALRAF RTC_ISR_ALRAF_Msk \r
-#define RTC_ISR_INIT_Pos (7U) \r
-#define RTC_ISR_INIT_Msk (0x1UL << RTC_ISR_INIT_Pos) /*!< 0x00000080 */\r
-#define RTC_ISR_INIT RTC_ISR_INIT_Msk \r
-#define RTC_ISR_INITF_Pos (6U) \r
-#define RTC_ISR_INITF_Msk (0x1UL << RTC_ISR_INITF_Pos) /*!< 0x00000040 */\r
-#define RTC_ISR_INITF RTC_ISR_INITF_Msk \r
-#define RTC_ISR_RSF_Pos (5U) \r
-#define RTC_ISR_RSF_Msk (0x1UL << RTC_ISR_RSF_Pos) /*!< 0x00000020 */\r
-#define RTC_ISR_RSF RTC_ISR_RSF_Msk \r
-#define RTC_ISR_INITS_Pos (4U) \r
-#define RTC_ISR_INITS_Msk (0x1UL << RTC_ISR_INITS_Pos) /*!< 0x00000010 */\r
-#define RTC_ISR_INITS RTC_ISR_INITS_Msk \r
-#define RTC_ISR_SHPF_Pos (3U) \r
-#define RTC_ISR_SHPF_Msk (0x1UL << RTC_ISR_SHPF_Pos) /*!< 0x00000008 */\r
-#define RTC_ISR_SHPF RTC_ISR_SHPF_Msk \r
-#define RTC_ISR_WUTWF_Pos (2U) \r
-#define RTC_ISR_WUTWF_Msk (0x1UL << RTC_ISR_WUTWF_Pos) /*!< 0x00000004 */\r
-#define RTC_ISR_WUTWF RTC_ISR_WUTWF_Msk \r
-#define RTC_ISR_ALRBWF_Pos (1U) \r
-#define RTC_ISR_ALRBWF_Msk (0x1UL << RTC_ISR_ALRBWF_Pos) /*!< 0x00000002 */\r
-#define RTC_ISR_ALRBWF RTC_ISR_ALRBWF_Msk \r
-#define RTC_ISR_ALRAWF_Pos (0U) \r
-#define RTC_ISR_ALRAWF_Msk (0x1UL << RTC_ISR_ALRAWF_Pos) /*!< 0x00000001 */\r
-#define RTC_ISR_ALRAWF RTC_ISR_ALRAWF_Msk \r
-\r
-/******************** Bits definition for RTC_PRER register *****************/\r
-#define RTC_PRER_PREDIV_A_Pos (16U) \r
-#define RTC_PRER_PREDIV_A_Msk (0x7FUL << RTC_PRER_PREDIV_A_Pos) /*!< 0x007F0000 */\r
-#define RTC_PRER_PREDIV_A RTC_PRER_PREDIV_A_Msk \r
-#define RTC_PRER_PREDIV_S_Pos (0U) \r
-#define RTC_PRER_PREDIV_S_Msk (0x7FFFUL << RTC_PRER_PREDIV_S_Pos) /*!< 0x00007FFF */\r
-#define RTC_PRER_PREDIV_S RTC_PRER_PREDIV_S_Msk \r
-\r
-/******************** Bits definition for RTC_WUTR register *****************/\r
-#define RTC_WUTR_WUT_Pos (0U) \r
-#define RTC_WUTR_WUT_Msk (0xFFFFUL << RTC_WUTR_WUT_Pos) /*!< 0x0000FFFF */\r
-#define RTC_WUTR_WUT RTC_WUTR_WUT_Msk \r
-\r
-/******************** Bits definition for RTC_ALRMAR register ***************/\r
-#define RTC_ALRMAR_MSK4_Pos (31U) \r
-#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */\r
-#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk \r
-#define RTC_ALRMAR_WDSEL_Pos (30U) \r
-#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */\r
-#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk \r
-#define RTC_ALRMAR_DT_Pos (28U) \r
-#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */\r
-#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk \r
-#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */\r
-#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */\r
-#define RTC_ALRMAR_DU_Pos (24U) \r
-#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */\r
-#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk \r
-#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */\r
-#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */\r
-#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */\r
-#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */\r
-#define RTC_ALRMAR_MSK3_Pos (23U) \r
-#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */\r
-#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk \r
-#define RTC_ALRMAR_PM_Pos (22U) \r
-#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */\r
-#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk \r
-#define RTC_ALRMAR_HT_Pos (20U) \r
-#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */\r
-#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk \r
-#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */\r
-#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */\r
-#define RTC_ALRMAR_HU_Pos (16U) \r
-#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */\r
-#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk \r
-#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */\r
-#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */\r
-#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */\r
-#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */\r
-#define RTC_ALRMAR_MSK2_Pos (15U) \r
-#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */\r
-#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk \r
-#define RTC_ALRMAR_MNT_Pos (12U) \r
-#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */\r
-#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk \r
-#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */\r
-#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */\r
-#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */\r
-#define RTC_ALRMAR_MNU_Pos (8U) \r
-#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */\r
-#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk \r
-#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */\r
-#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */\r
-#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */\r
-#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */\r
-#define RTC_ALRMAR_MSK1_Pos (7U) \r
-#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */\r
-#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk \r
-#define RTC_ALRMAR_ST_Pos (4U) \r
-#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */\r
-#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk \r
-#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */\r
-#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */\r
-#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */\r
-#define RTC_ALRMAR_SU_Pos (0U) \r
-#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */\r
-#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk \r
-#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */\r
-#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */\r
-#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */\r
-#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */\r
-\r
-/******************** Bits definition for RTC_ALRMBR register ***************/\r
-#define RTC_ALRMBR_MSK4_Pos (31U) \r
-#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */\r
-#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk \r
-#define RTC_ALRMBR_WDSEL_Pos (30U) \r
-#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */\r
-#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk \r
-#define RTC_ALRMBR_DT_Pos (28U) \r
-#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */\r
-#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk \r
-#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */\r
-#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */\r
-#define RTC_ALRMBR_DU_Pos (24U) \r
-#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */\r
-#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk \r
-#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */\r
-#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */\r
-#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */\r
-#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */\r
-#define RTC_ALRMBR_MSK3_Pos (23U) \r
-#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */\r
-#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk \r
-#define RTC_ALRMBR_PM_Pos (22U) \r
-#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */\r
-#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk \r
-#define RTC_ALRMBR_HT_Pos (20U) \r
-#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */\r
-#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk \r
-#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */\r
-#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */\r
-#define RTC_ALRMBR_HU_Pos (16U) \r
-#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */\r
-#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk \r
-#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */\r
-#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */\r
-#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */\r
-#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */\r
-#define RTC_ALRMBR_MSK2_Pos (15U) \r
-#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */\r
-#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk \r
-#define RTC_ALRMBR_MNT_Pos (12U) \r
-#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */\r
-#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk \r
-#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */\r
-#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */\r
-#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */\r
-#define RTC_ALRMBR_MNU_Pos (8U) \r
-#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */\r
-#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk \r
-#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */\r
-#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */\r
-#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */\r
-#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */\r
-#define RTC_ALRMBR_MSK1_Pos (7U) \r
-#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */\r
-#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk \r
-#define RTC_ALRMBR_ST_Pos (4U) \r
-#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */\r
-#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk \r
-#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */\r
-#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */\r
-#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */\r
-#define RTC_ALRMBR_SU_Pos (0U) \r
-#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */\r
-#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk \r
-#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */\r
-#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */\r
-#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */\r
-#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */\r
-\r
-/******************** Bits definition for RTC_WPR register ******************/\r
-#define RTC_WPR_KEY_Pos (0U) \r
-#define RTC_WPR_KEY_Msk (0xFFUL << RTC_WPR_KEY_Pos) /*!< 0x000000FF */\r
-#define RTC_WPR_KEY RTC_WPR_KEY_Msk \r
-\r
-/******************** Bits definition for RTC_SSR register ******************/\r
-#define RTC_SSR_SS_Pos (0U) \r
-#define RTC_SSR_SS_Msk (0xFFFFUL << RTC_SSR_SS_Pos) /*!< 0x0000FFFF */\r
-#define RTC_SSR_SS RTC_SSR_SS_Msk \r
-\r
-/******************** Bits definition for RTC_SHIFTR register ***************/\r
-#define RTC_SHIFTR_SUBFS_Pos (0U) \r
-#define RTC_SHIFTR_SUBFS_Msk (0x7FFFUL << RTC_SHIFTR_SUBFS_Pos) /*!< 0x00007FFF */\r
-#define RTC_SHIFTR_SUBFS RTC_SHIFTR_SUBFS_Msk \r
-#define RTC_SHIFTR_ADD1S_Pos (31U) \r
-#define RTC_SHIFTR_ADD1S_Msk (0x1UL << RTC_SHIFTR_ADD1S_Pos) /*!< 0x80000000 */\r
-#define RTC_SHIFTR_ADD1S RTC_SHIFTR_ADD1S_Msk \r
-\r
-/******************** Bits definition for RTC_TSTR register *****************/\r
-#define RTC_TSTR_PM_Pos (22U) \r
-#define RTC_TSTR_PM_Msk (0x1UL << RTC_TSTR_PM_Pos) /*!< 0x00400000 */\r
-#define RTC_TSTR_PM RTC_TSTR_PM_Msk \r
-#define RTC_TSTR_HT_Pos (20U) \r
-#define RTC_TSTR_HT_Msk (0x3UL << RTC_TSTR_HT_Pos) /*!< 0x00300000 */\r
-#define RTC_TSTR_HT RTC_TSTR_HT_Msk \r
-#define RTC_TSTR_HT_0 (0x1UL << RTC_TSTR_HT_Pos) /*!< 0x00100000 */\r
-#define RTC_TSTR_HT_1 (0x2UL << RTC_TSTR_HT_Pos) /*!< 0x00200000 */\r
-#define RTC_TSTR_HU_Pos (16U) \r
-#define RTC_TSTR_HU_Msk (0xFUL << RTC_TSTR_HU_Pos) /*!< 0x000F0000 */\r
-#define RTC_TSTR_HU RTC_TSTR_HU_Msk \r
-#define RTC_TSTR_HU_0 (0x1UL << RTC_TSTR_HU_Pos) /*!< 0x00010000 */\r
-#define RTC_TSTR_HU_1 (0x2UL << RTC_TSTR_HU_Pos) /*!< 0x00020000 */\r
-#define RTC_TSTR_HU_2 (0x4UL << RTC_TSTR_HU_Pos) /*!< 0x00040000 */\r
-#define RTC_TSTR_HU_3 (0x8UL << RTC_TSTR_HU_Pos) /*!< 0x00080000 */\r
-#define RTC_TSTR_MNT_Pos (12U) \r
-#define RTC_TSTR_MNT_Msk (0x7UL << RTC_TSTR_MNT_Pos) /*!< 0x00007000 */\r
-#define RTC_TSTR_MNT RTC_TSTR_MNT_Msk \r
-#define RTC_TSTR_MNT_0 (0x1UL << RTC_TSTR_MNT_Pos) /*!< 0x00001000 */\r
-#define RTC_TSTR_MNT_1 (0x2UL << RTC_TSTR_MNT_Pos) /*!< 0x00002000 */\r
-#define RTC_TSTR_MNT_2 (0x4UL << RTC_TSTR_MNT_Pos) /*!< 0x00004000 */\r
-#define RTC_TSTR_MNU_Pos (8U) \r
-#define RTC_TSTR_MNU_Msk (0xFUL << RTC_TSTR_MNU_Pos) /*!< 0x00000F00 */\r
-#define RTC_TSTR_MNU RTC_TSTR_MNU_Msk \r
-#define RTC_TSTR_MNU_0 (0x1UL << RTC_TSTR_MNU_Pos) /*!< 0x00000100 */\r
-#define RTC_TSTR_MNU_1 (0x2UL << RTC_TSTR_MNU_Pos) /*!< 0x00000200 */\r
-#define RTC_TSTR_MNU_2 (0x4UL << RTC_TSTR_MNU_Pos) /*!< 0x00000400 */\r
-#define RTC_TSTR_MNU_3 (0x8UL << RTC_TSTR_MNU_Pos) /*!< 0x00000800 */\r
-#define RTC_TSTR_ST_Pos (4U) \r
-#define RTC_TSTR_ST_Msk (0x7UL << RTC_TSTR_ST_Pos) /*!< 0x00000070 */\r
-#define RTC_TSTR_ST RTC_TSTR_ST_Msk \r
-#define RTC_TSTR_ST_0 (0x1UL << RTC_TSTR_ST_Pos) /*!< 0x00000010 */\r
-#define RTC_TSTR_ST_1 (0x2UL << RTC_TSTR_ST_Pos) /*!< 0x00000020 */\r
-#define RTC_TSTR_ST_2 (0x4UL << RTC_TSTR_ST_Pos) /*!< 0x00000040 */\r
-#define RTC_TSTR_SU_Pos (0U) \r
-#define RTC_TSTR_SU_Msk (0xFUL << RTC_TSTR_SU_Pos) /*!< 0x0000000F */\r
-#define RTC_TSTR_SU RTC_TSTR_SU_Msk \r
-#define RTC_TSTR_SU_0 (0x1UL << RTC_TSTR_SU_Pos) /*!< 0x00000001 */\r
-#define RTC_TSTR_SU_1 (0x2UL << RTC_TSTR_SU_Pos) /*!< 0x00000002 */\r
-#define RTC_TSTR_SU_2 (0x4UL << RTC_TSTR_SU_Pos) /*!< 0x00000004 */\r
-#define RTC_TSTR_SU_3 (0x8UL << RTC_TSTR_SU_Pos) /*!< 0x00000008 */\r
-\r
-/******************** Bits definition for RTC_TSDR register *****************/\r
-#define RTC_TSDR_WDU_Pos (13U) \r
-#define RTC_TSDR_WDU_Msk (0x7UL << RTC_TSDR_WDU_Pos) /*!< 0x0000E000 */\r
-#define RTC_TSDR_WDU RTC_TSDR_WDU_Msk \r
-#define RTC_TSDR_WDU_0 (0x1UL << RTC_TSDR_WDU_Pos) /*!< 0x00002000 */\r
-#define RTC_TSDR_WDU_1 (0x2UL << RTC_TSDR_WDU_Pos) /*!< 0x00004000 */\r
-#define RTC_TSDR_WDU_2 (0x4UL << RTC_TSDR_WDU_Pos) /*!< 0x00008000 */\r
-#define RTC_TSDR_MT_Pos (12U) \r
-#define RTC_TSDR_MT_Msk (0x1UL << RTC_TSDR_MT_Pos) /*!< 0x00001000 */\r
-#define RTC_TSDR_MT RTC_TSDR_MT_Msk \r
-#define RTC_TSDR_MU_Pos (8U) \r
-#define RTC_TSDR_MU_Msk (0xFUL << RTC_TSDR_MU_Pos) /*!< 0x00000F00 */\r
-#define RTC_TSDR_MU RTC_TSDR_MU_Msk \r
-#define RTC_TSDR_MU_0 (0x1UL << RTC_TSDR_MU_Pos) /*!< 0x00000100 */\r
-#define RTC_TSDR_MU_1 (0x2UL << RTC_TSDR_MU_Pos) /*!< 0x00000200 */\r
-#define RTC_TSDR_MU_2 (0x4UL << RTC_TSDR_MU_Pos) /*!< 0x00000400 */\r
-#define RTC_TSDR_MU_3 (0x8UL << RTC_TSDR_MU_Pos) /*!< 0x00000800 */\r
-#define RTC_TSDR_DT_Pos (4U) \r
-#define RTC_TSDR_DT_Msk (0x3UL << RTC_TSDR_DT_Pos) /*!< 0x00000030 */\r
-#define RTC_TSDR_DT RTC_TSDR_DT_Msk \r
-#define RTC_TSDR_DT_0 (0x1UL << RTC_TSDR_DT_Pos) /*!< 0x00000010 */\r
-#define RTC_TSDR_DT_1 (0x2UL << RTC_TSDR_DT_Pos) /*!< 0x00000020 */\r
-#define RTC_TSDR_DU_Pos (0U) \r
-#define RTC_TSDR_DU_Msk (0xFUL << RTC_TSDR_DU_Pos) /*!< 0x0000000F */\r
-#define RTC_TSDR_DU RTC_TSDR_DU_Msk \r
-#define RTC_TSDR_DU_0 (0x1UL << RTC_TSDR_DU_Pos) /*!< 0x00000001 */\r
-#define RTC_TSDR_DU_1 (0x2UL << RTC_TSDR_DU_Pos) /*!< 0x00000002 */\r
-#define RTC_TSDR_DU_2 (0x4UL << RTC_TSDR_DU_Pos) /*!< 0x00000004 */\r
-#define RTC_TSDR_DU_3 (0x8UL << RTC_TSDR_DU_Pos) /*!< 0x00000008 */\r
-\r
-/******************** Bits definition for RTC_TSSSR register ****************/\r
-#define RTC_TSSSR_SS_Pos (0U) \r
-#define RTC_TSSSR_SS_Msk (0xFFFFUL << RTC_TSSSR_SS_Pos) /*!< 0x0000FFFF */\r
-#define RTC_TSSSR_SS RTC_TSSSR_SS_Msk \r
-\r
-/******************** Bits definition for RTC_CAL register *****************/\r
-#define RTC_CALR_CALP_Pos (15U) \r
-#define RTC_CALR_CALP_Msk (0x1UL << RTC_CALR_CALP_Pos) /*!< 0x00008000 */\r
-#define RTC_CALR_CALP RTC_CALR_CALP_Msk \r
-#define RTC_CALR_CALW8_Pos (14U) \r
-#define RTC_CALR_CALW8_Msk (0x1UL << RTC_CALR_CALW8_Pos) /*!< 0x00004000 */\r
-#define RTC_CALR_CALW8 RTC_CALR_CALW8_Msk \r
-#define RTC_CALR_CALW16_Pos (13U) \r
-#define RTC_CALR_CALW16_Msk (0x1UL << RTC_CALR_CALW16_Pos) /*!< 0x00002000 */\r
-#define RTC_CALR_CALW16 RTC_CALR_CALW16_Msk \r
-#define RTC_CALR_CALM_Pos (0U) \r
-#define RTC_CALR_CALM_Msk (0x1FFUL << RTC_CALR_CALM_Pos) /*!< 0x000001FF */\r
-#define RTC_CALR_CALM RTC_CALR_CALM_Msk \r
-#define RTC_CALR_CALM_0 (0x001UL << RTC_CALR_CALM_Pos) /*!< 0x00000001 */\r
-#define RTC_CALR_CALM_1 (0x002UL << RTC_CALR_CALM_Pos) /*!< 0x00000002 */\r
-#define RTC_CALR_CALM_2 (0x004UL << RTC_CALR_CALM_Pos) /*!< 0x00000004 */\r
-#define RTC_CALR_CALM_3 (0x008UL << RTC_CALR_CALM_Pos) /*!< 0x00000008 */\r
-#define RTC_CALR_CALM_4 (0x010UL << RTC_CALR_CALM_Pos) /*!< 0x00000010 */\r
-#define RTC_CALR_CALM_5 (0x020UL << RTC_CALR_CALM_Pos) /*!< 0x00000020 */\r
-#define RTC_CALR_CALM_6 (0x040UL << RTC_CALR_CALM_Pos) /*!< 0x00000040 */\r
-#define RTC_CALR_CALM_7 (0x080UL << RTC_CALR_CALM_Pos) /*!< 0x00000080 */\r
-#define RTC_CALR_CALM_8 (0x100UL << RTC_CALR_CALM_Pos) /*!< 0x00000100 */\r
-\r
-/******************** Bits definition for RTC_TAMPCR register ****************/\r
-#define RTC_TAMPCR_TAMP3MF_Pos (24U) \r
-#define RTC_TAMPCR_TAMP3MF_Msk (0x1UL << RTC_TAMPCR_TAMP3MF_Pos) /*!< 0x01000000 */\r
-#define RTC_TAMPCR_TAMP3MF RTC_TAMPCR_TAMP3MF_Msk \r
-#define RTC_TAMPCR_TAMP3NOERASE_Pos (23U) \r
-#define RTC_TAMPCR_TAMP3NOERASE_Msk (0x1UL << RTC_TAMPCR_TAMP3NOERASE_Pos) /*!< 0x00800000 */\r
-#define RTC_TAMPCR_TAMP3NOERASE RTC_TAMPCR_TAMP3NOERASE_Msk \r
-#define RTC_TAMPCR_TAMP3IE_Pos (22U) \r
-#define RTC_TAMPCR_TAMP3IE_Msk (0x1UL << RTC_TAMPCR_TAMP3IE_Pos) /*!< 0x00400000 */\r
-#define RTC_TAMPCR_TAMP3IE RTC_TAMPCR_TAMP3IE_Msk \r
-#define RTC_TAMPCR_TAMP2MF_Pos (21U) \r
-#define RTC_TAMPCR_TAMP2MF_Msk (0x1UL << RTC_TAMPCR_TAMP2MF_Pos) /*!< 0x00200000 */\r
-#define RTC_TAMPCR_TAMP2MF RTC_TAMPCR_TAMP2MF_Msk \r
-#define RTC_TAMPCR_TAMP2NOERASE_Pos (20U) \r
-#define RTC_TAMPCR_TAMP2NOERASE_Msk (0x1UL << RTC_TAMPCR_TAMP2NOERASE_Pos) /*!< 0x00100000 */\r
-#define RTC_TAMPCR_TAMP2NOERASE RTC_TAMPCR_TAMP2NOERASE_Msk \r
-#define RTC_TAMPCR_TAMP2IE_Pos (19U) \r
-#define RTC_TAMPCR_TAMP2IE_Msk (0x1UL << RTC_TAMPCR_TAMP2IE_Pos) /*!< 0x00080000 */\r
-#define RTC_TAMPCR_TAMP2IE RTC_TAMPCR_TAMP2IE_Msk \r
-#define RTC_TAMPCR_TAMP1MF_Pos (18U) \r
-#define RTC_TAMPCR_TAMP1MF_Msk (0x1UL << RTC_TAMPCR_TAMP1MF_Pos) /*!< 0x00040000 */\r
-#define RTC_TAMPCR_TAMP1MF RTC_TAMPCR_TAMP1MF_Msk \r
-#define RTC_TAMPCR_TAMP1NOERASE_Pos (17U) \r
-#define RTC_TAMPCR_TAMP1NOERASE_Msk (0x1UL << RTC_TAMPCR_TAMP1NOERASE_Pos) /*!< 0x00020000 */\r
-#define RTC_TAMPCR_TAMP1NOERASE RTC_TAMPCR_TAMP1NOERASE_Msk \r
-#define RTC_TAMPCR_TAMP1IE_Pos (16U) \r
-#define RTC_TAMPCR_TAMP1IE_Msk (0x1UL << RTC_TAMPCR_TAMP1IE_Pos) /*!< 0x00010000 */\r
-#define RTC_TAMPCR_TAMP1IE RTC_TAMPCR_TAMP1IE_Msk \r
-#define RTC_TAMPCR_TAMPPUDIS_Pos (15U) \r
-#define RTC_TAMPCR_TAMPPUDIS_Msk (0x1UL << RTC_TAMPCR_TAMPPUDIS_Pos) /*!< 0x00008000 */\r
-#define RTC_TAMPCR_TAMPPUDIS RTC_TAMPCR_TAMPPUDIS_Msk \r
-#define RTC_TAMPCR_TAMPPRCH_Pos (13U) \r
-#define RTC_TAMPCR_TAMPPRCH_Msk (0x3UL << RTC_TAMPCR_TAMPPRCH_Pos) /*!< 0x00006000 */\r
-#define RTC_TAMPCR_TAMPPRCH RTC_TAMPCR_TAMPPRCH_Msk \r
-#define RTC_TAMPCR_TAMPPRCH_0 (0x1UL << RTC_TAMPCR_TAMPPRCH_Pos) /*!< 0x00002000 */\r
-#define RTC_TAMPCR_TAMPPRCH_1 (0x2UL << RTC_TAMPCR_TAMPPRCH_Pos) /*!< 0x00004000 */\r
-#define RTC_TAMPCR_TAMPFLT_Pos (11U) \r
-#define RTC_TAMPCR_TAMPFLT_Msk (0x3UL << RTC_TAMPCR_TAMPFLT_Pos) /*!< 0x00001800 */\r
-#define RTC_TAMPCR_TAMPFLT RTC_TAMPCR_TAMPFLT_Msk \r
-#define RTC_TAMPCR_TAMPFLT_0 (0x1UL << RTC_TAMPCR_TAMPFLT_Pos) /*!< 0x00000800 */\r
-#define RTC_TAMPCR_TAMPFLT_1 (0x2UL << RTC_TAMPCR_TAMPFLT_Pos) /*!< 0x00001000 */\r
-#define RTC_TAMPCR_TAMPFREQ_Pos (8U) \r
-#define RTC_TAMPCR_TAMPFREQ_Msk (0x7UL << RTC_TAMPCR_TAMPFREQ_Pos) /*!< 0x00000700 */\r
-#define RTC_TAMPCR_TAMPFREQ RTC_TAMPCR_TAMPFREQ_Msk \r
-#define RTC_TAMPCR_TAMPFREQ_0 (0x1UL << RTC_TAMPCR_TAMPFREQ_Pos) /*!< 0x00000100 */\r
-#define RTC_TAMPCR_TAMPFREQ_1 (0x2UL << RTC_TAMPCR_TAMPFREQ_Pos) /*!< 0x00000200 */\r
-#define RTC_TAMPCR_TAMPFREQ_2 (0x4UL << RTC_TAMPCR_TAMPFREQ_Pos) /*!< 0x00000400 */\r
-#define RTC_TAMPCR_TAMPTS_Pos (7U) \r
-#define RTC_TAMPCR_TAMPTS_Msk (0x1UL << RTC_TAMPCR_TAMPTS_Pos) /*!< 0x00000080 */\r
-#define RTC_TAMPCR_TAMPTS RTC_TAMPCR_TAMPTS_Msk \r
-#define RTC_TAMPCR_TAMP3TRG_Pos (6U) \r
-#define RTC_TAMPCR_TAMP3TRG_Msk (0x1UL << RTC_TAMPCR_TAMP3TRG_Pos) /*!< 0x00000040 */\r
-#define RTC_TAMPCR_TAMP3TRG RTC_TAMPCR_TAMP3TRG_Msk \r
-#define RTC_TAMPCR_TAMP3E_Pos (5U) \r
-#define RTC_TAMPCR_TAMP3E_Msk (0x1UL << RTC_TAMPCR_TAMP3E_Pos) /*!< 0x00000020 */\r
-#define RTC_TAMPCR_TAMP3E RTC_TAMPCR_TAMP3E_Msk \r
-#define RTC_TAMPCR_TAMP2TRG_Pos (4U) \r
-#define RTC_TAMPCR_TAMP2TRG_Msk (0x1UL << RTC_TAMPCR_TAMP2TRG_Pos) /*!< 0x00000010 */\r
-#define RTC_TAMPCR_TAMP2TRG RTC_TAMPCR_TAMP2TRG_Msk \r
-#define RTC_TAMPCR_TAMP2E_Pos (3U) \r
-#define RTC_TAMPCR_TAMP2E_Msk (0x1UL << RTC_TAMPCR_TAMP2E_Pos) /*!< 0x00000008 */\r
-#define RTC_TAMPCR_TAMP2E RTC_TAMPCR_TAMP2E_Msk \r
-#define RTC_TAMPCR_TAMPIE_Pos (2U) \r
-#define RTC_TAMPCR_TAMPIE_Msk (0x1UL << RTC_TAMPCR_TAMPIE_Pos) /*!< 0x00000004 */\r
-#define RTC_TAMPCR_TAMPIE RTC_TAMPCR_TAMPIE_Msk \r
-#define RTC_TAMPCR_TAMP1TRG_Pos (1U) \r
-#define RTC_TAMPCR_TAMP1TRG_Msk (0x1UL << RTC_TAMPCR_TAMP1TRG_Pos) /*!< 0x00000002 */\r
-#define RTC_TAMPCR_TAMP1TRG RTC_TAMPCR_TAMP1TRG_Msk \r
-#define RTC_TAMPCR_TAMP1E_Pos (0U) \r
-#define RTC_TAMPCR_TAMP1E_Msk (0x1UL << RTC_TAMPCR_TAMP1E_Pos) /*!< 0x00000001 */\r
-#define RTC_TAMPCR_TAMP1E RTC_TAMPCR_TAMP1E_Msk \r
-\r
-\r
-/******************** Bits definition for RTC_ALRMASSR register *************/\r
-#define RTC_ALRMASSR_MASKSS_Pos (24U) \r
-#define RTC_ALRMASSR_MASKSS_Msk (0xFUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x0F000000 */\r
-#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk \r
-#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */\r
-#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */\r
-#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */\r
-#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */\r
-#define RTC_ALRMASSR_SS_Pos (0U) \r
-#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */\r
-#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk \r
-\r
-/******************** Bits definition for RTC_ALRMBSSR register *************/\r
-#define RTC_ALRMBSSR_MASKSS_Pos (24U) \r
-#define RTC_ALRMBSSR_MASKSS_Msk (0xFUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x0F000000 */\r
-#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk \r
-#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */\r
-#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */\r
-#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */\r
-#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */\r
-#define RTC_ALRMBSSR_SS_Pos (0U) \r
-#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */\r
-#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk \r
-\r
-/******************** Bits definition for RTC_OR register ****************/\r
-#define RTC_OR_TSINSEL_Pos (1U) \r
-#define RTC_OR_TSINSEL_Msk (0x3UL << RTC_OR_TSINSEL_Pos) /*!< 0x00000006 */\r
-#define RTC_OR_TSINSEL RTC_OR_TSINSEL_Msk \r
-#define RTC_OR_TSINSEL_0 (0x1UL << RTC_OR_TSINSEL_Pos) /*!< 0x00000002 */\r
-#define RTC_OR_TSINSEL_1 (0x2UL << RTC_OR_TSINSEL_Pos) /*!< 0x00000004 */\r
-#define RTC_OR_ALARMOUTTYPE_Pos (3U) \r
-#define RTC_OR_ALARMOUTTYPE_Msk (0x1UL << RTC_OR_ALARMOUTTYPE_Pos) /*!< 0x00000008 */\r
-#define RTC_OR_ALARMOUTTYPE RTC_OR_ALARMOUTTYPE_Msk\r
-/* Legacy defines*/ \r
-#define RTC_OR_ALARMTYPE RTC_OR_ALARMOUTTYPE\r
-\r
-/******************** Bits definition for RTC_BKP0R register ****************/\r
-#define RTC_BKP0R_Pos (0U) \r
-#define RTC_BKP0R_Msk (0xFFFFFFFFUL << RTC_BKP0R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP0R RTC_BKP0R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP1R register ****************/\r
-#define RTC_BKP1R_Pos (0U) \r
-#define RTC_BKP1R_Msk (0xFFFFFFFFUL << RTC_BKP1R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP1R RTC_BKP1R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP2R register ****************/\r
-#define RTC_BKP2R_Pos (0U) \r
-#define RTC_BKP2R_Msk (0xFFFFFFFFUL << RTC_BKP2R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP2R RTC_BKP2R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP3R register ****************/\r
-#define RTC_BKP3R_Pos (0U) \r
-#define RTC_BKP3R_Msk (0xFFFFFFFFUL << RTC_BKP3R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP3R RTC_BKP3R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP4R register ****************/\r
-#define RTC_BKP4R_Pos (0U) \r
-#define RTC_BKP4R_Msk (0xFFFFFFFFUL << RTC_BKP4R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP4R RTC_BKP4R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP5R register ****************/\r
-#define RTC_BKP5R_Pos (0U) \r
-#define RTC_BKP5R_Msk (0xFFFFFFFFUL << RTC_BKP5R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP5R RTC_BKP5R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP6R register ****************/\r
-#define RTC_BKP6R_Pos (0U) \r
-#define RTC_BKP6R_Msk (0xFFFFFFFFUL << RTC_BKP6R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP6R RTC_BKP6R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP7R register ****************/\r
-#define RTC_BKP7R_Pos (0U) \r
-#define RTC_BKP7R_Msk (0xFFFFFFFFUL << RTC_BKP7R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP7R RTC_BKP7R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP8R register ****************/\r
-#define RTC_BKP8R_Pos (0U) \r
-#define RTC_BKP8R_Msk (0xFFFFFFFFUL << RTC_BKP8R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP8R RTC_BKP8R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP9R register ****************/\r
-#define RTC_BKP9R_Pos (0U) \r
-#define RTC_BKP9R_Msk (0xFFFFFFFFUL << RTC_BKP9R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP9R RTC_BKP9R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP10R register ***************/\r
-#define RTC_BKP10R_Pos (0U) \r
-#define RTC_BKP10R_Msk (0xFFFFFFFFUL << RTC_BKP10R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP10R RTC_BKP10R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP11R register ***************/\r
-#define RTC_BKP11R_Pos (0U) \r
-#define RTC_BKP11R_Msk (0xFFFFFFFFUL << RTC_BKP11R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP11R RTC_BKP11R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP12R register ***************/\r
-#define RTC_BKP12R_Pos (0U) \r
-#define RTC_BKP12R_Msk (0xFFFFFFFFUL << RTC_BKP12R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP12R RTC_BKP12R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP13R register ***************/\r
-#define RTC_BKP13R_Pos (0U) \r
-#define RTC_BKP13R_Msk (0xFFFFFFFFUL << RTC_BKP13R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP13R RTC_BKP13R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP14R register ***************/\r
-#define RTC_BKP14R_Pos (0U) \r
-#define RTC_BKP14R_Msk (0xFFFFFFFFUL << RTC_BKP14R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP14R RTC_BKP14R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP15R register ***************/\r
-#define RTC_BKP15R_Pos (0U) \r
-#define RTC_BKP15R_Msk (0xFFFFFFFFUL << RTC_BKP15R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP15R RTC_BKP15R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP16R register ***************/\r
-#define RTC_BKP16R_Pos (0U) \r
-#define RTC_BKP16R_Msk (0xFFFFFFFFUL << RTC_BKP16R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP16R RTC_BKP16R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP17R register ***************/\r
-#define RTC_BKP17R_Pos (0U) \r
-#define RTC_BKP17R_Msk (0xFFFFFFFFUL << RTC_BKP17R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP17R RTC_BKP17R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP18R register ***************/\r
-#define RTC_BKP18R_Pos (0U) \r
-#define RTC_BKP18R_Msk (0xFFFFFFFFUL << RTC_BKP18R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP18R RTC_BKP18R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP19R register ***************/\r
-#define RTC_BKP19R_Pos (0U) \r
-#define RTC_BKP19R_Msk (0xFFFFFFFFUL << RTC_BKP19R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP19R RTC_BKP19R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP20R register ***************/\r
-#define RTC_BKP20R_Pos (0U) \r
-#define RTC_BKP20R_Msk (0xFFFFFFFFUL << RTC_BKP20R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP20R RTC_BKP20R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP21R register ***************/\r
-#define RTC_BKP21R_Pos (0U) \r
-#define RTC_BKP21R_Msk (0xFFFFFFFFUL << RTC_BKP21R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP21R RTC_BKP21R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP22R register ***************/\r
-#define RTC_BKP22R_Pos (0U) \r
-#define RTC_BKP22R_Msk (0xFFFFFFFFUL << RTC_BKP22R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP22R RTC_BKP22R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP23R register ***************/\r
-#define RTC_BKP23R_Pos (0U) \r
-#define RTC_BKP23R_Msk (0xFFFFFFFFUL << RTC_BKP23R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP23R RTC_BKP23R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP24R register ***************/\r
-#define RTC_BKP24R_Pos (0U) \r
-#define RTC_BKP24R_Msk (0xFFFFFFFFUL << RTC_BKP24R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP24R RTC_BKP24R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP25R register ***************/\r
-#define RTC_BKP25R_Pos (0U) \r
-#define RTC_BKP25R_Msk (0xFFFFFFFFUL << RTC_BKP25R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP25R RTC_BKP25R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP26R register ***************/\r
-#define RTC_BKP26R_Pos (0U) \r
-#define RTC_BKP26R_Msk (0xFFFFFFFFUL << RTC_BKP26R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP26R RTC_BKP26R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP27R register ***************/\r
-#define RTC_BKP27R_Pos (0U) \r
-#define RTC_BKP27R_Msk (0xFFFFFFFFUL << RTC_BKP27R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP27R RTC_BKP27R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP28R register ***************/\r
-#define RTC_BKP28R_Pos (0U) \r
-#define RTC_BKP28R_Msk (0xFFFFFFFFUL << RTC_BKP28R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP28R RTC_BKP28R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP29R register ***************/\r
-#define RTC_BKP29R_Pos (0U) \r
-#define RTC_BKP29R_Msk (0xFFFFFFFFUL << RTC_BKP29R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP29R RTC_BKP29R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP30R register ***************/\r
-#define RTC_BKP30R_Pos (0U) \r
-#define RTC_BKP30R_Msk (0xFFFFFFFFUL << RTC_BKP30R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP30R RTC_BKP30R_Msk \r
-\r
-/******************** Bits definition for RTC_BKP31R register ***************/\r
-#define RTC_BKP31R_Pos (0U) \r
-#define RTC_BKP31R_Msk (0xFFFFFFFFUL << RTC_BKP31R_Pos) /*!< 0xFFFFFFFF */\r
-#define RTC_BKP31R RTC_BKP31R_Msk \r
-\r
-/******************** Number of backup registers ******************************/\r
-#define RTC_BKP_NUMBER 0x00000020U\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Serial Audio Interface */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for SAI_GCR register *******************/\r
-#define SAI_GCR_SYNCIN_Pos (0U) \r
-#define SAI_GCR_SYNCIN_Msk (0x3UL << SAI_GCR_SYNCIN_Pos) /*!< 0x00000003 */\r
-#define SAI_GCR_SYNCIN SAI_GCR_SYNCIN_Msk /*!<SYNCIN[1:0] bits (Synchronization Inputs) */\r
-#define SAI_GCR_SYNCIN_0 (0x1UL << SAI_GCR_SYNCIN_Pos) /*!< 0x00000001 */\r
-#define SAI_GCR_SYNCIN_1 (0x2UL << SAI_GCR_SYNCIN_Pos) /*!< 0x00000002 */\r
-\r
-#define SAI_GCR_SYNCOUT_Pos (4U) \r
-#define SAI_GCR_SYNCOUT_Msk (0x3UL << SAI_GCR_SYNCOUT_Pos) /*!< 0x00000030 */\r
-#define SAI_GCR_SYNCOUT SAI_GCR_SYNCOUT_Msk /*!<SYNCOUT[1:0] bits (Synchronization Outputs) */\r
-#define SAI_GCR_SYNCOUT_0 (0x1UL << SAI_GCR_SYNCOUT_Pos) /*!< 0x00000010 */\r
-#define SAI_GCR_SYNCOUT_1 (0x2UL << SAI_GCR_SYNCOUT_Pos) /*!< 0x00000020 */\r
-\r
-/******************* Bit definition for SAI_xCR1 register *******************/\r
-#define SAI_xCR1_MODE_Pos (0U) \r
-#define SAI_xCR1_MODE_Msk (0x3UL << SAI_xCR1_MODE_Pos) /*!< 0x00000003 */\r
-#define SAI_xCR1_MODE SAI_xCR1_MODE_Msk /*!<MODE[1:0] bits (Audio Block Mode) */\r
-#define SAI_xCR1_MODE_0 (0x1UL << SAI_xCR1_MODE_Pos) /*!< 0x00000001 */\r
-#define SAI_xCR1_MODE_1 (0x2UL << SAI_xCR1_MODE_Pos) /*!< 0x00000002 */\r
-\r
-#define SAI_xCR1_PRTCFG_Pos (2U) \r
-#define SAI_xCR1_PRTCFG_Msk (0x3UL << SAI_xCR1_PRTCFG_Pos) /*!< 0x0000000C */\r
-#define SAI_xCR1_PRTCFG SAI_xCR1_PRTCFG_Msk /*!<PRTCFG[1:0] bits (Protocol Configuration) */\r
-#define SAI_xCR1_PRTCFG_0 (0x1UL << SAI_xCR1_PRTCFG_Pos) /*!< 0x00000004 */\r
-#define SAI_xCR1_PRTCFG_1 (0x2UL << SAI_xCR1_PRTCFG_Pos) /*!< 0x00000008 */\r
-\r
-#define SAI_xCR1_DS_Pos (5U) \r
-#define SAI_xCR1_DS_Msk (0x7UL << SAI_xCR1_DS_Pos) /*!< 0x000000E0 */\r
-#define SAI_xCR1_DS SAI_xCR1_DS_Msk /*!<DS[1:0] bits (Data Size) */\r
-#define SAI_xCR1_DS_0 (0x1UL << SAI_xCR1_DS_Pos) /*!< 0x00000020 */\r
-#define SAI_xCR1_DS_1 (0x2UL << SAI_xCR1_DS_Pos) /*!< 0x00000040 */\r
-#define SAI_xCR1_DS_2 (0x4UL << SAI_xCR1_DS_Pos) /*!< 0x00000080 */\r
-\r
-#define SAI_xCR1_LSBFIRST_Pos (8U) \r
-#define SAI_xCR1_LSBFIRST_Msk (0x1UL << SAI_xCR1_LSBFIRST_Pos) /*!< 0x00000100 */\r
-#define SAI_xCR1_LSBFIRST SAI_xCR1_LSBFIRST_Msk /*!<LSB First Configuration */\r
-#define SAI_xCR1_CKSTR_Pos (9U) \r
-#define SAI_xCR1_CKSTR_Msk (0x1UL << SAI_xCR1_CKSTR_Pos) /*!< 0x00000200 */\r
-#define SAI_xCR1_CKSTR SAI_xCR1_CKSTR_Msk /*!<ClocK STRobing edge */\r
-\r
-#define SAI_xCR1_SYNCEN_Pos (10U) \r
-#define SAI_xCR1_SYNCEN_Msk (0x3UL << SAI_xCR1_SYNCEN_Pos) /*!< 0x00000C00 */\r
-#define SAI_xCR1_SYNCEN SAI_xCR1_SYNCEN_Msk /*!<SYNCEN[1:0](SYNChronization ENable) */\r
-#define SAI_xCR1_SYNCEN_0 (0x1UL << SAI_xCR1_SYNCEN_Pos) /*!< 0x00000400 */\r
-#define SAI_xCR1_SYNCEN_1 (0x2UL << SAI_xCR1_SYNCEN_Pos) /*!< 0x00000800 */\r
-\r
-#define SAI_xCR1_MONO_Pos (12U) \r
-#define SAI_xCR1_MONO_Msk (0x1UL << SAI_xCR1_MONO_Pos) /*!< 0x00001000 */\r
-#define SAI_xCR1_MONO SAI_xCR1_MONO_Msk /*!<Mono mode */\r
-#define SAI_xCR1_OUTDRIV_Pos (13U) \r
-#define SAI_xCR1_OUTDRIV_Msk (0x1UL << SAI_xCR1_OUTDRIV_Pos) /*!< 0x00002000 */\r
-#define SAI_xCR1_OUTDRIV SAI_xCR1_OUTDRIV_Msk /*!<Output Drive */\r
-#define SAI_xCR1_SAIEN_Pos (16U) \r
-#define SAI_xCR1_SAIEN_Msk (0x1UL << SAI_xCR1_SAIEN_Pos) /*!< 0x00010000 */\r
-#define SAI_xCR1_SAIEN SAI_xCR1_SAIEN_Msk /*!<Audio Block enable */\r
-#define SAI_xCR1_DMAEN_Pos (17U) \r
-#define SAI_xCR1_DMAEN_Msk (0x1UL << SAI_xCR1_DMAEN_Pos) /*!< 0x00020000 */\r
-#define SAI_xCR1_DMAEN SAI_xCR1_DMAEN_Msk /*!<DMA enable */\r
-#define SAI_xCR1_NODIV_Pos (19U) \r
-#define SAI_xCR1_NODIV_Msk (0x1UL << SAI_xCR1_NODIV_Pos) /*!< 0x00080000 */\r
-#define SAI_xCR1_NODIV SAI_xCR1_NODIV_Msk /*!<No Divider Configuration */\r
-\r
-#define SAI_xCR1_MCKDIV_Pos (20U) \r
-#define SAI_xCR1_MCKDIV_Msk (0xFUL << SAI_xCR1_MCKDIV_Pos) /*!< 0x00F00000 */\r
-#define SAI_xCR1_MCKDIV SAI_xCR1_MCKDIV_Msk /*!<MCKDIV[3:0] (Master ClocK Divider) */\r
-#define SAI_xCR1_MCKDIV_0 (0x1UL << SAI_xCR1_MCKDIV_Pos) /*!< 0x00100000 */\r
-#define SAI_xCR1_MCKDIV_1 (0x2UL << SAI_xCR1_MCKDIV_Pos) /*!< 0x00200000 */\r
-#define SAI_xCR1_MCKDIV_2 (0x4UL << SAI_xCR1_MCKDIV_Pos) /*!< 0x00400000 */\r
-#define SAI_xCR1_MCKDIV_3 (0x8UL << SAI_xCR1_MCKDIV_Pos) /*!< 0x00800000 */\r
-\r
-/******************* Bit definition for SAI_xCR2 register *******************/\r
-#define SAI_xCR2_FTH_Pos (0U) \r
-#define SAI_xCR2_FTH_Msk (0x7UL << SAI_xCR2_FTH_Pos) /*!< 0x00000007 */\r
-#define SAI_xCR2_FTH SAI_xCR2_FTH_Msk /*!<FTH[2:0](Fifo THreshold) */\r
-#define SAI_xCR2_FTH_0 (0x1UL << SAI_xCR2_FTH_Pos) /*!< 0x00000001 */\r
-#define SAI_xCR2_FTH_1 (0x2UL << SAI_xCR2_FTH_Pos) /*!< 0x00000002 */\r
-#define SAI_xCR2_FTH_2 (0x4UL << SAI_xCR2_FTH_Pos) /*!< 0x00000004 */\r
-\r
-#define SAI_xCR2_FFLUSH_Pos (3U) \r
-#define SAI_xCR2_FFLUSH_Msk (0x1UL << SAI_xCR2_FFLUSH_Pos) /*!< 0x00000008 */\r
-#define SAI_xCR2_FFLUSH SAI_xCR2_FFLUSH_Msk /*!<Fifo FLUSH */\r
-#define SAI_xCR2_TRIS_Pos (4U) \r
-#define SAI_xCR2_TRIS_Msk (0x1UL << SAI_xCR2_TRIS_Pos) /*!< 0x00000010 */\r
-#define SAI_xCR2_TRIS SAI_xCR2_TRIS_Msk /*!<TRIState Management on data line */\r
-#define SAI_xCR2_MUTE_Pos (5U) \r
-#define SAI_xCR2_MUTE_Msk (0x1UL << SAI_xCR2_MUTE_Pos) /*!< 0x00000020 */\r
-#define SAI_xCR2_MUTE SAI_xCR2_MUTE_Msk /*!<Mute mode */\r
-#define SAI_xCR2_MUTEVAL_Pos (6U) \r
-#define SAI_xCR2_MUTEVAL_Msk (0x1UL << SAI_xCR2_MUTEVAL_Pos) /*!< 0x00000040 */\r
-#define SAI_xCR2_MUTEVAL SAI_xCR2_MUTEVAL_Msk /*!<Muate value */\r
-\r
-#define SAI_xCR2_MUTECNT_Pos (7U) \r
-#define SAI_xCR2_MUTECNT_Msk (0x3FUL << SAI_xCR2_MUTECNT_Pos) /*!< 0x00001F80 */\r
-#define SAI_xCR2_MUTECNT SAI_xCR2_MUTECNT_Msk /*!<MUTECNT[5:0] (MUTE counter) */\r
-#define SAI_xCR2_MUTECNT_0 (0x01UL << SAI_xCR2_MUTECNT_Pos) /*!< 0x00000080 */\r
-#define SAI_xCR2_MUTECNT_1 (0x02UL << SAI_xCR2_MUTECNT_Pos) /*!< 0x00000100 */\r
-#define SAI_xCR2_MUTECNT_2 (0x04UL << SAI_xCR2_MUTECNT_Pos) /*!< 0x00000200 */\r
-#define SAI_xCR2_MUTECNT_3 (0x08UL << SAI_xCR2_MUTECNT_Pos) /*!< 0x00000400 */\r
-#define SAI_xCR2_MUTECNT_4 (0x10UL << SAI_xCR2_MUTECNT_Pos) /*!< 0x00000800 */\r
-#define SAI_xCR2_MUTECNT_5 (0x20UL << SAI_xCR2_MUTECNT_Pos) /*!< 0x00001000 */\r
-\r
-#define SAI_xCR2_CPL_Pos (13U) \r
-#define SAI_xCR2_CPL_Msk (0x1UL << SAI_xCR2_CPL_Pos) /*!< 0x00002000 */\r
-#define SAI_xCR2_CPL SAI_xCR2_CPL_Msk /*!< Complement Bit */\r
-\r
-#define SAI_xCR2_COMP_Pos (14U) \r
-#define SAI_xCR2_COMP_Msk (0x3UL << SAI_xCR2_COMP_Pos) /*!< 0x0000C000 */\r
-#define SAI_xCR2_COMP SAI_xCR2_COMP_Msk /*!<COMP[1:0] (Companding mode) */\r
-#define SAI_xCR2_COMP_0 (0x1UL << SAI_xCR2_COMP_Pos) /*!< 0x00004000 */\r
-#define SAI_xCR2_COMP_1 (0x2UL << SAI_xCR2_COMP_Pos) /*!< 0x00008000 */\r
-\r
-/****************** Bit definition for SAI_xFRCR register *******************/\r
-#define SAI_xFRCR_FRL_Pos (0U) \r
-#define SAI_xFRCR_FRL_Msk (0xFFUL << SAI_xFRCR_FRL_Pos) /*!< 0x000000FF */\r
-#define SAI_xFRCR_FRL SAI_xFRCR_FRL_Msk /*!<FRL[7:0](Frame length) */\r
-#define SAI_xFRCR_FRL_0 (0x01UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000001 */\r
-#define SAI_xFRCR_FRL_1 (0x02UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000002 */\r
-#define SAI_xFRCR_FRL_2 (0x04UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000004 */\r
-#define SAI_xFRCR_FRL_3 (0x08UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000008 */\r
-#define SAI_xFRCR_FRL_4 (0x10UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000010 */\r
-#define SAI_xFRCR_FRL_5 (0x20UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000020 */\r
-#define SAI_xFRCR_FRL_6 (0x40UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000040 */\r
-#define SAI_xFRCR_FRL_7 (0x80UL << SAI_xFRCR_FRL_Pos) /*!< 0x00000080 */\r
-\r
-#define SAI_xFRCR_FSALL_Pos (8U) \r
-#define SAI_xFRCR_FSALL_Msk (0x7FUL << SAI_xFRCR_FSALL_Pos) /*!< 0x00007F00 */\r
-#define SAI_xFRCR_FSALL SAI_xFRCR_FSALL_Msk /*!<FRL[6:0] (Frame synchronization active level length) */\r
-#define SAI_xFRCR_FSALL_0 (0x01UL << SAI_xFRCR_FSALL_Pos) /*!< 0x00000100 */\r
-#define SAI_xFRCR_FSALL_1 (0x02UL << SAI_xFRCR_FSALL_Pos) /*!< 0x00000200 */\r
-#define SAI_xFRCR_FSALL_2 (0x04UL << SAI_xFRCR_FSALL_Pos) /*!< 0x00000400 */\r
-#define SAI_xFRCR_FSALL_3 (0x08UL << SAI_xFRCR_FSALL_Pos) /*!< 0x00000800 */\r
-#define SAI_xFRCR_FSALL_4 (0x10UL << SAI_xFRCR_FSALL_Pos) /*!< 0x00001000 */\r
-#define SAI_xFRCR_FSALL_5 (0x20UL << SAI_xFRCR_FSALL_Pos) /*!< 0x00002000 */\r
-#define SAI_xFRCR_FSALL_6 (0x40UL << SAI_xFRCR_FSALL_Pos) /*!< 0x00004000 */\r
-\r
-#define SAI_xFRCR_FSDEF_Pos (16U) \r
-#define SAI_xFRCR_FSDEF_Msk (0x1UL << SAI_xFRCR_FSDEF_Pos) /*!< 0x00010000 */\r
-#define SAI_xFRCR_FSDEF SAI_xFRCR_FSDEF_Msk /*!<Frame Synchronization Definition */\r
-#define SAI_xFRCR_FSPOL_Pos (17U) \r
-#define SAI_xFRCR_FSPOL_Msk (0x1UL << SAI_xFRCR_FSPOL_Pos) /*!< 0x00020000 */\r
-#define SAI_xFRCR_FSPOL SAI_xFRCR_FSPOL_Msk /*!<Frame Synchronization POLarity */\r
-#define SAI_xFRCR_FSOFF_Pos (18U) \r
-#define SAI_xFRCR_FSOFF_Msk (0x1UL << SAI_xFRCR_FSOFF_Pos) /*!< 0x00040000 */\r
-#define SAI_xFRCR_FSOFF SAI_xFRCR_FSOFF_Msk /*!<Frame Synchronization OFFset */\r
-\r
-/* Legacy define */\r
-#define SAI_xFRCR_FSPO SAI_xFRCR_FSPOL\r
-\r
-/****************** Bit definition for SAI_xSLOTR register *******************/\r
-#define SAI_xSLOTR_FBOFF_Pos (0U) \r
-#define SAI_xSLOTR_FBOFF_Msk (0x1FUL << SAI_xSLOTR_FBOFF_Pos) /*!< 0x0000001F */\r
-#define SAI_xSLOTR_FBOFF SAI_xSLOTR_FBOFF_Msk /*!<FRL[4:0](First Bit Offset) */\r
-#define SAI_xSLOTR_FBOFF_0 (0x01UL << SAI_xSLOTR_FBOFF_Pos) /*!< 0x00000001 */\r
-#define SAI_xSLOTR_FBOFF_1 (0x02UL << SAI_xSLOTR_FBOFF_Pos) /*!< 0x00000002 */\r
-#define SAI_xSLOTR_FBOFF_2 (0x04UL << SAI_xSLOTR_FBOFF_Pos) /*!< 0x00000004 */\r
-#define SAI_xSLOTR_FBOFF_3 (0x08UL << SAI_xSLOTR_FBOFF_Pos) /*!< 0x00000008 */\r
-#define SAI_xSLOTR_FBOFF_4 (0x10UL << SAI_xSLOTR_FBOFF_Pos) /*!< 0x00000010 */\r
-\r
-#define SAI_xSLOTR_SLOTSZ_Pos (6U) \r
-#define SAI_xSLOTR_SLOTSZ_Msk (0x3UL << SAI_xSLOTR_SLOTSZ_Pos) /*!< 0x000000C0 */\r
-#define SAI_xSLOTR_SLOTSZ SAI_xSLOTR_SLOTSZ_Msk /*!<SLOTSZ[1:0] (Slot size) */\r
-#define SAI_xSLOTR_SLOTSZ_0 (0x1UL << SAI_xSLOTR_SLOTSZ_Pos) /*!< 0x00000040 */\r
-#define SAI_xSLOTR_SLOTSZ_1 (0x2UL << SAI_xSLOTR_SLOTSZ_Pos) /*!< 0x00000080 */\r
-\r
-#define SAI_xSLOTR_NBSLOT_Pos (8U) \r
-#define SAI_xSLOTR_NBSLOT_Msk (0xFUL << SAI_xSLOTR_NBSLOT_Pos) /*!< 0x00000F00 */\r
-#define SAI_xSLOTR_NBSLOT SAI_xSLOTR_NBSLOT_Msk /*!<NBSLOT[3:0] (Number of Slot in audio Frame) */\r
-#define SAI_xSLOTR_NBSLOT_0 (0x1UL << SAI_xSLOTR_NBSLOT_Pos) /*!< 0x00000100 */\r
-#define SAI_xSLOTR_NBSLOT_1 (0x2UL << SAI_xSLOTR_NBSLOT_Pos) /*!< 0x00000200 */\r
-#define SAI_xSLOTR_NBSLOT_2 (0x4UL << SAI_xSLOTR_NBSLOT_Pos) /*!< 0x00000400 */\r
-#define SAI_xSLOTR_NBSLOT_3 (0x8UL << SAI_xSLOTR_NBSLOT_Pos) /*!< 0x00000800 */\r
-\r
-#define SAI_xSLOTR_SLOTEN_Pos (16U) \r
-#define SAI_xSLOTR_SLOTEN_Msk (0xFFFFUL << SAI_xSLOTR_SLOTEN_Pos) /*!< 0xFFFF0000 */\r
-#define SAI_xSLOTR_SLOTEN SAI_xSLOTR_SLOTEN_Msk /*!<SLOTEN[15:0] (Slot Enable) */\r
-\r
-/******************* Bit definition for SAI_xIMR register *******************/\r
-#define SAI_xIMR_OVRUDRIE_Pos (0U) \r
-#define SAI_xIMR_OVRUDRIE_Msk (0x1UL << SAI_xIMR_OVRUDRIE_Pos) /*!< 0x00000001 */\r
-#define SAI_xIMR_OVRUDRIE SAI_xIMR_OVRUDRIE_Msk /*!<Overrun underrun interrupt enable */\r
-#define SAI_xIMR_MUTEDETIE_Pos (1U) \r
-#define SAI_xIMR_MUTEDETIE_Msk (0x1UL << SAI_xIMR_MUTEDETIE_Pos) /*!< 0x00000002 */\r
-#define SAI_xIMR_MUTEDETIE SAI_xIMR_MUTEDETIE_Msk /*!<Mute detection interrupt enable */\r
-#define SAI_xIMR_WCKCFGIE_Pos (2U) \r
-#define SAI_xIMR_WCKCFGIE_Msk (0x1UL << SAI_xIMR_WCKCFGIE_Pos) /*!< 0x00000004 */\r
-#define SAI_xIMR_WCKCFGIE SAI_xIMR_WCKCFGIE_Msk /*!<Wrong Clock Configuration interrupt enable */\r
-#define SAI_xIMR_FREQIE_Pos (3U) \r
-#define SAI_xIMR_FREQIE_Msk (0x1UL << SAI_xIMR_FREQIE_Pos) /*!< 0x00000008 */\r
-#define SAI_xIMR_FREQIE SAI_xIMR_FREQIE_Msk /*!<FIFO request interrupt enable */\r
-#define SAI_xIMR_CNRDYIE_Pos (4U) \r
-#define SAI_xIMR_CNRDYIE_Msk (0x1UL << SAI_xIMR_CNRDYIE_Pos) /*!< 0x00000010 */\r
-#define SAI_xIMR_CNRDYIE SAI_xIMR_CNRDYIE_Msk /*!<Codec not ready interrupt enable */\r
-#define SAI_xIMR_AFSDETIE_Pos (5U) \r
-#define SAI_xIMR_AFSDETIE_Msk (0x1UL << SAI_xIMR_AFSDETIE_Pos) /*!< 0x00000020 */\r
-#define SAI_xIMR_AFSDETIE SAI_xIMR_AFSDETIE_Msk /*!<Anticipated frame synchronization detection interrupt enable */\r
-#define SAI_xIMR_LFSDETIE_Pos (6U) \r
-#define SAI_xIMR_LFSDETIE_Msk (0x1UL << SAI_xIMR_LFSDETIE_Pos) /*!< 0x00000040 */\r
-#define SAI_xIMR_LFSDETIE SAI_xIMR_LFSDETIE_Msk /*!<Late frame synchronization detection interrupt enable */\r
-\r
-/******************** Bit definition for SAI_xSR register *******************/\r
-#define SAI_xSR_OVRUDR_Pos (0U) \r
-#define SAI_xSR_OVRUDR_Msk (0x1UL << SAI_xSR_OVRUDR_Pos) /*!< 0x00000001 */\r
-#define SAI_xSR_OVRUDR SAI_xSR_OVRUDR_Msk /*!<Overrun underrun */\r
-#define SAI_xSR_MUTEDET_Pos (1U) \r
-#define SAI_xSR_MUTEDET_Msk (0x1UL << SAI_xSR_MUTEDET_Pos) /*!< 0x00000002 */\r
-#define SAI_xSR_MUTEDET SAI_xSR_MUTEDET_Msk /*!<Mute detection */\r
-#define SAI_xSR_WCKCFG_Pos (2U) \r
-#define SAI_xSR_WCKCFG_Msk (0x1UL << SAI_xSR_WCKCFG_Pos) /*!< 0x00000004 */\r
-#define SAI_xSR_WCKCFG SAI_xSR_WCKCFG_Msk /*!<Wrong Clock Configuration */\r
-#define SAI_xSR_FREQ_Pos (3U) \r
-#define SAI_xSR_FREQ_Msk (0x1UL << SAI_xSR_FREQ_Pos) /*!< 0x00000008 */\r
-#define SAI_xSR_FREQ SAI_xSR_FREQ_Msk /*!<FIFO request */\r
-#define SAI_xSR_CNRDY_Pos (4U) \r
-#define SAI_xSR_CNRDY_Msk (0x1UL << SAI_xSR_CNRDY_Pos) /*!< 0x00000010 */\r
-#define SAI_xSR_CNRDY SAI_xSR_CNRDY_Msk /*!<Codec not ready */\r
-#define SAI_xSR_AFSDET_Pos (5U) \r
-#define SAI_xSR_AFSDET_Msk (0x1UL << SAI_xSR_AFSDET_Pos) /*!< 0x00000020 */\r
-#define SAI_xSR_AFSDET SAI_xSR_AFSDET_Msk /*!<Anticipated frame synchronization detection */\r
-#define SAI_xSR_LFSDET_Pos (6U) \r
-#define SAI_xSR_LFSDET_Msk (0x1UL << SAI_xSR_LFSDET_Pos) /*!< 0x00000040 */\r
-#define SAI_xSR_LFSDET SAI_xSR_LFSDET_Msk /*!<Late frame synchronization detection */\r
-\r
-#define SAI_xSR_FLVL_Pos (16U) \r
-#define SAI_xSR_FLVL_Msk (0x7UL << SAI_xSR_FLVL_Pos) /*!< 0x00070000 */\r
-#define SAI_xSR_FLVL SAI_xSR_FLVL_Msk /*!<FLVL[2:0] (FIFO Level Threshold) */\r
-#define SAI_xSR_FLVL_0 (0x1UL << SAI_xSR_FLVL_Pos) /*!< 0x00010000 */\r
-#define SAI_xSR_FLVL_1 (0x2UL << SAI_xSR_FLVL_Pos) /*!< 0x00020000 */\r
-#define SAI_xSR_FLVL_2 (0x4UL << SAI_xSR_FLVL_Pos) /*!< 0x00040000 */\r
-\r
-/****************** Bit definition for SAI_xCLRFR register ******************/\r
-#define SAI_xCLRFR_COVRUDR_Pos (0U) \r
-#define SAI_xCLRFR_COVRUDR_Msk (0x1UL << SAI_xCLRFR_COVRUDR_Pos) /*!< 0x00000001 */\r
-#define SAI_xCLRFR_COVRUDR SAI_xCLRFR_COVRUDR_Msk /*!<Clear Overrun underrun */\r
-#define SAI_xCLRFR_CMUTEDET_Pos (1U) \r
-#define SAI_xCLRFR_CMUTEDET_Msk (0x1UL << SAI_xCLRFR_CMUTEDET_Pos) /*!< 0x00000002 */\r
-#define SAI_xCLRFR_CMUTEDET SAI_xCLRFR_CMUTEDET_Msk /*!<Clear Mute detection */\r
-#define SAI_xCLRFR_CWCKCFG_Pos (2U) \r
-#define SAI_xCLRFR_CWCKCFG_Msk (0x1UL << SAI_xCLRFR_CWCKCFG_Pos) /*!< 0x00000004 */\r
-#define SAI_xCLRFR_CWCKCFG SAI_xCLRFR_CWCKCFG_Msk /*!<Clear Wrong Clock Configuration */\r
-#define SAI_xCLRFR_CFREQ_Pos (3U) \r
-#define SAI_xCLRFR_CFREQ_Msk (0x1UL << SAI_xCLRFR_CFREQ_Pos) /*!< 0x00000008 */\r
-#define SAI_xCLRFR_CFREQ SAI_xCLRFR_CFREQ_Msk /*!<Clear FIFO request */\r
-#define SAI_xCLRFR_CCNRDY_Pos (4U) \r
-#define SAI_xCLRFR_CCNRDY_Msk (0x1UL << SAI_xCLRFR_CCNRDY_Pos) /*!< 0x00000010 */\r
-#define SAI_xCLRFR_CCNRDY SAI_xCLRFR_CCNRDY_Msk /*!<Clear Codec not ready */\r
-#define SAI_xCLRFR_CAFSDET_Pos (5U) \r
-#define SAI_xCLRFR_CAFSDET_Msk (0x1UL << SAI_xCLRFR_CAFSDET_Pos) /*!< 0x00000020 */\r
-#define SAI_xCLRFR_CAFSDET SAI_xCLRFR_CAFSDET_Msk /*!<Clear Anticipated frame synchronization detection */\r
-#define SAI_xCLRFR_CLFSDET_Pos (6U) \r
-#define SAI_xCLRFR_CLFSDET_Msk (0x1UL << SAI_xCLRFR_CLFSDET_Pos) /*!< 0x00000040 */\r
-#define SAI_xCLRFR_CLFSDET SAI_xCLRFR_CLFSDET_Msk /*!<Clear Late frame synchronization detection */\r
-\r
-/****************** Bit definition for SAI_xDR register *********************/\r
-#define SAI_xDR_DATA_Pos (0U) \r
-#define SAI_xDR_DATA_Msk (0xFFFFFFFFUL << SAI_xDR_DATA_Pos) /*!< 0xFFFFFFFF */\r
-#define SAI_xDR_DATA SAI_xDR_DATA_Msk \r
-\r
-/******************************************************************************/\r
-/* */\r
-/* SPDIF-RX Interface */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for SPDIF_CR register *******************/\r
-#define SPDIFRX_CR_SPDIFEN_Pos (0U) \r
-#define SPDIFRX_CR_SPDIFEN_Msk (0x3UL << SPDIFRX_CR_SPDIFEN_Pos) /*!< 0x00000003 */\r
-#define SPDIFRX_CR_SPDIFEN SPDIFRX_CR_SPDIFEN_Msk /*!<Peripheral Block Enable */\r
-#define SPDIFRX_CR_RXDMAEN_Pos (2U) \r
-#define SPDIFRX_CR_RXDMAEN_Msk (0x1UL << SPDIFRX_CR_RXDMAEN_Pos) /*!< 0x00000004 */\r
-#define SPDIFRX_CR_RXDMAEN SPDIFRX_CR_RXDMAEN_Msk /*!<Receiver DMA Enable for data flow */\r
-#define SPDIFRX_CR_RXSTEO_Pos (3U) \r
-#define SPDIFRX_CR_RXSTEO_Msk (0x1UL << SPDIFRX_CR_RXSTEO_Pos) /*!< 0x00000008 */\r
-#define SPDIFRX_CR_RXSTEO SPDIFRX_CR_RXSTEO_Msk /*!<Stereo Mode */\r
-#define SPDIFRX_CR_DRFMT_Pos (4U) \r
-#define SPDIFRX_CR_DRFMT_Msk (0x3UL << SPDIFRX_CR_DRFMT_Pos) /*!< 0x00000030 */\r
-#define SPDIFRX_CR_DRFMT SPDIFRX_CR_DRFMT_Msk /*!<RX Data format */\r
-#define SPDIFRX_CR_PMSK_Pos (6U) \r
-#define SPDIFRX_CR_PMSK_Msk (0x1UL << SPDIFRX_CR_PMSK_Pos) /*!< 0x00000040 */\r
-#define SPDIFRX_CR_PMSK SPDIFRX_CR_PMSK_Msk /*!<Mask Parity error bit */\r
-#define SPDIFRX_CR_VMSK_Pos (7U) \r
-#define SPDIFRX_CR_VMSK_Msk (0x1UL << SPDIFRX_CR_VMSK_Pos) /*!< 0x00000080 */\r
-#define SPDIFRX_CR_VMSK SPDIFRX_CR_VMSK_Msk /*!<Mask of Validity bit */\r
-#define SPDIFRX_CR_CUMSK_Pos (8U) \r
-#define SPDIFRX_CR_CUMSK_Msk (0x1UL << SPDIFRX_CR_CUMSK_Pos) /*!< 0x00000100 */\r
-#define SPDIFRX_CR_CUMSK SPDIFRX_CR_CUMSK_Msk /*!<Mask of channel status and user bits */\r
-#define SPDIFRX_CR_PTMSK_Pos (9U) \r
-#define SPDIFRX_CR_PTMSK_Msk (0x1UL << SPDIFRX_CR_PTMSK_Pos) /*!< 0x00000200 */\r
-#define SPDIFRX_CR_PTMSK SPDIFRX_CR_PTMSK_Msk /*!<Mask of Preamble Type bits */\r
-#define SPDIFRX_CR_CBDMAEN_Pos (10U) \r
-#define SPDIFRX_CR_CBDMAEN_Msk (0x1UL << SPDIFRX_CR_CBDMAEN_Pos) /*!< 0x00000400 */\r
-#define SPDIFRX_CR_CBDMAEN SPDIFRX_CR_CBDMAEN_Msk /*!<Control Buffer DMA ENable for control flow */\r
-#define SPDIFRX_CR_CHSEL_Pos (11U) \r
-#define SPDIFRX_CR_CHSEL_Msk (0x1UL << SPDIFRX_CR_CHSEL_Pos) /*!< 0x00000800 */\r
-#define SPDIFRX_CR_CHSEL SPDIFRX_CR_CHSEL_Msk /*!<Channel Selection */\r
-#define SPDIFRX_CR_NBTR_Pos (12U) \r
-#define SPDIFRX_CR_NBTR_Msk (0x3UL << SPDIFRX_CR_NBTR_Pos) /*!< 0x00003000 */\r
-#define SPDIFRX_CR_NBTR SPDIFRX_CR_NBTR_Msk /*!<Maximum allowed re-tries during synchronization phase */\r
-#define SPDIFRX_CR_WFA_Pos (14U) \r
-#define SPDIFRX_CR_WFA_Msk (0x1UL << SPDIFRX_CR_WFA_Pos) /*!< 0x00004000 */\r
-#define SPDIFRX_CR_WFA SPDIFRX_CR_WFA_Msk /*!<Wait For Activity */\r
-#define SPDIFRX_CR_INSEL_Pos (16U) \r
-#define SPDIFRX_CR_INSEL_Msk (0x7UL << SPDIFRX_CR_INSEL_Pos) /*!< 0x00070000 */\r
-#define SPDIFRX_CR_INSEL SPDIFRX_CR_INSEL_Msk /*!<SPDIF input selection */\r
-\r
-/******************* Bit definition for SPDIFRX_IMR register *******************/\r
-#define SPDIFRX_IMR_RXNEIE_Pos (0U) \r
-#define SPDIFRX_IMR_RXNEIE_Msk (0x1UL << SPDIFRX_IMR_RXNEIE_Pos) /*!< 0x00000001 */\r
-#define SPDIFRX_IMR_RXNEIE SPDIFRX_IMR_RXNEIE_Msk /*!<RXNE interrupt enable */\r
-#define SPDIFRX_IMR_CSRNEIE_Pos (1U) \r
-#define SPDIFRX_IMR_CSRNEIE_Msk (0x1UL << SPDIFRX_IMR_CSRNEIE_Pos) /*!< 0x00000002 */\r
-#define SPDIFRX_IMR_CSRNEIE SPDIFRX_IMR_CSRNEIE_Msk /*!<Control Buffer Ready Interrupt Enable */\r
-#define SPDIFRX_IMR_PERRIE_Pos (2U) \r
-#define SPDIFRX_IMR_PERRIE_Msk (0x1UL << SPDIFRX_IMR_PERRIE_Pos) /*!< 0x00000004 */\r
-#define SPDIFRX_IMR_PERRIE SPDIFRX_IMR_PERRIE_Msk /*!<Parity error interrupt enable */\r
-#define SPDIFRX_IMR_OVRIE_Pos (3U) \r
-#define SPDIFRX_IMR_OVRIE_Msk (0x1UL << SPDIFRX_IMR_OVRIE_Pos) /*!< 0x00000008 */\r
-#define SPDIFRX_IMR_OVRIE SPDIFRX_IMR_OVRIE_Msk /*!<Overrun error Interrupt Enable */\r
-#define SPDIFRX_IMR_SBLKIE_Pos (4U) \r
-#define SPDIFRX_IMR_SBLKIE_Msk (0x1UL << SPDIFRX_IMR_SBLKIE_Pos) /*!< 0x00000010 */\r
-#define SPDIFRX_IMR_SBLKIE SPDIFRX_IMR_SBLKIE_Msk /*!<Synchronization Block Detected Interrupt Enable */\r
-#define SPDIFRX_IMR_SYNCDIE_Pos (5U) \r
-#define SPDIFRX_IMR_SYNCDIE_Msk (0x1UL << SPDIFRX_IMR_SYNCDIE_Pos) /*!< 0x00000020 */\r
-#define SPDIFRX_IMR_SYNCDIE SPDIFRX_IMR_SYNCDIE_Msk /*!<Synchronization Done */\r
-#define SPDIFRX_IMR_IFEIE_Pos (6U) \r
-#define SPDIFRX_IMR_IFEIE_Msk (0x1UL << SPDIFRX_IMR_IFEIE_Pos) /*!< 0x00000040 */\r
-#define SPDIFRX_IMR_IFEIE SPDIFRX_IMR_IFEIE_Msk /*!<Serial Interface Error Interrupt Enable */\r
-\r
-/******************* Bit definition for SPDIFRX_SR register *******************/\r
-#define SPDIFRX_SR_RXNE_Pos (0U) \r
-#define SPDIFRX_SR_RXNE_Msk (0x1UL << SPDIFRX_SR_RXNE_Pos) /*!< 0x00000001 */\r
-#define SPDIFRX_SR_RXNE SPDIFRX_SR_RXNE_Msk /*!<Read data register not empty */\r
-#define SPDIFRX_SR_CSRNE_Pos (1U) \r
-#define SPDIFRX_SR_CSRNE_Msk (0x1UL << SPDIFRX_SR_CSRNE_Pos) /*!< 0x00000002 */\r
-#define SPDIFRX_SR_CSRNE SPDIFRX_SR_CSRNE_Msk /*!<The Control Buffer register is not empty */\r
-#define SPDIFRX_SR_PERR_Pos (2U) \r
-#define SPDIFRX_SR_PERR_Msk (0x1UL << SPDIFRX_SR_PERR_Pos) /*!< 0x00000004 */\r
-#define SPDIFRX_SR_PERR SPDIFRX_SR_PERR_Msk /*!<Parity error */\r
-#define SPDIFRX_SR_OVR_Pos (3U) \r
-#define SPDIFRX_SR_OVR_Msk (0x1UL << SPDIFRX_SR_OVR_Pos) /*!< 0x00000008 */\r
-#define SPDIFRX_SR_OVR SPDIFRX_SR_OVR_Msk /*!<Overrun error */\r
-#define SPDIFRX_SR_SBD_Pos (4U) \r
-#define SPDIFRX_SR_SBD_Msk (0x1UL << SPDIFRX_SR_SBD_Pos) /*!< 0x00000010 */\r
-#define SPDIFRX_SR_SBD SPDIFRX_SR_SBD_Msk /*!<Synchronization Block Detected */\r
-#define SPDIFRX_SR_SYNCD_Pos (5U) \r
-#define SPDIFRX_SR_SYNCD_Msk (0x1UL << SPDIFRX_SR_SYNCD_Pos) /*!< 0x00000020 */\r
-#define SPDIFRX_SR_SYNCD SPDIFRX_SR_SYNCD_Msk /*!<Synchronization Done */\r
-#define SPDIFRX_SR_FERR_Pos (6U) \r
-#define SPDIFRX_SR_FERR_Msk (0x1UL << SPDIFRX_SR_FERR_Pos) /*!< 0x00000040 */\r
-#define SPDIFRX_SR_FERR SPDIFRX_SR_FERR_Msk /*!<Framing error */\r
-#define SPDIFRX_SR_SERR_Pos (7U) \r
-#define SPDIFRX_SR_SERR_Msk (0x1UL << SPDIFRX_SR_SERR_Pos) /*!< 0x00000080 */\r
-#define SPDIFRX_SR_SERR SPDIFRX_SR_SERR_Msk /*!<Synchronization error */\r
-#define SPDIFRX_SR_TERR_Pos (8U) \r
-#define SPDIFRX_SR_TERR_Msk (0x1UL << SPDIFRX_SR_TERR_Pos) /*!< 0x00000100 */\r
-#define SPDIFRX_SR_TERR SPDIFRX_SR_TERR_Msk /*!<Time-out error */\r
-#define SPDIFRX_SR_WIDTH5_Pos (16U) \r
-#define SPDIFRX_SR_WIDTH5_Msk (0x7FFFUL << SPDIFRX_SR_WIDTH5_Pos) /*!< 0x7FFF0000 */\r
-#define SPDIFRX_SR_WIDTH5 SPDIFRX_SR_WIDTH5_Msk /*!<Duration of 5 symbols counted with spdif_clk */\r
-\r
-/******************* Bit definition for SPDIFRX_IFCR register *******************/\r
-#define SPDIFRX_IFCR_PERRCF_Pos (2U) \r
-#define SPDIFRX_IFCR_PERRCF_Msk (0x1UL << SPDIFRX_IFCR_PERRCF_Pos) /*!< 0x00000004 */\r
-#define SPDIFRX_IFCR_PERRCF SPDIFRX_IFCR_PERRCF_Msk /*!<Clears the Parity error flag */\r
-#define SPDIFRX_IFCR_OVRCF_Pos (3U) \r
-#define SPDIFRX_IFCR_OVRCF_Msk (0x1UL << SPDIFRX_IFCR_OVRCF_Pos) /*!< 0x00000008 */\r
-#define SPDIFRX_IFCR_OVRCF SPDIFRX_IFCR_OVRCF_Msk /*!<Clears the Overrun error flag */\r
-#define SPDIFRX_IFCR_SBDCF_Pos (4U) \r
-#define SPDIFRX_IFCR_SBDCF_Msk (0x1UL << SPDIFRX_IFCR_SBDCF_Pos) /*!< 0x00000010 */\r
-#define SPDIFRX_IFCR_SBDCF SPDIFRX_IFCR_SBDCF_Msk /*!<Clears the Synchronization Block Detected flag */\r
-#define SPDIFRX_IFCR_SYNCDCF_Pos (5U) \r
-#define SPDIFRX_IFCR_SYNCDCF_Msk (0x1UL << SPDIFRX_IFCR_SYNCDCF_Pos) /*!< 0x00000020 */\r
-#define SPDIFRX_IFCR_SYNCDCF SPDIFRX_IFCR_SYNCDCF_Msk /*!<Clears the Synchronization Done flag */\r
-\r
-/******************* Bit definition for SPDIFRX_DR register (DRFMT = 0b00 case) *******************/\r
-#define SPDIFRX_DR0_DR_Pos (0U) \r
-#define SPDIFRX_DR0_DR_Msk (0xFFFFFFUL << SPDIFRX_DR0_DR_Pos) /*!< 0x00FFFFFF */\r
-#define SPDIFRX_DR0_DR SPDIFRX_DR0_DR_Msk /*!<Data value */\r
-#define SPDIFRX_DR0_PE_Pos (24U) \r
-#define SPDIFRX_DR0_PE_Msk (0x1UL << SPDIFRX_DR0_PE_Pos) /*!< 0x01000000 */\r
-#define SPDIFRX_DR0_PE SPDIFRX_DR0_PE_Msk /*!<Parity Error bit */\r
-#define SPDIFRX_DR0_V_Pos (25U) \r
-#define SPDIFRX_DR0_V_Msk (0x1UL << SPDIFRX_DR0_V_Pos) /*!< 0x02000000 */\r
-#define SPDIFRX_DR0_V SPDIFRX_DR0_V_Msk /*!<Validity bit */\r
-#define SPDIFRX_DR0_U_Pos (26U) \r
-#define SPDIFRX_DR0_U_Msk (0x1UL << SPDIFRX_DR0_U_Pos) /*!< 0x04000000 */\r
-#define SPDIFRX_DR0_U SPDIFRX_DR0_U_Msk /*!<User bit */\r
-#define SPDIFRX_DR0_C_Pos (27U) \r
-#define SPDIFRX_DR0_C_Msk (0x1UL << SPDIFRX_DR0_C_Pos) /*!< 0x08000000 */\r
-#define SPDIFRX_DR0_C SPDIFRX_DR0_C_Msk /*!<Channel Status bit */\r
-#define SPDIFRX_DR0_PT_Pos (28U) \r
-#define SPDIFRX_DR0_PT_Msk (0x3UL << SPDIFRX_DR0_PT_Pos) /*!< 0x30000000 */\r
-#define SPDIFRX_DR0_PT SPDIFRX_DR0_PT_Msk /*!<Preamble Type */\r
-\r
-/******************* Bit definition for SPDIFRX_DR register (DRFMT = 0b01 case) *******************/\r
-#define SPDIFRX_DR1_DR_Pos (8U) \r
-#define SPDIFRX_DR1_DR_Msk (0xFFFFFFUL << SPDIFRX_DR1_DR_Pos) /*!< 0xFFFFFF00 */\r
-#define SPDIFRX_DR1_DR SPDIFRX_DR1_DR_Msk /*!<Data value */\r
-#define SPDIFRX_DR1_PT_Pos (4U) \r
-#define SPDIFRX_DR1_PT_Msk (0x3UL << SPDIFRX_DR1_PT_Pos) /*!< 0x00000030 */\r
-#define SPDIFRX_DR1_PT SPDIFRX_DR1_PT_Msk /*!<Preamble Type */\r
-#define SPDIFRX_DR1_C_Pos (3U) \r
-#define SPDIFRX_DR1_C_Msk (0x1UL << SPDIFRX_DR1_C_Pos) /*!< 0x00000008 */\r
-#define SPDIFRX_DR1_C SPDIFRX_DR1_C_Msk /*!<Channel Status bit */\r
-#define SPDIFRX_DR1_U_Pos (2U) \r
-#define SPDIFRX_DR1_U_Msk (0x1UL << SPDIFRX_DR1_U_Pos) /*!< 0x00000004 */\r
-#define SPDIFRX_DR1_U SPDIFRX_DR1_U_Msk /*!<User bit */\r
-#define SPDIFRX_DR1_V_Pos (1U) \r
-#define SPDIFRX_DR1_V_Msk (0x1UL << SPDIFRX_DR1_V_Pos) /*!< 0x00000002 */\r
-#define SPDIFRX_DR1_V SPDIFRX_DR1_V_Msk /*!<Validity bit */\r
-#define SPDIFRX_DR1_PE_Pos (0U) \r
-#define SPDIFRX_DR1_PE_Msk (0x1UL << SPDIFRX_DR1_PE_Pos) /*!< 0x00000001 */\r
-#define SPDIFRX_DR1_PE SPDIFRX_DR1_PE_Msk /*!<Parity Error bit */\r
-\r
-/******************* Bit definition for SPDIFRX_DR register (DRFMT = 0b10 case) *******************/\r
-#define SPDIFRX_DR1_DRNL1_Pos (16U) \r
-#define SPDIFRX_DR1_DRNL1_Msk (0xFFFFUL << SPDIFRX_DR1_DRNL1_Pos) /*!< 0xFFFF0000 */\r
-#define SPDIFRX_DR1_DRNL1 SPDIFRX_DR1_DRNL1_Msk /*!<Data value Channel B */\r
-#define SPDIFRX_DR1_DRNL2_Pos (0U) \r
-#define SPDIFRX_DR1_DRNL2_Msk (0xFFFFUL << SPDIFRX_DR1_DRNL2_Pos) /*!< 0x0000FFFF */\r
-#define SPDIFRX_DR1_DRNL2 SPDIFRX_DR1_DRNL2_Msk /*!<Data value Channel A */\r
-\r
-/******************* Bit definition for SPDIFRX_CSR register *******************/\r
-#define SPDIFRX_CSR_USR_Pos (0U) \r
-#define SPDIFRX_CSR_USR_Msk (0xFFFFUL << SPDIFRX_CSR_USR_Pos) /*!< 0x0000FFFF */\r
-#define SPDIFRX_CSR_USR SPDIFRX_CSR_USR_Msk /*!<User data information */\r
-#define SPDIFRX_CSR_CS_Pos (16U) \r
-#define SPDIFRX_CSR_CS_Msk (0xFFUL << SPDIFRX_CSR_CS_Pos) /*!< 0x00FF0000 */\r
-#define SPDIFRX_CSR_CS SPDIFRX_CSR_CS_Msk /*!<Channel A status information */\r
-#define SPDIFRX_CSR_SOB_Pos (24U) \r
-#define SPDIFRX_CSR_SOB_Msk (0x1UL << SPDIFRX_CSR_SOB_Pos) /*!< 0x01000000 */\r
-#define SPDIFRX_CSR_SOB SPDIFRX_CSR_SOB_Msk /*!<Start Of Block */\r
-\r
-/******************* Bit definition for SPDIFRX_DIR register *******************/\r
-#define SPDIFRX_DIR_THI_Pos (0U) \r
-#define SPDIFRX_DIR_THI_Msk (0x13FFUL << SPDIFRX_DIR_THI_Pos) /*!< 0x000013FF */\r
-#define SPDIFRX_DIR_THI SPDIFRX_DIR_THI_Msk /*!<Threshold LOW */\r
-#define SPDIFRX_DIR_TLO_Pos (16U) \r
-#define SPDIFRX_DIR_TLO_Msk (0x1FFFUL << SPDIFRX_DIR_TLO_Pos) /*!< 0x1FFF0000 */\r
-#define SPDIFRX_DIR_TLO SPDIFRX_DIR_TLO_Msk /*!<Threshold HIGH */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* SD host Interface */\r
-/* */\r
-/******************************************************************************/\r
-/****************** Bit definition for SDMMC_POWER register ******************/\r
-#define SDMMC_POWER_PWRCTRL_Pos (0U) \r
-#define SDMMC_POWER_PWRCTRL_Msk (0x3UL << SDMMC_POWER_PWRCTRL_Pos) /*!< 0x00000003 */\r
-#define SDMMC_POWER_PWRCTRL SDMMC_POWER_PWRCTRL_Msk /*!<PWRCTRL[1:0] bits (Power supply control bits) */\r
-#define SDMMC_POWER_PWRCTRL_0 (0x1UL << SDMMC_POWER_PWRCTRL_Pos) /*!< 0x01 */\r
-#define SDMMC_POWER_PWRCTRL_1 (0x2UL << SDMMC_POWER_PWRCTRL_Pos) /*!< 0x02 */\r
-\r
-/****************** Bit definition for SDMMC_CLKCR register ******************/\r
-#define SDMMC_CLKCR_CLKDIV_Pos (0U) \r
-#define SDMMC_CLKCR_CLKDIV_Msk (0xFFUL << SDMMC_CLKCR_CLKDIV_Pos) /*!< 0x000000FF */\r
-#define SDMMC_CLKCR_CLKDIV SDMMC_CLKCR_CLKDIV_Msk /*!<Clock divide factor */\r
-#define SDMMC_CLKCR_CLKEN_Pos (8U) \r
-#define SDMMC_CLKCR_CLKEN_Msk (0x1UL << SDMMC_CLKCR_CLKEN_Pos) /*!< 0x00000100 */\r
-#define SDMMC_CLKCR_CLKEN SDMMC_CLKCR_CLKEN_Msk /*!<Clock enable bit */\r
-#define SDMMC_CLKCR_PWRSAV_Pos (9U) \r
-#define SDMMC_CLKCR_PWRSAV_Msk (0x1UL << SDMMC_CLKCR_PWRSAV_Pos) /*!< 0x00000200 */\r
-#define SDMMC_CLKCR_PWRSAV SDMMC_CLKCR_PWRSAV_Msk /*!<Power saving configuration bit */\r
-#define SDMMC_CLKCR_BYPASS_Pos (10U) \r
-#define SDMMC_CLKCR_BYPASS_Msk (0x1UL << SDMMC_CLKCR_BYPASS_Pos) /*!< 0x00000400 */\r
-#define SDMMC_CLKCR_BYPASS SDMMC_CLKCR_BYPASS_Msk /*!<Clock divider bypass enable bit */\r
-\r
-#define SDMMC_CLKCR_WIDBUS_Pos (11U) \r
-#define SDMMC_CLKCR_WIDBUS_Msk (0x3UL << SDMMC_CLKCR_WIDBUS_Pos) /*!< 0x00001800 */\r
-#define SDMMC_CLKCR_WIDBUS SDMMC_CLKCR_WIDBUS_Msk /*!<WIDBUS[1:0] bits (Wide bus mode enable bit) */\r
-#define SDMMC_CLKCR_WIDBUS_0 (0x1UL << SDMMC_CLKCR_WIDBUS_Pos) /*!< 0x0800 */\r
-#define SDMMC_CLKCR_WIDBUS_1 (0x2UL << SDMMC_CLKCR_WIDBUS_Pos) /*!< 0x1000 */\r
-\r
-#define SDMMC_CLKCR_NEGEDGE_Pos (13U) \r
-#define SDMMC_CLKCR_NEGEDGE_Msk (0x1UL << SDMMC_CLKCR_NEGEDGE_Pos) /*!< 0x00002000 */\r
-#define SDMMC_CLKCR_NEGEDGE SDMMC_CLKCR_NEGEDGE_Msk /*!<SDMMC_CK dephasing selection bit */\r
-#define SDMMC_CLKCR_HWFC_EN_Pos (14U) \r
-#define SDMMC_CLKCR_HWFC_EN_Msk (0x1UL << SDMMC_CLKCR_HWFC_EN_Pos) /*!< 0x00004000 */\r
-#define SDMMC_CLKCR_HWFC_EN SDMMC_CLKCR_HWFC_EN_Msk /*!<HW Flow Control enable */\r
-\r
-/******************* Bit definition for SDMMC_ARG register *******************/\r
-#define SDMMC_ARG_CMDARG_Pos (0U) \r
-#define SDMMC_ARG_CMDARG_Msk (0xFFFFFFFFUL << SDMMC_ARG_CMDARG_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_ARG_CMDARG SDMMC_ARG_CMDARG_Msk /*!<Command argument */\r
-\r
-/******************* Bit definition for SDMMC_CMD register *******************/\r
-#define SDMMC_CMD_CMDINDEX_Pos (0U) \r
-#define SDMMC_CMD_CMDINDEX_Msk (0x3FUL << SDMMC_CMD_CMDINDEX_Pos) /*!< 0x0000003F */\r
-#define SDMMC_CMD_CMDINDEX SDMMC_CMD_CMDINDEX_Msk /*!<Command Index */\r
-\r
-#define SDMMC_CMD_WAITRESP_Pos (6U) \r
-#define SDMMC_CMD_WAITRESP_Msk (0x3UL << SDMMC_CMD_WAITRESP_Pos) /*!< 0x000000C0 */\r
-#define SDMMC_CMD_WAITRESP SDMMC_CMD_WAITRESP_Msk /*!<WAITRESP[1:0] bits (Wait for response bits) */\r
-#define SDMMC_CMD_WAITRESP_0 (0x1UL << SDMMC_CMD_WAITRESP_Pos) /*!< 0x0040 */\r
-#define SDMMC_CMD_WAITRESP_1 (0x2UL << SDMMC_CMD_WAITRESP_Pos) /*!< 0x0080 */\r
-\r
-#define SDMMC_CMD_WAITINT_Pos (8U) \r
-#define SDMMC_CMD_WAITINT_Msk (0x1UL << SDMMC_CMD_WAITINT_Pos) /*!< 0x00000100 */\r
-#define SDMMC_CMD_WAITINT SDMMC_CMD_WAITINT_Msk /*!<CPSM Waits for Interrupt Request */\r
-#define SDMMC_CMD_WAITPEND_Pos (9U) \r
-#define SDMMC_CMD_WAITPEND_Msk (0x1UL << SDMMC_CMD_WAITPEND_Pos) /*!< 0x00000200 */\r
-#define SDMMC_CMD_WAITPEND SDMMC_CMD_WAITPEND_Msk /*!<CPSM Waits for ends of data transfer (CmdPend internal signal) */\r
-#define SDMMC_CMD_CPSMEN_Pos (10U) \r
-#define SDMMC_CMD_CPSMEN_Msk (0x1UL << SDMMC_CMD_CPSMEN_Pos) /*!< 0x00000400 */\r
-#define SDMMC_CMD_CPSMEN SDMMC_CMD_CPSMEN_Msk /*!<Command path state machine (CPSM) Enable bit */\r
-#define SDMMC_CMD_SDIOSUSPEND_Pos (11U) \r
-#define SDMMC_CMD_SDIOSUSPEND_Msk (0x1UL << SDMMC_CMD_SDIOSUSPEND_Pos) /*!< 0x00000800 */\r
-#define SDMMC_CMD_SDIOSUSPEND SDMMC_CMD_SDIOSUSPEND_Msk /*!<SD I/O suspend command */\r
-\r
-/***************** Bit definition for SDMMC_RESPCMD register *****************/\r
-#define SDMMC_RESPCMD_RESPCMD_Pos (0U) \r
-#define SDMMC_RESPCMD_RESPCMD_Msk (0x3FUL << SDMMC_RESPCMD_RESPCMD_Pos) /*!< 0x0000003F */\r
-#define SDMMC_RESPCMD_RESPCMD SDMMC_RESPCMD_RESPCMD_Msk /*!<Response command index */\r
-\r
-/****************** Bit definition for SDMMC_RESP0 register ******************/\r
-#define SDMMC_RESP0_CARDSTATUS0_Pos (0U) \r
-#define SDMMC_RESP0_CARDSTATUS0_Msk (0xFFFFFFFFUL << SDMMC_RESP0_CARDSTATUS0_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_RESP0_CARDSTATUS0 SDMMC_RESP0_CARDSTATUS0_Msk /*!<Card Status */\r
-\r
-/****************** Bit definition for SDMMC_RESP1 register ******************/\r
-#define SDMMC_RESP1_CARDSTATUS1_Pos (0U) \r
-#define SDMMC_RESP1_CARDSTATUS1_Msk (0xFFFFFFFFUL << SDMMC_RESP1_CARDSTATUS1_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_RESP1_CARDSTATUS1 SDMMC_RESP1_CARDSTATUS1_Msk /*!<Card Status */\r
-\r
-/****************** Bit definition for SDMMC_RESP2 register ******************/\r
-#define SDMMC_RESP2_CARDSTATUS2_Pos (0U) \r
-#define SDMMC_RESP2_CARDSTATUS2_Msk (0xFFFFFFFFUL << SDMMC_RESP2_CARDSTATUS2_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_RESP2_CARDSTATUS2 SDMMC_RESP2_CARDSTATUS2_Msk /*!<Card Status */\r
-\r
-/****************** Bit definition for SDMMC_RESP3 register ******************/\r
-#define SDMMC_RESP3_CARDSTATUS3_Pos (0U) \r
-#define SDMMC_RESP3_CARDSTATUS3_Msk (0xFFFFFFFFUL << SDMMC_RESP3_CARDSTATUS3_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_RESP3_CARDSTATUS3 SDMMC_RESP3_CARDSTATUS3_Msk /*!<Card Status */\r
-\r
-/****************** Bit definition for SDMMC_RESP4 register ******************/\r
-#define SDMMC_RESP4_CARDSTATUS4_Pos (0U) \r
-#define SDMMC_RESP4_CARDSTATUS4_Msk (0xFFFFFFFFUL << SDMMC_RESP4_CARDSTATUS4_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_RESP4_CARDSTATUS4 SDMMC_RESP4_CARDSTATUS4_Msk /*!<Card Status */\r
-\r
-/****************** Bit definition for SDMMC_DTIMER register *****************/\r
-#define SDMMC_DTIMER_DATATIME_Pos (0U) \r
-#define SDMMC_DTIMER_DATATIME_Msk (0xFFFFFFFFUL << SDMMC_DTIMER_DATATIME_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_DTIMER_DATATIME SDMMC_DTIMER_DATATIME_Msk /*!<Data timeout period. */\r
-\r
-/****************** Bit definition for SDMMC_DLEN register *******************/\r
-#define SDMMC_DLEN_DATALENGTH_Pos (0U) \r
-#define SDMMC_DLEN_DATALENGTH_Msk (0x1FFFFFFUL << SDMMC_DLEN_DATALENGTH_Pos) /*!< 0x01FFFFFF */\r
-#define SDMMC_DLEN_DATALENGTH SDMMC_DLEN_DATALENGTH_Msk /*!<Data length value */\r
-\r
-/****************** Bit definition for SDMMC_DCTRL register ******************/\r
-#define SDMMC_DCTRL_DTEN_Pos (0U) \r
-#define SDMMC_DCTRL_DTEN_Msk (0x1UL << SDMMC_DCTRL_DTEN_Pos) /*!< 0x00000001 */\r
-#define SDMMC_DCTRL_DTEN SDMMC_DCTRL_DTEN_Msk /*!<Data transfer enabled bit */\r
-#define SDMMC_DCTRL_DTDIR_Pos (1U) \r
-#define SDMMC_DCTRL_DTDIR_Msk (0x1UL << SDMMC_DCTRL_DTDIR_Pos) /*!< 0x00000002 */\r
-#define SDMMC_DCTRL_DTDIR SDMMC_DCTRL_DTDIR_Msk /*!<Data transfer direction selection */\r
-#define SDMMC_DCTRL_DTMODE_Pos (2U) \r
-#define SDMMC_DCTRL_DTMODE_Msk (0x1UL << SDMMC_DCTRL_DTMODE_Pos) /*!< 0x00000004 */\r
-#define SDMMC_DCTRL_DTMODE SDMMC_DCTRL_DTMODE_Msk /*!<Data transfer mode selection */\r
-#define SDMMC_DCTRL_DMAEN_Pos (3U) \r
-#define SDMMC_DCTRL_DMAEN_Msk (0x1UL << SDMMC_DCTRL_DMAEN_Pos) /*!< 0x00000008 */\r
-#define SDMMC_DCTRL_DMAEN SDMMC_DCTRL_DMAEN_Msk /*!<DMA enabled bit */\r
-\r
-#define SDMMC_DCTRL_DBLOCKSIZE_Pos (4U) \r
-#define SDMMC_DCTRL_DBLOCKSIZE_Msk (0xFUL << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x000000F0 */\r
-#define SDMMC_DCTRL_DBLOCKSIZE SDMMC_DCTRL_DBLOCKSIZE_Msk /*!<DBLOCKSIZE[3:0] bits (Data block size) */\r
-#define SDMMC_DCTRL_DBLOCKSIZE_0 (0x1UL << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0010 */\r
-#define SDMMC_DCTRL_DBLOCKSIZE_1 (0x2UL << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0020 */\r
-#define SDMMC_DCTRL_DBLOCKSIZE_2 (0x4UL << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0040 */\r
-#define SDMMC_DCTRL_DBLOCKSIZE_3 (0x8UL << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0080 */\r
-\r
-#define SDMMC_DCTRL_RWSTART_Pos (8U) \r
-#define SDMMC_DCTRL_RWSTART_Msk (0x1UL << SDMMC_DCTRL_RWSTART_Pos) /*!< 0x00000100 */\r
-#define SDMMC_DCTRL_RWSTART SDMMC_DCTRL_RWSTART_Msk /*!<Read wait start */\r
-#define SDMMC_DCTRL_RWSTOP_Pos (9U) \r
-#define SDMMC_DCTRL_RWSTOP_Msk (0x1UL << SDMMC_DCTRL_RWSTOP_Pos) /*!< 0x00000200 */\r
-#define SDMMC_DCTRL_RWSTOP SDMMC_DCTRL_RWSTOP_Msk /*!<Read wait stop */\r
-#define SDMMC_DCTRL_RWMOD_Pos (10U) \r
-#define SDMMC_DCTRL_RWMOD_Msk (0x1UL << SDMMC_DCTRL_RWMOD_Pos) /*!< 0x00000400 */\r
-#define SDMMC_DCTRL_RWMOD SDMMC_DCTRL_RWMOD_Msk /*!<Read wait mode */\r
-#define SDMMC_DCTRL_SDIOEN_Pos (11U) \r
-#define SDMMC_DCTRL_SDIOEN_Msk (0x1UL << SDMMC_DCTRL_SDIOEN_Pos) /*!< 0x00000800 */\r
-#define SDMMC_DCTRL_SDIOEN SDMMC_DCTRL_SDIOEN_Msk /*!<SD I/O enable functions */\r
-\r
-/****************** Bit definition for SDMMC_DCOUNT register *****************/\r
-#define SDMMC_DCOUNT_DATACOUNT_Pos (0U) \r
-#define SDMMC_DCOUNT_DATACOUNT_Msk (0x1FFFFFFUL << SDMMC_DCOUNT_DATACOUNT_Pos) /*!< 0x01FFFFFF */\r
-#define SDMMC_DCOUNT_DATACOUNT SDMMC_DCOUNT_DATACOUNT_Msk /*!<Data count value */\r
-\r
-/****************** Bit definition for SDMMC_STA registe ********************/\r
-#define SDMMC_STA_CCRCFAIL_Pos (0U) \r
-#define SDMMC_STA_CCRCFAIL_Msk (0x1UL << SDMMC_STA_CCRCFAIL_Pos) /*!< 0x00000001 */\r
-#define SDMMC_STA_CCRCFAIL SDMMC_STA_CCRCFAIL_Msk /*!<Command response received (CRC check failed) */\r
-#define SDMMC_STA_DCRCFAIL_Pos (1U) \r
-#define SDMMC_STA_DCRCFAIL_Msk (0x1UL << SDMMC_STA_DCRCFAIL_Pos) /*!< 0x00000002 */\r
-#define SDMMC_STA_DCRCFAIL SDMMC_STA_DCRCFAIL_Msk /*!<Data block sent/received (CRC check failed) */\r
-#define SDMMC_STA_CTIMEOUT_Pos (2U) \r
-#define SDMMC_STA_CTIMEOUT_Msk (0x1UL << SDMMC_STA_CTIMEOUT_Pos) /*!< 0x00000004 */\r
-#define SDMMC_STA_CTIMEOUT SDMMC_STA_CTIMEOUT_Msk /*!<Command response timeout */\r
-#define SDMMC_STA_DTIMEOUT_Pos (3U) \r
-#define SDMMC_STA_DTIMEOUT_Msk (0x1UL << SDMMC_STA_DTIMEOUT_Pos) /*!< 0x00000008 */\r
-#define SDMMC_STA_DTIMEOUT SDMMC_STA_DTIMEOUT_Msk /*!<Data timeout */\r
-#define SDMMC_STA_TXUNDERR_Pos (4U) \r
-#define SDMMC_STA_TXUNDERR_Msk (0x1UL << SDMMC_STA_TXUNDERR_Pos) /*!< 0x00000010 */\r
-#define SDMMC_STA_TXUNDERR SDMMC_STA_TXUNDERR_Msk /*!<Transmit FIFO underrun error */\r
-#define SDMMC_STA_RXOVERR_Pos (5U) \r
-#define SDMMC_STA_RXOVERR_Msk (0x1UL << SDMMC_STA_RXOVERR_Pos) /*!< 0x00000020 */\r
-#define SDMMC_STA_RXOVERR SDMMC_STA_RXOVERR_Msk /*!<Received FIFO overrun error */\r
-#define SDMMC_STA_CMDREND_Pos (6U) \r
-#define SDMMC_STA_CMDREND_Msk (0x1UL << SDMMC_STA_CMDREND_Pos) /*!< 0x00000040 */\r
-#define SDMMC_STA_CMDREND SDMMC_STA_CMDREND_Msk /*!<Command response received (CRC check passed) */\r
-#define SDMMC_STA_CMDSENT_Pos (7U) \r
-#define SDMMC_STA_CMDSENT_Msk (0x1UL << SDMMC_STA_CMDSENT_Pos) /*!< 0x00000080 */\r
-#define SDMMC_STA_CMDSENT SDMMC_STA_CMDSENT_Msk /*!<Command sent (no response required) */\r
-#define SDMMC_STA_DATAEND_Pos (8U) \r
-#define SDMMC_STA_DATAEND_Msk (0x1UL << SDMMC_STA_DATAEND_Pos) /*!< 0x00000100 */\r
-#define SDMMC_STA_DATAEND SDMMC_STA_DATAEND_Msk /*!<Data end (data counter, SDIDCOUNT, is zero) */\r
-#define SDMMC_STA_DBCKEND_Pos (10U) \r
-#define SDMMC_STA_DBCKEND_Msk (0x1UL << SDMMC_STA_DBCKEND_Pos) /*!< 0x00000400 */\r
-#define SDMMC_STA_DBCKEND SDMMC_STA_DBCKEND_Msk /*!<Data block sent/received (CRC check passed) */\r
-#define SDMMC_STA_CMDACT_Pos (11U) \r
-#define SDMMC_STA_CMDACT_Msk (0x1UL << SDMMC_STA_CMDACT_Pos) /*!< 0x00000800 */\r
-#define SDMMC_STA_CMDACT SDMMC_STA_CMDACT_Msk /*!<Command transfer in progress */\r
-#define SDMMC_STA_TXACT_Pos (12U) \r
-#define SDMMC_STA_TXACT_Msk (0x1UL << SDMMC_STA_TXACT_Pos) /*!< 0x00001000 */\r
-#define SDMMC_STA_TXACT SDMMC_STA_TXACT_Msk /*!<Data transmit in progress */\r
-#define SDMMC_STA_RXACT_Pos (13U) \r
-#define SDMMC_STA_RXACT_Msk (0x1UL << SDMMC_STA_RXACT_Pos) /*!< 0x00002000 */\r
-#define SDMMC_STA_RXACT SDMMC_STA_RXACT_Msk /*!<Data receive in progress */\r
-#define SDMMC_STA_TXFIFOHE_Pos (14U) \r
-#define SDMMC_STA_TXFIFOHE_Msk (0x1UL << SDMMC_STA_TXFIFOHE_Pos) /*!< 0x00004000 */\r
-#define SDMMC_STA_TXFIFOHE SDMMC_STA_TXFIFOHE_Msk /*!<Transmit FIFO Half Empty: at least 8 words can be written into the FIFO */\r
-#define SDMMC_STA_RXFIFOHF_Pos (15U) \r
-#define SDMMC_STA_RXFIFOHF_Msk (0x1UL << SDMMC_STA_RXFIFOHF_Pos) /*!< 0x00008000 */\r
-#define SDMMC_STA_RXFIFOHF SDMMC_STA_RXFIFOHF_Msk /*!<Receive FIFO Half Full: there are at least 8 words in the FIFO */\r
-#define SDMMC_STA_TXFIFOF_Pos (16U) \r
-#define SDMMC_STA_TXFIFOF_Msk (0x1UL << SDMMC_STA_TXFIFOF_Pos) /*!< 0x00010000 */\r
-#define SDMMC_STA_TXFIFOF SDMMC_STA_TXFIFOF_Msk /*!<Transmit FIFO full */\r
-#define SDMMC_STA_RXFIFOF_Pos (17U) \r
-#define SDMMC_STA_RXFIFOF_Msk (0x1UL << SDMMC_STA_RXFIFOF_Pos) /*!< 0x00020000 */\r
-#define SDMMC_STA_RXFIFOF SDMMC_STA_RXFIFOF_Msk /*!<Receive FIFO full */\r
-#define SDMMC_STA_TXFIFOE_Pos (18U) \r
-#define SDMMC_STA_TXFIFOE_Msk (0x1UL << SDMMC_STA_TXFIFOE_Pos) /*!< 0x00040000 */\r
-#define SDMMC_STA_TXFIFOE SDMMC_STA_TXFIFOE_Msk /*!<Transmit FIFO empty */\r
-#define SDMMC_STA_RXFIFOE_Pos (19U) \r
-#define SDMMC_STA_RXFIFOE_Msk (0x1UL << SDMMC_STA_RXFIFOE_Pos) /*!< 0x00080000 */\r
-#define SDMMC_STA_RXFIFOE SDMMC_STA_RXFIFOE_Msk /*!<Receive FIFO empty */\r
-#define SDMMC_STA_TXDAVL_Pos (20U) \r
-#define SDMMC_STA_TXDAVL_Msk (0x1UL << SDMMC_STA_TXDAVL_Pos) /*!< 0x00100000 */\r
-#define SDMMC_STA_TXDAVL SDMMC_STA_TXDAVL_Msk /*!<Data available in transmit FIFO */\r
-#define SDMMC_STA_RXDAVL_Pos (21U) \r
-#define SDMMC_STA_RXDAVL_Msk (0x1UL << SDMMC_STA_RXDAVL_Pos) /*!< 0x00200000 */\r
-#define SDMMC_STA_RXDAVL SDMMC_STA_RXDAVL_Msk /*!<Data available in receive FIFO */\r
-#define SDMMC_STA_SDIOIT_Pos (22U) \r
-#define SDMMC_STA_SDIOIT_Msk (0x1UL << SDMMC_STA_SDIOIT_Pos) /*!< 0x00400000 */\r
-#define SDMMC_STA_SDIOIT SDMMC_STA_SDIOIT_Msk /*!<SDMMC interrupt received */\r
-\r
-/******************* Bit definition for SDMMC_ICR register *******************/\r
-#define SDMMC_ICR_CCRCFAILC_Pos (0U) \r
-#define SDMMC_ICR_CCRCFAILC_Msk (0x1UL << SDMMC_ICR_CCRCFAILC_Pos) /*!< 0x00000001 */\r
-#define SDMMC_ICR_CCRCFAILC SDMMC_ICR_CCRCFAILC_Msk /*!<CCRCFAIL flag clear bit */\r
-#define SDMMC_ICR_DCRCFAILC_Pos (1U) \r
-#define SDMMC_ICR_DCRCFAILC_Msk (0x1UL << SDMMC_ICR_DCRCFAILC_Pos) /*!< 0x00000002 */\r
-#define SDMMC_ICR_DCRCFAILC SDMMC_ICR_DCRCFAILC_Msk /*!<DCRCFAIL flag clear bit */\r
-#define SDMMC_ICR_CTIMEOUTC_Pos (2U) \r
-#define SDMMC_ICR_CTIMEOUTC_Msk (0x1UL << SDMMC_ICR_CTIMEOUTC_Pos) /*!< 0x00000004 */\r
-#define SDMMC_ICR_CTIMEOUTC SDMMC_ICR_CTIMEOUTC_Msk /*!<CTIMEOUT flag clear bit */\r
-#define SDMMC_ICR_DTIMEOUTC_Pos (3U) \r
-#define SDMMC_ICR_DTIMEOUTC_Msk (0x1UL << SDMMC_ICR_DTIMEOUTC_Pos) /*!< 0x00000008 */\r
-#define SDMMC_ICR_DTIMEOUTC SDMMC_ICR_DTIMEOUTC_Msk /*!<DTIMEOUT flag clear bit */\r
-#define SDMMC_ICR_TXUNDERRC_Pos (4U) \r
-#define SDMMC_ICR_TXUNDERRC_Msk (0x1UL << SDMMC_ICR_TXUNDERRC_Pos) /*!< 0x00000010 */\r
-#define SDMMC_ICR_TXUNDERRC SDMMC_ICR_TXUNDERRC_Msk /*!<TXUNDERR flag clear bit */\r
-#define SDMMC_ICR_RXOVERRC_Pos (5U) \r
-#define SDMMC_ICR_RXOVERRC_Msk (0x1UL << SDMMC_ICR_RXOVERRC_Pos) /*!< 0x00000020 */\r
-#define SDMMC_ICR_RXOVERRC SDMMC_ICR_RXOVERRC_Msk /*!<RXOVERR flag clear bit */\r
-#define SDMMC_ICR_CMDRENDC_Pos (6U) \r
-#define SDMMC_ICR_CMDRENDC_Msk (0x1UL << SDMMC_ICR_CMDRENDC_Pos) /*!< 0x00000040 */\r
-#define SDMMC_ICR_CMDRENDC SDMMC_ICR_CMDRENDC_Msk /*!<CMDREND flag clear bit */\r
-#define SDMMC_ICR_CMDSENTC_Pos (7U) \r
-#define SDMMC_ICR_CMDSENTC_Msk (0x1UL << SDMMC_ICR_CMDSENTC_Pos) /*!< 0x00000080 */\r
-#define SDMMC_ICR_CMDSENTC SDMMC_ICR_CMDSENTC_Msk /*!<CMDSENT flag clear bit */\r
-#define SDMMC_ICR_DATAENDC_Pos (8U) \r
-#define SDMMC_ICR_DATAENDC_Msk (0x1UL << SDMMC_ICR_DATAENDC_Pos) /*!< 0x00000100 */\r
-#define SDMMC_ICR_DATAENDC SDMMC_ICR_DATAENDC_Msk /*!<DATAEND flag clear bit */\r
-#define SDMMC_ICR_DBCKENDC_Pos (10U) \r
-#define SDMMC_ICR_DBCKENDC_Msk (0x1UL << SDMMC_ICR_DBCKENDC_Pos) /*!< 0x00000400 */\r
-#define SDMMC_ICR_DBCKENDC SDMMC_ICR_DBCKENDC_Msk /*!<DBCKEND flag clear bit */\r
-#define SDMMC_ICR_SDIOITC_Pos (22U) \r
-#define SDMMC_ICR_SDIOITC_Msk (0x1UL << SDMMC_ICR_SDIOITC_Pos) /*!< 0x00400000 */\r
-#define SDMMC_ICR_SDIOITC SDMMC_ICR_SDIOITC_Msk /*!<SDMMCIT flag clear bit */\r
-\r
-/****************** Bit definition for SDMMC_MASK register *******************/\r
-#define SDMMC_MASK_CCRCFAILIE_Pos (0U) \r
-#define SDMMC_MASK_CCRCFAILIE_Msk (0x1UL << SDMMC_MASK_CCRCFAILIE_Pos) /*!< 0x00000001 */\r
-#define SDMMC_MASK_CCRCFAILIE SDMMC_MASK_CCRCFAILIE_Msk /*!<Command CRC Fail Interrupt Enable */\r
-#define SDMMC_MASK_DCRCFAILIE_Pos (1U) \r
-#define SDMMC_MASK_DCRCFAILIE_Msk (0x1UL << SDMMC_MASK_DCRCFAILIE_Pos) /*!< 0x00000002 */\r
-#define SDMMC_MASK_DCRCFAILIE SDMMC_MASK_DCRCFAILIE_Msk /*!<Data CRC Fail Interrupt Enable */\r
-#define SDMMC_MASK_CTIMEOUTIE_Pos (2U) \r
-#define SDMMC_MASK_CTIMEOUTIE_Msk (0x1UL << SDMMC_MASK_CTIMEOUTIE_Pos) /*!< 0x00000004 */\r
-#define SDMMC_MASK_CTIMEOUTIE SDMMC_MASK_CTIMEOUTIE_Msk /*!<Command TimeOut Interrupt Enable */\r
-#define SDMMC_MASK_DTIMEOUTIE_Pos (3U) \r
-#define SDMMC_MASK_DTIMEOUTIE_Msk (0x1UL << SDMMC_MASK_DTIMEOUTIE_Pos) /*!< 0x00000008 */\r
-#define SDMMC_MASK_DTIMEOUTIE SDMMC_MASK_DTIMEOUTIE_Msk /*!<Data TimeOut Interrupt Enable */\r
-#define SDMMC_MASK_TXUNDERRIE_Pos (4U) \r
-#define SDMMC_MASK_TXUNDERRIE_Msk (0x1UL << SDMMC_MASK_TXUNDERRIE_Pos) /*!< 0x00000010 */\r
-#define SDMMC_MASK_TXUNDERRIE SDMMC_MASK_TXUNDERRIE_Msk /*!<Tx FIFO UnderRun Error Interrupt Enable */\r
-#define SDMMC_MASK_RXOVERRIE_Pos (5U) \r
-#define SDMMC_MASK_RXOVERRIE_Msk (0x1UL << SDMMC_MASK_RXOVERRIE_Pos) /*!< 0x00000020 */\r
-#define SDMMC_MASK_RXOVERRIE SDMMC_MASK_RXOVERRIE_Msk /*!<Rx FIFO OverRun Error Interrupt Enable */\r
-#define SDMMC_MASK_CMDRENDIE_Pos (6U) \r
-#define SDMMC_MASK_CMDRENDIE_Msk (0x1UL << SDMMC_MASK_CMDRENDIE_Pos) /*!< 0x00000040 */\r
-#define SDMMC_MASK_CMDRENDIE SDMMC_MASK_CMDRENDIE_Msk /*!<Command Response Received Interrupt Enable */\r
-#define SDMMC_MASK_CMDSENTIE_Pos (7U) \r
-#define SDMMC_MASK_CMDSENTIE_Msk (0x1UL << SDMMC_MASK_CMDSENTIE_Pos) /*!< 0x00000080 */\r
-#define SDMMC_MASK_CMDSENTIE SDMMC_MASK_CMDSENTIE_Msk /*!<Command Sent Interrupt Enable */\r
-#define SDMMC_MASK_DATAENDIE_Pos (8U) \r
-#define SDMMC_MASK_DATAENDIE_Msk (0x1UL << SDMMC_MASK_DATAENDIE_Pos) /*!< 0x00000100 */\r
-#define SDMMC_MASK_DATAENDIE SDMMC_MASK_DATAENDIE_Msk /*!<Data End Interrupt Enable */\r
-#define SDMMC_MASK_DBCKENDIE_Pos (10U) \r
-#define SDMMC_MASK_DBCKENDIE_Msk (0x1UL << SDMMC_MASK_DBCKENDIE_Pos) /*!< 0x00000400 */\r
-#define SDMMC_MASK_DBCKENDIE SDMMC_MASK_DBCKENDIE_Msk /*!<Data Block End Interrupt Enable */\r
-#define SDMMC_MASK_CMDACTIE_Pos (11U) \r
-#define SDMMC_MASK_CMDACTIE_Msk (0x1UL << SDMMC_MASK_CMDACTIE_Pos) /*!< 0x00000800 */\r
-#define SDMMC_MASK_CMDACTIE SDMMC_MASK_CMDACTIE_Msk /*!<CCommand Acting Interrupt Enable */\r
-#define SDMMC_MASK_TXACTIE_Pos (12U) \r
-#define SDMMC_MASK_TXACTIE_Msk (0x1UL << SDMMC_MASK_TXACTIE_Pos) /*!< 0x00001000 */\r
-#define SDMMC_MASK_TXACTIE SDMMC_MASK_TXACTIE_Msk /*!<Data Transmit Acting Interrupt Enable */\r
-#define SDMMC_MASK_RXACTIE_Pos (13U) \r
-#define SDMMC_MASK_RXACTIE_Msk (0x1UL << SDMMC_MASK_RXACTIE_Pos) /*!< 0x00002000 */\r
-#define SDMMC_MASK_RXACTIE SDMMC_MASK_RXACTIE_Msk /*!<Data receive acting interrupt enabled */\r
-#define SDMMC_MASK_TXFIFOHEIE_Pos (14U) \r
-#define SDMMC_MASK_TXFIFOHEIE_Msk (0x1UL << SDMMC_MASK_TXFIFOHEIE_Pos) /*!< 0x00004000 */\r
-#define SDMMC_MASK_TXFIFOHEIE SDMMC_MASK_TXFIFOHEIE_Msk /*!<Tx FIFO Half Empty interrupt Enable */\r
-#define SDMMC_MASK_RXFIFOHFIE_Pos (15U) \r
-#define SDMMC_MASK_RXFIFOHFIE_Msk (0x1UL << SDMMC_MASK_RXFIFOHFIE_Pos) /*!< 0x00008000 */\r
-#define SDMMC_MASK_RXFIFOHFIE SDMMC_MASK_RXFIFOHFIE_Msk /*!<Rx FIFO Half Full interrupt Enable */\r
-#define SDMMC_MASK_TXFIFOFIE_Pos (16U) \r
-#define SDMMC_MASK_TXFIFOFIE_Msk (0x1UL << SDMMC_MASK_TXFIFOFIE_Pos) /*!< 0x00010000 */\r
-#define SDMMC_MASK_TXFIFOFIE SDMMC_MASK_TXFIFOFIE_Msk /*!<Tx FIFO Full interrupt Enable */\r
-#define SDMMC_MASK_RXFIFOFIE_Pos (17U) \r
-#define SDMMC_MASK_RXFIFOFIE_Msk (0x1UL << SDMMC_MASK_RXFIFOFIE_Pos) /*!< 0x00020000 */\r
-#define SDMMC_MASK_RXFIFOFIE SDMMC_MASK_RXFIFOFIE_Msk /*!<Rx FIFO Full interrupt Enable */\r
-#define SDMMC_MASK_TXFIFOEIE_Pos (18U) \r
-#define SDMMC_MASK_TXFIFOEIE_Msk (0x1UL << SDMMC_MASK_TXFIFOEIE_Pos) /*!< 0x00040000 */\r
-#define SDMMC_MASK_TXFIFOEIE SDMMC_MASK_TXFIFOEIE_Msk /*!<Tx FIFO Empty interrupt Enable */\r
-#define SDMMC_MASK_RXFIFOEIE_Pos (19U) \r
-#define SDMMC_MASK_RXFIFOEIE_Msk (0x1UL << SDMMC_MASK_RXFIFOEIE_Pos) /*!< 0x00080000 */\r
-#define SDMMC_MASK_RXFIFOEIE SDMMC_MASK_RXFIFOEIE_Msk /*!<Rx FIFO Empty interrupt Enable */\r
-#define SDMMC_MASK_TXDAVLIE_Pos (20U) \r
-#define SDMMC_MASK_TXDAVLIE_Msk (0x1UL << SDMMC_MASK_TXDAVLIE_Pos) /*!< 0x00100000 */\r
-#define SDMMC_MASK_TXDAVLIE SDMMC_MASK_TXDAVLIE_Msk /*!<Data available in Tx FIFO interrupt Enable */\r
-#define SDMMC_MASK_RXDAVLIE_Pos (21U) \r
-#define SDMMC_MASK_RXDAVLIE_Msk (0x1UL << SDMMC_MASK_RXDAVLIE_Pos) /*!< 0x00200000 */\r
-#define SDMMC_MASK_RXDAVLIE SDMMC_MASK_RXDAVLIE_Msk /*!<Data available in Rx FIFO interrupt Enable */\r
-#define SDMMC_MASK_SDIOITIE_Pos (22U) \r
-#define SDMMC_MASK_SDIOITIE_Msk (0x1UL << SDMMC_MASK_SDIOITIE_Pos) /*!< 0x00400000 */\r
-#define SDMMC_MASK_SDIOITIE SDMMC_MASK_SDIOITIE_Msk /*!<SDMMC Mode Interrupt Received interrupt Enable */\r
-\r
-/***************** Bit definition for SDMMC_FIFOCNT register *****************/\r
-#define SDMMC_FIFOCNT_FIFOCOUNT_Pos (0U) \r
-#define SDMMC_FIFOCNT_FIFOCOUNT_Msk (0xFFFFFFUL << SDMMC_FIFOCNT_FIFOCOUNT_Pos) /*!< 0x00FFFFFF */\r
-#define SDMMC_FIFOCNT_FIFOCOUNT SDMMC_FIFOCNT_FIFOCOUNT_Msk /*!<Remaining number of words to be written to or read from the FIFO */\r
-\r
-/****************** Bit definition for SDMMC_FIFO register *******************/\r
-#define SDMMC_FIFO_FIFODATA_Pos (0U) \r
-#define SDMMC_FIFO_FIFODATA_Msk (0xFFFFFFFFUL << SDMMC_FIFO_FIFODATA_Pos) /*!< 0xFFFFFFFF */\r
-#define SDMMC_FIFO_FIFODATA SDMMC_FIFO_FIFODATA_Msk /*!<Receive and transmit FIFO data */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Serial Peripheral Interface (SPI) */\r
-/* */\r
-/******************************************************************************/\r
-/******************* Bit definition for SPI_CR1 register ********************/\r
-#define SPI_CR1_CPHA_Pos (0U) \r
-#define SPI_CR1_CPHA_Msk (0x1UL << SPI_CR1_CPHA_Pos) /*!< 0x00000001 */\r
-#define SPI_CR1_CPHA SPI_CR1_CPHA_Msk /*!< Clock Phase */\r
-#define SPI_CR1_CPOL_Pos (1U) \r
-#define SPI_CR1_CPOL_Msk (0x1UL << SPI_CR1_CPOL_Pos) /*!< 0x00000002 */\r
-#define SPI_CR1_CPOL SPI_CR1_CPOL_Msk /*!< Clock Polarity */\r
-#define SPI_CR1_MSTR_Pos (2U) \r
-#define SPI_CR1_MSTR_Msk (0x1UL << SPI_CR1_MSTR_Pos) /*!< 0x00000004 */\r
-#define SPI_CR1_MSTR SPI_CR1_MSTR_Msk /*!< Master Selection */\r
-#define SPI_CR1_BR_Pos (3U) \r
-#define SPI_CR1_BR_Msk (0x7UL << SPI_CR1_BR_Pos) /*!< 0x00000038 */\r
-#define SPI_CR1_BR SPI_CR1_BR_Msk /*!< BR[2:0] bits (Baud Rate Control) */\r
-#define SPI_CR1_BR_0 (0x1UL << SPI_CR1_BR_Pos) /*!< 0x00000008 */\r
-#define SPI_CR1_BR_1 (0x2UL << SPI_CR1_BR_Pos) /*!< 0x00000010 */\r
-#define SPI_CR1_BR_2 (0x4UL << SPI_CR1_BR_Pos) /*!< 0x00000020 */\r
-#define SPI_CR1_SPE_Pos (6U) \r
-#define SPI_CR1_SPE_Msk (0x1UL << SPI_CR1_SPE_Pos) /*!< 0x00000040 */\r
-#define SPI_CR1_SPE SPI_CR1_SPE_Msk /*!< SPI Enable */\r
-#define SPI_CR1_LSBFIRST_Pos (7U) \r
-#define SPI_CR1_LSBFIRST_Msk (0x1UL << SPI_CR1_LSBFIRST_Pos) /*!< 0x00000080 */\r
-#define SPI_CR1_LSBFIRST SPI_CR1_LSBFIRST_Msk /*!< Frame Format */\r
-#define SPI_CR1_SSI_Pos (8U) \r
-#define SPI_CR1_SSI_Msk (0x1UL << SPI_CR1_SSI_Pos) /*!< 0x00000100 */\r
-#define SPI_CR1_SSI SPI_CR1_SSI_Msk /*!< Internal slave select */\r
-#define SPI_CR1_SSM_Pos (9U) \r
-#define SPI_CR1_SSM_Msk (0x1UL << SPI_CR1_SSM_Pos) /*!< 0x00000200 */\r
-#define SPI_CR1_SSM SPI_CR1_SSM_Msk /*!< Software slave management */\r
-#define SPI_CR1_RXONLY_Pos (10U) \r
-#define SPI_CR1_RXONLY_Msk (0x1UL << SPI_CR1_RXONLY_Pos) /*!< 0x00000400 */\r
-#define SPI_CR1_RXONLY SPI_CR1_RXONLY_Msk /*!< Receive only */\r
-#define SPI_CR1_CRCL_Pos (11U) \r
-#define SPI_CR1_CRCL_Msk (0x1UL << SPI_CR1_CRCL_Pos) /*!< 0x00000800 */\r
-#define SPI_CR1_CRCL SPI_CR1_CRCL_Msk /*!< CRC Length */\r
-#define SPI_CR1_CRCNEXT_Pos (12U) \r
-#define SPI_CR1_CRCNEXT_Msk (0x1UL << SPI_CR1_CRCNEXT_Pos) /*!< 0x00001000 */\r
-#define SPI_CR1_CRCNEXT SPI_CR1_CRCNEXT_Msk /*!< Transmit CRC next */\r
-#define SPI_CR1_CRCEN_Pos (13U) \r
-#define SPI_CR1_CRCEN_Msk (0x1UL << SPI_CR1_CRCEN_Pos) /*!< 0x00002000 */\r
-#define SPI_CR1_CRCEN SPI_CR1_CRCEN_Msk /*!< Hardware CRC calculation enable */\r
-#define SPI_CR1_BIDIOE_Pos (14U) \r
-#define SPI_CR1_BIDIOE_Msk (0x1UL << SPI_CR1_BIDIOE_Pos) /*!< 0x00004000 */\r
-#define SPI_CR1_BIDIOE SPI_CR1_BIDIOE_Msk /*!< Output enable in bidirectional mode */\r
-#define SPI_CR1_BIDIMODE_Pos (15U) \r
-#define SPI_CR1_BIDIMODE_Msk (0x1UL << SPI_CR1_BIDIMODE_Pos) /*!< 0x00008000 */\r
-#define SPI_CR1_BIDIMODE SPI_CR1_BIDIMODE_Msk /*!< Bidirectional data mode enable */\r
-\r
-/******************* Bit definition for SPI_CR2 register ********************/\r
-#define SPI_CR2_RXDMAEN_Pos (0U) \r
-#define SPI_CR2_RXDMAEN_Msk (0x1UL << SPI_CR2_RXDMAEN_Pos) /*!< 0x00000001 */\r
-#define SPI_CR2_RXDMAEN SPI_CR2_RXDMAEN_Msk /*!< Rx Buffer DMA Enable */\r
-#define SPI_CR2_TXDMAEN_Pos (1U) \r
-#define SPI_CR2_TXDMAEN_Msk (0x1UL << SPI_CR2_TXDMAEN_Pos) /*!< 0x00000002 */\r
-#define SPI_CR2_TXDMAEN SPI_CR2_TXDMAEN_Msk /*!< Tx Buffer DMA Enable */\r
-#define SPI_CR2_SSOE_Pos (2U) \r
-#define SPI_CR2_SSOE_Msk (0x1UL << SPI_CR2_SSOE_Pos) /*!< 0x00000004 */\r
-#define SPI_CR2_SSOE SPI_CR2_SSOE_Msk /*!< SS Output Enable */\r
-#define SPI_CR2_NSSP_Pos (3U) \r
-#define SPI_CR2_NSSP_Msk (0x1UL << SPI_CR2_NSSP_Pos) /*!< 0x00000008 */\r
-#define SPI_CR2_NSSP SPI_CR2_NSSP_Msk /*!< NSS pulse management Enable */\r
-#define SPI_CR2_FRF_Pos (4U) \r
-#define SPI_CR2_FRF_Msk (0x1UL << SPI_CR2_FRF_Pos) /*!< 0x00000010 */\r
-#define SPI_CR2_FRF SPI_CR2_FRF_Msk /*!< Frame Format Enable */\r
-#define SPI_CR2_ERRIE_Pos (5U) \r
-#define SPI_CR2_ERRIE_Msk (0x1UL << SPI_CR2_ERRIE_Pos) /*!< 0x00000020 */\r
-#define SPI_CR2_ERRIE SPI_CR2_ERRIE_Msk /*!< Error Interrupt Enable */\r
-#define SPI_CR2_RXNEIE_Pos (6U) \r
-#define SPI_CR2_RXNEIE_Msk (0x1UL << SPI_CR2_RXNEIE_Pos) /*!< 0x00000040 */\r
-#define SPI_CR2_RXNEIE SPI_CR2_RXNEIE_Msk /*!< RX buffer Not Empty Interrupt Enable */\r
-#define SPI_CR2_TXEIE_Pos (7U) \r
-#define SPI_CR2_TXEIE_Msk (0x1UL << SPI_CR2_TXEIE_Pos) /*!< 0x00000080 */\r
-#define SPI_CR2_TXEIE SPI_CR2_TXEIE_Msk /*!< Tx buffer Empty Interrupt Enable */\r
-#define SPI_CR2_DS_Pos (8U) \r
-#define SPI_CR2_DS_Msk (0xFUL << SPI_CR2_DS_Pos) /*!< 0x00000F00 */\r
-#define SPI_CR2_DS SPI_CR2_DS_Msk /*!< DS[3:0] Data Size */\r
-#define SPI_CR2_DS_0 (0x1UL << SPI_CR2_DS_Pos) /*!< 0x00000100 */\r
-#define SPI_CR2_DS_1 (0x2UL << SPI_CR2_DS_Pos) /*!< 0x00000200 */\r
-#define SPI_CR2_DS_2 (0x4UL << SPI_CR2_DS_Pos) /*!< 0x00000400 */\r
-#define SPI_CR2_DS_3 (0x8UL << SPI_CR2_DS_Pos) /*!< 0x00000800 */\r
-#define SPI_CR2_FRXTH_Pos (12U) \r
-#define SPI_CR2_FRXTH_Msk (0x1UL << SPI_CR2_FRXTH_Pos) /*!< 0x00001000 */\r
-#define SPI_CR2_FRXTH SPI_CR2_FRXTH_Msk /*!< FIFO reception Threshold */\r
-#define SPI_CR2_LDMARX_Pos (13U) \r
-#define SPI_CR2_LDMARX_Msk (0x1UL << SPI_CR2_LDMARX_Pos) /*!< 0x00002000 */\r
-#define SPI_CR2_LDMARX SPI_CR2_LDMARX_Msk /*!< Last DMA transfer for reception */\r
-#define SPI_CR2_LDMATX_Pos (14U) \r
-#define SPI_CR2_LDMATX_Msk (0x1UL << SPI_CR2_LDMATX_Pos) /*!< 0x00004000 */\r
-#define SPI_CR2_LDMATX SPI_CR2_LDMATX_Msk /*!< Last DMA transfer for transmission */\r
-\r
-/******************** Bit definition for SPI_SR register ********************/\r
-#define SPI_SR_RXNE_Pos (0U) \r
-#define SPI_SR_RXNE_Msk (0x1UL << SPI_SR_RXNE_Pos) /*!< 0x00000001 */\r
-#define SPI_SR_RXNE SPI_SR_RXNE_Msk /*!< Receive buffer Not Empty */\r
-#define SPI_SR_TXE_Pos (1U) \r
-#define SPI_SR_TXE_Msk (0x1UL << SPI_SR_TXE_Pos) /*!< 0x00000002 */\r
-#define SPI_SR_TXE SPI_SR_TXE_Msk /*!< Transmit buffer Empty */\r
-#define SPI_SR_CHSIDE_Pos (2U) \r
-#define SPI_SR_CHSIDE_Msk (0x1UL << SPI_SR_CHSIDE_Pos) /*!< 0x00000004 */\r
-#define SPI_SR_CHSIDE SPI_SR_CHSIDE_Msk /*!< Channel side */\r
-#define SPI_SR_UDR_Pos (3U) \r
-#define SPI_SR_UDR_Msk (0x1UL << SPI_SR_UDR_Pos) /*!< 0x00000008 */\r
-#define SPI_SR_UDR SPI_SR_UDR_Msk /*!< Underrun flag */\r
-#define SPI_SR_CRCERR_Pos (4U) \r
-#define SPI_SR_CRCERR_Msk (0x1UL << SPI_SR_CRCERR_Pos) /*!< 0x00000010 */\r
-#define SPI_SR_CRCERR SPI_SR_CRCERR_Msk /*!< CRC Error flag */\r
-#define SPI_SR_MODF_Pos (5U) \r
-#define SPI_SR_MODF_Msk (0x1UL << SPI_SR_MODF_Pos) /*!< 0x00000020 */\r
-#define SPI_SR_MODF SPI_SR_MODF_Msk /*!< Mode fault */\r
-#define SPI_SR_OVR_Pos (6U) \r
-#define SPI_SR_OVR_Msk (0x1UL << SPI_SR_OVR_Pos) /*!< 0x00000040 */\r
-#define SPI_SR_OVR SPI_SR_OVR_Msk /*!< Overrun flag */\r
-#define SPI_SR_BSY_Pos (7U) \r
-#define SPI_SR_BSY_Msk (0x1UL << SPI_SR_BSY_Pos) /*!< 0x00000080 */\r
-#define SPI_SR_BSY SPI_SR_BSY_Msk /*!< Busy flag */\r
-#define SPI_SR_FRE_Pos (8U) \r
-#define SPI_SR_FRE_Msk (0x1UL << SPI_SR_FRE_Pos) /*!< 0x00000100 */\r
-#define SPI_SR_FRE SPI_SR_FRE_Msk /*!< TI frame format error */\r
-#define SPI_SR_FRLVL_Pos (9U) \r
-#define SPI_SR_FRLVL_Msk (0x3UL << SPI_SR_FRLVL_Pos) /*!< 0x00000600 */\r
-#define SPI_SR_FRLVL SPI_SR_FRLVL_Msk /*!< FIFO Reception Level */\r
-#define SPI_SR_FRLVL_0 (0x1UL << SPI_SR_FRLVL_Pos) /*!< 0x00000200 */\r
-#define SPI_SR_FRLVL_1 (0x2UL << SPI_SR_FRLVL_Pos) /*!< 0x00000400 */\r
-#define SPI_SR_FTLVL_Pos (11U) \r
-#define SPI_SR_FTLVL_Msk (0x3UL << SPI_SR_FTLVL_Pos) /*!< 0x00001800 */\r
-#define SPI_SR_FTLVL SPI_SR_FTLVL_Msk /*!< FIFO Transmission Level */\r
-#define SPI_SR_FTLVL_0 (0x1UL << SPI_SR_FTLVL_Pos) /*!< 0x00000800 */\r
-#define SPI_SR_FTLVL_1 (0x2UL << SPI_SR_FTLVL_Pos) /*!< 0x00001000 */\r
-\r
-/******************** Bit definition for SPI_DR register ********************/\r
-#define SPI_DR_DR_Pos (0U) \r
-#define SPI_DR_DR_Msk (0xFFFFUL << SPI_DR_DR_Pos) /*!< 0x0000FFFF */\r
-#define SPI_DR_DR SPI_DR_DR_Msk /*!< Data Register */\r
-\r
-/******************* Bit definition for SPI_CRCPR register ******************/\r
-#define SPI_CRCPR_CRCPOLY_Pos (0U) \r
-#define SPI_CRCPR_CRCPOLY_Msk (0xFFFFUL << SPI_CRCPR_CRCPOLY_Pos) /*!< 0x0000FFFF */\r
-#define SPI_CRCPR_CRCPOLY SPI_CRCPR_CRCPOLY_Msk /*!< CRC polynomial register */\r
-\r
-/****************** Bit definition for SPI_RXCRCR register ******************/\r
-#define SPI_RXCRCR_RXCRC_Pos (0U) \r
-#define SPI_RXCRCR_RXCRC_Msk (0xFFFFUL << SPI_RXCRCR_RXCRC_Pos) /*!< 0x0000FFFF */\r
-#define SPI_RXCRCR_RXCRC SPI_RXCRCR_RXCRC_Msk /*!< Rx CRC Register */\r
-\r
-/****************** Bit definition for SPI_TXCRCR register ******************/\r
-#define SPI_TXCRCR_TXCRC_Pos (0U) \r
-#define SPI_TXCRCR_TXCRC_Msk (0xFFFFUL << SPI_TXCRCR_TXCRC_Pos) /*!< 0x0000FFFF */\r
-#define SPI_TXCRCR_TXCRC SPI_TXCRCR_TXCRC_Msk /*!< Tx CRC Register */\r
-\r
-/****************** Bit definition for SPI_I2SCFGR register *****************/\r
-#define SPI_I2SCFGR_CHLEN_Pos (0U) \r
-#define SPI_I2SCFGR_CHLEN_Msk (0x1UL << SPI_I2SCFGR_CHLEN_Pos) /*!< 0x00000001 */\r
-#define SPI_I2SCFGR_CHLEN SPI_I2SCFGR_CHLEN_Msk /*!<Channel length (number of bits per audio channel) */\r
-#define SPI_I2SCFGR_DATLEN_Pos (1U) \r
-#define SPI_I2SCFGR_DATLEN_Msk (0x3UL << SPI_I2SCFGR_DATLEN_Pos) /*!< 0x00000006 */\r
-#define SPI_I2SCFGR_DATLEN SPI_I2SCFGR_DATLEN_Msk /*!<DATLEN[1:0] bits (Data length to be transferred) */\r
-#define SPI_I2SCFGR_DATLEN_0 (0x1UL << SPI_I2SCFGR_DATLEN_Pos) /*!< 0x00000002 */\r
-#define SPI_I2SCFGR_DATLEN_1 (0x2UL << SPI_I2SCFGR_DATLEN_Pos) /*!< 0x00000004 */\r
-#define SPI_I2SCFGR_CKPOL_Pos (3U) \r
-#define SPI_I2SCFGR_CKPOL_Msk (0x1UL << SPI_I2SCFGR_CKPOL_Pos) /*!< 0x00000008 */\r
-#define SPI_I2SCFGR_CKPOL SPI_I2SCFGR_CKPOL_Msk /*!<steady state clock polarity */\r
-#define SPI_I2SCFGR_I2SSTD_Pos (4U) \r
-#define SPI_I2SCFGR_I2SSTD_Msk (0x3UL << SPI_I2SCFGR_I2SSTD_Pos) /*!< 0x00000030 */\r
-#define SPI_I2SCFGR_I2SSTD SPI_I2SCFGR_I2SSTD_Msk /*!<I2SSTD[1:0] bits (I2S standard selection) */\r
-#define SPI_I2SCFGR_I2SSTD_0 (0x1UL << SPI_I2SCFGR_I2SSTD_Pos) /*!< 0x00000010 */\r
-#define SPI_I2SCFGR_I2SSTD_1 (0x2UL << SPI_I2SCFGR_I2SSTD_Pos) /*!< 0x00000020 */\r
-#define SPI_I2SCFGR_PCMSYNC_Pos (7U) \r
-#define SPI_I2SCFGR_PCMSYNC_Msk (0x1UL << SPI_I2SCFGR_PCMSYNC_Pos) /*!< 0x00000080 */\r
-#define SPI_I2SCFGR_PCMSYNC SPI_I2SCFGR_PCMSYNC_Msk /*!<PCM frame synchronization */\r
-#define SPI_I2SCFGR_I2SCFG_Pos (8U) \r
-#define SPI_I2SCFGR_I2SCFG_Msk (0x3UL << SPI_I2SCFGR_I2SCFG_Pos) /*!< 0x00000300 */\r
-#define SPI_I2SCFGR_I2SCFG SPI_I2SCFGR_I2SCFG_Msk /*!<I2SCFG[1:0] bits (I2S configuration mode) */\r
-#define SPI_I2SCFGR_I2SCFG_0 (0x1UL << SPI_I2SCFGR_I2SCFG_Pos) /*!< 0x00000100 */\r
-#define SPI_I2SCFGR_I2SCFG_1 (0x2UL << SPI_I2SCFGR_I2SCFG_Pos) /*!< 0x00000200 */\r
-#define SPI_I2SCFGR_I2SE_Pos (10U) \r
-#define SPI_I2SCFGR_I2SE_Msk (0x1UL << SPI_I2SCFGR_I2SE_Pos) /*!< 0x00000400 */\r
-#define SPI_I2SCFGR_I2SE SPI_I2SCFGR_I2SE_Msk /*!<I2S Enable */\r
-#define SPI_I2SCFGR_I2SMOD_Pos (11U) \r
-#define SPI_I2SCFGR_I2SMOD_Msk (0x1UL << SPI_I2SCFGR_I2SMOD_Pos) /*!< 0x00000800 */\r
-#define SPI_I2SCFGR_I2SMOD SPI_I2SCFGR_I2SMOD_Msk /*!<I2S mode selection */\r
-#define SPI_I2SCFGR_ASTRTEN_Pos (12U) \r
-#define SPI_I2SCFGR_ASTRTEN_Msk (0x1UL << SPI_I2SCFGR_ASTRTEN_Pos) /*!< 0x00001000 */\r
-#define SPI_I2SCFGR_ASTRTEN SPI_I2SCFGR_ASTRTEN_Msk /*!<Asynchronous start enable */\r
-\r
-/****************** Bit definition for SPI_I2SPR register *******************/\r
-#define SPI_I2SPR_I2SDIV_Pos (0U) \r
-#define SPI_I2SPR_I2SDIV_Msk (0xFFUL << SPI_I2SPR_I2SDIV_Pos) /*!< 0x000000FF */\r
-#define SPI_I2SPR_I2SDIV SPI_I2SPR_I2SDIV_Msk /*!<I2S Linear prescaler */\r
-#define SPI_I2SPR_ODD_Pos (8U) \r
-#define SPI_I2SPR_ODD_Msk (0x1UL << SPI_I2SPR_ODD_Pos) /*!< 0x00000100 */\r
-#define SPI_I2SPR_ODD SPI_I2SPR_ODD_Msk /*!<Odd factor for the prescaler */\r
-#define SPI_I2SPR_MCKOE_Pos (9U) \r
-#define SPI_I2SPR_MCKOE_Msk (0x1UL << SPI_I2SPR_MCKOE_Pos) /*!< 0x00000200 */\r
-#define SPI_I2SPR_MCKOE SPI_I2SPR_MCKOE_Msk /*!<Master Clock Output Enable */\r
-\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* SYSCFG */\r
-/* */\r
-/******************************************************************************/\r
-/****************** Bit definition for SYSCFG_MEMRMP register ***************/\r
-#define SYSCFG_MEMRMP_MEM_BOOT_Pos (0U) \r
-#define SYSCFG_MEMRMP_MEM_BOOT_Msk (0x1UL << SYSCFG_MEMRMP_MEM_BOOT_Pos) /*!< 0x00000001 */\r
-#define SYSCFG_MEMRMP_MEM_BOOT SYSCFG_MEMRMP_MEM_BOOT_Msk /*!< Boot information after Reset */\r
-\r
-#define SYSCFG_MEMRMP_SWP_FB_Pos (8U) \r
-#define SYSCFG_MEMRMP_SWP_FB_Msk (0x1UL << SYSCFG_MEMRMP_SWP_FB_Pos) /*!< 0x00000100 */\r
-#define SYSCFG_MEMRMP_SWP_FB SYSCFG_MEMRMP_SWP_FB_Msk /*!< User Flash Bank swap */\r
-\r
-#define SYSCFG_MEMRMP_SWP_FMC_Pos (10U) \r
-#define SYSCFG_MEMRMP_SWP_FMC_Msk (0x3UL << SYSCFG_MEMRMP_SWP_FMC_Pos) /*!< 0x00000C00 */\r
-#define SYSCFG_MEMRMP_SWP_FMC SYSCFG_MEMRMP_SWP_FMC_Msk /*!< FMC Memory Mapping swapping */\r
-#define SYSCFG_MEMRMP_SWP_FMC_0 (0x1UL << SYSCFG_MEMRMP_SWP_FMC_Pos) /*!< 0x00000400 */\r
-#define SYSCFG_MEMRMP_SWP_FMC_1 (0x2UL << SYSCFG_MEMRMP_SWP_FMC_Pos) /*!< 0x00000800 */\r
-\r
-/****************** Bit definition for SYSCFG_PMC register ******************/\r
-#define SYSCFG_PMC_I2C1_FMP_Pos (0U) \r
-#define SYSCFG_PMC_I2C1_FMP_Msk (0x1UL << SYSCFG_PMC_I2C1_FMP_Pos) /*!< 0x00000001 */\r
-#define SYSCFG_PMC_I2C1_FMP SYSCFG_PMC_I2C1_FMP_Msk /*!< I2C1_FMP I2C1 Fast Mode + Enable */\r
-#define SYSCFG_PMC_I2C2_FMP_Pos (1U) \r
-#define SYSCFG_PMC_I2C2_FMP_Msk (0x1UL << SYSCFG_PMC_I2C2_FMP_Pos) /*!< 0x00000002 */\r
-#define SYSCFG_PMC_I2C2_FMP SYSCFG_PMC_I2C2_FMP_Msk /*!< I2C2_FMP I2C2 Fast Mode + Enable */\r
-#define SYSCFG_PMC_I2C3_FMP_Pos (2U) \r
-#define SYSCFG_PMC_I2C3_FMP_Msk (0x1UL << SYSCFG_PMC_I2C3_FMP_Pos) /*!< 0x00000004 */\r
-#define SYSCFG_PMC_I2C3_FMP SYSCFG_PMC_I2C3_FMP_Msk /*!< I2C3_FMP I2C3 Fast Mode + Enable */\r
-#define SYSCFG_PMC_I2C4_FMP_Pos (3U) \r
-#define SYSCFG_PMC_I2C4_FMP_Msk (0x1UL << SYSCFG_PMC_I2C4_FMP_Pos) /*!< 0x00000008 */\r
-#define SYSCFG_PMC_I2C4_FMP SYSCFG_PMC_I2C4_FMP_Msk /*!< I2C4_FMP I2C4 Fast Mode + Enable */\r
-#define SYSCFG_PMC_I2C_PB6_FMP_Pos (4U) \r
-#define SYSCFG_PMC_I2C_PB6_FMP_Msk (0x1UL << SYSCFG_PMC_I2C_PB6_FMP_Pos) /*!< 0x00000010 */\r
-#define SYSCFG_PMC_I2C_PB6_FMP SYSCFG_PMC_I2C_PB6_FMP_Msk /*!< PB6_FMP Fast Mode + Enable */\r
-#define SYSCFG_PMC_I2C_PB7_FMP_Pos (5U) \r
-#define SYSCFG_PMC_I2C_PB7_FMP_Msk (0x1UL << SYSCFG_PMC_I2C_PB7_FMP_Pos) /*!< 0x00000020 */\r
-#define SYSCFG_PMC_I2C_PB7_FMP SYSCFG_PMC_I2C_PB7_FMP_Msk /*!< PB7_FMP Fast Mode + Enable */\r
-#define SYSCFG_PMC_I2C_PB8_FMP_Pos (6U) \r
-#define SYSCFG_PMC_I2C_PB8_FMP_Msk (0x1UL << SYSCFG_PMC_I2C_PB8_FMP_Pos) /*!< 0x00000040 */\r
-#define SYSCFG_PMC_I2C_PB8_FMP SYSCFG_PMC_I2C_PB8_FMP_Msk /*!< PB8_FMP Fast Mode + Enable */\r
-#define SYSCFG_PMC_I2C_PB9_FMP_Pos (7U) \r
-#define SYSCFG_PMC_I2C_PB9_FMP_Msk (0x1UL << SYSCFG_PMC_I2C_PB9_FMP_Pos) /*!< 0x00000080 */\r
-#define SYSCFG_PMC_I2C_PB9_FMP SYSCFG_PMC_I2C_PB9_FMP_Msk /*!< PB9_FMP Fast Mode + Enable */\r
-\r
-#define SYSCFG_PMC_ADCxDC2_Pos (16U) \r
-#define SYSCFG_PMC_ADCxDC2_Msk (0x7UL << SYSCFG_PMC_ADCxDC2_Pos) /*!< 0x00070000 */\r
-#define SYSCFG_PMC_ADCxDC2 SYSCFG_PMC_ADCxDC2_Msk /*!< Refer to AN4073 on how to use this bit */\r
-#define SYSCFG_PMC_ADC1DC2_Pos (16U) \r
-#define SYSCFG_PMC_ADC1DC2_Msk (0x1UL << SYSCFG_PMC_ADC1DC2_Pos) /*!< 0x00010000 */\r
-#define SYSCFG_PMC_ADC1DC2 SYSCFG_PMC_ADC1DC2_Msk /*!< Refer to AN4073 on how to use this bit */\r
-#define SYSCFG_PMC_ADC2DC2_Pos (17U) \r
-#define SYSCFG_PMC_ADC2DC2_Msk (0x1UL << SYSCFG_PMC_ADC2DC2_Pos) /*!< 0x00020000 */\r
-#define SYSCFG_PMC_ADC2DC2 SYSCFG_PMC_ADC2DC2_Msk /*!< Refer to AN4073 on how to use this bit */\r
-#define SYSCFG_PMC_ADC3DC2_Pos (18U) \r
-#define SYSCFG_PMC_ADC3DC2_Msk (0x1UL << SYSCFG_PMC_ADC3DC2_Pos) /*!< 0x00040000 */\r
-#define SYSCFG_PMC_ADC3DC2 SYSCFG_PMC_ADC3DC2_Msk /*!< Refer to AN4073 on how to use this bit */\r
-\r
-#define SYSCFG_PMC_MII_RMII_SEL_Pos (23U) \r
-#define SYSCFG_PMC_MII_RMII_SEL_Msk (0x1UL << SYSCFG_PMC_MII_RMII_SEL_Pos) /*!< 0x00800000 */\r
-#define SYSCFG_PMC_MII_RMII_SEL SYSCFG_PMC_MII_RMII_SEL_Msk /*!<Ethernet PHY interface selection */\r
-\r
-/***************** Bit definition for SYSCFG_EXTICR1 register ***************/\r
-#define SYSCFG_EXTICR1_EXTI0_Pos (0U) \r
-#define SYSCFG_EXTICR1_EXTI0_Msk (0xFUL << SYSCFG_EXTICR1_EXTI0_Pos) /*!< 0x0000000F */\r
-#define SYSCFG_EXTICR1_EXTI0 SYSCFG_EXTICR1_EXTI0_Msk /*!<EXTI 0 configuration */\r
-#define SYSCFG_EXTICR1_EXTI1_Pos (4U) \r
-#define SYSCFG_EXTICR1_EXTI1_Msk (0xFUL << SYSCFG_EXTICR1_EXTI1_Pos) /*!< 0x000000F0 */\r
-#define SYSCFG_EXTICR1_EXTI1 SYSCFG_EXTICR1_EXTI1_Msk /*!<EXTI 1 configuration */\r
-#define SYSCFG_EXTICR1_EXTI2_Pos (8U) \r
-#define SYSCFG_EXTICR1_EXTI2_Msk (0xFUL << SYSCFG_EXTICR1_EXTI2_Pos) /*!< 0x00000F00 */\r
-#define SYSCFG_EXTICR1_EXTI2 SYSCFG_EXTICR1_EXTI2_Msk /*!<EXTI 2 configuration */\r
-#define SYSCFG_EXTICR1_EXTI3_Pos (12U) \r
-#define SYSCFG_EXTICR1_EXTI3_Msk (0xFUL << SYSCFG_EXTICR1_EXTI3_Pos) /*!< 0x0000F000 */\r
-#define SYSCFG_EXTICR1_EXTI3 SYSCFG_EXTICR1_EXTI3_Msk /*!<EXTI 3 configuration */\r
-/**\r
- * @brief EXTI0 configuration\r
- */\r
-#define SYSCFG_EXTICR1_EXTI0_PA 0x0000U /*!<PA[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PB 0x0001U /*!<PB[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PC 0x0002U /*!<PC[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PD 0x0003U /*!<PD[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PE 0x0004U /*!<PE[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PF 0x0005U /*!<PF[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PG 0x0006U /*!<PG[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PH 0x0007U /*!<PH[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PI 0x0008U /*!<PI[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PJ 0x0009U /*!<PJ[0] pin */\r
-#define SYSCFG_EXTICR1_EXTI0_PK 0x000AU /*!<PK[0] pin */\r
-\r
-/**\r
- * @brief EXTI1 configuration\r
- */\r
-#define SYSCFG_EXTICR1_EXTI1_PA 0x0000U /*!<PA[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PB 0x0010U /*!<PB[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PC 0x0020U /*!<PC[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PD 0x0030U /*!<PD[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PE 0x0040U /*!<PE[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PF 0x0050U /*!<PF[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PG 0x0060U /*!<PG[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PH 0x0070U /*!<PH[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PI 0x0080U /*!<PI[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PJ 0x0090U /*!<PJ[1] pin */\r
-#define SYSCFG_EXTICR1_EXTI1_PK 0x00A0U /*!<PK[1] pin */\r
-\r
-/**\r
- * @brief EXTI2 configuration\r
- */\r
-#define SYSCFG_EXTICR1_EXTI2_PA 0x0000U /*!<PA[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PB 0x0100U /*!<PB[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PC 0x0200U /*!<PC[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PD 0x0300U /*!<PD[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PE 0x0400U /*!<PE[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PF 0x0500U /*!<PF[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PG 0x0600U /*!<PG[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PH 0x0700U /*!<PH[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PI 0x0800U /*!<PI[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PJ 0x0900U /*!<PJ[2] pin */\r
-#define SYSCFG_EXTICR1_EXTI2_PK 0x0A00U /*!<PK[2] pin */\r
-\r
-/**\r
- * @brief EXTI3 configuration\r
- */\r
-#define SYSCFG_EXTICR1_EXTI3_PA 0x0000U /*!<PA[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PB 0x1000U /*!<PB[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PC 0x2000U /*!<PC[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PD 0x3000U /*!<PD[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PE 0x4000U /*!<PE[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PF 0x5000U /*!<PF[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PG 0x6000U /*!<PG[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PH 0x7000U /*!<PH[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PI 0x8000U /*!<PI[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PJ 0x9000U /*!<PJ[3] pin */\r
-#define SYSCFG_EXTICR1_EXTI3_PK 0xA000U /*!<PK[3] pin */\r
-\r
-/***************** Bit definition for SYSCFG_EXTICR2 register ***************/\r
-#define SYSCFG_EXTICR2_EXTI4_Pos (0U) \r
-#define SYSCFG_EXTICR2_EXTI4_Msk (0xFUL << SYSCFG_EXTICR2_EXTI4_Pos) /*!< 0x0000000F */\r
-#define SYSCFG_EXTICR2_EXTI4 SYSCFG_EXTICR2_EXTI4_Msk /*!<EXTI 4 configuration */\r
-#define SYSCFG_EXTICR2_EXTI5_Pos (4U) \r
-#define SYSCFG_EXTICR2_EXTI5_Msk (0xFUL << SYSCFG_EXTICR2_EXTI5_Pos) /*!< 0x000000F0 */\r
-#define SYSCFG_EXTICR2_EXTI5 SYSCFG_EXTICR2_EXTI5_Msk /*!<EXTI 5 configuration */\r
-#define SYSCFG_EXTICR2_EXTI6_Pos (8U) \r
-#define SYSCFG_EXTICR2_EXTI6_Msk (0xFUL << SYSCFG_EXTICR2_EXTI6_Pos) /*!< 0x00000F00 */\r
-#define SYSCFG_EXTICR2_EXTI6 SYSCFG_EXTICR2_EXTI6_Msk /*!<EXTI 6 configuration */\r
-#define SYSCFG_EXTICR2_EXTI7_Pos (12U) \r
-#define SYSCFG_EXTICR2_EXTI7_Msk (0xFUL << SYSCFG_EXTICR2_EXTI7_Pos) /*!< 0x0000F000 */\r
-#define SYSCFG_EXTICR2_EXTI7 SYSCFG_EXTICR2_EXTI7_Msk /*!<EXTI 7 configuration */\r
-/**\r
- * @brief EXTI4 configuration\r
- */\r
-#define SYSCFG_EXTICR2_EXTI4_PA 0x0000U /*!<PA[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PB 0x0001U /*!<PB[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PC 0x0002U /*!<PC[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PD 0x0003U /*!<PD[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PE 0x0004U /*!<PE[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PF 0x0005U /*!<PF[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PG 0x0006U /*!<PG[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PH 0x0007U /*!<PH[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PI 0x0008U /*!<PI[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PJ 0x0009U /*!<PJ[4] pin */\r
-#define SYSCFG_EXTICR2_EXTI4_PK 0x000AU /*!<PK[4] pin */\r
-\r
-/**\r
- * @brief EXTI5 configuration\r
- */\r
-#define SYSCFG_EXTICR2_EXTI5_PA 0x0000U /*!<PA[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PB 0x0010U /*!<PB[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PC 0x0020U /*!<PC[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PD 0x0030U /*!<PD[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PE 0x0040U /*!<PE[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PF 0x0050U /*!<PF[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PG 0x0060U /*!<PG[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PH 0x0070U /*!<PH[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PI 0x0080U /*!<PI[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PJ 0x0090U /*!<PJ[5] pin */\r
-#define SYSCFG_EXTICR2_EXTI5_PK 0x00A0U /*!<PK[5] pin */\r
-\r
-/**\r
- * @brief EXTI6 configuration\r
- */\r
-#define SYSCFG_EXTICR2_EXTI6_PA 0x0000U /*!<PA[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PB 0x0100U /*!<PB[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PC 0x0200U /*!<PC[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PD 0x0300U /*!<PD[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PE 0x0400U /*!<PE[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PF 0x0500U /*!<PF[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PG 0x0600U /*!<PG[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PH 0x0700U /*!<PH[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PI 0x0800U /*!<PI[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PJ 0x0900U /*!<PJ[6] pin */\r
-#define SYSCFG_EXTICR2_EXTI6_PK 0x0A00U /*!<PK[6] pin */\r
-\r
-/**\r
- * @brief EXTI7 configuration\r
- */\r
-#define SYSCFG_EXTICR2_EXTI7_PA 0x0000U /*!<PA[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PB 0x1000U /*!<PB[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PC 0x2000U /*!<PC[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PD 0x3000U /*!<PD[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PE 0x4000U /*!<PE[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PF 0x5000U /*!<PF[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PG 0x6000U /*!<PG[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PH 0x7000U /*!<PH[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PI 0x8000U /*!<PI[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PJ 0x9000U /*!<PJ[7] pin */\r
-#define SYSCFG_EXTICR2_EXTI7_PK 0xA000U /*!<PK[7] pin */\r
-\r
-/***************** Bit definition for SYSCFG_EXTICR3 register ***************/\r
-#define SYSCFG_EXTICR3_EXTI8_Pos (0U) \r
-#define SYSCFG_EXTICR3_EXTI8_Msk (0xFUL << SYSCFG_EXTICR3_EXTI8_Pos) /*!< 0x0000000F */\r
-#define SYSCFG_EXTICR3_EXTI8 SYSCFG_EXTICR3_EXTI8_Msk /*!<EXTI 8 configuration */\r
-#define SYSCFG_EXTICR3_EXTI9_Pos (4U) \r
-#define SYSCFG_EXTICR3_EXTI9_Msk (0xFUL << SYSCFG_EXTICR3_EXTI9_Pos) /*!< 0x000000F0 */\r
-#define SYSCFG_EXTICR3_EXTI9 SYSCFG_EXTICR3_EXTI9_Msk /*!<EXTI 9 configuration */\r
-#define SYSCFG_EXTICR3_EXTI10_Pos (8U) \r
-#define SYSCFG_EXTICR3_EXTI10_Msk (0xFUL << SYSCFG_EXTICR3_EXTI10_Pos) /*!< 0x00000F00 */\r
-#define SYSCFG_EXTICR3_EXTI10 SYSCFG_EXTICR3_EXTI10_Msk /*!<EXTI 10 configuration */\r
-#define SYSCFG_EXTICR3_EXTI11_Pos (12U) \r
-#define SYSCFG_EXTICR3_EXTI11_Msk (0xFUL << SYSCFG_EXTICR3_EXTI11_Pos) /*!< 0x0000F000 */\r
-#define SYSCFG_EXTICR3_EXTI11 SYSCFG_EXTICR3_EXTI11_Msk /*!<EXTI 11 configuration */\r
-\r
-/**\r
- * @brief EXTI8 configuration\r
- */\r
-#define SYSCFG_EXTICR3_EXTI8_PA 0x0000U /*!<PA[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PB 0x0001U /*!<PB[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PC 0x0002U /*!<PC[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PD 0x0003U /*!<PD[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PE 0x0004U /*!<PE[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PF 0x0005U /*!<PF[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PG 0x0006U /*!<PG[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PH 0x0007U /*!<PH[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PI 0x0008U /*!<PI[8] pin */\r
-#define SYSCFG_EXTICR3_EXTI8_PJ 0x0009U /*!<PJ[8] pin */\r
-\r
-/**\r
- * @brief EXTI9 configuration\r
- */\r
-#define SYSCFG_EXTICR3_EXTI9_PA 0x0000U /*!<PA[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PB 0x0010U /*!<PB[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PC 0x0020U /*!<PC[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PD 0x0030U /*!<PD[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PE 0x0040U /*!<PE[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PF 0x0050U /*!<PF[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PG 0x0060U /*!<PG[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PH 0x0070U /*!<PH[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PI 0x0080U /*!<PI[9] pin */\r
-#define SYSCFG_EXTICR3_EXTI9_PJ 0x0090U /*!<PJ[9] pin */\r
-\r
-/**\r
- * @brief EXTI10 configuration\r
- */\r
-#define SYSCFG_EXTICR3_EXTI10_PA 0x0000U /*!<PA[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PB 0x0100U /*!<PB[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PC 0x0200U /*!<PC[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PD 0x0300U /*!<PD[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PE 0x0400U /*!<PE[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PF 0x0500U /*!<PF[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PG 0x0600U /*!<PG[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PH 0x0700U /*!<PH[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PI 0x0800U /*!<PI[10] pin */\r
-#define SYSCFG_EXTICR3_EXTI10_PJ 0x0900U /*!<PJ[10] pin */\r
-\r
-/**\r
- * @brief EXTI11 configuration\r
- */\r
-#define SYSCFG_EXTICR3_EXTI11_PA 0x0000U /*!<PA[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PB 0x1000U /*!<PB[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PC 0x2000U /*!<PC[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PD 0x3000U /*!<PD[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PE 0x4000U /*!<PE[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PF 0x5000U /*!<PF[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PG 0x6000U /*!<PG[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PH 0x7000U /*!<PH[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PI 0x8000U /*!<PI[11] pin */\r
-#define SYSCFG_EXTICR3_EXTI11_PJ 0x9000U /*!<PJ[11] pin */\r
-\r
-\r
-/***************** Bit definition for SYSCFG_EXTICR4 register ***************/\r
-#define SYSCFG_EXTICR4_EXTI12_Pos (0U) \r
-#define SYSCFG_EXTICR4_EXTI12_Msk (0xFUL << SYSCFG_EXTICR4_EXTI12_Pos) /*!< 0x0000000F */\r
-#define SYSCFG_EXTICR4_EXTI12 SYSCFG_EXTICR4_EXTI12_Msk /*!<EXTI 12 configuration */\r
-#define SYSCFG_EXTICR4_EXTI13_Pos (4U) \r
-#define SYSCFG_EXTICR4_EXTI13_Msk (0xFUL << SYSCFG_EXTICR4_EXTI13_Pos) /*!< 0x000000F0 */\r
-#define SYSCFG_EXTICR4_EXTI13 SYSCFG_EXTICR4_EXTI13_Msk /*!<EXTI 13 configuration */\r
-#define SYSCFG_EXTICR4_EXTI14_Pos (8U) \r
-#define SYSCFG_EXTICR4_EXTI14_Msk (0xFUL << SYSCFG_EXTICR4_EXTI14_Pos) /*!< 0x00000F00 */\r
-#define SYSCFG_EXTICR4_EXTI14 SYSCFG_EXTICR4_EXTI14_Msk /*!<EXTI 14 configuration */\r
-#define SYSCFG_EXTICR4_EXTI15_Pos (12U) \r
-#define SYSCFG_EXTICR4_EXTI15_Msk (0xFUL << SYSCFG_EXTICR4_EXTI15_Pos) /*!< 0x0000F000 */\r
-#define SYSCFG_EXTICR4_EXTI15 SYSCFG_EXTICR4_EXTI15_Msk /*!<EXTI 15 configuration */\r
-/**\r
- * @brief EXTI12 configuration\r
- */\r
-#define SYSCFG_EXTICR4_EXTI12_PA 0x0000U /*!<PA[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PB 0x0001U /*!<PB[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PC 0x0002U /*!<PC[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PD 0x0003U /*!<PD[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PE 0x0004U /*!<PE[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PF 0x0005U /*!<PF[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PG 0x0006U /*!<PG[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PH 0x0007U /*!<PH[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PI 0x0008U /*!<PI[12] pin */\r
-#define SYSCFG_EXTICR4_EXTI12_PJ 0x0009U /*!<PJ[12] pin */\r
-\r
-/**\r
- * @brief EXTI13 configuration\r
- */\r
-#define SYSCFG_EXTICR4_EXTI13_PA 0x0000U /*!<PA[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PB 0x0010U /*!<PB[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PC 0x0020U /*!<PC[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PD 0x0030U /*!<PD[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PE 0x0040U /*!<PE[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PF 0x0050U /*!<PF[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PG 0x0060U /*!<PG[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PH 0x0070U /*!<PH[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PI 0x0080U /*!<PI[13] pin */\r
-#define SYSCFG_EXTICR4_EXTI13_PJ 0x0090U /*!<PJ[13] pin */\r
-\r
-/**\r
- * @brief EXTI14 configuration\r
- */\r
-#define SYSCFG_EXTICR4_EXTI14_PA 0x0000U /*!<PA[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PB 0x0100U /*!<PB[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PC 0x0200U /*!<PC[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PD 0x0300U /*!<PD[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PE 0x0400U /*!<PE[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PF 0x0500U /*!<PF[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PG 0x0600U /*!<PG[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PH 0x0700U /*!<PH[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PI 0x0800U /*!<PI[14] pin */\r
-#define SYSCFG_EXTICR4_EXTI14_PJ 0x0900U /*!<PJ[14] pin */\r
-\r
-/**\r
- * @brief EXTI15 configuration\r
- */\r
-#define SYSCFG_EXTICR4_EXTI15_PA 0x0000U /*!<PA[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PB 0x1000U /*!<PB[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PC 0x2000U /*!<PC[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PD 0x3000U /*!<PD[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PE 0x4000U /*!<PE[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PF 0x5000U /*!<PF[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PG 0x6000U /*!<PG[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PH 0x7000U /*!<PH[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PI 0x8000U /*!<PI[15] pin */\r
-#define SYSCFG_EXTICR4_EXTI15_PJ 0x9000U /*!<PJ[15] pin */\r
-\r
-/****************** Bit definition for SYSCFG_CBR register ******************/\r
-#define SYSCFG_CBR_CLL_Pos (0U) \r
-#define SYSCFG_CBR_CLL_Msk (0x1UL << SYSCFG_CBR_CLL_Pos) /*!< 0x00000001 */\r
-#define SYSCFG_CBR_CLL SYSCFG_CBR_CLL_Msk /*!<Core Lockup Lock */\r
-#define SYSCFG_CBR_PVDL_Pos (2U) \r
-#define SYSCFG_CBR_PVDL_Msk (0x1UL << SYSCFG_CBR_PVDL_Pos) /*!< 0x00000004 */\r
-#define SYSCFG_CBR_PVDL SYSCFG_CBR_PVDL_Msk /*!<PVD Lock */\r
-\r
-/****************** Bit definition for SYSCFG_CMPCR register ****************/\r
-#define SYSCFG_CMPCR_CMP_PD_Pos (0U) \r
-#define SYSCFG_CMPCR_CMP_PD_Msk (0x1UL << SYSCFG_CMPCR_CMP_PD_Pos) /*!< 0x00000001 */\r
-#define SYSCFG_CMPCR_CMP_PD SYSCFG_CMPCR_CMP_PD_Msk /*!<Compensation cell power-down */\r
-#define SYSCFG_CMPCR_READY_Pos (8U) \r
-#define SYSCFG_CMPCR_READY_Msk (0x1UL << SYSCFG_CMPCR_READY_Pos) /*!< 0x00000100 */\r
-#define SYSCFG_CMPCR_READY SYSCFG_CMPCR_READY_Msk /*!<Compensation cell ready flag */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* TIM */\r
-/* */\r
-/******************************************************************************/\r
-/*\r
- * @brief Specific device feature definitions (not present on all devices in the STM32F7 serie)\r
- */\r
-#define TIM_BREAK_INPUT_SUPPORT /*!<TIM Break input feature available on specific devices */\r
-/******************* Bit definition for TIM_CR1 register ********************/\r
-#define TIM_CR1_CEN_Pos (0U) \r
-#define TIM_CR1_CEN_Msk (0x1UL << TIM_CR1_CEN_Pos) /*!< 0x00000001 */\r
-#define TIM_CR1_CEN TIM_CR1_CEN_Msk /*!<Counter enable */\r
-#define TIM_CR1_UDIS_Pos (1U) \r
-#define TIM_CR1_UDIS_Msk (0x1UL << TIM_CR1_UDIS_Pos) /*!< 0x00000002 */\r
-#define TIM_CR1_UDIS TIM_CR1_UDIS_Msk /*!<Update disable */\r
-#define TIM_CR1_URS_Pos (2U) \r
-#define TIM_CR1_URS_Msk (0x1UL << TIM_CR1_URS_Pos) /*!< 0x00000004 */\r
-#define TIM_CR1_URS TIM_CR1_URS_Msk /*!<Update request source */\r
-#define TIM_CR1_OPM_Pos (3U) \r
-#define TIM_CR1_OPM_Msk (0x1UL << TIM_CR1_OPM_Pos) /*!< 0x00000008 */\r
-#define TIM_CR1_OPM TIM_CR1_OPM_Msk /*!<One pulse mode */\r
-#define TIM_CR1_DIR_Pos (4U) \r
-#define TIM_CR1_DIR_Msk (0x1UL << TIM_CR1_DIR_Pos) /*!< 0x00000010 */\r
-#define TIM_CR1_DIR TIM_CR1_DIR_Msk /*!<Direction */\r
-\r
-#define TIM_CR1_CMS_Pos (5U) \r
-#define TIM_CR1_CMS_Msk (0x3UL << TIM_CR1_CMS_Pos) /*!< 0x00000060 */\r
-#define TIM_CR1_CMS TIM_CR1_CMS_Msk /*!<CMS[1:0] bits (Center-aligned mode selection) */\r
-#define TIM_CR1_CMS_0 (0x1UL << TIM_CR1_CMS_Pos) /*!< 0x0020 */\r
-#define TIM_CR1_CMS_1 (0x2UL << TIM_CR1_CMS_Pos) /*!< 0x0040 */\r
-\r
-#define TIM_CR1_ARPE_Pos (7U) \r
-#define TIM_CR1_ARPE_Msk (0x1UL << TIM_CR1_ARPE_Pos) /*!< 0x00000080 */\r
-#define TIM_CR1_ARPE TIM_CR1_ARPE_Msk /*!<Auto-reload preload enable */\r
-\r
-#define TIM_CR1_CKD_Pos (8U) \r
-#define TIM_CR1_CKD_Msk (0x3UL << TIM_CR1_CKD_Pos) /*!< 0x00000300 */\r
-#define TIM_CR1_CKD TIM_CR1_CKD_Msk /*!<CKD[1:0] bits (clock division) */\r
-#define TIM_CR1_CKD_0 (0x1UL << TIM_CR1_CKD_Pos) /*!< 0x0100 */\r
-#define TIM_CR1_CKD_1 (0x2UL << TIM_CR1_CKD_Pos) /*!< 0x0200 */\r
-#define TIM_CR1_UIFREMAP_Pos (11U) \r
-#define TIM_CR1_UIFREMAP_Msk (0x1UL << TIM_CR1_UIFREMAP_Pos) /*!< 0x00000800 */\r
-#define TIM_CR1_UIFREMAP TIM_CR1_UIFREMAP_Msk /*!<UIF status bit */\r
-\r
-/******************* Bit definition for TIM_CR2 register ********************/\r
-#define TIM_CR2_CCPC_Pos (0U) \r
-#define TIM_CR2_CCPC_Msk (0x1UL << TIM_CR2_CCPC_Pos) /*!< 0x00000001 */\r
-#define TIM_CR2_CCPC TIM_CR2_CCPC_Msk /*!<Capture/Compare Preloaded Control */\r
-#define TIM_CR2_CCUS_Pos (2U) \r
-#define TIM_CR2_CCUS_Msk (0x1UL << TIM_CR2_CCUS_Pos) /*!< 0x00000004 */\r
-#define TIM_CR2_CCUS TIM_CR2_CCUS_Msk /*!<Capture/Compare Control Update Selection */\r
-#define TIM_CR2_CCDS_Pos (3U) \r
-#define TIM_CR2_CCDS_Msk (0x1UL << TIM_CR2_CCDS_Pos) /*!< 0x00000008 */\r
-#define TIM_CR2_CCDS TIM_CR2_CCDS_Msk /*!<Capture/Compare DMA Selection */\r
-\r
-#define TIM_CR2_OIS5_Pos (16U) \r
-#define TIM_CR2_OIS5_Msk (0x1UL << TIM_CR2_OIS5_Pos) /*!< 0x00010000 */\r
-#define TIM_CR2_OIS5 TIM_CR2_OIS5_Msk /*!<Output Idle state 4 (OC4 output) */\r
-#define TIM_CR2_OIS6_Pos (18U) \r
-#define TIM_CR2_OIS6_Msk (0x1UL << TIM_CR2_OIS6_Pos) /*!< 0x00040000 */\r
-#define TIM_CR2_OIS6 TIM_CR2_OIS6_Msk /*!<Output Idle state 4 (OC4 output) */\r
-\r
-#define TIM_CR2_MMS_Pos (4U) \r
-#define TIM_CR2_MMS_Msk (0x7UL << TIM_CR2_MMS_Pos) /*!< 0x00000070 */\r
-#define TIM_CR2_MMS TIM_CR2_MMS_Msk /*!<MMS[2:0] bits (Master Mode Selection) */\r
-#define TIM_CR2_MMS_0 (0x1UL << TIM_CR2_MMS_Pos) /*!< 0x0010 */\r
-#define TIM_CR2_MMS_1 (0x2UL << TIM_CR2_MMS_Pos) /*!< 0x0020 */\r
-#define TIM_CR2_MMS_2 (0x4UL << TIM_CR2_MMS_Pos) /*!< 0x0040 */\r
-\r
-#define TIM_CR2_MMS2_Pos (20U) \r
-#define TIM_CR2_MMS2_Msk (0xFUL << TIM_CR2_MMS2_Pos) /*!< 0x00F00000 */\r
-#define TIM_CR2_MMS2 TIM_CR2_MMS2_Msk /*!<MMS[2:0] bits (Master Mode Selection) */\r
-#define TIM_CR2_MMS2_0 (0x1UL << TIM_CR2_MMS2_Pos) /*!< 0x00100000 */\r
-#define TIM_CR2_MMS2_1 (0x2UL << TIM_CR2_MMS2_Pos) /*!< 0x00200000 */\r
-#define TIM_CR2_MMS2_2 (0x4UL << TIM_CR2_MMS2_Pos) /*!< 0x00400000 */\r
-#define TIM_CR2_MMS2_3 (0x8UL << TIM_CR2_MMS2_Pos) /*!< 0x00800000 */\r
-\r
-#define TIM_CR2_TI1S_Pos (7U) \r
-#define TIM_CR2_TI1S_Msk (0x1UL << TIM_CR2_TI1S_Pos) /*!< 0x00000080 */\r
-#define TIM_CR2_TI1S TIM_CR2_TI1S_Msk /*!<TI1 Selection */\r
-#define TIM_CR2_OIS1_Pos (8U) \r
-#define TIM_CR2_OIS1_Msk (0x1UL << TIM_CR2_OIS1_Pos) /*!< 0x00000100 */\r
-#define TIM_CR2_OIS1 TIM_CR2_OIS1_Msk /*!<Output Idle state 1 (OC1 output) */\r
-#define TIM_CR2_OIS1N_Pos (9U) \r
-#define TIM_CR2_OIS1N_Msk (0x1UL << TIM_CR2_OIS1N_Pos) /*!< 0x00000200 */\r
-#define TIM_CR2_OIS1N TIM_CR2_OIS1N_Msk /*!<Output Idle state 1 (OC1N output) */\r
-#define TIM_CR2_OIS2_Pos (10U) \r
-#define TIM_CR2_OIS2_Msk (0x1UL << TIM_CR2_OIS2_Pos) /*!< 0x00000400 */\r
-#define TIM_CR2_OIS2 TIM_CR2_OIS2_Msk /*!<Output Idle state 2 (OC2 output) */\r
-#define TIM_CR2_OIS2N_Pos (11U) \r
-#define TIM_CR2_OIS2N_Msk (0x1UL << TIM_CR2_OIS2N_Pos) /*!< 0x00000800 */\r
-#define TIM_CR2_OIS2N TIM_CR2_OIS2N_Msk /*!<Output Idle state 2 (OC2N output) */\r
-#define TIM_CR2_OIS3_Pos (12U) \r
-#define TIM_CR2_OIS3_Msk (0x1UL << TIM_CR2_OIS3_Pos) /*!< 0x00001000 */\r
-#define TIM_CR2_OIS3 TIM_CR2_OIS3_Msk /*!<Output Idle state 3 (OC3 output) */\r
-#define TIM_CR2_OIS3N_Pos (13U) \r
-#define TIM_CR2_OIS3N_Msk (0x1UL << TIM_CR2_OIS3N_Pos) /*!< 0x00002000 */\r
-#define TIM_CR2_OIS3N TIM_CR2_OIS3N_Msk /*!<Output Idle state 3 (OC3N output) */\r
-#define TIM_CR2_OIS4_Pos (14U) \r
-#define TIM_CR2_OIS4_Msk (0x1UL << TIM_CR2_OIS4_Pos) /*!< 0x00004000 */\r
-#define TIM_CR2_OIS4 TIM_CR2_OIS4_Msk /*!<Output Idle state 4 (OC4 output) */\r
-\r
-/******************* Bit definition for TIM_SMCR register *******************/\r
-#define TIM_SMCR_SMS_Pos (0U) \r
-#define TIM_SMCR_SMS_Msk (0x10007UL << TIM_SMCR_SMS_Pos) /*!< 0x00010007 */\r
-#define TIM_SMCR_SMS TIM_SMCR_SMS_Msk /*!<SMS[2:0] bits (Slave mode selection) */\r
-#define TIM_SMCR_SMS_0 (0x00001UL << TIM_SMCR_SMS_Pos) /*!< 0x00000001 */\r
-#define TIM_SMCR_SMS_1 (0x00002UL << TIM_SMCR_SMS_Pos) /*!< 0x00000002 */\r
-#define TIM_SMCR_SMS_2 (0x00004UL << TIM_SMCR_SMS_Pos) /*!< 0x00000004 */\r
-#define TIM_SMCR_SMS_3 (0x10000UL << TIM_SMCR_SMS_Pos) /*!< 0x00010000 */\r
-\r
-#define TIM_SMCR_TS_Pos (4U) \r
-#define TIM_SMCR_TS_Msk (0x7UL << TIM_SMCR_TS_Pos) /*!< 0x00000070 */\r
-#define TIM_SMCR_TS TIM_SMCR_TS_Msk /*!<TS[2:0] bits (Trigger selection) */\r
-#define TIM_SMCR_TS_0 (0x1UL << TIM_SMCR_TS_Pos) /*!< 0x0010 */\r
-#define TIM_SMCR_TS_1 (0x2UL << TIM_SMCR_TS_Pos) /*!< 0x0020 */\r
-#define TIM_SMCR_TS_2 (0x4UL << TIM_SMCR_TS_Pos) /*!< 0x0040 */\r
-\r
-#define TIM_SMCR_MSM_Pos (7U) \r
-#define TIM_SMCR_MSM_Msk (0x1UL << TIM_SMCR_MSM_Pos) /*!< 0x00000080 */\r
-#define TIM_SMCR_MSM TIM_SMCR_MSM_Msk /*!<Master/slave mode */\r
-\r
-#define TIM_SMCR_ETF_Pos (8U) \r
-#define TIM_SMCR_ETF_Msk (0xFUL << TIM_SMCR_ETF_Pos) /*!< 0x00000F00 */\r
-#define TIM_SMCR_ETF TIM_SMCR_ETF_Msk /*!<ETF[3:0] bits (External trigger filter) */\r
-#define TIM_SMCR_ETF_0 (0x1UL << TIM_SMCR_ETF_Pos) /*!< 0x0100 */\r
-#define TIM_SMCR_ETF_1 (0x2UL << TIM_SMCR_ETF_Pos) /*!< 0x0200 */\r
-#define TIM_SMCR_ETF_2 (0x4UL << TIM_SMCR_ETF_Pos) /*!< 0x0400 */\r
-#define TIM_SMCR_ETF_3 (0x8UL << TIM_SMCR_ETF_Pos) /*!< 0x0800 */\r
-\r
-#define TIM_SMCR_ETPS_Pos (12U) \r
-#define TIM_SMCR_ETPS_Msk (0x3UL << TIM_SMCR_ETPS_Pos) /*!< 0x00003000 */\r
-#define TIM_SMCR_ETPS TIM_SMCR_ETPS_Msk /*!<ETPS[1:0] bits (External trigger prescaler) */\r
-#define TIM_SMCR_ETPS_0 (0x1UL << TIM_SMCR_ETPS_Pos) /*!< 0x1000 */\r
-#define TIM_SMCR_ETPS_1 (0x2UL << TIM_SMCR_ETPS_Pos) /*!< 0x2000 */\r
-\r
-#define TIM_SMCR_ECE_Pos (14U) \r
-#define TIM_SMCR_ECE_Msk (0x1UL << TIM_SMCR_ECE_Pos) /*!< 0x00004000 */\r
-#define TIM_SMCR_ECE TIM_SMCR_ECE_Msk /*!<External clock enable */\r
-#define TIM_SMCR_ETP_Pos (15U) \r
-#define TIM_SMCR_ETP_Msk (0x1UL << TIM_SMCR_ETP_Pos) /*!< 0x00008000 */\r
-#define TIM_SMCR_ETP TIM_SMCR_ETP_Msk /*!<External trigger polarity */\r
-\r
-/******************* Bit definition for TIM_DIER register *******************/\r
-#define TIM_DIER_UIE_Pos (0U) \r
-#define TIM_DIER_UIE_Msk (0x1UL << TIM_DIER_UIE_Pos) /*!< 0x00000001 */\r
-#define TIM_DIER_UIE TIM_DIER_UIE_Msk /*!<Update interrupt enable */\r
-#define TIM_DIER_CC1IE_Pos (1U) \r
-#define TIM_DIER_CC1IE_Msk (0x1UL << TIM_DIER_CC1IE_Pos) /*!< 0x00000002 */\r
-#define TIM_DIER_CC1IE TIM_DIER_CC1IE_Msk /*!<Capture/Compare 1 interrupt enable */\r
-#define TIM_DIER_CC2IE_Pos (2U) \r
-#define TIM_DIER_CC2IE_Msk (0x1UL << TIM_DIER_CC2IE_Pos) /*!< 0x00000004 */\r
-#define TIM_DIER_CC2IE TIM_DIER_CC2IE_Msk /*!<Capture/Compare 2 interrupt enable */\r
-#define TIM_DIER_CC3IE_Pos (3U) \r
-#define TIM_DIER_CC3IE_Msk (0x1UL << TIM_DIER_CC3IE_Pos) /*!< 0x00000008 */\r
-#define TIM_DIER_CC3IE TIM_DIER_CC3IE_Msk /*!<Capture/Compare 3 interrupt enable */\r
-#define TIM_DIER_CC4IE_Pos (4U) \r
-#define TIM_DIER_CC4IE_Msk (0x1UL << TIM_DIER_CC4IE_Pos) /*!< 0x00000010 */\r
-#define TIM_DIER_CC4IE TIM_DIER_CC4IE_Msk /*!<Capture/Compare 4 interrupt enable */\r
-#define TIM_DIER_COMIE_Pos (5U) \r
-#define TIM_DIER_COMIE_Msk (0x1UL << TIM_DIER_COMIE_Pos) /*!< 0x00000020 */\r
-#define TIM_DIER_COMIE TIM_DIER_COMIE_Msk /*!<COM interrupt enable */\r
-#define TIM_DIER_TIE_Pos (6U) \r
-#define TIM_DIER_TIE_Msk (0x1UL << TIM_DIER_TIE_Pos) /*!< 0x00000040 */\r
-#define TIM_DIER_TIE TIM_DIER_TIE_Msk /*!<Trigger interrupt enable */\r
-#define TIM_DIER_BIE_Pos (7U) \r
-#define TIM_DIER_BIE_Msk (0x1UL << TIM_DIER_BIE_Pos) /*!< 0x00000080 */\r
-#define TIM_DIER_BIE TIM_DIER_BIE_Msk /*!<Break interrupt enable */\r
-#define TIM_DIER_UDE_Pos (8U) \r
-#define TIM_DIER_UDE_Msk (0x1UL << TIM_DIER_UDE_Pos) /*!< 0x00000100 */\r
-#define TIM_DIER_UDE TIM_DIER_UDE_Msk /*!<Update DMA request enable */\r
-#define TIM_DIER_CC1DE_Pos (9U) \r
-#define TIM_DIER_CC1DE_Msk (0x1UL << TIM_DIER_CC1DE_Pos) /*!< 0x00000200 */\r
-#define TIM_DIER_CC1DE TIM_DIER_CC1DE_Msk /*!<Capture/Compare 1 DMA request enable */\r
-#define TIM_DIER_CC2DE_Pos (10U) \r
-#define TIM_DIER_CC2DE_Msk (0x1UL << TIM_DIER_CC2DE_Pos) /*!< 0x00000400 */\r
-#define TIM_DIER_CC2DE TIM_DIER_CC2DE_Msk /*!<Capture/Compare 2 DMA request enable */\r
-#define TIM_DIER_CC3DE_Pos (11U) \r
-#define TIM_DIER_CC3DE_Msk (0x1UL << TIM_DIER_CC3DE_Pos) /*!< 0x00000800 */\r
-#define TIM_DIER_CC3DE TIM_DIER_CC3DE_Msk /*!<Capture/Compare 3 DMA request enable */\r
-#define TIM_DIER_CC4DE_Pos (12U) \r
-#define TIM_DIER_CC4DE_Msk (0x1UL << TIM_DIER_CC4DE_Pos) /*!< 0x00001000 */\r
-#define TIM_DIER_CC4DE TIM_DIER_CC4DE_Msk /*!<Capture/Compare 4 DMA request enable */\r
-#define TIM_DIER_COMDE_Pos (13U) \r
-#define TIM_DIER_COMDE_Msk (0x1UL << TIM_DIER_COMDE_Pos) /*!< 0x00002000 */\r
-#define TIM_DIER_COMDE TIM_DIER_COMDE_Msk /*!<COM DMA request enable */\r
-#define TIM_DIER_TDE_Pos (14U) \r
-#define TIM_DIER_TDE_Msk (0x1UL << TIM_DIER_TDE_Pos) /*!< 0x00004000 */\r
-#define TIM_DIER_TDE TIM_DIER_TDE_Msk /*!<Trigger DMA request enable */\r
-\r
-/******************** Bit definition for TIM_SR register ********************/\r
-#define TIM_SR_UIF_Pos (0U) \r
-#define TIM_SR_UIF_Msk (0x1UL << TIM_SR_UIF_Pos) /*!< 0x00000001 */\r
-#define TIM_SR_UIF TIM_SR_UIF_Msk /*!<Update interrupt Flag */\r
-#define TIM_SR_CC1IF_Pos (1U) \r
-#define TIM_SR_CC1IF_Msk (0x1UL << TIM_SR_CC1IF_Pos) /*!< 0x00000002 */\r
-#define TIM_SR_CC1IF TIM_SR_CC1IF_Msk /*!<Capture/Compare 1 interrupt Flag */\r
-#define TIM_SR_CC2IF_Pos (2U) \r
-#define TIM_SR_CC2IF_Msk (0x1UL << TIM_SR_CC2IF_Pos) /*!< 0x00000004 */\r
-#define TIM_SR_CC2IF TIM_SR_CC2IF_Msk /*!<Capture/Compare 2 interrupt Flag */\r
-#define TIM_SR_CC3IF_Pos (3U) \r
-#define TIM_SR_CC3IF_Msk (0x1UL << TIM_SR_CC3IF_Pos) /*!< 0x00000008 */\r
-#define TIM_SR_CC3IF TIM_SR_CC3IF_Msk /*!<Capture/Compare 3 interrupt Flag */\r
-#define TIM_SR_CC4IF_Pos (4U) \r
-#define TIM_SR_CC4IF_Msk (0x1UL << TIM_SR_CC4IF_Pos) /*!< 0x00000010 */\r
-#define TIM_SR_CC4IF TIM_SR_CC4IF_Msk /*!<Capture/Compare 4 interrupt Flag */\r
-#define TIM_SR_COMIF_Pos (5U) \r
-#define TIM_SR_COMIF_Msk (0x1UL << TIM_SR_COMIF_Pos) /*!< 0x00000020 */\r
-#define TIM_SR_COMIF TIM_SR_COMIF_Msk /*!<COM interrupt Flag */\r
-#define TIM_SR_TIF_Pos (6U) \r
-#define TIM_SR_TIF_Msk (0x1UL << TIM_SR_TIF_Pos) /*!< 0x00000040 */\r
-#define TIM_SR_TIF TIM_SR_TIF_Msk /*!<Trigger interrupt Flag */\r
-#define TIM_SR_BIF_Pos (7U) \r
-#define TIM_SR_BIF_Msk (0x1UL << TIM_SR_BIF_Pos) /*!< 0x00000080 */\r
-#define TIM_SR_BIF TIM_SR_BIF_Msk /*!<Break interrupt Flag */\r
-#define TIM_SR_B2IF_Pos (8U) \r
-#define TIM_SR_B2IF_Msk (0x1UL << TIM_SR_B2IF_Pos) /*!< 0x00000100 */\r
-#define TIM_SR_B2IF TIM_SR_B2IF_Msk /*!<Break2 interrupt Flag */\r
-#define TIM_SR_CC1OF_Pos (9U) \r
-#define TIM_SR_CC1OF_Msk (0x1UL << TIM_SR_CC1OF_Pos) /*!< 0x00000200 */\r
-#define TIM_SR_CC1OF TIM_SR_CC1OF_Msk /*!<Capture/Compare 1 Overcapture Flag */\r
-#define TIM_SR_CC2OF_Pos (10U) \r
-#define TIM_SR_CC2OF_Msk (0x1UL << TIM_SR_CC2OF_Pos) /*!< 0x00000400 */\r
-#define TIM_SR_CC2OF TIM_SR_CC2OF_Msk /*!<Capture/Compare 2 Overcapture Flag */\r
-#define TIM_SR_CC3OF_Pos (11U) \r
-#define TIM_SR_CC3OF_Msk (0x1UL << TIM_SR_CC3OF_Pos) /*!< 0x00000800 */\r
-#define TIM_SR_CC3OF TIM_SR_CC3OF_Msk /*!<Capture/Compare 3 Overcapture Flag */\r
-#define TIM_SR_CC4OF_Pos (12U) \r
-#define TIM_SR_CC4OF_Msk (0x1UL << TIM_SR_CC4OF_Pos) /*!< 0x00001000 */\r
-#define TIM_SR_CC4OF TIM_SR_CC4OF_Msk /*!<Capture/Compare 4 Overcapture Flag */\r
-#define TIM_SR_SBIF_Pos (13U) \r
-#define TIM_SR_SBIF_Msk (0x1UL << TIM_SR_SBIF_Pos) /*!< 0x00002000 */\r
-#define TIM_SR_SBIF TIM_SR_SBIF_Msk /*!<System Break interrupt Flag */\r
-#define TIM_SR_CC5IF_Pos (16U) \r
-#define TIM_SR_CC5IF_Msk (0x1UL << TIM_SR_CC5IF_Pos) /*!< 0x00010000 */\r
-#define TIM_SR_CC5IF TIM_SR_CC5IF_Msk /*!<Capture/Compare 5 interrupt Flag */\r
-#define TIM_SR_CC6IF_Pos (17U) \r
-#define TIM_SR_CC6IF_Msk (0x1UL << TIM_SR_CC6IF_Pos) /*!< 0x00020000 */\r
-#define TIM_SR_CC6IF TIM_SR_CC6IF_Msk /*!<Capture/Compare 6 interrupt Flag */\r
-\r
-/******************* Bit definition for TIM_EGR register ********************/\r
-#define TIM_EGR_UG_Pos (0U) \r
-#define TIM_EGR_UG_Msk (0x1UL << TIM_EGR_UG_Pos) /*!< 0x00000001 */\r
-#define TIM_EGR_UG TIM_EGR_UG_Msk /*!<Update Generation */\r
-#define TIM_EGR_CC1G_Pos (1U) \r
-#define TIM_EGR_CC1G_Msk (0x1UL << TIM_EGR_CC1G_Pos) /*!< 0x00000002 */\r
-#define TIM_EGR_CC1G TIM_EGR_CC1G_Msk /*!<Capture/Compare 1 Generation */\r
-#define TIM_EGR_CC2G_Pos (2U) \r
-#define TIM_EGR_CC2G_Msk (0x1UL << TIM_EGR_CC2G_Pos) /*!< 0x00000004 */\r
-#define TIM_EGR_CC2G TIM_EGR_CC2G_Msk /*!<Capture/Compare 2 Generation */\r
-#define TIM_EGR_CC3G_Pos (3U) \r
-#define TIM_EGR_CC3G_Msk (0x1UL << TIM_EGR_CC3G_Pos) /*!< 0x00000008 */\r
-#define TIM_EGR_CC3G TIM_EGR_CC3G_Msk /*!<Capture/Compare 3 Generation */\r
-#define TIM_EGR_CC4G_Pos (4U) \r
-#define TIM_EGR_CC4G_Msk (0x1UL << TIM_EGR_CC4G_Pos) /*!< 0x00000010 */\r
-#define TIM_EGR_CC4G TIM_EGR_CC4G_Msk /*!<Capture/Compare 4 Generation */\r
-#define TIM_EGR_COMG_Pos (5U) \r
-#define TIM_EGR_COMG_Msk (0x1UL << TIM_EGR_COMG_Pos) /*!< 0x00000020 */\r
-#define TIM_EGR_COMG TIM_EGR_COMG_Msk /*!<Capture/Compare Control Update Generation */\r
-#define TIM_EGR_TG_Pos (6U) \r
-#define TIM_EGR_TG_Msk (0x1UL << TIM_EGR_TG_Pos) /*!< 0x00000040 */\r
-#define TIM_EGR_TG TIM_EGR_TG_Msk /*!<Trigger Generation */\r
-#define TIM_EGR_BG_Pos (7U) \r
-#define TIM_EGR_BG_Msk (0x1UL << TIM_EGR_BG_Pos) /*!< 0x00000080 */\r
-#define TIM_EGR_BG TIM_EGR_BG_Msk /*!<Break Generation */\r
-#define TIM_EGR_B2G_Pos (8U) \r
-#define TIM_EGR_B2G_Msk (0x1UL << TIM_EGR_B2G_Pos) /*!< 0x00000100 */\r
-#define TIM_EGR_B2G TIM_EGR_B2G_Msk /*!<Break2 Generation */\r
-\r
-/****************** Bit definition for TIM_CCMR1 register *******************/\r
-#define TIM_CCMR1_CC1S_Pos (0U) \r
-#define TIM_CCMR1_CC1S_Msk (0x3UL << TIM_CCMR1_CC1S_Pos) /*!< 0x00000003 */\r
-#define TIM_CCMR1_CC1S TIM_CCMR1_CC1S_Msk /*!<CC1S[1:0] bits (Capture/Compare 1 Selection) */\r
-#define TIM_CCMR1_CC1S_0 (0x1UL << TIM_CCMR1_CC1S_Pos) /*!< 0x00000001 */\r
-#define TIM_CCMR1_CC1S_1 (0x2UL << TIM_CCMR1_CC1S_Pos) /*!< 0x00000002 */\r
-\r
-#define TIM_CCMR1_OC1FE_Pos (2U) \r
-#define TIM_CCMR1_OC1FE_Msk (0x1UL << TIM_CCMR1_OC1FE_Pos) /*!< 0x00000004 */\r
-#define TIM_CCMR1_OC1FE TIM_CCMR1_OC1FE_Msk /*!<Output Compare 1 Fast enable */\r
-#define TIM_CCMR1_OC1PE_Pos (3U) \r
-#define TIM_CCMR1_OC1PE_Msk (0x1UL << TIM_CCMR1_OC1PE_Pos) /*!< 0x00000008 */\r
-#define TIM_CCMR1_OC1PE TIM_CCMR1_OC1PE_Msk /*!<Output Compare 1 Preload enable */\r
-\r
-#define TIM_CCMR1_OC1M_Pos (4U) \r
-#define TIM_CCMR1_OC1M_Msk (0x1007UL << TIM_CCMR1_OC1M_Pos) /*!< 0x00010070 */\r
-#define TIM_CCMR1_OC1M TIM_CCMR1_OC1M_Msk /*!<OC1M[2:0] bits (Output Compare 1 Mode) */\r
-#define TIM_CCMR1_OC1M_0 (0x0001UL << TIM_CCMR1_OC1M_Pos) /*!< 0x00000010 */\r
-#define TIM_CCMR1_OC1M_1 (0x0002UL << TIM_CCMR1_OC1M_Pos) /*!< 0x00000020 */\r
-#define TIM_CCMR1_OC1M_2 (0x0004UL << TIM_CCMR1_OC1M_Pos) /*!< 0x00000040 */\r
-#define TIM_CCMR1_OC1M_3 (0x1000UL << TIM_CCMR1_OC1M_Pos) /*!< 0x00010000 */\r
-\r
-#define TIM_CCMR1_OC1CE_Pos (7U) \r
-#define TIM_CCMR1_OC1CE_Msk (0x1UL << TIM_CCMR1_OC1CE_Pos) /*!< 0x00000080 */\r
-#define TIM_CCMR1_OC1CE TIM_CCMR1_OC1CE_Msk /*!<Output Compare 1Clear Enable */\r
-\r
-#define TIM_CCMR1_CC2S_Pos (8U) \r
-#define TIM_CCMR1_CC2S_Msk (0x3UL << TIM_CCMR1_CC2S_Pos) /*!< 0x00000300 */\r
-#define TIM_CCMR1_CC2S TIM_CCMR1_CC2S_Msk /*!<CC2S[1:0] bits (Capture/Compare 2 Selection) */\r
-#define TIM_CCMR1_CC2S_0 (0x1UL << TIM_CCMR1_CC2S_Pos) /*!< 0x00000100 */\r
-#define TIM_CCMR1_CC2S_1 (0x2UL << TIM_CCMR1_CC2S_Pos) /*!< 0x00000200 */\r
-\r
-#define TIM_CCMR1_OC2FE_Pos (10U) \r
-#define TIM_CCMR1_OC2FE_Msk (0x1UL << TIM_CCMR1_OC2FE_Pos) /*!< 0x00000400 */\r
-#define TIM_CCMR1_OC2FE TIM_CCMR1_OC2FE_Msk /*!<Output Compare 2 Fast enable */\r
-#define TIM_CCMR1_OC2PE_Pos (11U) \r
-#define TIM_CCMR1_OC2PE_Msk (0x1UL << TIM_CCMR1_OC2PE_Pos) /*!< 0x00000800 */\r
-#define TIM_CCMR1_OC2PE TIM_CCMR1_OC2PE_Msk /*!<Output Compare 2 Preload enable */\r
-\r
-#define TIM_CCMR1_OC2M_Pos (12U) \r
-#define TIM_CCMR1_OC2M_Msk (0x1007UL << TIM_CCMR1_OC2M_Pos) /*!< 0x01007000 */\r
-#define TIM_CCMR1_OC2M TIM_CCMR1_OC2M_Msk /*!<OC2M[2:0] bits (Output Compare 2 Mode) */\r
-#define TIM_CCMR1_OC2M_0 (0x0001UL << TIM_CCMR1_OC2M_Pos) /*!< 0x00001000 */\r
-#define TIM_CCMR1_OC2M_1 (0x0002UL << TIM_CCMR1_OC2M_Pos) /*!< 0x00002000 */\r
-#define TIM_CCMR1_OC2M_2 (0x0004UL << TIM_CCMR1_OC2M_Pos) /*!< 0x00004000 */\r
-#define TIM_CCMR1_OC2M_3 (0x1000UL << TIM_CCMR1_OC2M_Pos) /*!< 0x01000000 */\r
-\r
-#define TIM_CCMR1_OC2CE_Pos (15U) \r
-#define TIM_CCMR1_OC2CE_Msk (0x1UL << TIM_CCMR1_OC2CE_Pos) /*!< 0x00008000 */\r
-#define TIM_CCMR1_OC2CE TIM_CCMR1_OC2CE_Msk /*!<Output Compare 2 Clear Enable */\r
-\r
-/*----------------------------------------------------------------------------*/\r
-\r
-#define TIM_CCMR1_IC1PSC_Pos (2U) \r
-#define TIM_CCMR1_IC1PSC_Msk (0x3UL << TIM_CCMR1_IC1PSC_Pos) /*!< 0x0000000C */\r
-#define TIM_CCMR1_IC1PSC TIM_CCMR1_IC1PSC_Msk /*!<IC1PSC[1:0] bits (Input Capture 1 Prescaler) */\r
-#define TIM_CCMR1_IC1PSC_0 (0x1UL << TIM_CCMR1_IC1PSC_Pos) /*!< 0x0004 */\r
-#define TIM_CCMR1_IC1PSC_1 (0x2UL << TIM_CCMR1_IC1PSC_Pos) /*!< 0x0008 */\r
-\r
-#define TIM_CCMR1_IC1F_Pos (4U) \r
-#define TIM_CCMR1_IC1F_Msk (0xFUL << TIM_CCMR1_IC1F_Pos) /*!< 0x000000F0 */\r
-#define TIM_CCMR1_IC1F TIM_CCMR1_IC1F_Msk /*!<IC1F[3:0] bits (Input Capture 1 Filter) */\r
-#define TIM_CCMR1_IC1F_0 (0x1UL << TIM_CCMR1_IC1F_Pos) /*!< 0x0010 */\r
-#define TIM_CCMR1_IC1F_1 (0x2UL << TIM_CCMR1_IC1F_Pos) /*!< 0x0020 */\r
-#define TIM_CCMR1_IC1F_2 (0x4UL << TIM_CCMR1_IC1F_Pos) /*!< 0x0040 */\r
-#define TIM_CCMR1_IC1F_3 (0x8UL << TIM_CCMR1_IC1F_Pos) /*!< 0x0080 */\r
-\r
-#define TIM_CCMR1_IC2PSC_Pos (10U) \r
-#define TIM_CCMR1_IC2PSC_Msk (0x3UL << TIM_CCMR1_IC2PSC_Pos) /*!< 0x00000C00 */\r
-#define TIM_CCMR1_IC2PSC TIM_CCMR1_IC2PSC_Msk /*!<IC2PSC[1:0] bits (Input Capture 2 Prescaler) */\r
-#define TIM_CCMR1_IC2PSC_0 (0x1UL << TIM_CCMR1_IC2PSC_Pos) /*!< 0x0400 */\r
-#define TIM_CCMR1_IC2PSC_1 (0x2UL << TIM_CCMR1_IC2PSC_Pos) /*!< 0x0800 */\r
-\r
-#define TIM_CCMR1_IC2F_Pos (12U) \r
-#define TIM_CCMR1_IC2F_Msk (0xFUL << TIM_CCMR1_IC2F_Pos) /*!< 0x0000F000 */\r
-#define TIM_CCMR1_IC2F TIM_CCMR1_IC2F_Msk /*!<IC2F[3:0] bits (Input Capture 2 Filter) */\r
-#define TIM_CCMR1_IC2F_0 (0x1UL << TIM_CCMR1_IC2F_Pos) /*!< 0x1000 */\r
-#define TIM_CCMR1_IC2F_1 (0x2UL << TIM_CCMR1_IC2F_Pos) /*!< 0x2000 */\r
-#define TIM_CCMR1_IC2F_2 (0x4UL << TIM_CCMR1_IC2F_Pos) /*!< 0x4000 */\r
-#define TIM_CCMR1_IC2F_3 (0x8UL << TIM_CCMR1_IC2F_Pos) /*!< 0x8000 */\r
-\r
-/****************** Bit definition for TIM_CCMR2 register *******************/\r
-#define TIM_CCMR2_CC3S_Pos (0U) \r
-#define TIM_CCMR2_CC3S_Msk (0x3UL << TIM_CCMR2_CC3S_Pos) /*!< 0x00000003 */\r
-#define TIM_CCMR2_CC3S TIM_CCMR2_CC3S_Msk /*!<CC3S[1:0] bits (Capture/Compare 3 Selection) */\r
-#define TIM_CCMR2_CC3S_0 (0x1UL << TIM_CCMR2_CC3S_Pos) /*!< 0x00000001 */\r
-#define TIM_CCMR2_CC3S_1 (0x2UL << TIM_CCMR2_CC3S_Pos) /*!< 0x00000002 */\r
-\r
-#define TIM_CCMR2_OC3FE_Pos (2U) \r
-#define TIM_CCMR2_OC3FE_Msk (0x1UL << TIM_CCMR2_OC3FE_Pos) /*!< 0x00000004 */\r
-#define TIM_CCMR2_OC3FE TIM_CCMR2_OC3FE_Msk /*!<Output Compare 3 Fast enable */\r
-#define TIM_CCMR2_OC3PE_Pos (3U) \r
-#define TIM_CCMR2_OC3PE_Msk (0x1UL << TIM_CCMR2_OC3PE_Pos) /*!< 0x00000008 */\r
-#define TIM_CCMR2_OC3PE TIM_CCMR2_OC3PE_Msk /*!<Output Compare 3 Preload enable */\r
-\r
-#define TIM_CCMR2_OC3M_Pos (4U) \r
-#define TIM_CCMR2_OC3M_Msk (0x1007UL << TIM_CCMR2_OC3M_Pos) /*!< 0x00010070 */\r
-#define TIM_CCMR2_OC3M TIM_CCMR2_OC3M_Msk /*!<OC3M[2:0] bits (Output Compare 3 Mode) */\r
-#define TIM_CCMR2_OC3M_0 (0x0001UL << TIM_CCMR2_OC3M_Pos) /*!< 0x00000010 */\r
-#define TIM_CCMR2_OC3M_1 (0x0002UL << TIM_CCMR2_OC3M_Pos) /*!< 0x00000020 */\r
-#define TIM_CCMR2_OC3M_2 (0x0004UL << TIM_CCMR2_OC3M_Pos) /*!< 0x00000040 */\r
-#define TIM_CCMR2_OC3M_3 (0x1000UL << TIM_CCMR2_OC3M_Pos) /*!< 0x00010000 */\r
-\r
-\r
-\r
-#define TIM_CCMR2_OC3CE_Pos (7U) \r
-#define TIM_CCMR2_OC3CE_Msk (0x1UL << TIM_CCMR2_OC3CE_Pos) /*!< 0x00000080 */\r
-#define TIM_CCMR2_OC3CE TIM_CCMR2_OC3CE_Msk /*!<Output Compare 3 Clear Enable */\r
-\r
-#define TIM_CCMR2_CC4S_Pos (8U) \r
-#define TIM_CCMR2_CC4S_Msk (0x3UL << TIM_CCMR2_CC4S_Pos) /*!< 0x00000300 */\r
-#define TIM_CCMR2_CC4S TIM_CCMR2_CC4S_Msk /*!<CC4S[1:0] bits (Capture/Compare 4 Selection) */\r
-#define TIM_CCMR2_CC4S_0 (0x1UL << TIM_CCMR2_CC4S_Pos) /*!< 0x00000100 */\r
-#define TIM_CCMR2_CC4S_1 (0x2UL << TIM_CCMR2_CC4S_Pos) /*!< 0x00000200 */\r
-\r
-#define TIM_CCMR2_OC4FE_Pos (10U) \r
-#define TIM_CCMR2_OC4FE_Msk (0x1UL << TIM_CCMR2_OC4FE_Pos) /*!< 0x00000400 */\r
-#define TIM_CCMR2_OC4FE TIM_CCMR2_OC4FE_Msk /*!<Output Compare 4 Fast enable */\r
-#define TIM_CCMR2_OC4PE_Pos (11U) \r
-#define TIM_CCMR2_OC4PE_Msk (0x1UL << TIM_CCMR2_OC4PE_Pos) /*!< 0x00000800 */\r
-#define TIM_CCMR2_OC4PE TIM_CCMR2_OC4PE_Msk /*!<Output Compare 4 Preload enable */\r
-\r
-#define TIM_CCMR2_OC4M_Pos (12U) \r
-#define TIM_CCMR2_OC4M_Msk (0x1007UL << TIM_CCMR2_OC4M_Pos) /*!< 0x01007000 */\r
-#define TIM_CCMR2_OC4M TIM_CCMR2_OC4M_Msk /*!<OC4M[2:0] bits (Output Compare 4 Mode) */\r
-#define TIM_CCMR2_OC4M_0 (0x0001UL << TIM_CCMR2_OC4M_Pos) /*!< 0x00001000 */\r
-#define TIM_CCMR2_OC4M_1 (0x0002UL << TIM_CCMR2_OC4M_Pos) /*!< 0x00002000 */\r
-#define TIM_CCMR2_OC4M_2 (0x0004UL << TIM_CCMR2_OC4M_Pos) /*!< 0x00004000 */\r
-#define TIM_CCMR2_OC4M_3 (0x1000UL << TIM_CCMR2_OC4M_Pos) /*!< 0x01000000 */\r
-\r
-#define TIM_CCMR2_OC4CE_Pos (15U) \r
-#define TIM_CCMR2_OC4CE_Msk (0x1UL << TIM_CCMR2_OC4CE_Pos) /*!< 0x00008000 */\r
-#define TIM_CCMR2_OC4CE TIM_CCMR2_OC4CE_Msk /*!<Output Compare 4 Clear Enable */\r
-\r
-/*----------------------------------------------------------------------------*/\r
-\r
-#define TIM_CCMR2_IC3PSC_Pos (2U) \r
-#define TIM_CCMR2_IC3PSC_Msk (0x3UL << TIM_CCMR2_IC3PSC_Pos) /*!< 0x0000000C */\r
-#define TIM_CCMR2_IC3PSC TIM_CCMR2_IC3PSC_Msk /*!<IC3PSC[1:0] bits (Input Capture 3 Prescaler) */\r
-#define TIM_CCMR2_IC3PSC_0 (0x1UL << TIM_CCMR2_IC3PSC_Pos) /*!< 0x0004 */\r
-#define TIM_CCMR2_IC3PSC_1 (0x2UL << TIM_CCMR2_IC3PSC_Pos) /*!< 0x0008 */\r
-\r
-#define TIM_CCMR2_IC3F_Pos (4U) \r
-#define TIM_CCMR2_IC3F_Msk (0xFUL << TIM_CCMR2_IC3F_Pos) /*!< 0x000000F0 */\r
-#define TIM_CCMR2_IC3F TIM_CCMR2_IC3F_Msk /*!<IC3F[3:0] bits (Input Capture 3 Filter) */\r
-#define TIM_CCMR2_IC3F_0 (0x1UL << TIM_CCMR2_IC3F_Pos) /*!< 0x0010 */\r
-#define TIM_CCMR2_IC3F_1 (0x2UL << TIM_CCMR2_IC3F_Pos) /*!< 0x0020 */\r
-#define TIM_CCMR2_IC3F_2 (0x4UL << TIM_CCMR2_IC3F_Pos) /*!< 0x0040 */\r
-#define TIM_CCMR2_IC3F_3 (0x8UL << TIM_CCMR2_IC3F_Pos) /*!< 0x0080 */\r
-\r
-#define TIM_CCMR2_IC4PSC_Pos (10U) \r
-#define TIM_CCMR2_IC4PSC_Msk (0x3UL << TIM_CCMR2_IC4PSC_Pos) /*!< 0x00000C00 */\r
-#define TIM_CCMR2_IC4PSC TIM_CCMR2_IC4PSC_Msk /*!<IC4PSC[1:0] bits (Input Capture 4 Prescaler) */\r
-#define TIM_CCMR2_IC4PSC_0 (0x1UL << TIM_CCMR2_IC4PSC_Pos) /*!< 0x0400 */\r
-#define TIM_CCMR2_IC4PSC_1 (0x2UL << TIM_CCMR2_IC4PSC_Pos) /*!< 0x0800 */\r
-\r
-#define TIM_CCMR2_IC4F_Pos (12U) \r
-#define TIM_CCMR2_IC4F_Msk (0xFUL << TIM_CCMR2_IC4F_Pos) /*!< 0x0000F000 */\r
-#define TIM_CCMR2_IC4F TIM_CCMR2_IC4F_Msk /*!<IC4F[3:0] bits (Input Capture 4 Filter) */\r
-#define TIM_CCMR2_IC4F_0 (0x1UL << TIM_CCMR2_IC4F_Pos) /*!< 0x1000 */\r
-#define TIM_CCMR2_IC4F_1 (0x2UL << TIM_CCMR2_IC4F_Pos) /*!< 0x2000 */\r
-#define TIM_CCMR2_IC4F_2 (0x4UL << TIM_CCMR2_IC4F_Pos) /*!< 0x4000 */\r
-#define TIM_CCMR2_IC4F_3 (0x8UL << TIM_CCMR2_IC4F_Pos) /*!< 0x8000 */\r
-\r
-/******************* Bit definition for TIM_CCER register *******************/\r
-#define TIM_CCER_CC1E_Pos (0U) \r
-#define TIM_CCER_CC1E_Msk (0x1UL << TIM_CCER_CC1E_Pos) /*!< 0x00000001 */\r
-#define TIM_CCER_CC1E TIM_CCER_CC1E_Msk /*!<Capture/Compare 1 output enable */\r
-#define TIM_CCER_CC1P_Pos (1U) \r
-#define TIM_CCER_CC1P_Msk (0x1UL << TIM_CCER_CC1P_Pos) /*!< 0x00000002 */\r
-#define TIM_CCER_CC1P TIM_CCER_CC1P_Msk /*!<Capture/Compare 1 output Polarity */\r
-#define TIM_CCER_CC1NE_Pos (2U) \r
-#define TIM_CCER_CC1NE_Msk (0x1UL << TIM_CCER_CC1NE_Pos) /*!< 0x00000004 */\r
-#define TIM_CCER_CC1NE TIM_CCER_CC1NE_Msk /*!<Capture/Compare 1 Complementary output enable */\r
-#define TIM_CCER_CC1NP_Pos (3U) \r
-#define TIM_CCER_CC1NP_Msk (0x1UL << TIM_CCER_CC1NP_Pos) /*!< 0x00000008 */\r
-#define TIM_CCER_CC1NP TIM_CCER_CC1NP_Msk /*!<Capture/Compare 1 Complementary output Polarity */\r
-#define TIM_CCER_CC2E_Pos (4U) \r
-#define TIM_CCER_CC2E_Msk (0x1UL << TIM_CCER_CC2E_Pos) /*!< 0x00000010 */\r
-#define TIM_CCER_CC2E TIM_CCER_CC2E_Msk /*!<Capture/Compare 2 output enable */\r
-#define TIM_CCER_CC2P_Pos (5U) \r
-#define TIM_CCER_CC2P_Msk (0x1UL << TIM_CCER_CC2P_Pos) /*!< 0x00000020 */\r
-#define TIM_CCER_CC2P TIM_CCER_CC2P_Msk /*!<Capture/Compare 2 output Polarity */\r
-#define TIM_CCER_CC2NE_Pos (6U) \r
-#define TIM_CCER_CC2NE_Msk (0x1UL << TIM_CCER_CC2NE_Pos) /*!< 0x00000040 */\r
-#define TIM_CCER_CC2NE TIM_CCER_CC2NE_Msk /*!<Capture/Compare 2 Complementary output enable */\r
-#define TIM_CCER_CC2NP_Pos (7U) \r
-#define TIM_CCER_CC2NP_Msk (0x1UL << TIM_CCER_CC2NP_Pos) /*!< 0x00000080 */\r
-#define TIM_CCER_CC2NP TIM_CCER_CC2NP_Msk /*!<Capture/Compare 2 Complementary output Polarity */\r
-#define TIM_CCER_CC3E_Pos (8U) \r
-#define TIM_CCER_CC3E_Msk (0x1UL << TIM_CCER_CC3E_Pos) /*!< 0x00000100 */\r
-#define TIM_CCER_CC3E TIM_CCER_CC3E_Msk /*!<Capture/Compare 3 output enable */\r
-#define TIM_CCER_CC3P_Pos (9U) \r
-#define TIM_CCER_CC3P_Msk (0x1UL << TIM_CCER_CC3P_Pos) /*!< 0x00000200 */\r
-#define TIM_CCER_CC3P TIM_CCER_CC3P_Msk /*!<Capture/Compare 3 output Polarity */\r
-#define TIM_CCER_CC3NE_Pos (10U) \r
-#define TIM_CCER_CC3NE_Msk (0x1UL << TIM_CCER_CC3NE_Pos) /*!< 0x00000400 */\r
-#define TIM_CCER_CC3NE TIM_CCER_CC3NE_Msk /*!<Capture/Compare 3 Complementary output enable */\r
-#define TIM_CCER_CC3NP_Pos (11U) \r
-#define TIM_CCER_CC3NP_Msk (0x1UL << TIM_CCER_CC3NP_Pos) /*!< 0x00000800 */\r
-#define TIM_CCER_CC3NP TIM_CCER_CC3NP_Msk /*!<Capture/Compare 3 Complementary output Polarity */\r
-#define TIM_CCER_CC4E_Pos (12U) \r
-#define TIM_CCER_CC4E_Msk (0x1UL << TIM_CCER_CC4E_Pos) /*!< 0x00001000 */\r
-#define TIM_CCER_CC4E TIM_CCER_CC4E_Msk /*!<Capture/Compare 4 output enable */\r
-#define TIM_CCER_CC4P_Pos (13U) \r
-#define TIM_CCER_CC4P_Msk (0x1UL << TIM_CCER_CC4P_Pos) /*!< 0x00002000 */\r
-#define TIM_CCER_CC4P TIM_CCER_CC4P_Msk /*!<Capture/Compare 4 output Polarity */\r
-#define TIM_CCER_CC4NP_Pos (15U) \r
-#define TIM_CCER_CC4NP_Msk (0x1UL << TIM_CCER_CC4NP_Pos) /*!< 0x00008000 */\r
-#define TIM_CCER_CC4NP TIM_CCER_CC4NP_Msk /*!<Capture/Compare 4 Complementary output Polarity */\r
-#define TIM_CCER_CC5E_Pos (16U) \r
-#define TIM_CCER_CC5E_Msk (0x1UL << TIM_CCER_CC5E_Pos) /*!< 0x00010000 */\r
-#define TIM_CCER_CC5E TIM_CCER_CC5E_Msk /*!<Capture/Compare 5 output enable */\r
-#define TIM_CCER_CC5P_Pos (17U) \r
-#define TIM_CCER_CC5P_Msk (0x1UL << TIM_CCER_CC5P_Pos) /*!< 0x00020000 */\r
-#define TIM_CCER_CC5P TIM_CCER_CC5P_Msk /*!<Capture/Compare 5 output Polarity */\r
-#define TIM_CCER_CC6E_Pos (20U) \r
-#define TIM_CCER_CC6E_Msk (0x1UL << TIM_CCER_CC6E_Pos) /*!< 0x00100000 */\r
-#define TIM_CCER_CC6E TIM_CCER_CC6E_Msk /*!<Capture/Compare 6 output enable */\r
-#define TIM_CCER_CC6P_Pos (21U) \r
-#define TIM_CCER_CC6P_Msk (0x1UL << TIM_CCER_CC6P_Pos) /*!< 0x00200000 */\r
-#define TIM_CCER_CC6P TIM_CCER_CC6P_Msk /*!<Capture/Compare 6 output Polarity */\r
-\r
-\r
-/******************* Bit definition for TIM_CNT register ********************/\r
-#define TIM_CNT_CNT_Pos (0U) \r
-#define TIM_CNT_CNT_Msk (0xFFFFFFFFUL << TIM_CNT_CNT_Pos) /*!< 0xFFFFFFFF */\r
-#define TIM_CNT_CNT TIM_CNT_CNT_Msk /*!<Counter Value */\r
-#define TIM_CNT_UIFCPY_Pos (31U) \r
-#define TIM_CNT_UIFCPY_Msk (0x1UL << TIM_CNT_UIFCPY_Pos) /*!< 0x80000000 */\r
-#define TIM_CNT_UIFCPY TIM_CNT_UIFCPY_Msk /*!<Update interrupt flag copy (if UIFREMAP=1) */\r
-\r
-/******************* Bit definition for TIM_PSC register ********************/\r
-#define TIM_PSC_PSC_Pos (0U) \r
-#define TIM_PSC_PSC_Msk (0xFFFFUL << TIM_PSC_PSC_Pos) /*!< 0x0000FFFF */\r
-#define TIM_PSC_PSC TIM_PSC_PSC_Msk /*!<Prescaler Value */\r
-\r
-/******************* Bit definition for TIM_ARR register ********************/\r
-#define TIM_ARR_ARR_Pos (0U) \r
-#define TIM_ARR_ARR_Msk (0xFFFFFFFFUL << TIM_ARR_ARR_Pos) /*!< 0xFFFFFFFF */\r
-#define TIM_ARR_ARR TIM_ARR_ARR_Msk /*!<actual auto-reload Value */\r
-\r
-/******************* Bit definition for TIM_RCR register ********************/\r
-#define TIM_RCR_REP_Pos (0U) \r
-#define TIM_RCR_REP_Msk (0xFFFFUL << TIM_RCR_REP_Pos) /*!< 0x0000FFFF */\r
-#define TIM_RCR_REP TIM_RCR_REP_Msk /*!<Repetition Counter Value */\r
-\r
-/******************* Bit definition for TIM_CCR1 register *******************/\r
-#define TIM_CCR1_CCR1_Pos (0U) \r
-#define TIM_CCR1_CCR1_Msk (0xFFFFUL << TIM_CCR1_CCR1_Pos) /*!< 0x0000FFFF */\r
-#define TIM_CCR1_CCR1 TIM_CCR1_CCR1_Msk /*!<Capture/Compare 1 Value */\r
-\r
-/******************* Bit definition for TIM_CCR2 register *******************/\r
-#define TIM_CCR2_CCR2_Pos (0U) \r
-#define TIM_CCR2_CCR2_Msk (0xFFFFUL << TIM_CCR2_CCR2_Pos) /*!< 0x0000FFFF */\r
-#define TIM_CCR2_CCR2 TIM_CCR2_CCR2_Msk /*!<Capture/Compare 2 Value */\r
-\r
-/******************* Bit definition for TIM_CCR3 register *******************/\r
-#define TIM_CCR3_CCR3_Pos (0U) \r
-#define TIM_CCR3_CCR3_Msk (0xFFFFUL << TIM_CCR3_CCR3_Pos) /*!< 0x0000FFFF */\r
-#define TIM_CCR3_CCR3 TIM_CCR3_CCR3_Msk /*!<Capture/Compare 3 Value */\r
-\r
-/******************* Bit definition for TIM_CCR4 register *******************/\r
-#define TIM_CCR4_CCR4_Pos (0U) \r
-#define TIM_CCR4_CCR4_Msk (0xFFFFUL << TIM_CCR4_CCR4_Pos) /*!< 0x0000FFFF */\r
-#define TIM_CCR4_CCR4 TIM_CCR4_CCR4_Msk /*!<Capture/Compare 4 Value */\r
-\r
-/******************* Bit definition for TIM_BDTR register *******************/\r
-#define TIM_BDTR_DTG_Pos (0U) \r
-#define TIM_BDTR_DTG_Msk (0xFFUL << TIM_BDTR_DTG_Pos) /*!< 0x000000FF */\r
-#define TIM_BDTR_DTG TIM_BDTR_DTG_Msk /*!<DTG[0:7] bits (Dead-Time Generator set-up) */\r
-#define TIM_BDTR_DTG_0 (0x01UL << TIM_BDTR_DTG_Pos) /*!< 0x00000001 */\r
-#define TIM_BDTR_DTG_1 (0x02UL << TIM_BDTR_DTG_Pos) /*!< 0x00000002 */\r
-#define TIM_BDTR_DTG_2 (0x04UL << TIM_BDTR_DTG_Pos) /*!< 0x00000004 */\r
-#define TIM_BDTR_DTG_3 (0x08UL << TIM_BDTR_DTG_Pos) /*!< 0x00000008 */\r
-#define TIM_BDTR_DTG_4 (0x10UL << TIM_BDTR_DTG_Pos) /*!< 0x00000010 */\r
-#define TIM_BDTR_DTG_5 (0x20UL << TIM_BDTR_DTG_Pos) /*!< 0x00000020 */\r
-#define TIM_BDTR_DTG_6 (0x40UL << TIM_BDTR_DTG_Pos) /*!< 0x00000040 */\r
-#define TIM_BDTR_DTG_7 (0x80UL << TIM_BDTR_DTG_Pos) /*!< 0x00000080 */\r
-\r
-#define TIM_BDTR_LOCK_Pos (8U) \r
-#define TIM_BDTR_LOCK_Msk (0x3UL << TIM_BDTR_LOCK_Pos) /*!< 0x00000300 */\r
-#define TIM_BDTR_LOCK TIM_BDTR_LOCK_Msk /*!<LOCK[1:0] bits (Lock Configuration) */\r
-#define TIM_BDTR_LOCK_0 (0x1UL << TIM_BDTR_LOCK_Pos) /*!< 0x00000100 */\r
-#define TIM_BDTR_LOCK_1 (0x2UL << TIM_BDTR_LOCK_Pos) /*!< 0x00000200 */\r
-\r
-#define TIM_BDTR_OSSI_Pos (10U) \r
-#define TIM_BDTR_OSSI_Msk (0x1UL << TIM_BDTR_OSSI_Pos) /*!< 0x00000400 */\r
-#define TIM_BDTR_OSSI TIM_BDTR_OSSI_Msk /*!<Off-State Selection for Idle mode */\r
-#define TIM_BDTR_OSSR_Pos (11U) \r
-#define TIM_BDTR_OSSR_Msk (0x1UL << TIM_BDTR_OSSR_Pos) /*!< 0x00000800 */\r
-#define TIM_BDTR_OSSR TIM_BDTR_OSSR_Msk /*!<Off-State Selection for Run mode */\r
-#define TIM_BDTR_BKE_Pos (12U) \r
-#define TIM_BDTR_BKE_Msk (0x1UL << TIM_BDTR_BKE_Pos) /*!< 0x00001000 */\r
-#define TIM_BDTR_BKE TIM_BDTR_BKE_Msk /*!<Break enable */\r
-#define TIM_BDTR_BKP_Pos (13U) \r
-#define TIM_BDTR_BKP_Msk (0x1UL << TIM_BDTR_BKP_Pos) /*!< 0x00002000 */\r
-#define TIM_BDTR_BKP TIM_BDTR_BKP_Msk /*!<Break Polarity */\r
-#define TIM_BDTR_AOE_Pos (14U) \r
-#define TIM_BDTR_AOE_Msk (0x1UL << TIM_BDTR_AOE_Pos) /*!< 0x00004000 */\r
-#define TIM_BDTR_AOE TIM_BDTR_AOE_Msk /*!<Automatic Output enable */\r
-#define TIM_BDTR_MOE_Pos (15U) \r
-#define TIM_BDTR_MOE_Msk (0x1UL << TIM_BDTR_MOE_Pos) /*!< 0x00008000 */\r
-#define TIM_BDTR_MOE TIM_BDTR_MOE_Msk /*!<Main Output enable */\r
-#define TIM_BDTR_BKF_Pos (16U) \r
-#define TIM_BDTR_BKF_Msk (0xFUL << TIM_BDTR_BKF_Pos) /*!< 0x000F0000 */\r
-#define TIM_BDTR_BKF TIM_BDTR_BKF_Msk /*!<Break Filter for Break1 */\r
-#define TIM_BDTR_BK2F_Pos (20U) \r
-#define TIM_BDTR_BK2F_Msk (0xFUL << TIM_BDTR_BK2F_Pos) /*!< 0x00F00000 */\r
-#define TIM_BDTR_BK2F TIM_BDTR_BK2F_Msk /*!<Break Filter for Break2 */\r
-#define TIM_BDTR_BK2E_Pos (24U) \r
-#define TIM_BDTR_BK2E_Msk (0x1UL << TIM_BDTR_BK2E_Pos) /*!< 0x01000000 */\r
-#define TIM_BDTR_BK2E TIM_BDTR_BK2E_Msk /*!<Break enable for Break2 */\r
-#define TIM_BDTR_BK2P_Pos (25U) \r
-#define TIM_BDTR_BK2P_Msk (0x1UL << TIM_BDTR_BK2P_Pos) /*!< 0x02000000 */\r
-#define TIM_BDTR_BK2P TIM_BDTR_BK2P_Msk /*!<Break Polarity for Break2 */\r
-\r
-/******************* Bit definition for TIM_DCR register ********************/\r
-#define TIM_DCR_DBA_Pos (0U) \r
-#define TIM_DCR_DBA_Msk (0x1FUL << TIM_DCR_DBA_Pos) /*!< 0x0000001F */\r
-#define TIM_DCR_DBA TIM_DCR_DBA_Msk /*!<DBA[4:0] bits (DMA Base Address) */\r
-#define TIM_DCR_DBA_0 (0x01UL << TIM_DCR_DBA_Pos) /*!< 0x0001 */\r
-#define TIM_DCR_DBA_1 (0x02UL << TIM_DCR_DBA_Pos) /*!< 0x0002 */\r
-#define TIM_DCR_DBA_2 (0x04UL << TIM_DCR_DBA_Pos) /*!< 0x0004 */\r
-#define TIM_DCR_DBA_3 (0x08UL << TIM_DCR_DBA_Pos) /*!< 0x0008 */\r
-#define TIM_DCR_DBA_4 (0x10UL << TIM_DCR_DBA_Pos) /*!< 0x0010 */\r
-\r
-#define TIM_DCR_DBL_Pos (8U) \r
-#define TIM_DCR_DBL_Msk (0x1FUL << TIM_DCR_DBL_Pos) /*!< 0x00001F00 */\r
-#define TIM_DCR_DBL TIM_DCR_DBL_Msk /*!<DBL[4:0] bits (DMA Burst Length) */\r
-#define TIM_DCR_DBL_0 (0x01UL << TIM_DCR_DBL_Pos) /*!< 0x0100 */\r
-#define TIM_DCR_DBL_1 (0x02UL << TIM_DCR_DBL_Pos) /*!< 0x0200 */\r
-#define TIM_DCR_DBL_2 (0x04UL << TIM_DCR_DBL_Pos) /*!< 0x0400 */\r
-#define TIM_DCR_DBL_3 (0x08UL << TIM_DCR_DBL_Pos) /*!< 0x0800 */\r
-#define TIM_DCR_DBL_4 (0x10UL << TIM_DCR_DBL_Pos) /*!< 0x1000 */\r
-\r
-/******************* Bit definition for TIM_DMAR register *******************/\r
-#define TIM_DMAR_DMAB_Pos (0U) \r
-#define TIM_DMAR_DMAB_Msk (0xFFFFUL << TIM_DMAR_DMAB_Pos) /*!< 0x0000FFFF */\r
-#define TIM_DMAR_DMAB TIM_DMAR_DMAB_Msk /*!<DMA register for burst accesses */\r
-\r
-/******************* Bit definition for TIM_OR regiter *********************/\r
-#define TIM_OR_TI4_RMP_Pos (6U) \r
-#define TIM_OR_TI4_RMP_Msk (0x3UL << TIM_OR_TI4_RMP_Pos) /*!< 0x000000C0 */\r
-#define TIM_OR_TI4_RMP TIM_OR_TI4_RMP_Msk /*!<TI4_RMP[1:0] bits (TIM5 Input 4 remap) */\r
-#define TIM_OR_TI4_RMP_0 (0x1UL << TIM_OR_TI4_RMP_Pos) /*!< 0x0040 */\r
-#define TIM_OR_TI4_RMP_1 (0x2UL << TIM_OR_TI4_RMP_Pos) /*!< 0x0080 */\r
-#define TIM_OR_ITR1_RMP_Pos (10U) \r
-#define TIM_OR_ITR1_RMP_Msk (0x3UL << TIM_OR_ITR1_RMP_Pos) /*!< 0x00000C00 */\r
-#define TIM_OR_ITR1_RMP TIM_OR_ITR1_RMP_Msk /*!<ITR1_RMP[1:0] bits (TIM2 Internal trigger 1 remap) */\r
-#define TIM_OR_ITR1_RMP_0 (0x1UL << TIM_OR_ITR1_RMP_Pos) /*!< 0x0400 */\r
-#define TIM_OR_ITR1_RMP_1 (0x2UL << TIM_OR_ITR1_RMP_Pos) /*!< 0x0800 */\r
-\r
-/******************* Bit definition for TIM2_OR register *******************/\r
-#define TIM2_OR_ITR1_RMP_Pos (10U) \r
-#define TIM2_OR_ITR1_RMP_Msk (0x3UL << TIM2_OR_ITR1_RMP_Pos) /*!< 0x00000C00 */\r
-#define TIM2_OR_ITR1_RMP TIM2_OR_ITR1_RMP_Msk /*!<TIM2 Internal trigger 1 remap */\r
-#define TIM2_OR_ITR1_RMP_0 (0x1UL << TIM2_OR_ITR1_RMP_Pos) /*!< 0x00000400 */\r
-#define TIM2_OR_ITR1_RMP_1 (0x2UL << TIM2_OR_ITR1_RMP_Pos) /*!< 0x00000800 */\r
-\r
-/******************* Bit definition for TIM5_OR register *******************/\r
-#define TIM5_OR_TI4_RMP_Pos (6U) \r
-#define TIM5_OR_TI4_RMP_Msk (0x3UL << TIM5_OR_TI4_RMP_Pos) /*!< 0x000000C0 */\r
-#define TIM5_OR_TI4_RMP TIM5_OR_TI4_RMP_Msk /*!<TI4_RMP[1:0] bits (TIM5 Input Capture 4 remap) */\r
-#define TIM5_OR_TI4_RMP_0 (0x1UL << TIM5_OR_TI4_RMP_Pos) /*!< 0x00000040 */\r
-#define TIM5_OR_TI4_RMP_1 (0x2UL << TIM5_OR_TI4_RMP_Pos) /*!< 0x00000080 */\r
-\r
-/******************* Bit definition for TIM11_OR register *******************/\r
-#define TIM11_OR_TI1_RMP_Pos (0U) \r
-#define TIM11_OR_TI1_RMP_Msk (0x3UL << TIM11_OR_TI1_RMP_Pos) /*!< 0x00000003 */\r
-#define TIM11_OR_TI1_RMP TIM11_OR_TI1_RMP_Msk /*!<TI1_RMP[1:0] bits (TIM11 Input Capture 1 remap) */\r
-#define TIM11_OR_TI1_RMP_0 (0x1UL << TIM11_OR_TI1_RMP_Pos) /*!< 0x00000001 */\r
-#define TIM11_OR_TI1_RMP_1 (0x2UL << TIM11_OR_TI1_RMP_Pos) /*!< 0x00000002 */\r
-\r
-/****************** Bit definition for TIM_CCMR3 register *******************/\r
-#define TIM_CCMR3_OC5FE_Pos (2U) \r
-#define TIM_CCMR3_OC5FE_Msk (0x1UL << TIM_CCMR3_OC5FE_Pos) /*!< 0x00000004 */\r
-#define TIM_CCMR3_OC5FE TIM_CCMR3_OC5FE_Msk /*!<Output Compare 5 Fast enable */\r
-#define TIM_CCMR3_OC5PE_Pos (3U) \r
-#define TIM_CCMR3_OC5PE_Msk (0x1UL << TIM_CCMR3_OC5PE_Pos) /*!< 0x00000008 */\r
-#define TIM_CCMR3_OC5PE TIM_CCMR3_OC5PE_Msk /*!<Output Compare 5 Preload enable */\r
-\r
-#define TIM_CCMR3_OC5M_Pos (4U) \r
-#define TIM_CCMR3_OC5M_Msk (0x1007UL << TIM_CCMR3_OC5M_Pos) /*!< 0x00010070 */\r
-#define TIM_CCMR3_OC5M TIM_CCMR3_OC5M_Msk /*!<OC5M[2:0] bits (Output Compare 5 Mode) */\r
-#define TIM_CCMR3_OC5M_0 (0x0001UL << TIM_CCMR3_OC5M_Pos) /*!< 0x00000010 */\r
-#define TIM_CCMR3_OC5M_1 (0x0002UL << TIM_CCMR3_OC5M_Pos) /*!< 0x00000020 */\r
-#define TIM_CCMR3_OC5M_2 (0x0004UL << TIM_CCMR3_OC5M_Pos) /*!< 0x00000040 */\r
-#define TIM_CCMR3_OC5M_3 (0x1000UL << TIM_CCMR3_OC5M_Pos) /*!< 0x00010000 */\r
-\r
-#define TIM_CCMR3_OC5CE_Pos (7U) \r
-#define TIM_CCMR3_OC5CE_Msk (0x1UL << TIM_CCMR3_OC5CE_Pos) /*!< 0x00000080 */\r
-#define TIM_CCMR3_OC5CE TIM_CCMR3_OC5CE_Msk /*!<Output Compare 5 Clear Enable */\r
-\r
-#define TIM_CCMR3_OC6FE_Pos (10U) \r
-#define TIM_CCMR3_OC6FE_Msk (0x1UL << TIM_CCMR3_OC6FE_Pos) /*!< 0x00000400 */\r
-#define TIM_CCMR3_OC6FE TIM_CCMR3_OC6FE_Msk /*!<Output Compare 4 Fast enable */\r
-#define TIM_CCMR3_OC6PE_Pos (11U) \r
-#define TIM_CCMR3_OC6PE_Msk (0x1UL << TIM_CCMR3_OC6PE_Pos) /*!< 0x00000800 */\r
-#define TIM_CCMR3_OC6PE TIM_CCMR3_OC6PE_Msk /*!<Output Compare 4 Preload enable */\r
-\r
-#define TIM_CCMR3_OC6M_Pos (12U) \r
-#define TIM_CCMR3_OC6M_Msk (0x1007UL << TIM_CCMR3_OC6M_Pos) /*!< 0x01007000 */\r
-#define TIM_CCMR3_OC6M TIM_CCMR3_OC6M_Msk /*!<OC4M[2:0] bits (Output Compare 4 Mode) */\r
-#define TIM_CCMR3_OC6M_0 (0x0001UL << TIM_CCMR3_OC6M_Pos) /*!< 0x00001000 */\r
-#define TIM_CCMR3_OC6M_1 (0x0002UL << TIM_CCMR3_OC6M_Pos) /*!< 0x00002000 */\r
-#define TIM_CCMR3_OC6M_2 (0x0004UL << TIM_CCMR3_OC6M_Pos) /*!< 0x00004000 */\r
-#define TIM_CCMR3_OC6M_3 (0x1000UL << TIM_CCMR3_OC6M_Pos) /*!< 0x01000000 */\r
-\r
-#define TIM_CCMR3_OC6CE_Pos (15U) \r
-#define TIM_CCMR3_OC6CE_Msk (0x1UL << TIM_CCMR3_OC6CE_Pos) /*!< 0x00008000 */\r
-#define TIM_CCMR3_OC6CE TIM_CCMR3_OC6CE_Msk /*!<Output Compare 4 Clear Enable */\r
-\r
-/******************* Bit definition for TIM_CCR5 register *******************/\r
-#define TIM_CCR5_CCR5_Pos (0U) \r
-#define TIM_CCR5_CCR5_Msk (0xFFFFFFFFUL << TIM_CCR5_CCR5_Pos) /*!< 0xFFFFFFFF */\r
-#define TIM_CCR5_CCR5 TIM_CCR5_CCR5_Msk /*!<Capture/Compare 5 Value */\r
-#define TIM_CCR5_GC5C1_Pos (29U) \r
-#define TIM_CCR5_GC5C1_Msk (0x1UL << TIM_CCR5_GC5C1_Pos) /*!< 0x20000000 */\r
-#define TIM_CCR5_GC5C1 TIM_CCR5_GC5C1_Msk /*!<Group Channel 5 and Channel 1 */\r
-#define TIM_CCR5_GC5C2_Pos (30U) \r
-#define TIM_CCR5_GC5C2_Msk (0x1UL << TIM_CCR5_GC5C2_Pos) /*!< 0x40000000 */\r
-#define TIM_CCR5_GC5C2 TIM_CCR5_GC5C2_Msk /*!<Group Channel 5 and Channel 2 */\r
-#define TIM_CCR5_GC5C3_Pos (31U) \r
-#define TIM_CCR5_GC5C3_Msk (0x1UL << TIM_CCR5_GC5C3_Pos) /*!< 0x80000000 */\r
-#define TIM_CCR5_GC5C3 TIM_CCR5_GC5C3_Msk /*!<Group Channel 5 and Channel 3 */\r
-\r
-/******************* Bit definition for TIM_CCR6 register *******************/\r
-#define TIM_CCR6_CCR6 ((uint16_t)0xFFFFU) /*!<Capture/Compare 6 Value */\r
-\r
-/******************* Bit definition for TIM1_AF1 register *******************/\r
-#define TIM1_AF1_BKINE_Pos (0U) \r
-#define TIM1_AF1_BKINE_Msk (0x1UL << TIM1_AF1_BKINE_Pos) /*!< 0x00000001 */\r
-#define TIM1_AF1_BKINE TIM1_AF1_BKINE_Msk /*!<BRK BKIN input enable */\r
-#define TIM1_AF1_BKDF1BKE_Pos (8U) \r
-#define TIM1_AF1_BKDF1BKE_Msk (0x1UL << TIM1_AF1_BKDF1BKE_Pos) /*!< 0x00000100 */\r
-#define TIM1_AF1_BKDF1BKE TIM1_AF1_BKDF1BKE_Msk /*!<BRK DFSDM1_BREAK enable */\r
-#define TIM1_AF1_BKINP_Pos (9U) \r
-#define TIM1_AF1_BKINP_Msk (0x1UL << TIM1_AF1_BKINP_Pos) /*!< 0x00000200 */\r
-#define TIM1_AF1_BKINP TIM1_AF1_BKINP_Msk /*!<BRK BKIN input polarity */\r
-\r
-/******************* Bit definition for TIM1_AF2 register *******************/\r
-#define TIM1_AF2_BK2INE_Pos (0U) \r
-#define TIM1_AF2_BK2INE_Msk (0x1UL << TIM1_AF2_BK2INE_Pos) /*!< 0x00000001 */\r
-#define TIM1_AF2_BK2INE TIM1_AF2_BK2INE_Msk /*!<BRK2 BKIN input enable */\r
-#define TIM1_AF2_BK2DF1BKE_Pos (8U) \r
-#define TIM1_AF2_BK2DF1BKE_Msk (0x1UL << TIM1_AF2_BK2DF1BKE_Pos) /*!< 0x00000100 */\r
-#define TIM1_AF2_BK2DF1BKE TIM1_AF2_BK2DF1BKE_Msk /*!<BRK2 DFSDM1_BREAK enable */\r
-#define TIM1_AF2_BK2INP_Pos (9U) \r
-#define TIM1_AF2_BK2INP_Msk (0x1UL << TIM1_AF2_BK2INP_Pos) /*!< 0x00000200 */\r
-#define TIM1_AF2_BK2INP TIM1_AF2_BK2INP_Msk /*!<BRK BKIN input polarity */\r
-\r
-/******************* Bit definition for TIM8_AF1 register *******************/\r
-#define TIM8_AF1_BKINE_Pos (0U) \r
-#define TIM8_AF1_BKINE_Msk (0x1UL << TIM8_AF1_BKINE_Pos) /*!< 0x00000001 */\r
-#define TIM8_AF1_BKINE TIM8_AF1_BKINE_Msk /*!<BRK BKIN input enable */\r
-#define TIM8_AF1_BKDF1BKE_Pos (8U) \r
-#define TIM8_AF1_BKDF1BKE_Msk (0x1UL << TIM8_AF1_BKDF1BKE_Pos) /*!< 0x00000100 */\r
-#define TIM8_AF1_BKDF1BKE TIM8_AF1_BKDF1BKE_Msk /*!<BRK DFSDM1_BREAK enable */\r
-#define TIM8_AF1_BKINP_Pos (9U) \r
-#define TIM8_AF1_BKINP_Msk (0x1UL << TIM8_AF1_BKINP_Pos) /*!< 0x00000200 */\r
-#define TIM8_AF1_BKINP TIM8_AF1_BKINP_Msk /*!<BRK BKIN input polarity */\r
-\r
-/******************* Bit definition for TIM8_AF2 register *******************/\r
-#define TIM8_AF2_BK2INE_Pos (0U) \r
-#define TIM8_AF2_BK2INE_Msk (0x1UL << TIM8_AF2_BK2INE_Pos) /*!< 0x00000001 */\r
-#define TIM8_AF2_BK2INE TIM8_AF2_BK2INE_Msk /*!<BRK2 BKIN2 input enable */\r
-#define TIM8_AF2_BK2DF1BKE_Pos (8U) \r
-#define TIM8_AF2_BK2DF1BKE_Msk (0x1UL << TIM8_AF2_BK2DF1BKE_Pos) /*!< 0x00000100 */\r
-#define TIM8_AF2_BK2DF1BKE TIM8_AF2_BK2DF1BKE_Msk /*!<BRK2 DFSDM1_BREAK enable */\r
-#define TIM8_AF2_BK2INP_Pos (9U) \r
-#define TIM8_AF2_BK2INP_Msk (0x1UL << TIM8_AF2_BK2INP_Pos) /*!< 0x00000200 */\r
-#define TIM8_AF2_BK2INP TIM8_AF2_BK2INP_Msk /*!<BRK BKIN input polarity */\r
-\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Low Power Timer (LPTIM) */\r
-/* */\r
-/******************************************************************************/\r
-/****************** Bit definition for LPTIM_ISR register *******************/\r
-#define LPTIM_ISR_CMPM_Pos (0U) \r
-#define LPTIM_ISR_CMPM_Msk (0x1UL << LPTIM_ISR_CMPM_Pos) /*!< 0x00000001 */\r
-#define LPTIM_ISR_CMPM LPTIM_ISR_CMPM_Msk /*!< Compare match */\r
-#define LPTIM_ISR_ARRM_Pos (1U) \r
-#define LPTIM_ISR_ARRM_Msk (0x1UL << LPTIM_ISR_ARRM_Pos) /*!< 0x00000002 */\r
-#define LPTIM_ISR_ARRM LPTIM_ISR_ARRM_Msk /*!< Autoreload match */\r
-#define LPTIM_ISR_EXTTRIG_Pos (2U) \r
-#define LPTIM_ISR_EXTTRIG_Msk (0x1UL << LPTIM_ISR_EXTTRIG_Pos) /*!< 0x00000004 */\r
-#define LPTIM_ISR_EXTTRIG LPTIM_ISR_EXTTRIG_Msk /*!< External trigger edge event */\r
-#define LPTIM_ISR_CMPOK_Pos (3U) \r
-#define LPTIM_ISR_CMPOK_Msk (0x1UL << LPTIM_ISR_CMPOK_Pos) /*!< 0x00000008 */\r
-#define LPTIM_ISR_CMPOK LPTIM_ISR_CMPOK_Msk /*!< Compare register update OK */\r
-#define LPTIM_ISR_ARROK_Pos (4U) \r
-#define LPTIM_ISR_ARROK_Msk (0x1UL << LPTIM_ISR_ARROK_Pos) /*!< 0x00000010 */\r
-#define LPTIM_ISR_ARROK LPTIM_ISR_ARROK_Msk /*!< Autoreload register update OK */\r
-#define LPTIM_ISR_UP_Pos (5U) \r
-#define LPTIM_ISR_UP_Msk (0x1UL << LPTIM_ISR_UP_Pos) /*!< 0x00000020 */\r
-#define LPTIM_ISR_UP LPTIM_ISR_UP_Msk /*!< Counter direction change down to up */\r
-#define LPTIM_ISR_DOWN_Pos (6U) \r
-#define LPTIM_ISR_DOWN_Msk (0x1UL << LPTIM_ISR_DOWN_Pos) /*!< 0x00000040 */\r
-#define LPTIM_ISR_DOWN LPTIM_ISR_DOWN_Msk /*!< Counter direction change up to down */\r
-\r
-/****************** Bit definition for LPTIM_ICR register *******************/\r
-#define LPTIM_ICR_CMPMCF_Pos (0U) \r
-#define LPTIM_ICR_CMPMCF_Msk (0x1UL << LPTIM_ICR_CMPMCF_Pos) /*!< 0x00000001 */\r
-#define LPTIM_ICR_CMPMCF LPTIM_ICR_CMPMCF_Msk /*!< Compare match Clear Flag */\r
-#define LPTIM_ICR_ARRMCF_Pos (1U) \r
-#define LPTIM_ICR_ARRMCF_Msk (0x1UL << LPTIM_ICR_ARRMCF_Pos) /*!< 0x00000002 */\r
-#define LPTIM_ICR_ARRMCF LPTIM_ICR_ARRMCF_Msk /*!< Autoreload match Clear Flag */\r
-#define LPTIM_ICR_EXTTRIGCF_Pos (2U) \r
-#define LPTIM_ICR_EXTTRIGCF_Msk (0x1UL << LPTIM_ICR_EXTTRIGCF_Pos) /*!< 0x00000004 */\r
-#define LPTIM_ICR_EXTTRIGCF LPTIM_ICR_EXTTRIGCF_Msk /*!< External trigger edge event Clear Flag */\r
-#define LPTIM_ICR_CMPOKCF_Pos (3U) \r
-#define LPTIM_ICR_CMPOKCF_Msk (0x1UL << LPTIM_ICR_CMPOKCF_Pos) /*!< 0x00000008 */\r
-#define LPTIM_ICR_CMPOKCF LPTIM_ICR_CMPOKCF_Msk /*!< Compare register update OK Clear Flag */\r
-#define LPTIM_ICR_ARROKCF_Pos (4U) \r
-#define LPTIM_ICR_ARROKCF_Msk (0x1UL << LPTIM_ICR_ARROKCF_Pos) /*!< 0x00000010 */\r
-#define LPTIM_ICR_ARROKCF LPTIM_ICR_ARROKCF_Msk /*!< Autoreload register update OK Clear Flag */\r
-#define LPTIM_ICR_UPCF_Pos (5U) \r
-#define LPTIM_ICR_UPCF_Msk (0x1UL << LPTIM_ICR_UPCF_Pos) /*!< 0x00000020 */\r
-#define LPTIM_ICR_UPCF LPTIM_ICR_UPCF_Msk /*!< Counter direction change down to up Clear Flag */\r
-#define LPTIM_ICR_DOWNCF_Pos (6U) \r
-#define LPTIM_ICR_DOWNCF_Msk (0x1UL << LPTIM_ICR_DOWNCF_Pos) /*!< 0x00000040 */\r
-#define LPTIM_ICR_DOWNCF LPTIM_ICR_DOWNCF_Msk /*!< Counter direction change up to down Clear Flag */\r
-\r
-/****************** Bit definition for LPTIM_IER register *******************/\r
-#define LPTIM_IER_CMPMIE_Pos (0U) \r
-#define LPTIM_IER_CMPMIE_Msk (0x1UL << LPTIM_IER_CMPMIE_Pos) /*!< 0x00000001 */\r
-#define LPTIM_IER_CMPMIE LPTIM_IER_CMPMIE_Msk /*!< Compare match Interrupt Enable */\r
-#define LPTIM_IER_ARRMIE_Pos (1U) \r
-#define LPTIM_IER_ARRMIE_Msk (0x1UL << LPTIM_IER_ARRMIE_Pos) /*!< 0x00000002 */\r
-#define LPTIM_IER_ARRMIE LPTIM_IER_ARRMIE_Msk /*!< Autoreload match Interrupt Enable */\r
-#define LPTIM_IER_EXTTRIGIE_Pos (2U) \r
-#define LPTIM_IER_EXTTRIGIE_Msk (0x1UL << LPTIM_IER_EXTTRIGIE_Pos) /*!< 0x00000004 */\r
-#define LPTIM_IER_EXTTRIGIE LPTIM_IER_EXTTRIGIE_Msk /*!< External trigger edge event Interrupt Enable */\r
-#define LPTIM_IER_CMPOKIE_Pos (3U) \r
-#define LPTIM_IER_CMPOKIE_Msk (0x1UL << LPTIM_IER_CMPOKIE_Pos) /*!< 0x00000008 */\r
-#define LPTIM_IER_CMPOKIE LPTIM_IER_CMPOKIE_Msk /*!< Compare register update OK Interrupt Enable */\r
-#define LPTIM_IER_ARROKIE_Pos (4U) \r
-#define LPTIM_IER_ARROKIE_Msk (0x1UL << LPTIM_IER_ARROKIE_Pos) /*!< 0x00000010 */\r
-#define LPTIM_IER_ARROKIE LPTIM_IER_ARROKIE_Msk /*!< Autoreload register update OK Interrupt Enable */\r
-#define LPTIM_IER_UPIE_Pos (5U) \r
-#define LPTIM_IER_UPIE_Msk (0x1UL << LPTIM_IER_UPIE_Pos) /*!< 0x00000020 */\r
-#define LPTIM_IER_UPIE LPTIM_IER_UPIE_Msk /*!< Counter direction change down to up Interrupt Enable */\r
-#define LPTIM_IER_DOWNIE_Pos (6U) \r
-#define LPTIM_IER_DOWNIE_Msk (0x1UL << LPTIM_IER_DOWNIE_Pos) /*!< 0x00000040 */\r
-#define LPTIM_IER_DOWNIE LPTIM_IER_DOWNIE_Msk /*!< Counter direction change up to down Interrupt Enable */\r
-\r
-/****************** Bit definition for LPTIM_CFGR register*******************/\r
-#define LPTIM_CFGR_CKSEL_Pos (0U) \r
-#define LPTIM_CFGR_CKSEL_Msk (0x1UL << LPTIM_CFGR_CKSEL_Pos) /*!< 0x00000001 */\r
-#define LPTIM_CFGR_CKSEL LPTIM_CFGR_CKSEL_Msk /*!< Clock selector */\r
-\r
-#define LPTIM_CFGR_CKPOL_Pos (1U) \r
-#define LPTIM_CFGR_CKPOL_Msk (0x3UL << LPTIM_CFGR_CKPOL_Pos) /*!< 0x00000006 */\r
-#define LPTIM_CFGR_CKPOL LPTIM_CFGR_CKPOL_Msk /*!< CKPOL[1:0] bits (Clock polarity) */\r
-#define LPTIM_CFGR_CKPOL_0 (0x1UL << LPTIM_CFGR_CKPOL_Pos) /*!< 0x00000002 */\r
-#define LPTIM_CFGR_CKPOL_1 (0x2UL << LPTIM_CFGR_CKPOL_Pos) /*!< 0x00000004 */\r
-\r
-#define LPTIM_CFGR_CKFLT_Pos (3U) \r
-#define LPTIM_CFGR_CKFLT_Msk (0x3UL << LPTIM_CFGR_CKFLT_Pos) /*!< 0x00000018 */\r
-#define LPTIM_CFGR_CKFLT LPTIM_CFGR_CKFLT_Msk /*!< CKFLT[1:0] bits (Configurable digital filter for external clock) */\r
-#define LPTIM_CFGR_CKFLT_0 (0x1UL << LPTIM_CFGR_CKFLT_Pos) /*!< 0x00000008 */\r
-#define LPTIM_CFGR_CKFLT_1 (0x2UL << LPTIM_CFGR_CKFLT_Pos) /*!< 0x00000010 */\r
-\r
-#define LPTIM_CFGR_TRGFLT_Pos (6U) \r
-#define LPTIM_CFGR_TRGFLT_Msk (0x3UL << LPTIM_CFGR_TRGFLT_Pos) /*!< 0x000000C0 */\r
-#define LPTIM_CFGR_TRGFLT LPTIM_CFGR_TRGFLT_Msk /*!< TRGFLT[1:0] bits (Configurable digital filter for trigger) */\r
-#define LPTIM_CFGR_TRGFLT_0 (0x1UL << LPTIM_CFGR_TRGFLT_Pos) /*!< 0x00000040 */\r
-#define LPTIM_CFGR_TRGFLT_1 (0x2UL << LPTIM_CFGR_TRGFLT_Pos) /*!< 0x00000080 */\r
-\r
-#define LPTIM_CFGR_PRESC_Pos (9U) \r
-#define LPTIM_CFGR_PRESC_Msk (0x7UL << LPTIM_CFGR_PRESC_Pos) /*!< 0x00000E00 */\r
-#define LPTIM_CFGR_PRESC LPTIM_CFGR_PRESC_Msk /*!< PRESC[2:0] bits (Clock prescaler) */\r
-#define LPTIM_CFGR_PRESC_0 (0x1UL << LPTIM_CFGR_PRESC_Pos) /*!< 0x00000200 */\r
-#define LPTIM_CFGR_PRESC_1 (0x2UL << LPTIM_CFGR_PRESC_Pos) /*!< 0x00000400 */\r
-#define LPTIM_CFGR_PRESC_2 (0x4UL << LPTIM_CFGR_PRESC_Pos) /*!< 0x00000800 */\r
-\r
-#define LPTIM_CFGR_TRIGSEL_Pos (13U) \r
-#define LPTIM_CFGR_TRIGSEL_Msk (0x7UL << LPTIM_CFGR_TRIGSEL_Pos) /*!< 0x0000E000 */\r
-#define LPTIM_CFGR_TRIGSEL LPTIM_CFGR_TRIGSEL_Msk /*!< TRIGSEL[2:0]] bits (Trigger selector) */\r
-#define LPTIM_CFGR_TRIGSEL_0 (0x1UL << LPTIM_CFGR_TRIGSEL_Pos) /*!< 0x00002000 */\r
-#define LPTIM_CFGR_TRIGSEL_1 (0x2UL << LPTIM_CFGR_TRIGSEL_Pos) /*!< 0x00004000 */\r
-#define LPTIM_CFGR_TRIGSEL_2 (0x4UL << LPTIM_CFGR_TRIGSEL_Pos) /*!< 0x00008000 */\r
-\r
-#define LPTIM_CFGR_TRIGEN_Pos (17U) \r
-#define LPTIM_CFGR_TRIGEN_Msk (0x3UL << LPTIM_CFGR_TRIGEN_Pos) /*!< 0x00060000 */\r
-#define LPTIM_CFGR_TRIGEN LPTIM_CFGR_TRIGEN_Msk /*!< TRIGEN[1:0] bits (Trigger enable and polarity) */\r
-#define LPTIM_CFGR_TRIGEN_0 (0x1UL << LPTIM_CFGR_TRIGEN_Pos) /*!< 0x00020000 */\r
-#define LPTIM_CFGR_TRIGEN_1 (0x2UL << LPTIM_CFGR_TRIGEN_Pos) /*!< 0x00040000 */\r
-\r
-#define LPTIM_CFGR_TIMOUT_Pos (19U) \r
-#define LPTIM_CFGR_TIMOUT_Msk (0x1UL << LPTIM_CFGR_TIMOUT_Pos) /*!< 0x00080000 */\r
-#define LPTIM_CFGR_TIMOUT LPTIM_CFGR_TIMOUT_Msk /*!< Timout enable */\r
-#define LPTIM_CFGR_WAVE_Pos (20U) \r
-#define LPTIM_CFGR_WAVE_Msk (0x1UL << LPTIM_CFGR_WAVE_Pos) /*!< 0x00100000 */\r
-#define LPTIM_CFGR_WAVE LPTIM_CFGR_WAVE_Msk /*!< Waveform shape */\r
-#define LPTIM_CFGR_WAVPOL_Pos (21U) \r
-#define LPTIM_CFGR_WAVPOL_Msk (0x1UL << LPTIM_CFGR_WAVPOL_Pos) /*!< 0x00200000 */\r
-#define LPTIM_CFGR_WAVPOL LPTIM_CFGR_WAVPOL_Msk /*!< Waveform shape polarity */\r
-#define LPTIM_CFGR_PRELOAD_Pos (22U) \r
-#define LPTIM_CFGR_PRELOAD_Msk (0x1UL << LPTIM_CFGR_PRELOAD_Pos) /*!< 0x00400000 */\r
-#define LPTIM_CFGR_PRELOAD LPTIM_CFGR_PRELOAD_Msk /*!< Reg update mode */\r
-#define LPTIM_CFGR_COUNTMODE_Pos (23U) \r
-#define LPTIM_CFGR_COUNTMODE_Msk (0x1UL << LPTIM_CFGR_COUNTMODE_Pos) /*!< 0x00800000 */\r
-#define LPTIM_CFGR_COUNTMODE LPTIM_CFGR_COUNTMODE_Msk /*!< Counter mode enable */\r
-#define LPTIM_CFGR_ENC_Pos (24U) \r
-#define LPTIM_CFGR_ENC_Msk (0x1UL << LPTIM_CFGR_ENC_Pos) /*!< 0x01000000 */\r
-#define LPTIM_CFGR_ENC LPTIM_CFGR_ENC_Msk /*!< Encoder mode enable */\r
-\r
-/****************** Bit definition for LPTIM_CR register ********************/\r
-#define LPTIM_CR_ENABLE_Pos (0U) \r
-#define LPTIM_CR_ENABLE_Msk (0x1UL << LPTIM_CR_ENABLE_Pos) /*!< 0x00000001 */\r
-#define LPTIM_CR_ENABLE LPTIM_CR_ENABLE_Msk /*!< LPTIMer enable */\r
-#define LPTIM_CR_SNGSTRT_Pos (1U) \r
-#define LPTIM_CR_SNGSTRT_Msk (0x1UL << LPTIM_CR_SNGSTRT_Pos) /*!< 0x00000002 */\r
-#define LPTIM_CR_SNGSTRT LPTIM_CR_SNGSTRT_Msk /*!< Timer start in single mode */\r
-#define LPTIM_CR_CNTSTRT_Pos (2U) \r
-#define LPTIM_CR_CNTSTRT_Msk (0x1UL << LPTIM_CR_CNTSTRT_Pos) /*!< 0x00000004 */\r
-#define LPTIM_CR_CNTSTRT LPTIM_CR_CNTSTRT_Msk /*!< Timer start in continuous mode */\r
-\r
-/****************** Bit definition for LPTIM_CMP register *******************/\r
-#define LPTIM_CMP_CMP_Pos (0U) \r
-#define LPTIM_CMP_CMP_Msk (0xFFFFUL << LPTIM_CMP_CMP_Pos) /*!< 0x0000FFFF */\r
-#define LPTIM_CMP_CMP LPTIM_CMP_CMP_Msk /*!< Compare register */\r
-\r
-/****************** Bit definition for LPTIM_ARR register *******************/\r
-#define LPTIM_ARR_ARR_Pos (0U) \r
-#define LPTIM_ARR_ARR_Msk (0xFFFFUL << LPTIM_ARR_ARR_Pos) /*!< 0x0000FFFF */\r
-#define LPTIM_ARR_ARR LPTIM_ARR_ARR_Msk /*!< Auto reload register */\r
-\r
-/****************** Bit definition for LPTIM_CNT register *******************/\r
-#define LPTIM_CNT_CNT_Pos (0U) \r
-#define LPTIM_CNT_CNT_Msk (0xFFFFUL << LPTIM_CNT_CNT_Pos) /*!< 0x0000FFFF */\r
-#define LPTIM_CNT_CNT LPTIM_CNT_CNT_Msk /*!< Counter register */\r
-/******************************************************************************/\r
-/* */\r
-/* Universal Synchronous Asynchronous Receiver Transmitter (USART) */\r
-/* */\r
-/******************************************************************************/\r
-/****************** Bit definition for USART_CR1 register *******************/\r
-#define USART_CR1_UE_Pos (0U) \r
-#define USART_CR1_UE_Msk (0x1UL << USART_CR1_UE_Pos) /*!< 0x00000001 */\r
-#define USART_CR1_UE USART_CR1_UE_Msk /*!< USART Enable */\r
-#define USART_CR1_RE_Pos (2U) \r
-#define USART_CR1_RE_Msk (0x1UL << USART_CR1_RE_Pos) /*!< 0x00000004 */\r
-#define USART_CR1_RE USART_CR1_RE_Msk /*!< Receiver Enable */\r
-#define USART_CR1_TE_Pos (3U) \r
-#define USART_CR1_TE_Msk (0x1UL << USART_CR1_TE_Pos) /*!< 0x00000008 */\r
-#define USART_CR1_TE USART_CR1_TE_Msk /*!< Transmitter Enable */\r
-#define USART_CR1_IDLEIE_Pos (4U) \r
-#define USART_CR1_IDLEIE_Msk (0x1UL << USART_CR1_IDLEIE_Pos) /*!< 0x00000010 */\r
-#define USART_CR1_IDLEIE USART_CR1_IDLEIE_Msk /*!< IDLE Interrupt Enable */\r
-#define USART_CR1_RXNEIE_Pos (5U) \r
-#define USART_CR1_RXNEIE_Msk (0x1UL << USART_CR1_RXNEIE_Pos) /*!< 0x00000020 */\r
-#define USART_CR1_RXNEIE USART_CR1_RXNEIE_Msk /*!< RXNE Interrupt Enable */\r
-#define USART_CR1_TCIE_Pos (6U) \r
-#define USART_CR1_TCIE_Msk (0x1UL << USART_CR1_TCIE_Pos) /*!< 0x00000040 */\r
-#define USART_CR1_TCIE USART_CR1_TCIE_Msk /*!< Transmission Complete Interrupt Enable */\r
-#define USART_CR1_TXEIE_Pos (7U) \r
-#define USART_CR1_TXEIE_Msk (0x1UL << USART_CR1_TXEIE_Pos) /*!< 0x00000080 */\r
-#define USART_CR1_TXEIE USART_CR1_TXEIE_Msk /*!< TXE Interrupt Enable */\r
-#define USART_CR1_PEIE_Pos (8U) \r
-#define USART_CR1_PEIE_Msk (0x1UL << USART_CR1_PEIE_Pos) /*!< 0x00000100 */\r
-#define USART_CR1_PEIE USART_CR1_PEIE_Msk /*!< PE Interrupt Enable */\r
-#define USART_CR1_PS_Pos (9U) \r
-#define USART_CR1_PS_Msk (0x1UL << USART_CR1_PS_Pos) /*!< 0x00000200 */\r
-#define USART_CR1_PS USART_CR1_PS_Msk /*!< Parity Selection */\r
-#define USART_CR1_PCE_Pos (10U) \r
-#define USART_CR1_PCE_Msk (0x1UL << USART_CR1_PCE_Pos) /*!< 0x00000400 */\r
-#define USART_CR1_PCE USART_CR1_PCE_Msk /*!< Parity Control Enable */\r
-#define USART_CR1_WAKE_Pos (11U) \r
-#define USART_CR1_WAKE_Msk (0x1UL << USART_CR1_WAKE_Pos) /*!< 0x00000800 */\r
-#define USART_CR1_WAKE USART_CR1_WAKE_Msk /*!< Receiver Wakeup method */\r
-#define USART_CR1_M_Pos (12U) \r
-#define USART_CR1_M_Msk (0x10001UL << USART_CR1_M_Pos) /*!< 0x10001000 */\r
-#define USART_CR1_M USART_CR1_M_Msk /*!< Word length */\r
-#define USART_CR1_M0 (0x00001UL << USART_CR1_M_Pos) /*!< 0x00001000 */\r
-#define USART_CR1_MME_Pos (13U) \r
-#define USART_CR1_MME_Msk (0x1UL << USART_CR1_MME_Pos) /*!< 0x00002000 */\r
-#define USART_CR1_MME USART_CR1_MME_Msk /*!< Mute Mode Enable */\r
-#define USART_CR1_CMIE_Pos (14U) \r
-#define USART_CR1_CMIE_Msk (0x1UL << USART_CR1_CMIE_Pos) /*!< 0x00004000 */\r
-#define USART_CR1_CMIE USART_CR1_CMIE_Msk /*!< Character match interrupt enable */\r
-#define USART_CR1_OVER8_Pos (15U) \r
-#define USART_CR1_OVER8_Msk (0x1UL << USART_CR1_OVER8_Pos) /*!< 0x00008000 */\r
-#define USART_CR1_OVER8 USART_CR1_OVER8_Msk /*!< Oversampling by 8-bit or 16-bit mode */\r
-#define USART_CR1_DEDT_Pos (16U) \r
-#define USART_CR1_DEDT_Msk (0x1FUL << USART_CR1_DEDT_Pos) /*!< 0x001F0000 */\r
-#define USART_CR1_DEDT USART_CR1_DEDT_Msk /*!< DEDT[4:0] bits (Driver Enable Deassertion Time) */\r
-#define USART_CR1_DEDT_0 (0x01UL << USART_CR1_DEDT_Pos) /*!< 0x00010000 */\r
-#define USART_CR1_DEDT_1 (0x02UL << USART_CR1_DEDT_Pos) /*!< 0x00020000 */\r
-#define USART_CR1_DEDT_2 (0x04UL << USART_CR1_DEDT_Pos) /*!< 0x00040000 */\r
-#define USART_CR1_DEDT_3 (0x08UL << USART_CR1_DEDT_Pos) /*!< 0x00080000 */\r
-#define USART_CR1_DEDT_4 (0x10UL << USART_CR1_DEDT_Pos) /*!< 0x00100000 */\r
-#define USART_CR1_DEAT_Pos (21U) \r
-#define USART_CR1_DEAT_Msk (0x1FUL << USART_CR1_DEAT_Pos) /*!< 0x03E00000 */\r
-#define USART_CR1_DEAT USART_CR1_DEAT_Msk /*!< DEAT[4:0] bits (Driver Enable Assertion Time) */\r
-#define USART_CR1_DEAT_0 (0x01UL << USART_CR1_DEAT_Pos) /*!< 0x00200000 */\r
-#define USART_CR1_DEAT_1 (0x02UL << USART_CR1_DEAT_Pos) /*!< 0x00400000 */\r
-#define USART_CR1_DEAT_2 (0x04UL << USART_CR1_DEAT_Pos) /*!< 0x00800000 */\r
-#define USART_CR1_DEAT_3 (0x08UL << USART_CR1_DEAT_Pos) /*!< 0x01000000 */\r
-#define USART_CR1_DEAT_4 (0x10UL << USART_CR1_DEAT_Pos) /*!< 0x02000000 */\r
-#define USART_CR1_RTOIE_Pos (26U) \r
-#define USART_CR1_RTOIE_Msk (0x1UL << USART_CR1_RTOIE_Pos) /*!< 0x04000000 */\r
-#define USART_CR1_RTOIE USART_CR1_RTOIE_Msk /*!< Receive Time Out interrupt enable */\r
-#define USART_CR1_EOBIE_Pos (27U) \r
-#define USART_CR1_EOBIE_Msk (0x1UL << USART_CR1_EOBIE_Pos) /*!< 0x08000000 */\r
-#define USART_CR1_EOBIE USART_CR1_EOBIE_Msk /*!< End of Block interrupt enable */\r
-#define USART_CR1_M1 0x10000000U /*!< Word length - Bit 1 */\r
-\r
-/* Legacy defines */\r
-#define USART_CR1_M_0 USART_CR1_M0 /*!< Word length - Bit 0 */\r
-#define USART_CR1_M_1 USART_CR1_M1 /*!< Word length - Bit 1 */\r
-\r
-/****************** Bit definition for USART_CR2 register *******************/\r
-#define USART_CR2_ADDM7_Pos (4U) \r
-#define USART_CR2_ADDM7_Msk (0x1UL << USART_CR2_ADDM7_Pos) /*!< 0x00000010 */\r
-#define USART_CR2_ADDM7 USART_CR2_ADDM7_Msk /*!< 7-bit or 4-bit Address Detection */\r
-#define USART_CR2_LBDL_Pos (5U) \r
-#define USART_CR2_LBDL_Msk (0x1UL << USART_CR2_LBDL_Pos) /*!< 0x00000020 */\r
-#define USART_CR2_LBDL USART_CR2_LBDL_Msk /*!< LIN Break Detection Length */\r
-#define USART_CR2_LBDIE_Pos (6U) \r
-#define USART_CR2_LBDIE_Msk (0x1UL << USART_CR2_LBDIE_Pos) /*!< 0x00000040 */\r
-#define USART_CR2_LBDIE USART_CR2_LBDIE_Msk /*!< LIN Break Detection Interrupt Enable */\r
-#define USART_CR2_LBCL_Pos (8U) \r
-#define USART_CR2_LBCL_Msk (0x1UL << USART_CR2_LBCL_Pos) /*!< 0x00000100 */\r
-#define USART_CR2_LBCL USART_CR2_LBCL_Msk /*!< Last Bit Clock pulse */\r
-#define USART_CR2_CPHA_Pos (9U) \r
-#define USART_CR2_CPHA_Msk (0x1UL << USART_CR2_CPHA_Pos) /*!< 0x00000200 */\r
-#define USART_CR2_CPHA USART_CR2_CPHA_Msk /*!< Clock Phase */\r
-#define USART_CR2_CPOL_Pos (10U) \r
-#define USART_CR2_CPOL_Msk (0x1UL << USART_CR2_CPOL_Pos) /*!< 0x00000400 */\r
-#define USART_CR2_CPOL USART_CR2_CPOL_Msk /*!< Clock Polarity */\r
-#define USART_CR2_CLKEN_Pos (11U) \r
-#define USART_CR2_CLKEN_Msk (0x1UL << USART_CR2_CLKEN_Pos) /*!< 0x00000800 */\r
-#define USART_CR2_CLKEN USART_CR2_CLKEN_Msk /*!< Clock Enable */\r
-#define USART_CR2_STOP_Pos (12U) \r
-#define USART_CR2_STOP_Msk (0x3UL << USART_CR2_STOP_Pos) /*!< 0x00003000 */\r
-#define USART_CR2_STOP USART_CR2_STOP_Msk /*!< STOP[1:0] bits (STOP bits) */\r
-#define USART_CR2_STOP_0 (0x1UL << USART_CR2_STOP_Pos) /*!< 0x00001000 */\r
-#define USART_CR2_STOP_1 (0x2UL << USART_CR2_STOP_Pos) /*!< 0x00002000 */\r
-#define USART_CR2_LINEN_Pos (14U) \r
-#define USART_CR2_LINEN_Msk (0x1UL << USART_CR2_LINEN_Pos) /*!< 0x00004000 */\r
-#define USART_CR2_LINEN USART_CR2_LINEN_Msk /*!< LIN mode enable */\r
-#define USART_CR2_SWAP_Pos (15U) \r
-#define USART_CR2_SWAP_Msk (0x1UL << USART_CR2_SWAP_Pos) /*!< 0x00008000 */\r
-#define USART_CR2_SWAP USART_CR2_SWAP_Msk /*!< SWAP TX/RX pins */\r
-#define USART_CR2_RXINV_Pos (16U) \r
-#define USART_CR2_RXINV_Msk (0x1UL << USART_CR2_RXINV_Pos) /*!< 0x00010000 */\r
-#define USART_CR2_RXINV USART_CR2_RXINV_Msk /*!< RX pin active level inversion */\r
-#define USART_CR2_TXINV_Pos (17U) \r
-#define USART_CR2_TXINV_Msk (0x1UL << USART_CR2_TXINV_Pos) /*!< 0x00020000 */\r
-#define USART_CR2_TXINV USART_CR2_TXINV_Msk /*!< TX pin active level inversion */\r
-#define USART_CR2_DATAINV_Pos (18U) \r
-#define USART_CR2_DATAINV_Msk (0x1UL << USART_CR2_DATAINV_Pos) /*!< 0x00040000 */\r
-#define USART_CR2_DATAINV USART_CR2_DATAINV_Msk /*!< Binary data inversion */\r
-#define USART_CR2_MSBFIRST_Pos (19U) \r
-#define USART_CR2_MSBFIRST_Msk (0x1UL << USART_CR2_MSBFIRST_Pos) /*!< 0x00080000 */\r
-#define USART_CR2_MSBFIRST USART_CR2_MSBFIRST_Msk /*!< Most Significant Bit First */\r
-#define USART_CR2_ABREN_Pos (20U) \r
-#define USART_CR2_ABREN_Msk (0x1UL << USART_CR2_ABREN_Pos) /*!< 0x00100000 */\r
-#define USART_CR2_ABREN USART_CR2_ABREN_Msk /*!< Auto Baud-Rate Enable */\r
-#define USART_CR2_ABRMODE_Pos (21U) \r
-#define USART_CR2_ABRMODE_Msk (0x3UL << USART_CR2_ABRMODE_Pos) /*!< 0x00600000 */\r
-#define USART_CR2_ABRMODE USART_CR2_ABRMODE_Msk /*!< ABRMOD[1:0] bits (Auto Baud-Rate Mode) */\r
-#define USART_CR2_ABRMODE_0 (0x1UL << USART_CR2_ABRMODE_Pos) /*!< 0x00200000 */\r
-#define USART_CR2_ABRMODE_1 (0x2UL << USART_CR2_ABRMODE_Pos) /*!< 0x00400000 */\r
-#define USART_CR2_RTOEN_Pos (23U) \r
-#define USART_CR2_RTOEN_Msk (0x1UL << USART_CR2_RTOEN_Pos) /*!< 0x00800000 */\r
-#define USART_CR2_RTOEN USART_CR2_RTOEN_Msk /*!< Receiver Time-Out enable */\r
-#define USART_CR2_ADD_Pos (24U) \r
-#define USART_CR2_ADD_Msk (0xFFUL << USART_CR2_ADD_Pos) /*!< 0xFF000000 */\r
-#define USART_CR2_ADD USART_CR2_ADD_Msk /*!< Address of the USART node */\r
-\r
-/****************** Bit definition for USART_CR3 register *******************/\r
-#define USART_CR3_EIE_Pos (0U) \r
-#define USART_CR3_EIE_Msk (0x1UL << USART_CR3_EIE_Pos) /*!< 0x00000001 */\r
-#define USART_CR3_EIE USART_CR3_EIE_Msk /*!< Error Interrupt Enable */\r
-#define USART_CR3_IREN_Pos (1U) \r
-#define USART_CR3_IREN_Msk (0x1UL << USART_CR3_IREN_Pos) /*!< 0x00000002 */\r
-#define USART_CR3_IREN USART_CR3_IREN_Msk /*!< IrDA mode Enable */\r
-#define USART_CR3_IRLP_Pos (2U) \r
-#define USART_CR3_IRLP_Msk (0x1UL << USART_CR3_IRLP_Pos) /*!< 0x00000004 */\r
-#define USART_CR3_IRLP USART_CR3_IRLP_Msk /*!< IrDA Low-Power */\r
-#define USART_CR3_HDSEL_Pos (3U) \r
-#define USART_CR3_HDSEL_Msk (0x1UL << USART_CR3_HDSEL_Pos) /*!< 0x00000008 */\r
-#define USART_CR3_HDSEL USART_CR3_HDSEL_Msk /*!< Half-Duplex Selection */\r
-#define USART_CR3_NACK_Pos (4U) \r
-#define USART_CR3_NACK_Msk (0x1UL << USART_CR3_NACK_Pos) /*!< 0x00000010 */\r
-#define USART_CR3_NACK USART_CR3_NACK_Msk /*!< SmartCard NACK enable */\r
-#define USART_CR3_SCEN_Pos (5U) \r
-#define USART_CR3_SCEN_Msk (0x1UL << USART_CR3_SCEN_Pos) /*!< 0x00000020 */\r
-#define USART_CR3_SCEN USART_CR3_SCEN_Msk /*!< SmartCard mode enable */\r
-#define USART_CR3_DMAR_Pos (6U) \r
-#define USART_CR3_DMAR_Msk (0x1UL << USART_CR3_DMAR_Pos) /*!< 0x00000040 */\r
-#define USART_CR3_DMAR USART_CR3_DMAR_Msk /*!< DMA Enable Receiver */\r
-#define USART_CR3_DMAT_Pos (7U) \r
-#define USART_CR3_DMAT_Msk (0x1UL << USART_CR3_DMAT_Pos) /*!< 0x00000080 */\r
-#define USART_CR3_DMAT USART_CR3_DMAT_Msk /*!< DMA Enable Transmitter */\r
-#define USART_CR3_RTSE_Pos (8U) \r
-#define USART_CR3_RTSE_Msk (0x1UL << USART_CR3_RTSE_Pos) /*!< 0x00000100 */\r
-#define USART_CR3_RTSE USART_CR3_RTSE_Msk /*!< RTS Enable */\r
-#define USART_CR3_CTSE_Pos (9U) \r
-#define USART_CR3_CTSE_Msk (0x1UL << USART_CR3_CTSE_Pos) /*!< 0x00000200 */\r
-#define USART_CR3_CTSE USART_CR3_CTSE_Msk /*!< CTS Enable */\r
-#define USART_CR3_CTSIE_Pos (10U) \r
-#define USART_CR3_CTSIE_Msk (0x1UL << USART_CR3_CTSIE_Pos) /*!< 0x00000400 */\r
-#define USART_CR3_CTSIE USART_CR3_CTSIE_Msk /*!< CTS Interrupt Enable */\r
-#define USART_CR3_ONEBIT_Pos (11U) \r
-#define USART_CR3_ONEBIT_Msk (0x1UL << USART_CR3_ONEBIT_Pos) /*!< 0x00000800 */\r
-#define USART_CR3_ONEBIT USART_CR3_ONEBIT_Msk /*!< One sample bit method enable */\r
-#define USART_CR3_OVRDIS_Pos (12U) \r
-#define USART_CR3_OVRDIS_Msk (0x1UL << USART_CR3_OVRDIS_Pos) /*!< 0x00001000 */\r
-#define USART_CR3_OVRDIS USART_CR3_OVRDIS_Msk /*!< Overrun Disable */\r
-#define USART_CR3_DDRE_Pos (13U) \r
-#define USART_CR3_DDRE_Msk (0x1UL << USART_CR3_DDRE_Pos) /*!< 0x00002000 */\r
-#define USART_CR3_DDRE USART_CR3_DDRE_Msk /*!< DMA Disable on Reception Error */\r
-#define USART_CR3_DEM_Pos (14U) \r
-#define USART_CR3_DEM_Msk (0x1UL << USART_CR3_DEM_Pos) /*!< 0x00004000 */\r
-#define USART_CR3_DEM USART_CR3_DEM_Msk /*!< Driver Enable Mode */\r
-#define USART_CR3_DEP_Pos (15U) \r
-#define USART_CR3_DEP_Msk (0x1UL << USART_CR3_DEP_Pos) /*!< 0x00008000 */\r
-#define USART_CR3_DEP USART_CR3_DEP_Msk /*!< Driver Enable Polarity Selection */\r
-#define USART_CR3_SCARCNT_Pos (17U) \r
-#define USART_CR3_SCARCNT_Msk (0x7UL << USART_CR3_SCARCNT_Pos) /*!< 0x000E0000 */\r
-#define USART_CR3_SCARCNT USART_CR3_SCARCNT_Msk /*!< SCARCNT[2:0] bits (SmartCard Auto-Retry Count) */\r
-#define USART_CR3_SCARCNT_0 (0x1UL << USART_CR3_SCARCNT_Pos) /*!< 0x00020000 */\r
-#define USART_CR3_SCARCNT_1 (0x2UL << USART_CR3_SCARCNT_Pos) /*!< 0x00040000 */\r
-#define USART_CR3_SCARCNT_2 (0x4UL << USART_CR3_SCARCNT_Pos) /*!< 0x00080000 */\r
-\r
-/****************** Bit definition for USART_BRR register *******************/\r
-#define USART_BRR_DIV_FRACTION_Pos (0U) \r
-#define USART_BRR_DIV_FRACTION_Msk (0xFUL << USART_BRR_DIV_FRACTION_Pos) /*!< 0x0000000F */\r
-#define USART_BRR_DIV_FRACTION USART_BRR_DIV_FRACTION_Msk /*!< Fraction of USARTDIV */\r
-#define USART_BRR_DIV_MANTISSA_Pos (4U) \r
-#define USART_BRR_DIV_MANTISSA_Msk (0xFFFUL << USART_BRR_DIV_MANTISSA_Pos) /*!< 0x0000FFF0 */\r
-#define USART_BRR_DIV_MANTISSA USART_BRR_DIV_MANTISSA_Msk /*!< Mantissa of USARTDIV */\r
-\r
-/****************** Bit definition for USART_GTPR register ******************/\r
-#define USART_GTPR_PSC_Pos (0U) \r
-#define USART_GTPR_PSC_Msk (0xFFUL << USART_GTPR_PSC_Pos) /*!< 0x000000FF */\r
-#define USART_GTPR_PSC USART_GTPR_PSC_Msk /*!< PSC[7:0] bits (Prescaler value) */\r
-#define USART_GTPR_GT_Pos (8U) \r
-#define USART_GTPR_GT_Msk (0xFFUL << USART_GTPR_GT_Pos) /*!< 0x0000FF00 */\r
-#define USART_GTPR_GT USART_GTPR_GT_Msk /*!< GT[7:0] bits (Guard time value) */\r
-\r
-\r
-/******************* Bit definition for USART_RTOR register *****************/\r
-#define USART_RTOR_RTO_Pos (0U) \r
-#define USART_RTOR_RTO_Msk (0xFFFFFFUL << USART_RTOR_RTO_Pos) /*!< 0x00FFFFFF */\r
-#define USART_RTOR_RTO USART_RTOR_RTO_Msk /*!< Receiver Time Out Value */\r
-#define USART_RTOR_BLEN_Pos (24U) \r
-#define USART_RTOR_BLEN_Msk (0xFFUL << USART_RTOR_BLEN_Pos) /*!< 0xFF000000 */\r
-#define USART_RTOR_BLEN USART_RTOR_BLEN_Msk /*!< Block Length */\r
-\r
-/******************* Bit definition for USART_RQR register ******************/\r
-#define USART_RQR_ABRRQ_Pos (0U) \r
-#define USART_RQR_ABRRQ_Msk (0x1UL << USART_RQR_ABRRQ_Pos) /*!< 0x00000001 */\r
-#define USART_RQR_ABRRQ USART_RQR_ABRRQ_Msk /*!< Auto-Baud Rate Request */\r
-#define USART_RQR_SBKRQ_Pos (1U) \r
-#define USART_RQR_SBKRQ_Msk (0x1UL << USART_RQR_SBKRQ_Pos) /*!< 0x00000002 */\r
-#define USART_RQR_SBKRQ USART_RQR_SBKRQ_Msk /*!< Send Break Request */\r
-#define USART_RQR_MMRQ_Pos (2U) \r
-#define USART_RQR_MMRQ_Msk (0x1UL << USART_RQR_MMRQ_Pos) /*!< 0x00000004 */\r
-#define USART_RQR_MMRQ USART_RQR_MMRQ_Msk /*!< Mute Mode Request */\r
-#define USART_RQR_RXFRQ_Pos (3U) \r
-#define USART_RQR_RXFRQ_Msk (0x1UL << USART_RQR_RXFRQ_Pos) /*!< 0x00000008 */\r
-#define USART_RQR_RXFRQ USART_RQR_RXFRQ_Msk /*!< Receive Data flush Request */\r
-#define USART_RQR_TXFRQ_Pos (4U) \r
-#define USART_RQR_TXFRQ_Msk (0x1UL << USART_RQR_TXFRQ_Pos) /*!< 0x00000010 */\r
-#define USART_RQR_TXFRQ USART_RQR_TXFRQ_Msk /*!< Transmit data flush Request */\r
-\r
-/******************* Bit definition for USART_ISR register ******************/\r
-#define USART_ISR_PE_Pos (0U) \r
-#define USART_ISR_PE_Msk (0x1UL << USART_ISR_PE_Pos) /*!< 0x00000001 */\r
-#define USART_ISR_PE USART_ISR_PE_Msk /*!< Parity Error */\r
-#define USART_ISR_FE_Pos (1U) \r
-#define USART_ISR_FE_Msk (0x1UL << USART_ISR_FE_Pos) /*!< 0x00000002 */\r
-#define USART_ISR_FE USART_ISR_FE_Msk /*!< Framing Error */\r
-#define USART_ISR_NE_Pos (2U) \r
-#define USART_ISR_NE_Msk (0x1UL << USART_ISR_NE_Pos) /*!< 0x00000004 */\r
-#define USART_ISR_NE USART_ISR_NE_Msk /*!< Noise detected Flag */\r
-#define USART_ISR_ORE_Pos (3U) \r
-#define USART_ISR_ORE_Msk (0x1UL << USART_ISR_ORE_Pos) /*!< 0x00000008 */\r
-#define USART_ISR_ORE USART_ISR_ORE_Msk /*!< OverRun Error */\r
-#define USART_ISR_IDLE_Pos (4U) \r
-#define USART_ISR_IDLE_Msk (0x1UL << USART_ISR_IDLE_Pos) /*!< 0x00000010 */\r
-#define USART_ISR_IDLE USART_ISR_IDLE_Msk /*!< IDLE line detected */\r
-#define USART_ISR_RXNE_Pos (5U) \r
-#define USART_ISR_RXNE_Msk (0x1UL << USART_ISR_RXNE_Pos) /*!< 0x00000020 */\r
-#define USART_ISR_RXNE USART_ISR_RXNE_Msk /*!< Read Data Register Not Empty */\r
-#define USART_ISR_TC_Pos (6U) \r
-#define USART_ISR_TC_Msk (0x1UL << USART_ISR_TC_Pos) /*!< 0x00000040 */\r
-#define USART_ISR_TC USART_ISR_TC_Msk /*!< Transmission Complete */\r
-#define USART_ISR_TXE_Pos (7U) \r
-#define USART_ISR_TXE_Msk (0x1UL << USART_ISR_TXE_Pos) /*!< 0x00000080 */\r
-#define USART_ISR_TXE USART_ISR_TXE_Msk /*!< Transmit Data Register Empty */\r
-#define USART_ISR_LBDF_Pos (8U) \r
-#define USART_ISR_LBDF_Msk (0x1UL << USART_ISR_LBDF_Pos) /*!< 0x00000100 */\r
-#define USART_ISR_LBDF USART_ISR_LBDF_Msk /*!< LIN Break Detection Flag */\r
-#define USART_ISR_CTSIF_Pos (9U) \r
-#define USART_ISR_CTSIF_Msk (0x1UL << USART_ISR_CTSIF_Pos) /*!< 0x00000200 */\r
-#define USART_ISR_CTSIF USART_ISR_CTSIF_Msk /*!< CTS interrupt flag */\r
-#define USART_ISR_CTS_Pos (10U) \r
-#define USART_ISR_CTS_Msk (0x1UL << USART_ISR_CTS_Pos) /*!< 0x00000400 */\r
-#define USART_ISR_CTS USART_ISR_CTS_Msk /*!< CTS flag */\r
-#define USART_ISR_RTOF_Pos (11U) \r
-#define USART_ISR_RTOF_Msk (0x1UL << USART_ISR_RTOF_Pos) /*!< 0x00000800 */\r
-#define USART_ISR_RTOF USART_ISR_RTOF_Msk /*!< Receiver Time Out */\r
-#define USART_ISR_EOBF_Pos (12U) \r
-#define USART_ISR_EOBF_Msk (0x1UL << USART_ISR_EOBF_Pos) /*!< 0x00001000 */\r
-#define USART_ISR_EOBF USART_ISR_EOBF_Msk /*!< End Of Block Flag */\r
-#define USART_ISR_ABRE_Pos (14U) \r
-#define USART_ISR_ABRE_Msk (0x1UL << USART_ISR_ABRE_Pos) /*!< 0x00004000 */\r
-#define USART_ISR_ABRE USART_ISR_ABRE_Msk /*!< Auto-Baud Rate Error */\r
-#define USART_ISR_ABRF_Pos (15U) \r
-#define USART_ISR_ABRF_Msk (0x1UL << USART_ISR_ABRF_Pos) /*!< 0x00008000 */\r
-#define USART_ISR_ABRF USART_ISR_ABRF_Msk /*!< Auto-Baud Rate Flag */\r
-#define USART_ISR_BUSY_Pos (16U) \r
-#define USART_ISR_BUSY_Msk (0x1UL << USART_ISR_BUSY_Pos) /*!< 0x00010000 */\r
-#define USART_ISR_BUSY USART_ISR_BUSY_Msk /*!< Busy Flag */\r
-#define USART_ISR_CMF_Pos (17U) \r
-#define USART_ISR_CMF_Msk (0x1UL << USART_ISR_CMF_Pos) /*!< 0x00020000 */\r
-#define USART_ISR_CMF USART_ISR_CMF_Msk /*!< Character Match Flag */\r
-#define USART_ISR_SBKF_Pos (18U) \r
-#define USART_ISR_SBKF_Msk (0x1UL << USART_ISR_SBKF_Pos) /*!< 0x00040000 */\r
-#define USART_ISR_SBKF USART_ISR_SBKF_Msk /*!< Send Break Flag */\r
-#define USART_ISR_RWU_Pos (19U) \r
-#define USART_ISR_RWU_Msk (0x1UL << USART_ISR_RWU_Pos) /*!< 0x00080000 */\r
-#define USART_ISR_RWU USART_ISR_RWU_Msk /*!< Receive Wake Up from mute mode Flag */\r
-#define USART_ISR_TEACK_Pos (21U) \r
-#define USART_ISR_TEACK_Msk (0x1UL << USART_ISR_TEACK_Pos) /*!< 0x00200000 */\r
-#define USART_ISR_TEACK USART_ISR_TEACK_Msk /*!< Transmit Enable Acknowledge Flag */\r
-\r
-/******************* Bit definition for USART_ICR register ******************/\r
-#define USART_ICR_PECF_Pos (0U) \r
-#define USART_ICR_PECF_Msk (0x1UL << USART_ICR_PECF_Pos) /*!< 0x00000001 */\r
-#define USART_ICR_PECF USART_ICR_PECF_Msk /*!< Parity Error Clear Flag */\r
-#define USART_ICR_FECF_Pos (1U) \r
-#define USART_ICR_FECF_Msk (0x1UL << USART_ICR_FECF_Pos) /*!< 0x00000002 */\r
-#define USART_ICR_FECF USART_ICR_FECF_Msk /*!< Framing Error Clear Flag */\r
-#define USART_ICR_NCF_Pos (2U) \r
-#define USART_ICR_NCF_Msk (0x1UL << USART_ICR_NCF_Pos) /*!< 0x00000004 */\r
-#define USART_ICR_NCF USART_ICR_NCF_Msk /*!< Noise detected Clear Flag */\r
-#define USART_ICR_ORECF_Pos (3U) \r
-#define USART_ICR_ORECF_Msk (0x1UL << USART_ICR_ORECF_Pos) /*!< 0x00000008 */\r
-#define USART_ICR_ORECF USART_ICR_ORECF_Msk /*!< OverRun Error Clear Flag */\r
-#define USART_ICR_IDLECF_Pos (4U) \r
-#define USART_ICR_IDLECF_Msk (0x1UL << USART_ICR_IDLECF_Pos) /*!< 0x00000010 */\r
-#define USART_ICR_IDLECF USART_ICR_IDLECF_Msk /*!< IDLE line detected Clear Flag */\r
-#define USART_ICR_TCCF_Pos (6U) \r
-#define USART_ICR_TCCF_Msk (0x1UL << USART_ICR_TCCF_Pos) /*!< 0x00000040 */\r
-#define USART_ICR_TCCF USART_ICR_TCCF_Msk /*!< Transmission Complete Clear Flag */\r
-#define USART_ICR_LBDCF_Pos (8U) \r
-#define USART_ICR_LBDCF_Msk (0x1UL << USART_ICR_LBDCF_Pos) /*!< 0x00000100 */\r
-#define USART_ICR_LBDCF USART_ICR_LBDCF_Msk /*!< LIN Break Detection Clear Flag */\r
-#define USART_ICR_CTSCF_Pos (9U) \r
-#define USART_ICR_CTSCF_Msk (0x1UL << USART_ICR_CTSCF_Pos) /*!< 0x00000200 */\r
-#define USART_ICR_CTSCF USART_ICR_CTSCF_Msk /*!< CTS Interrupt Clear Flag */\r
-#define USART_ICR_RTOCF_Pos (11U) \r
-#define USART_ICR_RTOCF_Msk (0x1UL << USART_ICR_RTOCF_Pos) /*!< 0x00000800 */\r
-#define USART_ICR_RTOCF USART_ICR_RTOCF_Msk /*!< Receiver Time Out Clear Flag */\r
-#define USART_ICR_EOBCF_Pos (12U) \r
-#define USART_ICR_EOBCF_Msk (0x1UL << USART_ICR_EOBCF_Pos) /*!< 0x00001000 */\r
-#define USART_ICR_EOBCF USART_ICR_EOBCF_Msk /*!< End Of Block Clear Flag */\r
-#define USART_ICR_CMCF_Pos (17U) \r
-#define USART_ICR_CMCF_Msk (0x1UL << USART_ICR_CMCF_Pos) /*!< 0x00020000 */\r
-#define USART_ICR_CMCF USART_ICR_CMCF_Msk /*!< Character Match Clear Flag */\r
-\r
-/******************* Bit definition for USART_RDR register ******************/\r
-#define USART_RDR_RDR_Pos (0U) \r
-#define USART_RDR_RDR_Msk (0x1FFUL << USART_RDR_RDR_Pos) /*!< 0x000001FF */\r
-#define USART_RDR_RDR USART_RDR_RDR_Msk /*!< RDR[8:0] bits (Receive Data value) */\r
-\r
-/******************* Bit definition for USART_TDR register ******************/\r
-#define USART_TDR_TDR_Pos (0U) \r
-#define USART_TDR_TDR_Msk (0x1FFUL << USART_TDR_TDR_Pos) /*!< 0x000001FF */\r
-#define USART_TDR_TDR USART_TDR_TDR_Msk /*!< TDR[8:0] bits (Transmit Data value) */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Window WATCHDOG */\r
-/* */\r
-/******************************************************************************/\r
-/******************* Bit definition for WWDG_CR register ********************/\r
-#define WWDG_CR_T_Pos (0U) \r
-#define WWDG_CR_T_Msk (0x7FUL << WWDG_CR_T_Pos) /*!< 0x0000007F */\r
-#define WWDG_CR_T WWDG_CR_T_Msk /*!<T[6:0] bits (7-Bit counter (MSB to LSB)) */\r
-#define WWDG_CR_T_0 (0x01UL << WWDG_CR_T_Pos) /*!< 0x01 */\r
-#define WWDG_CR_T_1 (0x02UL << WWDG_CR_T_Pos) /*!< 0x02 */\r
-#define WWDG_CR_T_2 (0x04UL << WWDG_CR_T_Pos) /*!< 0x04 */\r
-#define WWDG_CR_T_3 (0x08UL << WWDG_CR_T_Pos) /*!< 0x08 */\r
-#define WWDG_CR_T_4 (0x10UL << WWDG_CR_T_Pos) /*!< 0x10 */\r
-#define WWDG_CR_T_5 (0x20UL << WWDG_CR_T_Pos) /*!< 0x20 */\r
-#define WWDG_CR_T_6 (0x40UL << WWDG_CR_T_Pos) /*!< 0x40 */\r
-\r
-\r
-#define WWDG_CR_WDGA_Pos (7U) \r
-#define WWDG_CR_WDGA_Msk (0x1UL << WWDG_CR_WDGA_Pos) /*!< 0x00000080 */\r
-#define WWDG_CR_WDGA WWDG_CR_WDGA_Msk /*!<Activation bit */\r
-\r
-/******************* Bit definition for WWDG_CFR register *******************/\r
-#define WWDG_CFR_W_Pos (0U) \r
-#define WWDG_CFR_W_Msk (0x7FUL << WWDG_CFR_W_Pos) /*!< 0x0000007F */\r
-#define WWDG_CFR_W WWDG_CFR_W_Msk /*!<W[6:0] bits (7-bit window value) */\r
-#define WWDG_CFR_W_0 (0x01UL << WWDG_CFR_W_Pos) /*!< 0x0001 */\r
-#define WWDG_CFR_W_1 (0x02UL << WWDG_CFR_W_Pos) /*!< 0x0002 */\r
-#define WWDG_CFR_W_2 (0x04UL << WWDG_CFR_W_Pos) /*!< 0x0004 */\r
-#define WWDG_CFR_W_3 (0x08UL << WWDG_CFR_W_Pos) /*!< 0x0008 */\r
-#define WWDG_CFR_W_4 (0x10UL << WWDG_CFR_W_Pos) /*!< 0x0010 */\r
-#define WWDG_CFR_W_5 (0x20UL << WWDG_CFR_W_Pos) /*!< 0x0020 */\r
-#define WWDG_CFR_W_6 (0x40UL << WWDG_CFR_W_Pos) /*!< 0x0040 */\r
-\r
-\r
-#define WWDG_CFR_WDGTB_Pos (7U) \r
-#define WWDG_CFR_WDGTB_Msk (0x3UL << WWDG_CFR_WDGTB_Pos) /*!< 0x00000180 */\r
-#define WWDG_CFR_WDGTB WWDG_CFR_WDGTB_Msk /*!<WDGTB[1:0] bits (Timer Base) */\r
-#define WWDG_CFR_WDGTB_0 (0x1UL << WWDG_CFR_WDGTB_Pos) /*!< 0x0080 */\r
-#define WWDG_CFR_WDGTB_1 (0x2UL << WWDG_CFR_WDGTB_Pos) /*!< 0x0100 */\r
-\r
-\r
-#define WWDG_CFR_EWI_Pos (9U) \r
-#define WWDG_CFR_EWI_Msk (0x1UL << WWDG_CFR_EWI_Pos) /*!< 0x00000200 */\r
-#define WWDG_CFR_EWI WWDG_CFR_EWI_Msk /*!<Early Wakeup Interrupt */\r
-\r
-/******************* Bit definition for WWDG_SR register ********************/\r
-#define WWDG_SR_EWIF_Pos (0U) \r
-#define WWDG_SR_EWIF_Msk (0x1UL << WWDG_SR_EWIF_Pos) /*!< 0x00000001 */\r
-#define WWDG_SR_EWIF WWDG_SR_EWIF_Msk /*!<Early Wakeup Interrupt Flag */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* DBG */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for DBGMCU_IDCODE register *************/\r
-#define DBGMCU_IDCODE_DEV_ID_Pos (0U) \r
-#define DBGMCU_IDCODE_DEV_ID_Msk (0xFFFUL << DBGMCU_IDCODE_DEV_ID_Pos) /*!< 0x00000FFF */\r
-#define DBGMCU_IDCODE_DEV_ID DBGMCU_IDCODE_DEV_ID_Msk \r
-#define DBGMCU_IDCODE_REV_ID_Pos (16U) \r
-#define DBGMCU_IDCODE_REV_ID_Msk (0xFFFFUL << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0xFFFF0000 */\r
-#define DBGMCU_IDCODE_REV_ID DBGMCU_IDCODE_REV_ID_Msk \r
-\r
-/******************** Bit definition for DBGMCU_CR register *****************/\r
-#define DBGMCU_CR_DBG_SLEEP_Pos (0U) \r
-#define DBGMCU_CR_DBG_SLEEP_Msk (0x1UL << DBGMCU_CR_DBG_SLEEP_Pos) /*!< 0x00000001 */\r
-#define DBGMCU_CR_DBG_SLEEP DBGMCU_CR_DBG_SLEEP_Msk \r
-#define DBGMCU_CR_DBG_STOP_Pos (1U) \r
-#define DBGMCU_CR_DBG_STOP_Msk (0x1UL << DBGMCU_CR_DBG_STOP_Pos) /*!< 0x00000002 */\r
-#define DBGMCU_CR_DBG_STOP DBGMCU_CR_DBG_STOP_Msk \r
-#define DBGMCU_CR_DBG_STANDBY_Pos (2U) \r
-#define DBGMCU_CR_DBG_STANDBY_Msk (0x1UL << DBGMCU_CR_DBG_STANDBY_Pos) /*!< 0x00000004 */\r
-#define DBGMCU_CR_DBG_STANDBY DBGMCU_CR_DBG_STANDBY_Msk \r
-#define DBGMCU_CR_TRACE_IOEN_Pos (5U) \r
-#define DBGMCU_CR_TRACE_IOEN_Msk (0x1UL << DBGMCU_CR_TRACE_IOEN_Pos) /*!< 0x00000020 */\r
-#define DBGMCU_CR_TRACE_IOEN DBGMCU_CR_TRACE_IOEN_Msk \r
-\r
-#define DBGMCU_CR_TRACE_MODE_Pos (6U) \r
-#define DBGMCU_CR_TRACE_MODE_Msk (0x3UL << DBGMCU_CR_TRACE_MODE_Pos) /*!< 0x000000C0 */\r
-#define DBGMCU_CR_TRACE_MODE DBGMCU_CR_TRACE_MODE_Msk \r
-#define DBGMCU_CR_TRACE_MODE_0 (0x1UL << DBGMCU_CR_TRACE_MODE_Pos) /*!< 0x00000040 */\r
-#define DBGMCU_CR_TRACE_MODE_1 (0x2UL << DBGMCU_CR_TRACE_MODE_Pos) /*!< 0x00000080 */\r
-\r
-/******************** Bit definition for DBGMCU_APB1_FZ register ************/\r
-#define DBGMCU_APB1_FZ_DBG_TIM2_STOP_Pos (0U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM2_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM2_STOP_Pos) /*!< 0x00000001 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM2_STOP DBGMCU_APB1_FZ_DBG_TIM2_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM3_STOP_Pos (1U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM3_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM3_STOP_Pos) /*!< 0x00000002 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM3_STOP DBGMCU_APB1_FZ_DBG_TIM3_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM4_STOP_Pos (2U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM4_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM4_STOP_Pos) /*!< 0x00000004 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM4_STOP DBGMCU_APB1_FZ_DBG_TIM4_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM5_STOP_Pos (3U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM5_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM5_STOP_Pos) /*!< 0x00000008 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM5_STOP DBGMCU_APB1_FZ_DBG_TIM5_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM6_STOP_Pos (4U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM6_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM6_STOP_Pos) /*!< 0x00000010 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM6_STOP DBGMCU_APB1_FZ_DBG_TIM6_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM7_STOP_Pos (5U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM7_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM7_STOP_Pos) /*!< 0x00000020 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM7_STOP DBGMCU_APB1_FZ_DBG_TIM7_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM12_STOP_Pos (6U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM12_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM12_STOP_Pos) /*!< 0x00000040 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM12_STOP DBGMCU_APB1_FZ_DBG_TIM12_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM13_STOP_Pos (7U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM13_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM13_STOP_Pos) /*!< 0x00000080 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM13_STOP DBGMCU_APB1_FZ_DBG_TIM13_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_TIM14_STOP_Pos (8U) \r
-#define DBGMCU_APB1_FZ_DBG_TIM14_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_TIM14_STOP_Pos) /*!< 0x00000100 */\r
-#define DBGMCU_APB1_FZ_DBG_TIM14_STOP DBGMCU_APB1_FZ_DBG_TIM14_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_LPTIM1_STOP_Pos (9U) \r
-#define DBGMCU_APB1_FZ_DBG_LPTIM1_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_LPTIM1_STOP_Pos) /*!< 0x00000200 */\r
-#define DBGMCU_APB1_FZ_DBG_LPTIM1_STOP DBGMCU_APB1_FZ_DBG_LPTIM1_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_RTC_STOP_Pos (10U) \r
-#define DBGMCU_APB1_FZ_DBG_RTC_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_RTC_STOP_Pos) /*!< 0x00000400 */\r
-#define DBGMCU_APB1_FZ_DBG_RTC_STOP DBGMCU_APB1_FZ_DBG_RTC_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_WWDG_STOP_Pos (11U) \r
-#define DBGMCU_APB1_FZ_DBG_WWDG_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_WWDG_STOP_Pos) /*!< 0x00000800 */\r
-#define DBGMCU_APB1_FZ_DBG_WWDG_STOP DBGMCU_APB1_FZ_DBG_WWDG_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_IWDG_STOP_Pos (12U) \r
-#define DBGMCU_APB1_FZ_DBG_IWDG_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_IWDG_STOP_Pos) /*!< 0x00001000 */\r
-#define DBGMCU_APB1_FZ_DBG_IWDG_STOP DBGMCU_APB1_FZ_DBG_IWDG_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_CAN3_STOP_Pos (13U) \r
-#define DBGMCU_APB1_FZ_DBG_CAN3_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_CAN3_STOP_Pos) /*!< 0x00002000 */\r
-#define DBGMCU_APB1_FZ_DBG_CAN3_STOP DBGMCU_APB1_FZ_DBG_CAN3_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT_Pos (21U) \r
-#define DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT_Pos) /*!< 0x00200000 */\r
-#define DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT_Msk \r
-#define DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT_Pos (22U) \r
-#define DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT_Pos) /*!< 0x00400000 */\r
-#define DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT_Msk \r
-#define DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT_Pos (23U) \r
-#define DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT_Pos) /*!< 0x00800000 */\r
-#define DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT_Msk \r
-#define DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT_Pos (24U) \r
-#define DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT_Pos) /*!< 0x01000000 */\r
-#define DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT_Msk \r
-#define DBGMCU_APB1_FZ_DBG_CAN1_STOP_Pos (25U) \r
-#define DBGMCU_APB1_FZ_DBG_CAN1_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_CAN1_STOP_Pos) /*!< 0x02000000 */\r
-#define DBGMCU_APB1_FZ_DBG_CAN1_STOP DBGMCU_APB1_FZ_DBG_CAN1_STOP_Msk \r
-#define DBGMCU_APB1_FZ_DBG_CAN2_STOP_Pos (26U) \r
-#define DBGMCU_APB1_FZ_DBG_CAN2_STOP_Msk (0x1UL << DBGMCU_APB1_FZ_DBG_CAN2_STOP_Pos) /*!< 0x04000000 */\r
-#define DBGMCU_APB1_FZ_DBG_CAN2_STOP DBGMCU_APB1_FZ_DBG_CAN2_STOP_Msk \r
-\r
-/******************** Bit definition for DBGMCU_APB2_FZ register ************/\r
-#define DBGMCU_APB2_FZ_DBG_TIM1_STOP_Pos (0U) \r
-#define DBGMCU_APB2_FZ_DBG_TIM1_STOP_Msk (0x1UL << DBGMCU_APB2_FZ_DBG_TIM1_STOP_Pos) /*!< 0x00000001 */\r
-#define DBGMCU_APB2_FZ_DBG_TIM1_STOP DBGMCU_APB2_FZ_DBG_TIM1_STOP_Msk \r
-#define DBGMCU_APB2_FZ_DBG_TIM8_STOP_Pos (1U) \r
-#define DBGMCU_APB2_FZ_DBG_TIM8_STOP_Msk (0x1UL << DBGMCU_APB2_FZ_DBG_TIM8_STOP_Pos) /*!< 0x00000002 */\r
-#define DBGMCU_APB2_FZ_DBG_TIM8_STOP DBGMCU_APB2_FZ_DBG_TIM8_STOP_Msk \r
-#define DBGMCU_APB2_FZ_DBG_TIM9_STOP_Pos (16U) \r
-#define DBGMCU_APB2_FZ_DBG_TIM9_STOP_Msk (0x1UL << DBGMCU_APB2_FZ_DBG_TIM9_STOP_Pos) /*!< 0x00010000 */\r
-#define DBGMCU_APB2_FZ_DBG_TIM9_STOP DBGMCU_APB2_FZ_DBG_TIM9_STOP_Msk \r
-#define DBGMCU_APB2_FZ_DBG_TIM10_STOP_Pos (17U) \r
-#define DBGMCU_APB2_FZ_DBG_TIM10_STOP_Msk (0x1UL << DBGMCU_APB2_FZ_DBG_TIM10_STOP_Pos) /*!< 0x00020000 */\r
-#define DBGMCU_APB2_FZ_DBG_TIM10_STOP DBGMCU_APB2_FZ_DBG_TIM10_STOP_Msk \r
-#define DBGMCU_APB2_FZ_DBG_TIM11_STOP_Pos (18U) \r
-#define DBGMCU_APB2_FZ_DBG_TIM11_STOP_Msk (0x1UL << DBGMCU_APB2_FZ_DBG_TIM11_STOP_Pos) /*!< 0x00040000 */\r
-#define DBGMCU_APB2_FZ_DBG_TIM11_STOP DBGMCU_APB2_FZ_DBG_TIM11_STOP_Msk \r
-\r
-/******************************************************************************/\r
-/* */\r
-/* Ethernet MAC Registers bits definitions */\r
-/* */\r
-/******************************************************************************/\r
-/* Bit definition for Ethernet MAC Control Register register */\r
-#define ETH_MACCR_WD_Pos (23U) \r
-#define ETH_MACCR_WD_Msk (0x1UL << ETH_MACCR_WD_Pos) /*!< 0x00800000 */\r
-#define ETH_MACCR_WD ETH_MACCR_WD_Msk /* Watchdog disable */\r
-#define ETH_MACCR_JD_Pos (22U) \r
-#define ETH_MACCR_JD_Msk (0x1UL << ETH_MACCR_JD_Pos) /*!< 0x00400000 */\r
-#define ETH_MACCR_JD ETH_MACCR_JD_Msk /* Jabber disable */\r
-#define ETH_MACCR_IFG_Pos (17U) \r
-#define ETH_MACCR_IFG_Msk (0x7UL << ETH_MACCR_IFG_Pos) /*!< 0x000E0000 */\r
-#define ETH_MACCR_IFG ETH_MACCR_IFG_Msk /* Inter-frame gap */\r
-#define ETH_MACCR_IFG_96Bit 0x00000000U /* Minimum IFG between frames during transmission is 96Bit */\r
-#define ETH_MACCR_IFG_88Bit 0x00020000U /* Minimum IFG between frames during transmission is 88Bit */\r
-#define ETH_MACCR_IFG_80Bit 0x00040000U /* Minimum IFG between frames during transmission is 80Bit */\r
-#define ETH_MACCR_IFG_72Bit 0x00060000U /* Minimum IFG between frames during transmission is 72Bit */\r
-#define ETH_MACCR_IFG_64Bit 0x00080000U /* Minimum IFG between frames during transmission is 64Bit */\r
-#define ETH_MACCR_IFG_56Bit 0x000A0000U /* Minimum IFG between frames during transmission is 56Bit */\r
-#define ETH_MACCR_IFG_48Bit 0x000C0000U /* Minimum IFG between frames during transmission is 48Bit */\r
-#define ETH_MACCR_IFG_40Bit 0x000E0000U /* Minimum IFG between frames during transmission is 40Bit */\r
-#define ETH_MACCR_CSD_Pos (16U) \r
-#define ETH_MACCR_CSD_Msk (0x1UL << ETH_MACCR_CSD_Pos) /*!< 0x00010000 */\r
-#define ETH_MACCR_CSD ETH_MACCR_CSD_Msk /* Carrier sense disable (during transmission) */\r
-#define ETH_MACCR_FES_Pos (14U) \r
-#define ETH_MACCR_FES_Msk (0x1UL << ETH_MACCR_FES_Pos) /*!< 0x00004000 */\r
-#define ETH_MACCR_FES ETH_MACCR_FES_Msk /* Fast ethernet speed */\r
-#define ETH_MACCR_ROD_Pos (13U) \r
-#define ETH_MACCR_ROD_Msk (0x1UL << ETH_MACCR_ROD_Pos) /*!< 0x00002000 */\r
-#define ETH_MACCR_ROD ETH_MACCR_ROD_Msk /* Receive own disable */\r
-#define ETH_MACCR_LM_Pos (12U) \r
-#define ETH_MACCR_LM_Msk (0x1UL << ETH_MACCR_LM_Pos) /*!< 0x00001000 */\r
-#define ETH_MACCR_LM ETH_MACCR_LM_Msk /* loopback mode */\r
-#define ETH_MACCR_DM_Pos (11U) \r
-#define ETH_MACCR_DM_Msk (0x1UL << ETH_MACCR_DM_Pos) /*!< 0x00000800 */\r
-#define ETH_MACCR_DM ETH_MACCR_DM_Msk /* Duplex mode */\r
-#define ETH_MACCR_IPCO_Pos (10U) \r
-#define ETH_MACCR_IPCO_Msk (0x1UL << ETH_MACCR_IPCO_Pos) /*!< 0x00000400 */\r
-#define ETH_MACCR_IPCO ETH_MACCR_IPCO_Msk /* IP Checksum offload */\r
-#define ETH_MACCR_RD_Pos (9U) \r
-#define ETH_MACCR_RD_Msk (0x1UL << ETH_MACCR_RD_Pos) /*!< 0x00000200 */\r
-#define ETH_MACCR_RD ETH_MACCR_RD_Msk /* Retry disable */\r
-#define ETH_MACCR_APCS_Pos (7U) \r
-#define ETH_MACCR_APCS_Msk (0x1UL << ETH_MACCR_APCS_Pos) /*!< 0x00000080 */\r
-#define ETH_MACCR_APCS ETH_MACCR_APCS_Msk /* Automatic Pad/CRC stripping */\r
-#define ETH_MACCR_BL_Pos (5U) \r
-#define ETH_MACCR_BL_Msk (0x3UL << ETH_MACCR_BL_Pos) /*!< 0x00000060 */\r
-#define ETH_MACCR_BL ETH_MACCR_BL_Msk /* Back-off limit: random integer number (r) of slot time delays before rescheduling\r
- a transmission attempt during retries after a collision: 0 =< r <2^k */\r
-#define ETH_MACCR_BL_10 0x00000000U /* k = min (n, 10) */\r
-#define ETH_MACCR_BL_8 0x00000020U /* k = min (n, 8) */\r
-#define ETH_MACCR_BL_4 0x00000040U /* k = min (n, 4) */\r
-#define ETH_MACCR_BL_1 0x00000060U /* k = min (n, 1) */\r
-#define ETH_MACCR_DC_Pos (4U) \r
-#define ETH_MACCR_DC_Msk (0x1UL << ETH_MACCR_DC_Pos) /*!< 0x00000010 */\r
-#define ETH_MACCR_DC ETH_MACCR_DC_Msk /* Defferal check */\r
-#define ETH_MACCR_TE_Pos (3U) \r
-#define ETH_MACCR_TE_Msk (0x1UL << ETH_MACCR_TE_Pos) /*!< 0x00000008 */\r
-#define ETH_MACCR_TE ETH_MACCR_TE_Msk /* Transmitter enable */\r
-#define ETH_MACCR_RE_Pos (2U) \r
-#define ETH_MACCR_RE_Msk (0x1UL << ETH_MACCR_RE_Pos) /*!< 0x00000004 */\r
-#define ETH_MACCR_RE ETH_MACCR_RE_Msk /* Receiver enable */\r
-\r
-/* Bit definition for Ethernet MAC Frame Filter Register */\r
-#define ETH_MACFFR_RA_Pos (31U) \r
-#define ETH_MACFFR_RA_Msk (0x1UL << ETH_MACFFR_RA_Pos) /*!< 0x80000000 */\r
-#define ETH_MACFFR_RA ETH_MACFFR_RA_Msk /* Receive all */\r
-#define ETH_MACFFR_HPF_Pos (10U) \r
-#define ETH_MACFFR_HPF_Msk (0x1UL << ETH_MACFFR_HPF_Pos) /*!< 0x00000400 */\r
-#define ETH_MACFFR_HPF ETH_MACFFR_HPF_Msk /* Hash or perfect filter */\r
-#define ETH_MACFFR_SAF_Pos (9U) \r
-#define ETH_MACFFR_SAF_Msk (0x1UL << ETH_MACFFR_SAF_Pos) /*!< 0x00000200 */\r
-#define ETH_MACFFR_SAF ETH_MACFFR_SAF_Msk /* Source address filter enable */\r
-#define ETH_MACFFR_SAIF_Pos (8U) \r
-#define ETH_MACFFR_SAIF_Msk (0x1UL << ETH_MACFFR_SAIF_Pos) /*!< 0x00000100 */\r
-#define ETH_MACFFR_SAIF ETH_MACFFR_SAIF_Msk /* SA inverse filtering */\r
-#define ETH_MACFFR_PCF_Pos (6U) \r
-#define ETH_MACFFR_PCF_Msk (0x3UL << ETH_MACFFR_PCF_Pos) /*!< 0x000000C0 */\r
-#define ETH_MACFFR_PCF ETH_MACFFR_PCF_Msk /* Pass control frames: 3 cases */\r
-#define ETH_MACFFR_PCF_BlockAll_Pos (6U) \r
-#define ETH_MACFFR_PCF_BlockAll_Msk (0x1UL << ETH_MACFFR_PCF_BlockAll_Pos) /*!< 0x00000040 */\r
-#define ETH_MACFFR_PCF_BlockAll ETH_MACFFR_PCF_BlockAll_Msk /* MAC filters all control frames from reaching the application */\r
-#define ETH_MACFFR_PCF_ForwardAll_Pos (7U) \r
-#define ETH_MACFFR_PCF_ForwardAll_Msk (0x1UL << ETH_MACFFR_PCF_ForwardAll_Pos) /*!< 0x00000080 */\r
-#define ETH_MACFFR_PCF_ForwardAll ETH_MACFFR_PCF_ForwardAll_Msk /* MAC forwards all control frames to application even if they fail the Address Filter */\r
-#define ETH_MACFFR_PCF_ForwardPassedAddrFilter_Pos (6U) \r
-#define ETH_MACFFR_PCF_ForwardPassedAddrFilter_Msk (0x3UL << ETH_MACFFR_PCF_ForwardPassedAddrFilter_Pos) /*!< 0x000000C0 */\r
-#define ETH_MACFFR_PCF_ForwardPassedAddrFilter ETH_MACFFR_PCF_ForwardPassedAddrFilter_Msk /* MAC forwards control frames that pass the Address Filter. */\r
-#define ETH_MACFFR_BFD_Pos (5U) \r
-#define ETH_MACFFR_BFD_Msk (0x1UL << ETH_MACFFR_BFD_Pos) /*!< 0x00000020 */\r
-#define ETH_MACFFR_BFD ETH_MACFFR_BFD_Msk /* Broadcast frame disable */\r
-#define ETH_MACFFR_PAM_Pos (4U) \r
-#define ETH_MACFFR_PAM_Msk (0x1UL << ETH_MACFFR_PAM_Pos) /*!< 0x00000010 */\r
-#define ETH_MACFFR_PAM ETH_MACFFR_PAM_Msk /* Pass all mutlicast */\r
-#define ETH_MACFFR_DAIF_Pos (3U) \r
-#define ETH_MACFFR_DAIF_Msk (0x1UL << ETH_MACFFR_DAIF_Pos) /*!< 0x00000008 */\r
-#define ETH_MACFFR_DAIF ETH_MACFFR_DAIF_Msk /* DA Inverse filtering */\r
-#define ETH_MACFFR_HM_Pos (2U) \r
-#define ETH_MACFFR_HM_Msk (0x1UL << ETH_MACFFR_HM_Pos) /*!< 0x00000004 */\r
-#define ETH_MACFFR_HM ETH_MACFFR_HM_Msk /* Hash multicast */\r
-#define ETH_MACFFR_HU_Pos (1U) \r
-#define ETH_MACFFR_HU_Msk (0x1UL << ETH_MACFFR_HU_Pos) /*!< 0x00000002 */\r
-#define ETH_MACFFR_HU ETH_MACFFR_HU_Msk /* Hash unicast */\r
-#define ETH_MACFFR_PM_Pos (0U) \r
-#define ETH_MACFFR_PM_Msk (0x1UL << ETH_MACFFR_PM_Pos) /*!< 0x00000001 */\r
-#define ETH_MACFFR_PM ETH_MACFFR_PM_Msk /* Promiscuous mode */\r
-\r
-/* Bit definition for Ethernet MAC Hash Table High Register */\r
-#define ETH_MACHTHR_HTH_Pos (0U) \r
-#define ETH_MACHTHR_HTH_Msk (0xFFFFFFFFUL << ETH_MACHTHR_HTH_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MACHTHR_HTH ETH_MACHTHR_HTH_Msk /* Hash table high */\r
-\r
-/* Bit definition for Ethernet MAC Hash Table Low Register */\r
-#define ETH_MACHTLR_HTL_Pos (0U) \r
-#define ETH_MACHTLR_HTL_Msk (0xFFFFFFFFUL << ETH_MACHTLR_HTL_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MACHTLR_HTL ETH_MACHTLR_HTL_Msk /* Hash table low */\r
-\r
-/* Bit definition for Ethernet MAC MII Address Register */\r
-#define ETH_MACMIIAR_PA_Pos (11U) \r
-#define ETH_MACMIIAR_PA_Msk (0x1FUL << ETH_MACMIIAR_PA_Pos) /*!< 0x0000F800 */\r
-#define ETH_MACMIIAR_PA ETH_MACMIIAR_PA_Msk /* Physical layer address */\r
-#define ETH_MACMIIAR_MR_Pos (6U) \r
-#define ETH_MACMIIAR_MR_Msk (0x1FUL << ETH_MACMIIAR_MR_Pos) /*!< 0x000007C0 */\r
-#define ETH_MACMIIAR_MR ETH_MACMIIAR_MR_Msk /* MII register in the selected PHY */\r
-#define ETH_MACMIIAR_CR_Pos (2U) \r
-#define ETH_MACMIIAR_CR_Msk (0x7UL << ETH_MACMIIAR_CR_Pos) /*!< 0x0000001C */\r
-#define ETH_MACMIIAR_CR ETH_MACMIIAR_CR_Msk /* CR clock range: 6 cases */\r
-#define ETH_MACMIIAR_CR_Div42 0x00000000U /* HCLK:60-100 MHz; MDC clock= HCLK/42 */\r
-#define ETH_MACMIIAR_CR_Div62_Pos (2U) \r
-#define ETH_MACMIIAR_CR_Div62_Msk (0x1UL << ETH_MACMIIAR_CR_Div62_Pos) /*!< 0x00000004 */\r
-#define ETH_MACMIIAR_CR_Div62 ETH_MACMIIAR_CR_Div62_Msk /* HCLK:100-150 MHz; MDC clock= HCLK/62 */\r
-#define ETH_MACMIIAR_CR_Div16_Pos (3U) \r
-#define ETH_MACMIIAR_CR_Div16_Msk (0x1UL << ETH_MACMIIAR_CR_Div16_Pos) /*!< 0x00000008 */\r
-#define ETH_MACMIIAR_CR_Div16 ETH_MACMIIAR_CR_Div16_Msk /* HCLK:20-35 MHz; MDC clock= HCLK/16 */\r
-#define ETH_MACMIIAR_CR_Div26_Pos (2U) \r
-#define ETH_MACMIIAR_CR_Div26_Msk (0x3UL << ETH_MACMIIAR_CR_Div26_Pos) /*!< 0x0000000C */\r
-#define ETH_MACMIIAR_CR_Div26 ETH_MACMIIAR_CR_Div26_Msk /* HCLK:35-60 MHz; MDC clock= HCLK/26 */\r
-#define ETH_MACMIIAR_CR_Div102_Pos (4U) \r
-#define ETH_MACMIIAR_CR_Div102_Msk (0x1UL << ETH_MACMIIAR_CR_Div102_Pos) /*!< 0x00000010 */\r
-#define ETH_MACMIIAR_CR_Div102 ETH_MACMIIAR_CR_Div102_Msk /* HCLK:150-168 MHz; MDC clock= HCLK/102 */\r
-#define ETH_MACMIIAR_MW_Pos (1U) \r
-#define ETH_MACMIIAR_MW_Msk (0x1UL << ETH_MACMIIAR_MW_Pos) /*!< 0x00000002 */\r
-#define ETH_MACMIIAR_MW ETH_MACMIIAR_MW_Msk /* MII write */\r
-#define ETH_MACMIIAR_MB_Pos (0U) \r
-#define ETH_MACMIIAR_MB_Msk (0x1UL << ETH_MACMIIAR_MB_Pos) /*!< 0x00000001 */\r
-#define ETH_MACMIIAR_MB ETH_MACMIIAR_MB_Msk /* MII busy */\r
-\r
-/* Bit definition for Ethernet MAC MII Data Register */\r
-#define ETH_MACMIIDR_MD_Pos (0U) \r
-#define ETH_MACMIIDR_MD_Msk (0xFFFFUL << ETH_MACMIIDR_MD_Pos) /*!< 0x0000FFFF */\r
-#define ETH_MACMIIDR_MD ETH_MACMIIDR_MD_Msk /* MII data: read/write data from/to PHY */\r
-\r
-/* Bit definition for Ethernet MAC Flow Control Register */\r
-#define ETH_MACFCR_PT_Pos (16U) \r
-#define ETH_MACFCR_PT_Msk (0xFFFFUL << ETH_MACFCR_PT_Pos) /*!< 0xFFFF0000 */\r
-#define ETH_MACFCR_PT ETH_MACFCR_PT_Msk /* Pause time */\r
-#define ETH_MACFCR_ZQPD_Pos (7U) \r
-#define ETH_MACFCR_ZQPD_Msk (0x1UL << ETH_MACFCR_ZQPD_Pos) /*!< 0x00000080 */\r
-#define ETH_MACFCR_ZQPD ETH_MACFCR_ZQPD_Msk /* Zero-quanta pause disable */\r
-#define ETH_MACFCR_PLT_Pos (4U) \r
-#define ETH_MACFCR_PLT_Msk (0x3UL << ETH_MACFCR_PLT_Pos) /*!< 0x00000030 */\r
-#define ETH_MACFCR_PLT ETH_MACFCR_PLT_Msk /* Pause low threshold: 4 cases */\r
-#define ETH_MACFCR_PLT_Minus4 0x00000000U /* Pause time minus 4 slot times */\r
-#define ETH_MACFCR_PLT_Minus28_Pos (4U) \r
-#define ETH_MACFCR_PLT_Minus28_Msk (0x1UL << ETH_MACFCR_PLT_Minus28_Pos) /*!< 0x00000010 */\r
-#define ETH_MACFCR_PLT_Minus28 ETH_MACFCR_PLT_Minus28_Msk /* Pause time minus 28 slot times */\r
-#define ETH_MACFCR_PLT_Minus144_Pos (5U) \r
-#define ETH_MACFCR_PLT_Minus144_Msk (0x1UL << ETH_MACFCR_PLT_Minus144_Pos) /*!< 0x00000020 */\r
-#define ETH_MACFCR_PLT_Minus144 ETH_MACFCR_PLT_Minus144_Msk /* Pause time minus 144 slot times */\r
-#define ETH_MACFCR_PLT_Minus256_Pos (4U) \r
-#define ETH_MACFCR_PLT_Minus256_Msk (0x3UL << ETH_MACFCR_PLT_Minus256_Pos) /*!< 0x00000030 */\r
-#define ETH_MACFCR_PLT_Minus256 ETH_MACFCR_PLT_Minus256_Msk /* Pause time minus 256 slot times */\r
-#define ETH_MACFCR_UPFD_Pos (3U) \r
-#define ETH_MACFCR_UPFD_Msk (0x1UL << ETH_MACFCR_UPFD_Pos) /*!< 0x00000008 */\r
-#define ETH_MACFCR_UPFD ETH_MACFCR_UPFD_Msk /* Unicast pause frame detect */\r
-#define ETH_MACFCR_RFCE_Pos (2U) \r
-#define ETH_MACFCR_RFCE_Msk (0x1UL << ETH_MACFCR_RFCE_Pos) /*!< 0x00000004 */\r
-#define ETH_MACFCR_RFCE ETH_MACFCR_RFCE_Msk /* Receive flow control enable */\r
-#define ETH_MACFCR_TFCE_Pos (1U) \r
-#define ETH_MACFCR_TFCE_Msk (0x1UL << ETH_MACFCR_TFCE_Pos) /*!< 0x00000002 */\r
-#define ETH_MACFCR_TFCE ETH_MACFCR_TFCE_Msk /* Transmit flow control enable */\r
-#define ETH_MACFCR_FCBBPA_Pos (0U) \r
-#define ETH_MACFCR_FCBBPA_Msk (0x1UL << ETH_MACFCR_FCBBPA_Pos) /*!< 0x00000001 */\r
-#define ETH_MACFCR_FCBBPA ETH_MACFCR_FCBBPA_Msk /* Flow control busy/backpressure activate */\r
-\r
-/* Bit definition for Ethernet MAC VLAN Tag Register */\r
-#define ETH_MACVLANTR_VLANTC_Pos (16U) \r
-#define ETH_MACVLANTR_VLANTC_Msk (0x1UL << ETH_MACVLANTR_VLANTC_Pos) /*!< 0x00010000 */\r
-#define ETH_MACVLANTR_VLANTC ETH_MACVLANTR_VLANTC_Msk /* 12-bit VLAN tag comparison */\r
-#define ETH_MACVLANTR_VLANTI_Pos (0U) \r
-#define ETH_MACVLANTR_VLANTI_Msk (0xFFFFUL << ETH_MACVLANTR_VLANTI_Pos) /*!< 0x0000FFFF */\r
-#define ETH_MACVLANTR_VLANTI ETH_MACVLANTR_VLANTI_Msk /* VLAN tag identifier (for receive frames) */\r
-\r
-/* Bit definition for Ethernet MAC Remote Wake-UpFrame Filter Register */\r
-#define ETH_MACRWUFFR_D_Pos (0U) \r
-#define ETH_MACRWUFFR_D_Msk (0xFFFFFFFFUL << ETH_MACRWUFFR_D_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MACRWUFFR_D ETH_MACRWUFFR_D_Msk /* Wake-up frame filter register data */\r
-/* Eight sequential Writes to this address (offset 0x28) will write all Wake-UpFrame Filter Registers.\r
- Eight sequential Reads from this address (offset 0x28) will read all Wake-UpFrame Filter Registers. */\r
-/* Wake-UpFrame Filter Reg0 : Filter 0 Byte Mask\r
- Wake-UpFrame Filter Reg1 : Filter 1 Byte Mask\r
- Wake-UpFrame Filter Reg2 : Filter 2 Byte Mask\r
- Wake-UpFrame Filter Reg3 : Filter 3 Byte Mask\r
- Wake-UpFrame Filter Reg4 : RSVD - Filter3 Command - RSVD - Filter2 Command -\r
- RSVD - Filter1 Command - RSVD - Filter0 Command\r
- Wake-UpFrame Filter Re5 : Filter3 Offset - Filter2 Offset - Filter1 Offset - Filter0 Offset\r
- Wake-UpFrame Filter Re6 : Filter1 CRC16 - Filter0 CRC16\r
- Wake-UpFrame Filter Re7 : Filter3 CRC16 - Filter2 CRC16 */\r
-\r
-/* Bit definition for Ethernet MAC PMT Control and Status Register */\r
-#define ETH_MACPMTCSR_WFFRPR_Pos (31U) \r
-#define ETH_MACPMTCSR_WFFRPR_Msk (0x1UL << ETH_MACPMTCSR_WFFRPR_Pos) /*!< 0x80000000 */\r
-#define ETH_MACPMTCSR_WFFRPR ETH_MACPMTCSR_WFFRPR_Msk /* Wake-Up Frame Filter Register Pointer Reset */\r
-#define ETH_MACPMTCSR_GU_Pos (9U) \r
-#define ETH_MACPMTCSR_GU_Msk (0x1UL << ETH_MACPMTCSR_GU_Pos) /*!< 0x00000200 */\r
-#define ETH_MACPMTCSR_GU ETH_MACPMTCSR_GU_Msk /* Global Unicast */\r
-#define ETH_MACPMTCSR_WFR_Pos (6U) \r
-#define ETH_MACPMTCSR_WFR_Msk (0x1UL << ETH_MACPMTCSR_WFR_Pos) /*!< 0x00000040 */\r
-#define ETH_MACPMTCSR_WFR ETH_MACPMTCSR_WFR_Msk /* Wake-Up Frame Received */\r
-#define ETH_MACPMTCSR_MPR_Pos (5U) \r
-#define ETH_MACPMTCSR_MPR_Msk (0x1UL << ETH_MACPMTCSR_MPR_Pos) /*!< 0x00000020 */\r
-#define ETH_MACPMTCSR_MPR ETH_MACPMTCSR_MPR_Msk /* Magic Packet Received */\r
-#define ETH_MACPMTCSR_WFE_Pos (2U) \r
-#define ETH_MACPMTCSR_WFE_Msk (0x1UL << ETH_MACPMTCSR_WFE_Pos) /*!< 0x00000004 */\r
-#define ETH_MACPMTCSR_WFE ETH_MACPMTCSR_WFE_Msk /* Wake-Up Frame Enable */\r
-#define ETH_MACPMTCSR_MPE_Pos (1U) \r
-#define ETH_MACPMTCSR_MPE_Msk (0x1UL << ETH_MACPMTCSR_MPE_Pos) /*!< 0x00000002 */\r
-#define ETH_MACPMTCSR_MPE ETH_MACPMTCSR_MPE_Msk /* Magic Packet Enable */\r
-#define ETH_MACPMTCSR_PD_Pos (0U) \r
-#define ETH_MACPMTCSR_PD_Msk (0x1UL << ETH_MACPMTCSR_PD_Pos) /*!< 0x00000001 */\r
-#define ETH_MACPMTCSR_PD ETH_MACPMTCSR_PD_Msk /* Power Down */\r
-\r
-/* Bit definition for Ethernet MAC debug Register */\r
-#define ETH_MACDBGR_TFF_Pos (25U) \r
-#define ETH_MACDBGR_TFF_Msk (0x1UL << ETH_MACDBGR_TFF_Pos) /*!< 0x02000000 */\r
-#define ETH_MACDBGR_TFF ETH_MACDBGR_TFF_Msk /* Tx FIFO full */\r
-#define ETH_MACDBGR_TFNE_Pos (24U) \r
-#define ETH_MACDBGR_TFNE_Msk (0x1UL << ETH_MACDBGR_TFNE_Pos) /*!< 0x01000000 */\r
-#define ETH_MACDBGR_TFNE ETH_MACDBGR_TFNE_Msk /* Tx FIFO not empty */\r
-#define ETH_MACDBGR_TPWA_Pos (22U) \r
-#define ETH_MACDBGR_TPWA_Msk (0x1UL << ETH_MACDBGR_TPWA_Pos) /*!< 0x00400000 */\r
-#define ETH_MACDBGR_TPWA ETH_MACDBGR_TPWA_Msk /* Tx FIFO write active */\r
-#define ETH_MACDBGR_TFRS_Pos (20U) \r
-#define ETH_MACDBGR_TFRS_Msk (0x3UL << ETH_MACDBGR_TFRS_Pos) /*!< 0x00300000 */\r
-#define ETH_MACDBGR_TFRS ETH_MACDBGR_TFRS_Msk /* Tx FIFO read status mask */\r
-#define ETH_MACDBGR_TFRS_WRITING_Pos (20U) \r
-#define ETH_MACDBGR_TFRS_WRITING_Msk (0x3UL << ETH_MACDBGR_TFRS_WRITING_Pos) /*!< 0x00300000 */\r
-#define ETH_MACDBGR_TFRS_WRITING ETH_MACDBGR_TFRS_WRITING_Msk /* Writing the received TxStatus or flushing the TxFIFO */\r
-#define ETH_MACDBGR_TFRS_WAITING_Pos (21U) \r
-#define ETH_MACDBGR_TFRS_WAITING_Msk (0x1UL << ETH_MACDBGR_TFRS_WAITING_Pos) /*!< 0x00200000 */\r
-#define ETH_MACDBGR_TFRS_WAITING ETH_MACDBGR_TFRS_WAITING_Msk /* Waiting for TxStatus from MAC transmitter */\r
-#define ETH_MACDBGR_TFRS_READ_Pos (20U) \r
-#define ETH_MACDBGR_TFRS_READ_Msk (0x1UL << ETH_MACDBGR_TFRS_READ_Pos) /*!< 0x00100000 */\r
-#define ETH_MACDBGR_TFRS_READ ETH_MACDBGR_TFRS_READ_Msk /* Read state (transferring data to the MAC transmitter) */\r
-#define ETH_MACDBGR_TFRS_IDLE 0x00000000U /* Idle state */\r
-#define ETH_MACDBGR_MTP_Pos (19U) \r
-#define ETH_MACDBGR_MTP_Msk (0x1UL << ETH_MACDBGR_MTP_Pos) /*!< 0x00080000 */\r
-#define ETH_MACDBGR_MTP ETH_MACDBGR_MTP_Msk /* MAC transmitter in pause */\r
-#define ETH_MACDBGR_MTFCS_Pos (17U) \r
-#define ETH_MACDBGR_MTFCS_Msk (0x3UL << ETH_MACDBGR_MTFCS_Pos) /*!< 0x00060000 */\r
-#define ETH_MACDBGR_MTFCS ETH_MACDBGR_MTFCS_Msk /* MAC transmit frame controller status mask */\r
-#define ETH_MACDBGR_MTFCS_TRANSFERRING_Pos (17U) \r
-#define ETH_MACDBGR_MTFCS_TRANSFERRING_Msk (0x3UL << ETH_MACDBGR_MTFCS_TRANSFERRING_Pos) /*!< 0x00060000 */\r
-#define ETH_MACDBGR_MTFCS_TRANSFERRING ETH_MACDBGR_MTFCS_TRANSFERRING_Msk /* Transferring input frame for transmission */\r
-#define ETH_MACDBGR_MTFCS_GENERATINGPCF_Pos (18U) \r
-#define ETH_MACDBGR_MTFCS_GENERATINGPCF_Msk (0x1UL << ETH_MACDBGR_MTFCS_GENERATINGPCF_Pos) /*!< 0x00040000 */\r
-#define ETH_MACDBGR_MTFCS_GENERATINGPCF ETH_MACDBGR_MTFCS_GENERATINGPCF_Msk /* Generating and transmitting a Pause control frame (in full duplex mode) */\r
-#define ETH_MACDBGR_MTFCS_WAITING_Pos (17U) \r
-#define ETH_MACDBGR_MTFCS_WAITING_Msk (0x1UL << ETH_MACDBGR_MTFCS_WAITING_Pos) /*!< 0x00020000 */\r
-#define ETH_MACDBGR_MTFCS_WAITING ETH_MACDBGR_MTFCS_WAITING_Msk /* Waiting for Status of previous frame or IFG/backoff period to be over */\r
-#define ETH_MACDBGR_MTFCS_IDLE 0x00000000U /* Idle */\r
-#define ETH_MACDBGR_MMTEA_Pos (16U) \r
-#define ETH_MACDBGR_MMTEA_Msk (0x1UL << ETH_MACDBGR_MMTEA_Pos) /*!< 0x00010000 */\r
-#define ETH_MACDBGR_MMTEA ETH_MACDBGR_MMTEA_Msk /* MAC MII transmit engine active */\r
-#define ETH_MACDBGR_RFFL_Pos (8U) \r
-#define ETH_MACDBGR_RFFL_Msk (0x3UL << ETH_MACDBGR_RFFL_Pos) /*!< 0x00000300 */\r
-#define ETH_MACDBGR_RFFL ETH_MACDBGR_RFFL_Msk /* Rx FIFO fill level mask */\r
-#define ETH_MACDBGR_RFFL_FULL_Pos (8U) \r
-#define ETH_MACDBGR_RFFL_FULL_Msk (0x3UL << ETH_MACDBGR_RFFL_FULL_Pos) /*!< 0x00000300 */\r
-#define ETH_MACDBGR_RFFL_FULL ETH_MACDBGR_RFFL_FULL_Msk /* RxFIFO full */\r
-#define ETH_MACDBGR_RFFL_ABOVEFCT_Pos (9U) \r
-#define ETH_MACDBGR_RFFL_ABOVEFCT_Msk (0x1UL << ETH_MACDBGR_RFFL_ABOVEFCT_Pos) /*!< 0x00000200 */\r
-#define ETH_MACDBGR_RFFL_ABOVEFCT ETH_MACDBGR_RFFL_ABOVEFCT_Msk /* RxFIFO fill-level above flow-control activate threshold */\r
-#define ETH_MACDBGR_RFFL_BELOWFCT_Pos (8U) \r
-#define ETH_MACDBGR_RFFL_BELOWFCT_Msk (0x1UL << ETH_MACDBGR_RFFL_BELOWFCT_Pos) /*!< 0x00000100 */\r
-#define ETH_MACDBGR_RFFL_BELOWFCT ETH_MACDBGR_RFFL_BELOWFCT_Msk /* RxFIFO fill-level below flow-control de-activate threshold */\r
-#define ETH_MACDBGR_RFFL_EMPTY 0x00000000U /* RxFIFO empty */\r
-#define ETH_MACDBGR_RFRCS_Pos (5U) \r
-#define ETH_MACDBGR_RFRCS_Msk (0x3UL << ETH_MACDBGR_RFRCS_Pos) /*!< 0x00000060 */\r
-#define ETH_MACDBGR_RFRCS ETH_MACDBGR_RFRCS_Msk /* Rx FIFO read controller status mask */\r
-#define ETH_MACDBGR_RFRCS_FLUSHING_Pos (5U) \r
-#define ETH_MACDBGR_RFRCS_FLUSHING_Msk (0x3UL << ETH_MACDBGR_RFRCS_FLUSHING_Pos) /*!< 0x00000060 */\r
-#define ETH_MACDBGR_RFRCS_FLUSHING ETH_MACDBGR_RFRCS_FLUSHING_Msk /* Flushing the frame data and status */\r
-#define ETH_MACDBGR_RFRCS_STATUSREADING_Pos (6U) \r
-#define ETH_MACDBGR_RFRCS_STATUSREADING_Msk (0x1UL << ETH_MACDBGR_RFRCS_STATUSREADING_Pos) /*!< 0x00000040 */\r
-#define ETH_MACDBGR_RFRCS_STATUSREADING ETH_MACDBGR_RFRCS_STATUSREADING_Msk /* Reading frame status (or time-stamp) */\r
-#define ETH_MACDBGR_RFRCS_DATAREADING_Pos (5U) \r
-#define ETH_MACDBGR_RFRCS_DATAREADING_Msk (0x1UL << ETH_MACDBGR_RFRCS_DATAREADING_Pos) /*!< 0x00000020 */\r
-#define ETH_MACDBGR_RFRCS_DATAREADING ETH_MACDBGR_RFRCS_DATAREADING_Msk /* Reading frame data */\r
-#define ETH_MACDBGR_RFRCS_IDLE 0x00000000U /* IDLE state */\r
-#define ETH_MACDBGR_RFWRA_Pos (4U) \r
-#define ETH_MACDBGR_RFWRA_Msk (0x1UL << ETH_MACDBGR_RFWRA_Pos) /*!< 0x00000010 */\r
-#define ETH_MACDBGR_RFWRA ETH_MACDBGR_RFWRA_Msk /* Rx FIFO write controller active */\r
-#define ETH_MACDBGR_MSFRWCS_Pos (1U) \r
-#define ETH_MACDBGR_MSFRWCS_Msk (0x3UL << ETH_MACDBGR_MSFRWCS_Pos) /*!< 0x00000006 */\r
-#define ETH_MACDBGR_MSFRWCS ETH_MACDBGR_MSFRWCS_Msk /* MAC small FIFO read / write controllers status mask */\r
-#define ETH_MACDBGR_MSFRWCS_1 (0x2UL << ETH_MACDBGR_MSFRWCS_Pos) /*!< 0x00000004 */\r
-#define ETH_MACDBGR_MSFRWCS_0 (0x1UL << ETH_MACDBGR_MSFRWCS_Pos) /*!< 0x00000002 */\r
-#define ETH_MACDBGR_MMRPEA_Pos (0U) \r
-#define ETH_MACDBGR_MMRPEA_Msk (0x1UL << ETH_MACDBGR_MMRPEA_Pos) /*!< 0x00000001 */\r
-#define ETH_MACDBGR_MMRPEA ETH_MACDBGR_MMRPEA_Msk /* MAC MII receive protocol engine active */\r
-\r
-/* Bit definition for Ethernet MAC Status Register */\r
-#define ETH_MACSR_TSTS_Pos (9U) \r
-#define ETH_MACSR_TSTS_Msk (0x1UL << ETH_MACSR_TSTS_Pos) /*!< 0x00000200 */\r
-#define ETH_MACSR_TSTS ETH_MACSR_TSTS_Msk /* Time stamp trigger status */\r
-#define ETH_MACSR_MMCTS_Pos (6U) \r
-#define ETH_MACSR_MMCTS_Msk (0x1UL << ETH_MACSR_MMCTS_Pos) /*!< 0x00000040 */\r
-#define ETH_MACSR_MMCTS ETH_MACSR_MMCTS_Msk /* MMC transmit status */\r
-#define ETH_MACSR_MMMCRS_Pos (5U) \r
-#define ETH_MACSR_MMMCRS_Msk (0x1UL << ETH_MACSR_MMMCRS_Pos) /*!< 0x00000020 */\r
-#define ETH_MACSR_MMMCRS ETH_MACSR_MMMCRS_Msk /* MMC receive status */\r
-#define ETH_MACSR_MMCS_Pos (4U) \r
-#define ETH_MACSR_MMCS_Msk (0x1UL << ETH_MACSR_MMCS_Pos) /*!< 0x00000010 */\r
-#define ETH_MACSR_MMCS ETH_MACSR_MMCS_Msk /* MMC status */\r
-#define ETH_MACSR_PMTS_Pos (3U) \r
-#define ETH_MACSR_PMTS_Msk (0x1UL << ETH_MACSR_PMTS_Pos) /*!< 0x00000008 */\r
-#define ETH_MACSR_PMTS ETH_MACSR_PMTS_Msk /* PMT status */\r
-\r
-/* Bit definition for Ethernet MAC Interrupt Mask Register */\r
-#define ETH_MACIMR_TSTIM_Pos (9U) \r
-#define ETH_MACIMR_TSTIM_Msk (0x1UL << ETH_MACIMR_TSTIM_Pos) /*!< 0x00000200 */\r
-#define ETH_MACIMR_TSTIM ETH_MACIMR_TSTIM_Msk /* Time stamp trigger interrupt mask */\r
-#define ETH_MACIMR_PMTIM_Pos (3U) \r
-#define ETH_MACIMR_PMTIM_Msk (0x1UL << ETH_MACIMR_PMTIM_Pos) /*!< 0x00000008 */\r
-#define ETH_MACIMR_PMTIM ETH_MACIMR_PMTIM_Msk /* PMT interrupt mask */\r
-\r
-/* Bit definition for Ethernet MAC Address0 High Register */\r
-#define ETH_MACA0HR_MACA0H_Pos (0U) \r
-#define ETH_MACA0HR_MACA0H_Msk (0xFFFFUL << ETH_MACA0HR_MACA0H_Pos) /*!< 0x0000FFFF */\r
-#define ETH_MACA0HR_MACA0H ETH_MACA0HR_MACA0H_Msk /* MAC address0 high */\r
-\r
-/* Bit definition for Ethernet MAC Address0 Low Register */\r
-#define ETH_MACA0LR_MACA0L_Pos (0U) \r
-#define ETH_MACA0LR_MACA0L_Msk (0xFFFFFFFFUL << ETH_MACA0LR_MACA0L_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MACA0LR_MACA0L ETH_MACA0LR_MACA0L_Msk /* MAC address0 low */\r
-\r
-/* Bit definition for Ethernet MAC Address1 High Register */\r
-#define ETH_MACA1HR_AE_Pos (31U) \r
-#define ETH_MACA1HR_AE_Msk (0x1UL << ETH_MACA1HR_AE_Pos) /*!< 0x80000000 */\r
-#define ETH_MACA1HR_AE ETH_MACA1HR_AE_Msk /* Address enable */\r
-#define ETH_MACA1HR_SA_Pos (30U) \r
-#define ETH_MACA1HR_SA_Msk (0x1UL << ETH_MACA1HR_SA_Pos) /*!< 0x40000000 */\r
-#define ETH_MACA1HR_SA ETH_MACA1HR_SA_Msk /* Source address */\r
-#define ETH_MACA1HR_MBC_Pos (24U) \r
-#define ETH_MACA1HR_MBC_Msk (0x3FUL << ETH_MACA1HR_MBC_Pos) /*!< 0x3F000000 */\r
-#define ETH_MACA1HR_MBC ETH_MACA1HR_MBC_Msk /* Mask byte control: bits to mask for comparison of the MAC Address bytes */\r
-#define ETH_MACA1HR_MBC_HBits15_8 0x20000000U /* Mask MAC Address high reg bits [15:8] */\r
-#define ETH_MACA1HR_MBC_HBits7_0 0x10000000U /* Mask MAC Address high reg bits [7:0] */\r
-#define ETH_MACA1HR_MBC_LBits31_24 0x08000000U /* Mask MAC Address low reg bits [31:24] */\r
-#define ETH_MACA1HR_MBC_LBits23_16 0x04000000U /* Mask MAC Address low reg bits [23:16] */\r
-#define ETH_MACA1HR_MBC_LBits15_8 0x02000000U /* Mask MAC Address low reg bits [15:8] */\r
-#define ETH_MACA1HR_MBC_LBits7_0 0x01000000U /* Mask MAC Address low reg bits [7:0] */\r
-#define ETH_MACA1HR_MACA1H_Pos (0U) \r
-#define ETH_MACA1HR_MACA1H_Msk (0xFFFFUL << ETH_MACA1HR_MACA1H_Pos) /*!< 0x0000FFFF */\r
-#define ETH_MACA1HR_MACA1H ETH_MACA1HR_MACA1H_Msk /* MAC address1 high */\r
-\r
-/* Bit definition for Ethernet MAC Address1 Low Register */\r
-#define ETH_MACA1LR_MACA1L_Pos (0U) \r
-#define ETH_MACA1LR_MACA1L_Msk (0xFFFFFFFFUL << ETH_MACA1LR_MACA1L_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MACA1LR_MACA1L ETH_MACA1LR_MACA1L_Msk /* MAC address1 low */\r
-\r
-/* Bit definition for Ethernet MAC Address2 High Register */\r
-#define ETH_MACA2HR_AE_Pos (31U) \r
-#define ETH_MACA2HR_AE_Msk (0x1UL << ETH_MACA2HR_AE_Pos) /*!< 0x80000000 */\r
-#define ETH_MACA2HR_AE ETH_MACA2HR_AE_Msk /* Address enable */\r
-#define ETH_MACA2HR_SA_Pos (30U) \r
-#define ETH_MACA2HR_SA_Msk (0x1UL << ETH_MACA2HR_SA_Pos) /*!< 0x40000000 */\r
-#define ETH_MACA2HR_SA ETH_MACA2HR_SA_Msk /* Source address */\r
-#define ETH_MACA2HR_MBC_Pos (24U) \r
-#define ETH_MACA2HR_MBC_Msk (0x3FUL << ETH_MACA2HR_MBC_Pos) /*!< 0x3F000000 */\r
-#define ETH_MACA2HR_MBC ETH_MACA2HR_MBC_Msk /* Mask byte control */\r
-#define ETH_MACA2HR_MBC_HBits15_8 0x20000000U /* Mask MAC Address high reg bits [15:8] */\r
-#define ETH_MACA2HR_MBC_HBits7_0 0x10000000U /* Mask MAC Address high reg bits [7:0] */\r
-#define ETH_MACA2HR_MBC_LBits31_24 0x08000000U /* Mask MAC Address low reg bits [31:24] */\r
-#define ETH_MACA2HR_MBC_LBits23_16 0x04000000U /* Mask MAC Address low reg bits [23:16] */\r
-#define ETH_MACA2HR_MBC_LBits15_8 0x02000000U /* Mask MAC Address low reg bits [15:8] */\r
-#define ETH_MACA2HR_MBC_LBits7_0 0x01000000U /* Mask MAC Address low reg bits [70] */\r
-#define ETH_MACA2HR_MACA2H_Pos (0U) \r
-#define ETH_MACA2HR_MACA2H_Msk (0xFFFFUL << ETH_MACA2HR_MACA2H_Pos) /*!< 0x0000FFFF */\r
-#define ETH_MACA2HR_MACA2H ETH_MACA2HR_MACA2H_Msk /* MAC address1 high */\r
-\r
-/* Bit definition for Ethernet MAC Address2 Low Register */\r
-#define ETH_MACA2LR_MACA2L_Pos (0U) \r
-#define ETH_MACA2LR_MACA2L_Msk (0xFFFFFFFFUL << ETH_MACA2LR_MACA2L_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MACA2LR_MACA2L ETH_MACA2LR_MACA2L_Msk /* MAC address2 low */\r
-\r
-/* Bit definition for Ethernet MAC Address3 High Register */\r
-#define ETH_MACA3HR_AE_Pos (31U) \r
-#define ETH_MACA3HR_AE_Msk (0x1UL << ETH_MACA3HR_AE_Pos) /*!< 0x80000000 */\r
-#define ETH_MACA3HR_AE ETH_MACA3HR_AE_Msk /* Address enable */\r
-#define ETH_MACA3HR_SA_Pos (30U) \r
-#define ETH_MACA3HR_SA_Msk (0x1UL << ETH_MACA3HR_SA_Pos) /*!< 0x40000000 */\r
-#define ETH_MACA3HR_SA ETH_MACA3HR_SA_Msk /* Source address */\r
-#define ETH_MACA3HR_MBC_Pos (24U) \r
-#define ETH_MACA3HR_MBC_Msk (0x3FUL << ETH_MACA3HR_MBC_Pos) /*!< 0x3F000000 */\r
-#define ETH_MACA3HR_MBC ETH_MACA3HR_MBC_Msk /* Mask byte control */\r
-#define ETH_MACA3HR_MBC_HBits15_8 0x20000000U /* Mask MAC Address high reg bits [15:8] */\r
-#define ETH_MACA3HR_MBC_HBits7_0 0x10000000U /* Mask MAC Address high reg bits [7:0] */\r
-#define ETH_MACA3HR_MBC_LBits31_24 0x08000000U /* Mask MAC Address low reg bits [31:24] */\r
-#define ETH_MACA3HR_MBC_LBits23_16 0x04000000U /* Mask MAC Address low reg bits [23:16] */\r
-#define ETH_MACA3HR_MBC_LBits15_8 0x02000000U /* Mask MAC Address low reg bits [15:8] */\r
-#define ETH_MACA3HR_MBC_LBits7_0 0x01000000U /* Mask MAC Address low reg bits [70] */\r
-#define ETH_MACA3HR_MACA3H_Pos (0U) \r
-#define ETH_MACA3HR_MACA3H_Msk (0xFFFFUL << ETH_MACA3HR_MACA3H_Pos) /*!< 0x0000FFFF */\r
-#define ETH_MACA3HR_MACA3H ETH_MACA3HR_MACA3H_Msk /* MAC address3 high */\r
-\r
-/* Bit definition for Ethernet MAC Address3 Low Register */\r
-#define ETH_MACA3LR_MACA3L_Pos (0U) \r
-#define ETH_MACA3LR_MACA3L_Msk (0xFFFFFFFFUL << ETH_MACA3LR_MACA3L_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MACA3LR_MACA3L ETH_MACA3LR_MACA3L_Msk /* MAC address3 low */\r
-\r
-/******************************************************************************/\r
-/* Ethernet MMC Registers bits definition */\r
-/******************************************************************************/\r
-\r
-/* Bit definition for Ethernet MMC Contol Register */\r
-#define ETH_MMCCR_MCFHP_Pos (5U) \r
-#define ETH_MMCCR_MCFHP_Msk (0x1UL << ETH_MMCCR_MCFHP_Pos) /*!< 0x00000020 */\r
-#define ETH_MMCCR_MCFHP ETH_MMCCR_MCFHP_Msk /* MMC counter Full-Half preset */\r
-#define ETH_MMCCR_MCP_Pos (4U) \r
-#define ETH_MMCCR_MCP_Msk (0x1UL << ETH_MMCCR_MCP_Pos) /*!< 0x00000010 */\r
-#define ETH_MMCCR_MCP ETH_MMCCR_MCP_Msk /* MMC counter preset */\r
-#define ETH_MMCCR_MCF_Pos (3U) \r
-#define ETH_MMCCR_MCF_Msk (0x1UL << ETH_MMCCR_MCF_Pos) /*!< 0x00000008 */\r
-#define ETH_MMCCR_MCF ETH_MMCCR_MCF_Msk /* MMC Counter Freeze */\r
-#define ETH_MMCCR_ROR_Pos (2U) \r
-#define ETH_MMCCR_ROR_Msk (0x1UL << ETH_MMCCR_ROR_Pos) /*!< 0x00000004 */\r
-#define ETH_MMCCR_ROR ETH_MMCCR_ROR_Msk /* Reset on Read */\r
-#define ETH_MMCCR_CSR_Pos (1U) \r
-#define ETH_MMCCR_CSR_Msk (0x1UL << ETH_MMCCR_CSR_Pos) /*!< 0x00000002 */\r
-#define ETH_MMCCR_CSR ETH_MMCCR_CSR_Msk /* Counter Stop Rollover */\r
-#define ETH_MMCCR_CR_Pos (0U) \r
-#define ETH_MMCCR_CR_Msk (0x1UL << ETH_MMCCR_CR_Pos) /*!< 0x00000001 */\r
-#define ETH_MMCCR_CR ETH_MMCCR_CR_Msk /* Counters Reset */\r
-\r
-/* Bit definition for Ethernet MMC Receive Interrupt Register */\r
-#define ETH_MMCRIR_RGUFS_Pos (17U) \r
-#define ETH_MMCRIR_RGUFS_Msk (0x1UL << ETH_MMCRIR_RGUFS_Pos) /*!< 0x00020000 */\r
-#define ETH_MMCRIR_RGUFS ETH_MMCRIR_RGUFS_Msk /* Set when Rx good unicast frames counter reaches half the maximum value */\r
-#define ETH_MMCRIR_RFAES_Pos (6U) \r
-#define ETH_MMCRIR_RFAES_Msk (0x1UL << ETH_MMCRIR_RFAES_Pos) /*!< 0x00000040 */\r
-#define ETH_MMCRIR_RFAES ETH_MMCRIR_RFAES_Msk /* Set when Rx alignment error counter reaches half the maximum value */\r
-#define ETH_MMCRIR_RFCES_Pos (5U) \r
-#define ETH_MMCRIR_RFCES_Msk (0x1UL << ETH_MMCRIR_RFCES_Pos) /*!< 0x00000020 */\r
-#define ETH_MMCRIR_RFCES ETH_MMCRIR_RFCES_Msk /* Set when Rx crc error counter reaches half the maximum value */\r
-\r
-/* Bit definition for Ethernet MMC Transmit Interrupt Register */\r
-#define ETH_MMCTIR_TGFS_Pos (21U) \r
-#define ETH_MMCTIR_TGFS_Msk (0x1UL << ETH_MMCTIR_TGFS_Pos) /*!< 0x00200000 */\r
-#define ETH_MMCTIR_TGFS ETH_MMCTIR_TGFS_Msk /* Set when Tx good frame count counter reaches half the maximum value */\r
-#define ETH_MMCTIR_TGFMSCS_Pos (15U) \r
-#define ETH_MMCTIR_TGFMSCS_Msk (0x1UL << ETH_MMCTIR_TGFMSCS_Pos) /*!< 0x00008000 */\r
-#define ETH_MMCTIR_TGFMSCS ETH_MMCTIR_TGFMSCS_Msk /* Set when Tx good multi col counter reaches half the maximum value */\r
-#define ETH_MMCTIR_TGFSCS_Pos (14U) \r
-#define ETH_MMCTIR_TGFSCS_Msk (0x1UL << ETH_MMCTIR_TGFSCS_Pos) /*!< 0x00004000 */\r
-#define ETH_MMCTIR_TGFSCS ETH_MMCTIR_TGFSCS_Msk /* Set when Tx good single col counter reaches half the maximum value */\r
-\r
-/* Bit definition for Ethernet MMC Receive Interrupt Mask Register */\r
-#define ETH_MMCRIMR_RGUFM_Pos (17U) \r
-#define ETH_MMCRIMR_RGUFM_Msk (0x1UL << ETH_MMCRIMR_RGUFM_Pos) /*!< 0x00020000 */\r
-#define ETH_MMCRIMR_RGUFM ETH_MMCRIMR_RGUFM_Msk /* Mask the interrupt when Rx good unicast frames counter reaches half the maximum value */\r
-#define ETH_MMCRIMR_RFAEM_Pos (6U) \r
-#define ETH_MMCRIMR_RFAEM_Msk (0x1UL << ETH_MMCRIMR_RFAEM_Pos) /*!< 0x00000040 */\r
-#define ETH_MMCRIMR_RFAEM ETH_MMCRIMR_RFAEM_Msk /* Mask the interrupt when when Rx alignment error counter reaches half the maximum value */\r
-#define ETH_MMCRIMR_RFCEM_Pos (5U) \r
-#define ETH_MMCRIMR_RFCEM_Msk (0x1UL << ETH_MMCRIMR_RFCEM_Pos) /*!< 0x00000020 */\r
-#define ETH_MMCRIMR_RFCEM ETH_MMCRIMR_RFCEM_Msk /* Mask the interrupt when Rx crc error counter reaches half the maximum value */\r
-\r
-/* Bit definition for Ethernet MMC Transmit Interrupt Mask Register */\r
-#define ETH_MMCTIMR_TGFM_Pos (21U) \r
-#define ETH_MMCTIMR_TGFM_Msk (0x1UL << ETH_MMCTIMR_TGFM_Pos) /*!< 0x00200000 */\r
-#define ETH_MMCTIMR_TGFM ETH_MMCTIMR_TGFM_Msk /* Mask the interrupt when Tx good frame count counter reaches half the maximum value */\r
-#define ETH_MMCTIMR_TGFMSCM_Pos (15U) \r
-#define ETH_MMCTIMR_TGFMSCM_Msk (0x1UL << ETH_MMCTIMR_TGFMSCM_Pos) /*!< 0x00008000 */\r
-#define ETH_MMCTIMR_TGFMSCM ETH_MMCTIMR_TGFMSCM_Msk /* Mask the interrupt when Tx good multi col counter reaches half the maximum value */\r
-#define ETH_MMCTIMR_TGFSCM_Pos (14U) \r
-#define ETH_MMCTIMR_TGFSCM_Msk (0x1UL << ETH_MMCTIMR_TGFSCM_Pos) /*!< 0x00004000 */\r
-#define ETH_MMCTIMR_TGFSCM ETH_MMCTIMR_TGFSCM_Msk /* Mask the interrupt when Tx good single col counter reaches half the maximum value */\r
-\r
-/* Bit definition for Ethernet MMC Transmitted Good Frames after Single Collision Counter Register */\r
-#define ETH_MMCTGFSCCR_TGFSCC_Pos (0U) \r
-#define ETH_MMCTGFSCCR_TGFSCC_Msk (0xFFFFFFFFUL << ETH_MMCTGFSCCR_TGFSCC_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MMCTGFSCCR_TGFSCC ETH_MMCTGFSCCR_TGFSCC_Msk /* Number of successfully transmitted frames after a single collision in Half-duplex mode. */\r
-\r
-/* Bit definition for Ethernet MMC Transmitted Good Frames after More than a Single Collision Counter Register */\r
-#define ETH_MMCTGFMSCCR_TGFMSCC_Pos (0U) \r
-#define ETH_MMCTGFMSCCR_TGFMSCC_Msk (0xFFFFFFFFUL << ETH_MMCTGFMSCCR_TGFMSCC_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MMCTGFMSCCR_TGFMSCC ETH_MMCTGFMSCCR_TGFMSCC_Msk /* Number of successfully transmitted frames after more than a single collision in Half-duplex mode. */\r
-\r
-/* Bit definition for Ethernet MMC Transmitted Good Frames Counter Register */\r
-#define ETH_MMCTGFCR_TGFC_Pos (0U) \r
-#define ETH_MMCTGFCR_TGFC_Msk (0xFFFFFFFFUL << ETH_MMCTGFCR_TGFC_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MMCTGFCR_TGFC ETH_MMCTGFCR_TGFC_Msk /* Number of good frames transmitted. */\r
-\r
-/* Bit definition for Ethernet MMC Received Frames with CRC Error Counter Register */\r
-#define ETH_MMCRFCECR_RFCEC_Pos (0U) \r
-#define ETH_MMCRFCECR_RFCEC_Msk (0xFFFFFFFFUL << ETH_MMCRFCECR_RFCEC_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MMCRFCECR_RFCEC ETH_MMCRFCECR_RFCEC_Msk /* Number of frames received with CRC error. */\r
-\r
-/* Bit definition for Ethernet MMC Received Frames with Alignement Error Counter Register */\r
-#define ETH_MMCRFAECR_RFAEC_Pos (0U) \r
-#define ETH_MMCRFAECR_RFAEC_Msk (0xFFFFFFFFUL << ETH_MMCRFAECR_RFAEC_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MMCRFAECR_RFAEC ETH_MMCRFAECR_RFAEC_Msk /* Number of frames received with alignment (dribble) error */\r
-\r
-/* Bit definition for Ethernet MMC Received Good Unicast Frames Counter Register */\r
-#define ETH_MMCRGUFCR_RGUFC_Pos (0U) \r
-#define ETH_MMCRGUFCR_RGUFC_Msk (0xFFFFFFFFUL << ETH_MMCRGUFCR_RGUFC_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_MMCRGUFCR_RGUFC ETH_MMCRGUFCR_RGUFC_Msk /* Number of good unicast frames received. */\r
-\r
-/******************************************************************************/\r
-/* Ethernet PTP Registers bits definition */\r
-/******************************************************************************/\r
-\r
-/* Bit definition for Ethernet PTP Time Stamp Contol Register */\r
-#define ETH_PTPTSCR_TSCNT_Pos (16U) \r
-#define ETH_PTPTSCR_TSCNT_Msk (0x3UL << ETH_PTPTSCR_TSCNT_Pos) /*!< 0x00030000 */\r
-#define ETH_PTPTSCR_TSCNT ETH_PTPTSCR_TSCNT_Msk /* Time stamp clock node type */\r
-#define ETH_PTPTSSR_TSSMRME_Pos (15U) \r
-#define ETH_PTPTSSR_TSSMRME_Msk (0x1UL << ETH_PTPTSSR_TSSMRME_Pos) /*!< 0x00008000 */\r
-#define ETH_PTPTSSR_TSSMRME ETH_PTPTSSR_TSSMRME_Msk /* Time stamp snapshot for message relevant to master enable */\r
-#define ETH_PTPTSSR_TSSEME_Pos (14U) \r
-#define ETH_PTPTSSR_TSSEME_Msk (0x1UL << ETH_PTPTSSR_TSSEME_Pos) /*!< 0x00004000 */\r
-#define ETH_PTPTSSR_TSSEME ETH_PTPTSSR_TSSEME_Msk /* Time stamp snapshot for event message enable */\r
-#define ETH_PTPTSSR_TSSIPV4FE_Pos (13U) \r
-#define ETH_PTPTSSR_TSSIPV4FE_Msk (0x1UL << ETH_PTPTSSR_TSSIPV4FE_Pos) /*!< 0x00002000 */\r
-#define ETH_PTPTSSR_TSSIPV4FE ETH_PTPTSSR_TSSIPV4FE_Msk /* Time stamp snapshot for IPv4 frames enable */\r
-#define ETH_PTPTSSR_TSSIPV6FE_Pos (12U) \r
-#define ETH_PTPTSSR_TSSIPV6FE_Msk (0x1UL << ETH_PTPTSSR_TSSIPV6FE_Pos) /*!< 0x00001000 */\r
-#define ETH_PTPTSSR_TSSIPV6FE ETH_PTPTSSR_TSSIPV6FE_Msk /* Time stamp snapshot for IPv6 frames enable */\r
-#define ETH_PTPTSSR_TSSPTPOEFE_Pos (11U) \r
-#define ETH_PTPTSSR_TSSPTPOEFE_Msk (0x1UL << ETH_PTPTSSR_TSSPTPOEFE_Pos) /*!< 0x00000800 */\r
-#define ETH_PTPTSSR_TSSPTPOEFE ETH_PTPTSSR_TSSPTPOEFE_Msk /* Time stamp snapshot for PTP over ethernet frames enable */\r
-#define ETH_PTPTSSR_TSPTPPSV2E_Pos (10U) \r
-#define ETH_PTPTSSR_TSPTPPSV2E_Msk (0x1UL << ETH_PTPTSSR_TSPTPPSV2E_Pos) /*!< 0x00000400 */\r
-#define ETH_PTPTSSR_TSPTPPSV2E ETH_PTPTSSR_TSPTPPSV2E_Msk /* Time stamp PTP packet snooping for version2 format enable */\r
-#define ETH_PTPTSSR_TSSSR_Pos (9U) \r
-#define ETH_PTPTSSR_TSSSR_Msk (0x1UL << ETH_PTPTSSR_TSSSR_Pos) /*!< 0x00000200 */\r
-#define ETH_PTPTSSR_TSSSR ETH_PTPTSSR_TSSSR_Msk /* Time stamp Sub-seconds rollover */\r
-#define ETH_PTPTSSR_TSSARFE_Pos (8U) \r
-#define ETH_PTPTSSR_TSSARFE_Msk (0x1UL << ETH_PTPTSSR_TSSARFE_Pos) /*!< 0x00000100 */\r
-#define ETH_PTPTSSR_TSSARFE ETH_PTPTSSR_TSSARFE_Msk /* Time stamp snapshot for all received frames enable */\r
-\r
-#define ETH_PTPTSCR_TSARU_Pos (5U) \r
-#define ETH_PTPTSCR_TSARU_Msk (0x1UL << ETH_PTPTSCR_TSARU_Pos) /*!< 0x00000020 */\r
-#define ETH_PTPTSCR_TSARU ETH_PTPTSCR_TSARU_Msk /* Addend register update */\r
-#define ETH_PTPTSCR_TSITE_Pos (4U) \r
-#define ETH_PTPTSCR_TSITE_Msk (0x1UL << ETH_PTPTSCR_TSITE_Pos) /*!< 0x00000010 */\r
-#define ETH_PTPTSCR_TSITE ETH_PTPTSCR_TSITE_Msk /* Time stamp interrupt trigger enable */\r
-#define ETH_PTPTSCR_TSSTU_Pos (3U) \r
-#define ETH_PTPTSCR_TSSTU_Msk (0x1UL << ETH_PTPTSCR_TSSTU_Pos) /*!< 0x00000008 */\r
-#define ETH_PTPTSCR_TSSTU ETH_PTPTSCR_TSSTU_Msk /* Time stamp update */\r
-#define ETH_PTPTSCR_TSSTI_Pos (2U) \r
-#define ETH_PTPTSCR_TSSTI_Msk (0x1UL << ETH_PTPTSCR_TSSTI_Pos) /*!< 0x00000004 */\r
-#define ETH_PTPTSCR_TSSTI ETH_PTPTSCR_TSSTI_Msk /* Time stamp initialize */\r
-#define ETH_PTPTSCR_TSFCU_Pos (1U) \r
-#define ETH_PTPTSCR_TSFCU_Msk (0x1UL << ETH_PTPTSCR_TSFCU_Pos) /*!< 0x00000002 */\r
-#define ETH_PTPTSCR_TSFCU ETH_PTPTSCR_TSFCU_Msk /* Time stamp fine or coarse update */\r
-#define ETH_PTPTSCR_TSE_Pos (0U) \r
-#define ETH_PTPTSCR_TSE_Msk (0x1UL << ETH_PTPTSCR_TSE_Pos) /*!< 0x00000001 */\r
-#define ETH_PTPTSCR_TSE ETH_PTPTSCR_TSE_Msk /* Time stamp enable */\r
-\r
-/* Bit definition for Ethernet PTP Sub-Second Increment Register */\r
-#define ETH_PTPSSIR_STSSI_Pos (0U) \r
-#define ETH_PTPSSIR_STSSI_Msk (0xFFUL << ETH_PTPSSIR_STSSI_Pos) /*!< 0x000000FF */\r
-#define ETH_PTPSSIR_STSSI ETH_PTPSSIR_STSSI_Msk /* System time Sub-second increment value */\r
-\r
-/* Bit definition for Ethernet PTP Time Stamp High Register */\r
-#define ETH_PTPTSHR_STS_Pos (0U) \r
-#define ETH_PTPTSHR_STS_Msk (0xFFFFFFFFUL << ETH_PTPTSHR_STS_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_PTPTSHR_STS ETH_PTPTSHR_STS_Msk /* System Time second */\r
-\r
-/* Bit definition for Ethernet PTP Time Stamp Low Register */\r
-#define ETH_PTPTSLR_STPNS_Pos (31U) \r
-#define ETH_PTPTSLR_STPNS_Msk (0x1UL << ETH_PTPTSLR_STPNS_Pos) /*!< 0x80000000 */\r
-#define ETH_PTPTSLR_STPNS ETH_PTPTSLR_STPNS_Msk /* System Time Positive or negative time */\r
-#define ETH_PTPTSLR_STSS_Pos (0U) \r
-#define ETH_PTPTSLR_STSS_Msk (0x7FFFFFFFUL << ETH_PTPTSLR_STSS_Pos) /*!< 0x7FFFFFFF */\r
-#define ETH_PTPTSLR_STSS ETH_PTPTSLR_STSS_Msk /* System Time sub-seconds */\r
-\r
-/* Bit definition for Ethernet PTP Time Stamp High Update Register */\r
-#define ETH_PTPTSHUR_TSUS_Pos (0U) \r
-#define ETH_PTPTSHUR_TSUS_Msk (0xFFFFFFFFUL << ETH_PTPTSHUR_TSUS_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_PTPTSHUR_TSUS ETH_PTPTSHUR_TSUS_Msk /* Time stamp update seconds */\r
-\r
-/* Bit definition for Ethernet PTP Time Stamp Low Update Register */\r
-#define ETH_PTPTSLUR_TSUPNS_Pos (31U) \r
-#define ETH_PTPTSLUR_TSUPNS_Msk (0x1UL << ETH_PTPTSLUR_TSUPNS_Pos) /*!< 0x80000000 */\r
-#define ETH_PTPTSLUR_TSUPNS ETH_PTPTSLUR_TSUPNS_Msk /* Time stamp update Positive or negative time */\r
-#define ETH_PTPTSLUR_TSUSS_Pos (0U) \r
-#define ETH_PTPTSLUR_TSUSS_Msk (0x7FFFFFFFUL << ETH_PTPTSLUR_TSUSS_Pos) /*!< 0x7FFFFFFF */\r
-#define ETH_PTPTSLUR_TSUSS ETH_PTPTSLUR_TSUSS_Msk /* Time stamp update sub-seconds */\r
-\r
-/* Bit definition for Ethernet PTP Time Stamp Addend Register */\r
-#define ETH_PTPTSAR_TSA_Pos (0U) \r
-#define ETH_PTPTSAR_TSA_Msk (0xFFFFFFFFUL << ETH_PTPTSAR_TSA_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_PTPTSAR_TSA ETH_PTPTSAR_TSA_Msk /* Time stamp addend */\r
-\r
-/* Bit definition for Ethernet PTP Target Time High Register */\r
-#define ETH_PTPTTHR_TTSH_Pos (0U) \r
-#define ETH_PTPTTHR_TTSH_Msk (0xFFFFFFFFUL << ETH_PTPTTHR_TTSH_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_PTPTTHR_TTSH ETH_PTPTTHR_TTSH_Msk /* Target time stamp high */\r
-\r
-/* Bit definition for Ethernet PTP Target Time Low Register */\r
-#define ETH_PTPTTLR_TTSL_Pos (0U) \r
-#define ETH_PTPTTLR_TTSL_Msk (0xFFFFFFFFUL << ETH_PTPTTLR_TTSL_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_PTPTTLR_TTSL ETH_PTPTTLR_TTSL_Msk /* Target time stamp low */\r
-\r
-/* Bit definition for Ethernet PTP Time Stamp Status Register */\r
-#define ETH_PTPTSSR_TSTTR_Pos (5U) \r
-#define ETH_PTPTSSR_TSTTR_Msk (0x1UL << ETH_PTPTSSR_TSTTR_Pos) /*!< 0x00000020 */\r
-#define ETH_PTPTSSR_TSTTR ETH_PTPTSSR_TSTTR_Msk /* Time stamp target time reached */\r
-#define ETH_PTPTSSR_TSSO_Pos (4U) \r
-#define ETH_PTPTSSR_TSSO_Msk (0x1UL << ETH_PTPTSSR_TSSO_Pos) /*!< 0x00000010 */\r
-#define ETH_PTPTSSR_TSSO ETH_PTPTSSR_TSSO_Msk /* Time stamp seconds overflow */\r
-\r
-/******************************************************************************/\r
-/* Ethernet DMA Registers bits definition */\r
-/******************************************************************************/\r
-\r
-/* Bit definition for Ethernet DMA Bus Mode Register */\r
-#define ETH_DMABMR_AAB_Pos (25U) \r
-#define ETH_DMABMR_AAB_Msk (0x1UL << ETH_DMABMR_AAB_Pos) /*!< 0x02000000 */\r
-#define ETH_DMABMR_AAB ETH_DMABMR_AAB_Msk /* Address-Aligned beats */\r
-#define ETH_DMABMR_FPM_Pos (24U) \r
-#define ETH_DMABMR_FPM_Msk (0x1UL << ETH_DMABMR_FPM_Pos) /*!< 0x01000000 */\r
-#define ETH_DMABMR_FPM ETH_DMABMR_FPM_Msk /* 4xPBL mode */\r
-#define ETH_DMABMR_USP_Pos (23U) \r
-#define ETH_DMABMR_USP_Msk (0x1UL << ETH_DMABMR_USP_Pos) /*!< 0x00800000 */\r
-#define ETH_DMABMR_USP ETH_DMABMR_USP_Msk /* Use separate PBL */\r
-#define ETH_DMABMR_RDP_Pos (17U) \r
-#define ETH_DMABMR_RDP_Msk (0x3FUL << ETH_DMABMR_RDP_Pos) /*!< 0x007E0000 */\r
-#define ETH_DMABMR_RDP ETH_DMABMR_RDP_Msk /* RxDMA PBL */\r
-#define ETH_DMABMR_RDP_1Beat 0x00020000U /* maximum number of beats to be transferred in one RxDMA transaction is 1 */\r
-#define ETH_DMABMR_RDP_2Beat 0x00040000U /* maximum number of beats to be transferred in one RxDMA transaction is 2 */\r
-#define ETH_DMABMR_RDP_4Beat 0x00080000U /* maximum number of beats to be transferred in one RxDMA transaction is 4 */\r
-#define ETH_DMABMR_RDP_8Beat 0x00100000U /* maximum number of beats to be transferred in one RxDMA transaction is 8 */\r
-#define ETH_DMABMR_RDP_16Beat 0x00200000U /* maximum number of beats to be transferred in one RxDMA transaction is 16 */\r
-#define ETH_DMABMR_RDP_32Beat 0x00400000U /* maximum number of beats to be transferred in one RxDMA transaction is 32 */\r
-#define ETH_DMABMR_RDP_4xPBL_4Beat 0x01020000U /* maximum number of beats to be transferred in one RxDMA transaction is 4 */\r
-#define ETH_DMABMR_RDP_4xPBL_8Beat 0x01040000U /* maximum number of beats to be transferred in one RxDMA transaction is 8 */\r
-#define ETH_DMABMR_RDP_4xPBL_16Beat 0x01080000U /* maximum number of beats to be transferred in one RxDMA transaction is 16 */\r
-#define ETH_DMABMR_RDP_4xPBL_32Beat 0x01100000U /* maximum number of beats to be transferred in one RxDMA transaction is 32 */\r
-#define ETH_DMABMR_RDP_4xPBL_64Beat 0x01200000U /* maximum number of beats to be transferred in one RxDMA transaction is 64 */\r
-#define ETH_DMABMR_RDP_4xPBL_128Beat 0x01400000U /* maximum number of beats to be transferred in one RxDMA transaction is 128 */\r
-#define ETH_DMABMR_FB_Pos (16U) \r
-#define ETH_DMABMR_FB_Msk (0x1UL << ETH_DMABMR_FB_Pos) /*!< 0x00010000 */\r
-#define ETH_DMABMR_FB ETH_DMABMR_FB_Msk /* Fixed Burst */\r
-#define ETH_DMABMR_RTPR_Pos (14U) \r
-#define ETH_DMABMR_RTPR_Msk (0x3UL << ETH_DMABMR_RTPR_Pos) /*!< 0x0000C000 */\r
-#define ETH_DMABMR_RTPR ETH_DMABMR_RTPR_Msk /* Rx Tx priority ratio */\r
-#define ETH_DMABMR_RTPR_1_1 0x00000000U /* Rx Tx priority ratio */\r
-#define ETH_DMABMR_RTPR_2_1 0x00004000U /* Rx Tx priority ratio */\r
-#define ETH_DMABMR_RTPR_3_1 0x00008000U /* Rx Tx priority ratio */\r
-#define ETH_DMABMR_RTPR_4_1 0x0000C000U /* Rx Tx priority ratio */\r
-#define ETH_DMABMR_PBL_Pos (8U) \r
-#define ETH_DMABMR_PBL_Msk (0x3FUL << ETH_DMABMR_PBL_Pos) /*!< 0x00003F00 */\r
-#define ETH_DMABMR_PBL ETH_DMABMR_PBL_Msk /* Programmable burst length */\r
-#define ETH_DMABMR_PBL_1Beat 0x00000100U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 1 */\r
-#define ETH_DMABMR_PBL_2Beat 0x00000200U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 2 */\r
-#define ETH_DMABMR_PBL_4Beat 0x00000400U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */\r
-#define ETH_DMABMR_PBL_8Beat 0x00000800U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */\r
-#define ETH_DMABMR_PBL_16Beat 0x00001000U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */\r
-#define ETH_DMABMR_PBL_32Beat 0x00002000U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */\r
-#define ETH_DMABMR_PBL_4xPBL_4Beat 0x01000100U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */\r
-#define ETH_DMABMR_PBL_4xPBL_8Beat 0x01000200U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */\r
-#define ETH_DMABMR_PBL_4xPBL_16Beat 0x01000400U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */\r
-#define ETH_DMABMR_PBL_4xPBL_32Beat 0x01000800U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */\r
-#define ETH_DMABMR_PBL_4xPBL_64Beat 0x01001000U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 64 */\r
-#define ETH_DMABMR_PBL_4xPBL_128Beat 0x01002000U /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 128 */\r
-#define ETH_DMABMR_EDE_Pos (7U) \r
-#define ETH_DMABMR_EDE_Msk (0x1UL << ETH_DMABMR_EDE_Pos) /*!< 0x00000080 */\r
-#define ETH_DMABMR_EDE ETH_DMABMR_EDE_Msk /* Enhanced Descriptor Enable */\r
-#define ETH_DMABMR_DSL_Pos (2U) \r
-#define ETH_DMABMR_DSL_Msk (0x1FUL << ETH_DMABMR_DSL_Pos) /*!< 0x0000007C */\r
-#define ETH_DMABMR_DSL ETH_DMABMR_DSL_Msk /* Descriptor Skip Length */\r
-#define ETH_DMABMR_DA_Pos (1U) \r
-#define ETH_DMABMR_DA_Msk (0x1UL << ETH_DMABMR_DA_Pos) /*!< 0x00000002 */\r
-#define ETH_DMABMR_DA ETH_DMABMR_DA_Msk /* DMA arbitration scheme */\r
-#define ETH_DMABMR_SR_Pos (0U) \r
-#define ETH_DMABMR_SR_Msk (0x1UL << ETH_DMABMR_SR_Pos) /*!< 0x00000001 */\r
-#define ETH_DMABMR_SR ETH_DMABMR_SR_Msk /* Software reset */\r
-\r
-/* Bit definition for Ethernet DMA Transmit Poll Demand Register */\r
-#define ETH_DMATPDR_TPD_Pos (0U) \r
-#define ETH_DMATPDR_TPD_Msk (0xFFFFFFFFUL << ETH_DMATPDR_TPD_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMATPDR_TPD ETH_DMATPDR_TPD_Msk /* Transmit poll demand */\r
-\r
-/* Bit definition for Ethernet DMA Receive Poll Demand Register */\r
-#define ETH_DMARPDR_RPD_Pos (0U) \r
-#define ETH_DMARPDR_RPD_Msk (0xFFFFFFFFUL << ETH_DMARPDR_RPD_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMARPDR_RPD ETH_DMARPDR_RPD_Msk /* Receive poll demand */\r
-\r
-/* Bit definition for Ethernet DMA Receive Descriptor List Address Register */\r
-#define ETH_DMARDLAR_SRL_Pos (0U) \r
-#define ETH_DMARDLAR_SRL_Msk (0xFFFFFFFFUL << ETH_DMARDLAR_SRL_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMARDLAR_SRL ETH_DMARDLAR_SRL_Msk /* Start of receive list */\r
-\r
-/* Bit definition for Ethernet DMA Transmit Descriptor List Address Register */\r
-#define ETH_DMATDLAR_STL_Pos (0U) \r
-#define ETH_DMATDLAR_STL_Msk (0xFFFFFFFFUL << ETH_DMATDLAR_STL_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMATDLAR_STL ETH_DMATDLAR_STL_Msk /* Start of transmit list */\r
-\r
-/* Bit definition for Ethernet DMA Status Register */\r
-#define ETH_DMASR_TSTS_Pos (29U) \r
-#define ETH_DMASR_TSTS_Msk (0x1UL << ETH_DMASR_TSTS_Pos) /*!< 0x20000000 */\r
-#define ETH_DMASR_TSTS ETH_DMASR_TSTS_Msk /* Time-stamp trigger status */\r
-#define ETH_DMASR_PMTS_Pos (28U) \r
-#define ETH_DMASR_PMTS_Msk (0x1UL << ETH_DMASR_PMTS_Pos) /*!< 0x10000000 */\r
-#define ETH_DMASR_PMTS ETH_DMASR_PMTS_Msk /* PMT status */\r
-#define ETH_DMASR_MMCS_Pos (27U) \r
-#define ETH_DMASR_MMCS_Msk (0x1UL << ETH_DMASR_MMCS_Pos) /*!< 0x08000000 */\r
-#define ETH_DMASR_MMCS ETH_DMASR_MMCS_Msk /* MMC status */\r
-#define ETH_DMASR_EBS_Pos (23U) \r
-#define ETH_DMASR_EBS_Msk (0x7UL << ETH_DMASR_EBS_Pos) /*!< 0x03800000 */\r
-#define ETH_DMASR_EBS ETH_DMASR_EBS_Msk /* Error bits status */\r
- /* combination with EBS[2:0] for GetFlagStatus function */\r
-#define ETH_DMASR_EBS_DescAccess_Pos (25U) \r
-#define ETH_DMASR_EBS_DescAccess_Msk (0x1UL << ETH_DMASR_EBS_DescAccess_Pos) /*!< 0x02000000 */\r
-#define ETH_DMASR_EBS_DescAccess ETH_DMASR_EBS_DescAccess_Msk /* Error bits 0-data buffer, 1-desc. access */\r
-#define ETH_DMASR_EBS_ReadTransf_Pos (24U) \r
-#define ETH_DMASR_EBS_ReadTransf_Msk (0x1UL << ETH_DMASR_EBS_ReadTransf_Pos) /*!< 0x01000000 */\r
-#define ETH_DMASR_EBS_ReadTransf ETH_DMASR_EBS_ReadTransf_Msk /* Error bits 0-write trnsf, 1-read transfr */\r
-#define ETH_DMASR_EBS_DataTransfTx_Pos (23U) \r
-#define ETH_DMASR_EBS_DataTransfTx_Msk (0x1UL << ETH_DMASR_EBS_DataTransfTx_Pos) /*!< 0x00800000 */\r
-#define ETH_DMASR_EBS_DataTransfTx ETH_DMASR_EBS_DataTransfTx_Msk /* Error bits 0-Rx DMA, 1-Tx DMA */\r
-#define ETH_DMASR_TPS_Pos (20U) \r
-#define ETH_DMASR_TPS_Msk (0x7UL << ETH_DMASR_TPS_Pos) /*!< 0x00700000 */\r
-#define ETH_DMASR_TPS ETH_DMASR_TPS_Msk /* Transmit process state */\r
-#define ETH_DMASR_TPS_Stopped 0x00000000U /* Stopped - Reset or Stop Tx Command issued */\r
-#define ETH_DMASR_TPS_Fetching_Pos (20U) \r
-#define ETH_DMASR_TPS_Fetching_Msk (0x1UL << ETH_DMASR_TPS_Fetching_Pos) /*!< 0x00100000 */\r
-#define ETH_DMASR_TPS_Fetching ETH_DMASR_TPS_Fetching_Msk /* Running - fetching the Tx descriptor */\r
-#define ETH_DMASR_TPS_Waiting_Pos (21U) \r
-#define ETH_DMASR_TPS_Waiting_Msk (0x1UL << ETH_DMASR_TPS_Waiting_Pos) /*!< 0x00200000 */\r
-#define ETH_DMASR_TPS_Waiting ETH_DMASR_TPS_Waiting_Msk /* Running - waiting for status */\r
-#define ETH_DMASR_TPS_Reading_Pos (20U) \r
-#define ETH_DMASR_TPS_Reading_Msk (0x3UL << ETH_DMASR_TPS_Reading_Pos) /*!< 0x00300000 */\r
-#define ETH_DMASR_TPS_Reading ETH_DMASR_TPS_Reading_Msk /* Running - reading the data from host memory */\r
-#define ETH_DMASR_TPS_Suspended_Pos (21U) \r
-#define ETH_DMASR_TPS_Suspended_Msk (0x3UL << ETH_DMASR_TPS_Suspended_Pos) /*!< 0x00600000 */\r
-#define ETH_DMASR_TPS_Suspended ETH_DMASR_TPS_Suspended_Msk /* Suspended - Tx Descriptor unavailabe */\r
-#define ETH_DMASR_TPS_Closing_Pos (20U) \r
-#define ETH_DMASR_TPS_Closing_Msk (0x7UL << ETH_DMASR_TPS_Closing_Pos) /*!< 0x00700000 */\r
-#define ETH_DMASR_TPS_Closing ETH_DMASR_TPS_Closing_Msk /* Running - closing Rx descriptor */\r
-#define ETH_DMASR_RPS_Pos (17U) \r
-#define ETH_DMASR_RPS_Msk (0x7UL << ETH_DMASR_RPS_Pos) /*!< 0x000E0000 */\r
-#define ETH_DMASR_RPS ETH_DMASR_RPS_Msk /* Receive process state */\r
-#define ETH_DMASR_RPS_Stopped 0x00000000U /* Stopped - Reset or Stop Rx Command issued */\r
-#define ETH_DMASR_RPS_Fetching_Pos (17U) \r
-#define ETH_DMASR_RPS_Fetching_Msk (0x1UL << ETH_DMASR_RPS_Fetching_Pos) /*!< 0x00020000 */\r
-#define ETH_DMASR_RPS_Fetching ETH_DMASR_RPS_Fetching_Msk /* Running - fetching the Rx descriptor */\r
-#define ETH_DMASR_RPS_Waiting_Pos (17U) \r
-#define ETH_DMASR_RPS_Waiting_Msk (0x3UL << ETH_DMASR_RPS_Waiting_Pos) /*!< 0x00060000 */\r
-#define ETH_DMASR_RPS_Waiting ETH_DMASR_RPS_Waiting_Msk /* Running - waiting for packet */\r
-#define ETH_DMASR_RPS_Suspended_Pos (19U) \r
-#define ETH_DMASR_RPS_Suspended_Msk (0x1UL << ETH_DMASR_RPS_Suspended_Pos) /*!< 0x00080000 */\r
-#define ETH_DMASR_RPS_Suspended ETH_DMASR_RPS_Suspended_Msk /* Suspended - Rx Descriptor unavailable */\r
-#define ETH_DMASR_RPS_Closing_Pos (17U) \r
-#define ETH_DMASR_RPS_Closing_Msk (0x5UL << ETH_DMASR_RPS_Closing_Pos) /*!< 0x000A0000 */\r
-#define ETH_DMASR_RPS_Closing ETH_DMASR_RPS_Closing_Msk /* Running - closing descriptor */\r
-#define ETH_DMASR_RPS_Queuing_Pos (17U) \r
-#define ETH_DMASR_RPS_Queuing_Msk (0x7UL << ETH_DMASR_RPS_Queuing_Pos) /*!< 0x000E0000 */\r
-#define ETH_DMASR_RPS_Queuing ETH_DMASR_RPS_Queuing_Msk /* Running - queuing the recieve frame into host memory */\r
-#define ETH_DMASR_NIS_Pos (16U) \r
-#define ETH_DMASR_NIS_Msk (0x1UL << ETH_DMASR_NIS_Pos) /*!< 0x00010000 */\r
-#define ETH_DMASR_NIS ETH_DMASR_NIS_Msk /* Normal interrupt summary */\r
-#define ETH_DMASR_AIS_Pos (15U) \r
-#define ETH_DMASR_AIS_Msk (0x1UL << ETH_DMASR_AIS_Pos) /*!< 0x00008000 */\r
-#define ETH_DMASR_AIS ETH_DMASR_AIS_Msk /* Abnormal interrupt summary */\r
-#define ETH_DMASR_ERS_Pos (14U) \r
-#define ETH_DMASR_ERS_Msk (0x1UL << ETH_DMASR_ERS_Pos) /*!< 0x00004000 */\r
-#define ETH_DMASR_ERS ETH_DMASR_ERS_Msk /* Early receive status */\r
-#define ETH_DMASR_FBES_Pos (13U) \r
-#define ETH_DMASR_FBES_Msk (0x1UL << ETH_DMASR_FBES_Pos) /*!< 0x00002000 */\r
-#define ETH_DMASR_FBES ETH_DMASR_FBES_Msk /* Fatal bus error status */\r
-#define ETH_DMASR_ETS_Pos (10U) \r
-#define ETH_DMASR_ETS_Msk (0x1UL << ETH_DMASR_ETS_Pos) /*!< 0x00000400 */\r
-#define ETH_DMASR_ETS ETH_DMASR_ETS_Msk /* Early transmit status */\r
-#define ETH_DMASR_RWTS_Pos (9U) \r
-#define ETH_DMASR_RWTS_Msk (0x1UL << ETH_DMASR_RWTS_Pos) /*!< 0x00000200 */\r
-#define ETH_DMASR_RWTS ETH_DMASR_RWTS_Msk /* Receive watchdog timeout status */\r
-#define ETH_DMASR_RPSS_Pos (8U) \r
-#define ETH_DMASR_RPSS_Msk (0x1UL << ETH_DMASR_RPSS_Pos) /*!< 0x00000100 */\r
-#define ETH_DMASR_RPSS ETH_DMASR_RPSS_Msk /* Receive process stopped status */\r
-#define ETH_DMASR_RBUS_Pos (7U) \r
-#define ETH_DMASR_RBUS_Msk (0x1UL << ETH_DMASR_RBUS_Pos) /*!< 0x00000080 */\r
-#define ETH_DMASR_RBUS ETH_DMASR_RBUS_Msk /* Receive buffer unavailable status */\r
-#define ETH_DMASR_RS_Pos (6U) \r
-#define ETH_DMASR_RS_Msk (0x1UL << ETH_DMASR_RS_Pos) /*!< 0x00000040 */\r
-#define ETH_DMASR_RS ETH_DMASR_RS_Msk /* Receive status */\r
-#define ETH_DMASR_TUS_Pos (5U) \r
-#define ETH_DMASR_TUS_Msk (0x1UL << ETH_DMASR_TUS_Pos) /*!< 0x00000020 */\r
-#define ETH_DMASR_TUS ETH_DMASR_TUS_Msk /* Transmit underflow status */\r
-#define ETH_DMASR_ROS_Pos (4U) \r
-#define ETH_DMASR_ROS_Msk (0x1UL << ETH_DMASR_ROS_Pos) /*!< 0x00000010 */\r
-#define ETH_DMASR_ROS ETH_DMASR_ROS_Msk /* Receive overflow status */\r
-#define ETH_DMASR_TJTS_Pos (3U) \r
-#define ETH_DMASR_TJTS_Msk (0x1UL << ETH_DMASR_TJTS_Pos) /*!< 0x00000008 */\r
-#define ETH_DMASR_TJTS ETH_DMASR_TJTS_Msk /* Transmit jabber timeout status */\r
-#define ETH_DMASR_TBUS_Pos (2U) \r
-#define ETH_DMASR_TBUS_Msk (0x1UL << ETH_DMASR_TBUS_Pos) /*!< 0x00000004 */\r
-#define ETH_DMASR_TBUS ETH_DMASR_TBUS_Msk /* Transmit buffer unavailable status */\r
-#define ETH_DMASR_TPSS_Pos (1U) \r
-#define ETH_DMASR_TPSS_Msk (0x1UL << ETH_DMASR_TPSS_Pos) /*!< 0x00000002 */\r
-#define ETH_DMASR_TPSS ETH_DMASR_TPSS_Msk /* Transmit process stopped status */\r
-#define ETH_DMASR_TS_Pos (0U) \r
-#define ETH_DMASR_TS_Msk (0x1UL << ETH_DMASR_TS_Pos) /*!< 0x00000001 */\r
-#define ETH_DMASR_TS ETH_DMASR_TS_Msk /* Transmit status */\r
-\r
-/* Bit definition for Ethernet DMA Operation Mode Register */\r
-#define ETH_DMAOMR_DTCEFD_Pos (26U) \r
-#define ETH_DMAOMR_DTCEFD_Msk (0x1UL << ETH_DMAOMR_DTCEFD_Pos) /*!< 0x04000000 */\r
-#define ETH_DMAOMR_DTCEFD ETH_DMAOMR_DTCEFD_Msk /* Disable Dropping of TCP/IP checksum error frames */\r
-#define ETH_DMAOMR_RSF_Pos (25U) \r
-#define ETH_DMAOMR_RSF_Msk (0x1UL << ETH_DMAOMR_RSF_Pos) /*!< 0x02000000 */\r
-#define ETH_DMAOMR_RSF ETH_DMAOMR_RSF_Msk /* Receive store and forward */\r
-#define ETH_DMAOMR_DFRF_Pos (24U) \r
-#define ETH_DMAOMR_DFRF_Msk (0x1UL << ETH_DMAOMR_DFRF_Pos) /*!< 0x01000000 */\r
-#define ETH_DMAOMR_DFRF ETH_DMAOMR_DFRF_Msk /* Disable flushing of received frames */\r
-#define ETH_DMAOMR_TSF_Pos (21U) \r
-#define ETH_DMAOMR_TSF_Msk (0x1UL << ETH_DMAOMR_TSF_Pos) /*!< 0x00200000 */\r
-#define ETH_DMAOMR_TSF ETH_DMAOMR_TSF_Msk /* Transmit store and forward */\r
-#define ETH_DMAOMR_FTF_Pos (20U) \r
-#define ETH_DMAOMR_FTF_Msk (0x1UL << ETH_DMAOMR_FTF_Pos) /*!< 0x00100000 */\r
-#define ETH_DMAOMR_FTF ETH_DMAOMR_FTF_Msk /* Flush transmit FIFO */\r
-#define ETH_DMAOMR_TTC_Pos (14U) \r
-#define ETH_DMAOMR_TTC_Msk (0x7UL << ETH_DMAOMR_TTC_Pos) /*!< 0x0001C000 */\r
-#define ETH_DMAOMR_TTC ETH_DMAOMR_TTC_Msk /* Transmit threshold control */\r
-#define ETH_DMAOMR_TTC_64Bytes 0x00000000U /* threshold level of the MTL Transmit FIFO is 64 Bytes */\r
-#define ETH_DMAOMR_TTC_128Bytes 0x00004000U /* threshold level of the MTL Transmit FIFO is 128 Bytes */\r
-#define ETH_DMAOMR_TTC_192Bytes 0x00008000U /* threshold level of the MTL Transmit FIFO is 192 Bytes */\r
-#define ETH_DMAOMR_TTC_256Bytes 0x0000C000U /* threshold level of the MTL Transmit FIFO is 256 Bytes */\r
-#define ETH_DMAOMR_TTC_40Bytes 0x00010000U /* threshold level of the MTL Transmit FIFO is 40 Bytes */\r
-#define ETH_DMAOMR_TTC_32Bytes 0x00014000U /* threshold level of the MTL Transmit FIFO is 32 Bytes */\r
-#define ETH_DMAOMR_TTC_24Bytes 0x00018000U /* threshold level of the MTL Transmit FIFO is 24 Bytes */\r
-#define ETH_DMAOMR_TTC_16Bytes 0x0001C000U /* threshold level of the MTL Transmit FIFO is 16 Bytes */\r
-#define ETH_DMAOMR_ST_Pos (13U) \r
-#define ETH_DMAOMR_ST_Msk (0x1UL << ETH_DMAOMR_ST_Pos) /*!< 0x00002000 */\r
-#define ETH_DMAOMR_ST ETH_DMAOMR_ST_Msk /* Start/stop transmission command */\r
-#define ETH_DMAOMR_FEF_Pos (7U) \r
-#define ETH_DMAOMR_FEF_Msk (0x1UL << ETH_DMAOMR_FEF_Pos) /*!< 0x00000080 */\r
-#define ETH_DMAOMR_FEF ETH_DMAOMR_FEF_Msk /* Forward error frames */\r
-#define ETH_DMAOMR_FUGF_Pos (6U) \r
-#define ETH_DMAOMR_FUGF_Msk (0x1UL << ETH_DMAOMR_FUGF_Pos) /*!< 0x00000040 */\r
-#define ETH_DMAOMR_FUGF ETH_DMAOMR_FUGF_Msk /* Forward undersized good frames */\r
-#define ETH_DMAOMR_RTC_Pos (3U) \r
-#define ETH_DMAOMR_RTC_Msk (0x3UL << ETH_DMAOMR_RTC_Pos) /*!< 0x00000018 */\r
-#define ETH_DMAOMR_RTC ETH_DMAOMR_RTC_Msk /* receive threshold control */\r
-#define ETH_DMAOMR_RTC_64Bytes 0x00000000U /* threshold level of the MTL Receive FIFO is 64 Bytes */\r
-#define ETH_DMAOMR_RTC_32Bytes 0x00000008U /* threshold level of the MTL Receive FIFO is 32 Bytes */\r
-#define ETH_DMAOMR_RTC_96Bytes 0x00000010U /* threshold level of the MTL Receive FIFO is 96 Bytes */\r
-#define ETH_DMAOMR_RTC_128Bytes 0x00000018U /* threshold level of the MTL Receive FIFO is 128 Bytes */\r
-#define ETH_DMAOMR_OSF_Pos (2U) \r
-#define ETH_DMAOMR_OSF_Msk (0x1UL << ETH_DMAOMR_OSF_Pos) /*!< 0x00000004 */\r
-#define ETH_DMAOMR_OSF ETH_DMAOMR_OSF_Msk /* operate on second frame */\r
-#define ETH_DMAOMR_SR_Pos (1U) \r
-#define ETH_DMAOMR_SR_Msk (0x1UL << ETH_DMAOMR_SR_Pos) /*!< 0x00000002 */\r
-#define ETH_DMAOMR_SR ETH_DMAOMR_SR_Msk /* Start/stop receive */\r
-\r
-/* Bit definition for Ethernet DMA Interrupt Enable Register */\r
-#define ETH_DMAIER_NISE_Pos (16U) \r
-#define ETH_DMAIER_NISE_Msk (0x1UL << ETH_DMAIER_NISE_Pos) /*!< 0x00010000 */\r
-#define ETH_DMAIER_NISE ETH_DMAIER_NISE_Msk /* Normal interrupt summary enable */\r
-#define ETH_DMAIER_AISE_Pos (15U) \r
-#define ETH_DMAIER_AISE_Msk (0x1UL << ETH_DMAIER_AISE_Pos) /*!< 0x00008000 */\r
-#define ETH_DMAIER_AISE ETH_DMAIER_AISE_Msk /* Abnormal interrupt summary enable */\r
-#define ETH_DMAIER_ERIE_Pos (14U) \r
-#define ETH_DMAIER_ERIE_Msk (0x1UL << ETH_DMAIER_ERIE_Pos) /*!< 0x00004000 */\r
-#define ETH_DMAIER_ERIE ETH_DMAIER_ERIE_Msk /* Early receive interrupt enable */\r
-#define ETH_DMAIER_FBEIE_Pos (13U) \r
-#define ETH_DMAIER_FBEIE_Msk (0x1UL << ETH_DMAIER_FBEIE_Pos) /*!< 0x00002000 */\r
-#define ETH_DMAIER_FBEIE ETH_DMAIER_FBEIE_Msk /* Fatal bus error interrupt enable */\r
-#define ETH_DMAIER_ETIE_Pos (10U) \r
-#define ETH_DMAIER_ETIE_Msk (0x1UL << ETH_DMAIER_ETIE_Pos) /*!< 0x00000400 */\r
-#define ETH_DMAIER_ETIE ETH_DMAIER_ETIE_Msk /* Early transmit interrupt enable */\r
-#define ETH_DMAIER_RWTIE_Pos (9U) \r
-#define ETH_DMAIER_RWTIE_Msk (0x1UL << ETH_DMAIER_RWTIE_Pos) /*!< 0x00000200 */\r
-#define ETH_DMAIER_RWTIE ETH_DMAIER_RWTIE_Msk /* Receive watchdog timeout interrupt enable */\r
-#define ETH_DMAIER_RPSIE_Pos (8U) \r
-#define ETH_DMAIER_RPSIE_Msk (0x1UL << ETH_DMAIER_RPSIE_Pos) /*!< 0x00000100 */\r
-#define ETH_DMAIER_RPSIE ETH_DMAIER_RPSIE_Msk /* Receive process stopped interrupt enable */\r
-#define ETH_DMAIER_RBUIE_Pos (7U) \r
-#define ETH_DMAIER_RBUIE_Msk (0x1UL << ETH_DMAIER_RBUIE_Pos) /*!< 0x00000080 */\r
-#define ETH_DMAIER_RBUIE ETH_DMAIER_RBUIE_Msk /* Receive buffer unavailable interrupt enable */\r
-#define ETH_DMAIER_RIE_Pos (6U) \r
-#define ETH_DMAIER_RIE_Msk (0x1UL << ETH_DMAIER_RIE_Pos) /*!< 0x00000040 */\r
-#define ETH_DMAIER_RIE ETH_DMAIER_RIE_Msk /* Receive interrupt enable */\r
-#define ETH_DMAIER_TUIE_Pos (5U) \r
-#define ETH_DMAIER_TUIE_Msk (0x1UL << ETH_DMAIER_TUIE_Pos) /*!< 0x00000020 */\r
-#define ETH_DMAIER_TUIE ETH_DMAIER_TUIE_Msk /* Transmit Underflow interrupt enable */\r
-#define ETH_DMAIER_ROIE_Pos (4U) \r
-#define ETH_DMAIER_ROIE_Msk (0x1UL << ETH_DMAIER_ROIE_Pos) /*!< 0x00000010 */\r
-#define ETH_DMAIER_ROIE ETH_DMAIER_ROIE_Msk /* Receive Overflow interrupt enable */\r
-#define ETH_DMAIER_TJTIE_Pos (3U) \r
-#define ETH_DMAIER_TJTIE_Msk (0x1UL << ETH_DMAIER_TJTIE_Pos) /*!< 0x00000008 */\r
-#define ETH_DMAIER_TJTIE ETH_DMAIER_TJTIE_Msk /* Transmit jabber timeout interrupt enable */\r
-#define ETH_DMAIER_TBUIE_Pos (2U) \r
-#define ETH_DMAIER_TBUIE_Msk (0x1UL << ETH_DMAIER_TBUIE_Pos) /*!< 0x00000004 */\r
-#define ETH_DMAIER_TBUIE ETH_DMAIER_TBUIE_Msk /* Transmit buffer unavailable interrupt enable */\r
-#define ETH_DMAIER_TPSIE_Pos (1U) \r
-#define ETH_DMAIER_TPSIE_Msk (0x1UL << ETH_DMAIER_TPSIE_Pos) /*!< 0x00000002 */\r
-#define ETH_DMAIER_TPSIE ETH_DMAIER_TPSIE_Msk /* Transmit process stopped interrupt enable */\r
-#define ETH_DMAIER_TIE_Pos (0U) \r
-#define ETH_DMAIER_TIE_Msk (0x1UL << ETH_DMAIER_TIE_Pos) /*!< 0x00000001 */\r
-#define ETH_DMAIER_TIE ETH_DMAIER_TIE_Msk /* Transmit interrupt enable */\r
-\r
-/* Bit definition for Ethernet DMA Missed Frame and Buffer Overflow Counter Register */\r
-#define ETH_DMAMFBOCR_OFOC_Pos (28U) \r
-#define ETH_DMAMFBOCR_OFOC_Msk (0x1UL << ETH_DMAMFBOCR_OFOC_Pos) /*!< 0x10000000 */\r
-#define ETH_DMAMFBOCR_OFOC ETH_DMAMFBOCR_OFOC_Msk /* Overflow bit for FIFO overflow counter */\r
-#define ETH_DMAMFBOCR_MFA_Pos (17U) \r
-#define ETH_DMAMFBOCR_MFA_Msk (0x7FFUL << ETH_DMAMFBOCR_MFA_Pos) /*!< 0x0FFE0000 */\r
-#define ETH_DMAMFBOCR_MFA ETH_DMAMFBOCR_MFA_Msk /* Number of frames missed by the application */\r
-#define ETH_DMAMFBOCR_OMFC_Pos (16U) \r
-#define ETH_DMAMFBOCR_OMFC_Msk (0x1UL << ETH_DMAMFBOCR_OMFC_Pos) /*!< 0x00010000 */\r
-#define ETH_DMAMFBOCR_OMFC ETH_DMAMFBOCR_OMFC_Msk /* Overflow bit for missed frame counter */\r
-#define ETH_DMAMFBOCR_MFC_Pos (0U) \r
-#define ETH_DMAMFBOCR_MFC_Msk (0xFFFFUL << ETH_DMAMFBOCR_MFC_Pos) /*!< 0x0000FFFF */\r
-#define ETH_DMAMFBOCR_MFC ETH_DMAMFBOCR_MFC_Msk /* Number of frames missed by the controller */\r
-\r
-/* Bit definition for Ethernet DMA Current Host Transmit Descriptor Register */\r
-#define ETH_DMACHTDR_HTDAP_Pos (0U) \r
-#define ETH_DMACHTDR_HTDAP_Msk (0xFFFFFFFFUL << ETH_DMACHTDR_HTDAP_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMACHTDR_HTDAP ETH_DMACHTDR_HTDAP_Msk /* Host transmit descriptor address pointer */\r
-\r
-/* Bit definition for Ethernet DMA Current Host Receive Descriptor Register */\r
-#define ETH_DMACHRDR_HRDAP_Pos (0U) \r
-#define ETH_DMACHRDR_HRDAP_Msk (0xFFFFFFFFUL << ETH_DMACHRDR_HRDAP_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMACHRDR_HRDAP ETH_DMACHRDR_HRDAP_Msk /* Host receive descriptor address pointer */\r
-\r
-/* Bit definition for Ethernet DMA Current Host Transmit Buffer Address Register */\r
-#define ETH_DMACHTBAR_HTBAP_Pos (0U) \r
-#define ETH_DMACHTBAR_HTBAP_Msk (0xFFFFFFFFUL << ETH_DMACHTBAR_HTBAP_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMACHTBAR_HTBAP ETH_DMACHTBAR_HTBAP_Msk /* Host transmit buffer address pointer */\r
-\r
-/* Bit definition for Ethernet DMA Current Host Receive Buffer Address Register */\r
-#define ETH_DMACHRBAR_HRBAP_Pos (0U) \r
-#define ETH_DMACHRBAR_HRBAP_Msk (0xFFFFFFFFUL << ETH_DMACHRBAR_HRBAP_Pos) /*!< 0xFFFFFFFF */\r
-#define ETH_DMACHRBAR_HRBAP ETH_DMACHRBAR_HRBAP_Msk /* Host receive buffer address pointer */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* USB_OTG */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for USB_OTG_GOTGCTL register ********************/\r
-#define USB_OTG_GOTGCTL_SRQSCS_Pos (0U) \r
-#define USB_OTG_GOTGCTL_SRQSCS_Msk (0x1UL << USB_OTG_GOTGCTL_SRQSCS_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_GOTGCTL_SRQSCS USB_OTG_GOTGCTL_SRQSCS_Msk /*!< Session request success */\r
-#define USB_OTG_GOTGCTL_SRQ_Pos (1U) \r
-#define USB_OTG_GOTGCTL_SRQ_Msk (0x1UL << USB_OTG_GOTGCTL_SRQ_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_GOTGCTL_SRQ USB_OTG_GOTGCTL_SRQ_Msk /*!< Session request */\r
-#define USB_OTG_GOTGCTL_VBVALOEN_Pos (2U) \r
-#define USB_OTG_GOTGCTL_VBVALOEN_Msk (0x1UL << USB_OTG_GOTGCTL_VBVALOEN_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_GOTGCTL_VBVALOEN USB_OTG_GOTGCTL_VBVALOEN_Msk /*!< VBUS valid override enable */\r
-#define USB_OTG_GOTGCTL_VBVALOVAL_Pos (3U) \r
-#define USB_OTG_GOTGCTL_VBVALOVAL_Msk (0x1UL << USB_OTG_GOTGCTL_VBVALOVAL_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_GOTGCTL_VBVALOVAL USB_OTG_GOTGCTL_VBVALOVAL_Msk /*!< VBUS valid override value */\r
-#define USB_OTG_GOTGCTL_AVALOEN_Pos (4U) \r
-#define USB_OTG_GOTGCTL_AVALOEN_Msk (0x1UL << USB_OTG_GOTGCTL_AVALOEN_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_GOTGCTL_AVALOEN USB_OTG_GOTGCTL_AVALOEN_Msk /*!< A-peripheral session valid override enable */\r
-#define USB_OTG_GOTGCTL_AVALOVAL_Pos (5U) \r
-#define USB_OTG_GOTGCTL_AVALOVAL_Msk (0x1UL << USB_OTG_GOTGCTL_AVALOVAL_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_GOTGCTL_AVALOVAL USB_OTG_GOTGCTL_AVALOVAL_Msk /*!< A-peripheral session valid override value */\r
-#define USB_OTG_GOTGCTL_BVALOEN_Pos (6U) \r
-#define USB_OTG_GOTGCTL_BVALOEN_Msk (0x1UL << USB_OTG_GOTGCTL_BVALOEN_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_GOTGCTL_BVALOEN USB_OTG_GOTGCTL_BVALOEN_Msk /*!< B-peripheral session valid override enable */\r
-#define USB_OTG_GOTGCTL_BVALOVAL_Pos (7U) \r
-#define USB_OTG_GOTGCTL_BVALOVAL_Msk (0x1UL << USB_OTG_GOTGCTL_BVALOVAL_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_GOTGCTL_BVALOVAL USB_OTG_GOTGCTL_BVALOVAL_Msk /*!< B-peripheral session valid override value */\r
-#define USB_OTG_GOTGCTL_HNGSCS_Pos (8U) \r
-#define USB_OTG_GOTGCTL_HNGSCS_Msk (0x1UL << USB_OTG_GOTGCTL_HNGSCS_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_GOTGCTL_HNGSCS USB_OTG_GOTGCTL_HNGSCS_Msk /*!< Host set HNP enable */\r
-#define USB_OTG_GOTGCTL_HNPRQ_Pos (9U) \r
-#define USB_OTG_GOTGCTL_HNPRQ_Msk (0x1UL << USB_OTG_GOTGCTL_HNPRQ_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_GOTGCTL_HNPRQ USB_OTG_GOTGCTL_HNPRQ_Msk /*!< HNP request */\r
-#define USB_OTG_GOTGCTL_HSHNPEN_Pos (10U) \r
-#define USB_OTG_GOTGCTL_HSHNPEN_Msk (0x1UL << USB_OTG_GOTGCTL_HSHNPEN_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_GOTGCTL_HSHNPEN USB_OTG_GOTGCTL_HSHNPEN_Msk /*!< Host set HNP enable */\r
-#define USB_OTG_GOTGCTL_DHNPEN_Pos (11U) \r
-#define USB_OTG_GOTGCTL_DHNPEN_Msk (0x1UL << USB_OTG_GOTGCTL_DHNPEN_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_GOTGCTL_DHNPEN USB_OTG_GOTGCTL_DHNPEN_Msk /*!< Device HNP enabled */\r
-#define USB_OTG_GOTGCTL_EHEN_Pos (12U) \r
-#define USB_OTG_GOTGCTL_EHEN_Msk (0x1UL << USB_OTG_GOTGCTL_EHEN_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_GOTGCTL_EHEN USB_OTG_GOTGCTL_EHEN_Msk /*!< Embedded host enable */\r
-#define USB_OTG_GOTGCTL_CIDSTS_Pos (16U) \r
-#define USB_OTG_GOTGCTL_CIDSTS_Msk (0x1UL << USB_OTG_GOTGCTL_CIDSTS_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_GOTGCTL_CIDSTS USB_OTG_GOTGCTL_CIDSTS_Msk /*!< Connector ID status */\r
-#define USB_OTG_GOTGCTL_DBCT_Pos (17U) \r
-#define USB_OTG_GOTGCTL_DBCT_Msk (0x1UL << USB_OTG_GOTGCTL_DBCT_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_GOTGCTL_DBCT USB_OTG_GOTGCTL_DBCT_Msk /*!< Long/short debounce time */\r
-#define USB_OTG_GOTGCTL_ASVLD_Pos (18U) \r
-#define USB_OTG_GOTGCTL_ASVLD_Msk (0x1UL << USB_OTG_GOTGCTL_ASVLD_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_GOTGCTL_ASVLD USB_OTG_GOTGCTL_ASVLD_Msk /*!< A-session valid */\r
-#define USB_OTG_GOTGCTL_BSESVLD_Pos (19U) \r
-#define USB_OTG_GOTGCTL_BSESVLD_Msk (0x1UL << USB_OTG_GOTGCTL_BSESVLD_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_GOTGCTL_BSESVLD USB_OTG_GOTGCTL_BSESVLD_Msk /*!< B-session valid */\r
-#define USB_OTG_GOTGCTL_OTGVER_Pos (20U) \r
-#define USB_OTG_GOTGCTL_OTGVER_Msk (0x1UL << USB_OTG_GOTGCTL_OTGVER_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_GOTGCTL_OTGVER USB_OTG_GOTGCTL_OTGVER_Msk /*!< OTG version */\r
-\r
-/******************** Bit definition for USB_OTG_HCFG register ********************/\r
-#define USB_OTG_HCFG_FSLSPCS_Pos (0U) \r
-#define USB_OTG_HCFG_FSLSPCS_Msk (0x3UL << USB_OTG_HCFG_FSLSPCS_Pos) /*!< 0x00000003 */\r
-#define USB_OTG_HCFG_FSLSPCS USB_OTG_HCFG_FSLSPCS_Msk /*!< FS/LS PHY clock select */\r
-#define USB_OTG_HCFG_FSLSPCS_0 (0x1UL << USB_OTG_HCFG_FSLSPCS_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_HCFG_FSLSPCS_1 (0x2UL << USB_OTG_HCFG_FSLSPCS_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_HCFG_FSLSS_Pos (2U) \r
-#define USB_OTG_HCFG_FSLSS_Msk (0x1UL << USB_OTG_HCFG_FSLSS_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_HCFG_FSLSS USB_OTG_HCFG_FSLSS_Msk /*!< FS- and LS-only support */\r
-\r
-/******************** Bit definition for USB_OTG_DCFG register ********************/\r
-#define USB_OTG_DCFG_DSPD_Pos (0U) \r
-#define USB_OTG_DCFG_DSPD_Msk (0x3UL << USB_OTG_DCFG_DSPD_Pos) /*!< 0x00000003 */\r
-#define USB_OTG_DCFG_DSPD USB_OTG_DCFG_DSPD_Msk /*!< Device speed */\r
-#define USB_OTG_DCFG_DSPD_0 (0x1UL << USB_OTG_DCFG_DSPD_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DCFG_DSPD_1 (0x2UL << USB_OTG_DCFG_DSPD_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DCFG_NZLSOHSK_Pos (2U) \r
-#define USB_OTG_DCFG_NZLSOHSK_Msk (0x1UL << USB_OTG_DCFG_NZLSOHSK_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_DCFG_NZLSOHSK USB_OTG_DCFG_NZLSOHSK_Msk /*!< Nonzero-length status OUT handshake */\r
-\r
-#define USB_OTG_DCFG_DAD_Pos (4U) \r
-#define USB_OTG_DCFG_DAD_Msk (0x7FUL << USB_OTG_DCFG_DAD_Pos) /*!< 0x000007F0 */\r
-#define USB_OTG_DCFG_DAD USB_OTG_DCFG_DAD_Msk /*!< Device address */\r
-#define USB_OTG_DCFG_DAD_0 (0x01UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DCFG_DAD_1 (0x02UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DCFG_DAD_2 (0x04UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DCFG_DAD_3 (0x08UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_DCFG_DAD_4 (0x10UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DCFG_DAD_5 (0x20UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DCFG_DAD_6 (0x40UL << USB_OTG_DCFG_DAD_Pos) /*!< 0x00000400 */\r
-\r
-#define USB_OTG_DCFG_PFIVL_Pos (11U) \r
-#define USB_OTG_DCFG_PFIVL_Msk (0x3UL << USB_OTG_DCFG_PFIVL_Pos) /*!< 0x00001800 */\r
-#define USB_OTG_DCFG_PFIVL USB_OTG_DCFG_PFIVL_Msk /*!< Periodic (micro)frame interval */\r
-#define USB_OTG_DCFG_PFIVL_0 (0x1UL << USB_OTG_DCFG_PFIVL_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_DCFG_PFIVL_1 (0x2UL << USB_OTG_DCFG_PFIVL_Pos) /*!< 0x00001000 */\r
-\r
-#define USB_OTG_DCFG_PERSCHIVL_Pos (24U) \r
-#define USB_OTG_DCFG_PERSCHIVL_Msk (0x3UL << USB_OTG_DCFG_PERSCHIVL_Pos) /*!< 0x03000000 */\r
-#define USB_OTG_DCFG_PERSCHIVL USB_OTG_DCFG_PERSCHIVL_Msk /*!< Periodic scheduling interval */\r
-#define USB_OTG_DCFG_PERSCHIVL_0 (0x1UL << USB_OTG_DCFG_PERSCHIVL_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_DCFG_PERSCHIVL_1 (0x2UL << USB_OTG_DCFG_PERSCHIVL_Pos) /*!< 0x02000000 */\r
-\r
-/******************** Bit definition for USB_OTG_PCGCR register ********************/\r
-#define USB_OTG_PCGCR_STPPCLK_Pos (0U) \r
-#define USB_OTG_PCGCR_STPPCLK_Msk (0x1UL << USB_OTG_PCGCR_STPPCLK_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_PCGCR_STPPCLK USB_OTG_PCGCR_STPPCLK_Msk /*!< Stop PHY clock */\r
-#define USB_OTG_PCGCR_GATEHCLK_Pos (1U) \r
-#define USB_OTG_PCGCR_GATEHCLK_Msk (0x1UL << USB_OTG_PCGCR_GATEHCLK_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_PCGCR_GATEHCLK USB_OTG_PCGCR_GATEHCLK_Msk /*!< Gate HCLK */\r
-#define USB_OTG_PCGCR_PHYSUSP_Pos (4U) \r
-#define USB_OTG_PCGCR_PHYSUSP_Msk (0x1UL << USB_OTG_PCGCR_PHYSUSP_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_PCGCR_PHYSUSP USB_OTG_PCGCR_PHYSUSP_Msk /*!< PHY suspended */\r
-\r
-/******************** Bit definition for USB_OTG_GOTGINT register ********************/\r
-#define USB_OTG_GOTGINT_SEDET_Pos (2U) \r
-#define USB_OTG_GOTGINT_SEDET_Msk (0x1UL << USB_OTG_GOTGINT_SEDET_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_GOTGINT_SEDET USB_OTG_GOTGINT_SEDET_Msk /*!< Session end detected */\r
-#define USB_OTG_GOTGINT_SRSSCHG_Pos (8U) \r
-#define USB_OTG_GOTGINT_SRSSCHG_Msk (0x1UL << USB_OTG_GOTGINT_SRSSCHG_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_GOTGINT_SRSSCHG USB_OTG_GOTGINT_SRSSCHG_Msk /*!< Session request success status change */\r
-#define USB_OTG_GOTGINT_HNSSCHG_Pos (9U) \r
-#define USB_OTG_GOTGINT_HNSSCHG_Msk (0x1UL << USB_OTG_GOTGINT_HNSSCHG_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_GOTGINT_HNSSCHG USB_OTG_GOTGINT_HNSSCHG_Msk /*!< Host negotiation success status change */\r
-#define USB_OTG_GOTGINT_HNGDET_Pos (17U) \r
-#define USB_OTG_GOTGINT_HNGDET_Msk (0x1UL << USB_OTG_GOTGINT_HNGDET_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_GOTGINT_HNGDET USB_OTG_GOTGINT_HNGDET_Msk /*!< Host negotiation detected */\r
-#define USB_OTG_GOTGINT_ADTOCHG_Pos (18U) \r
-#define USB_OTG_GOTGINT_ADTOCHG_Msk (0x1UL << USB_OTG_GOTGINT_ADTOCHG_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_GOTGINT_ADTOCHG USB_OTG_GOTGINT_ADTOCHG_Msk /*!< A-device timeout change */\r
-#define USB_OTG_GOTGINT_DBCDNE_Pos (19U) \r
-#define USB_OTG_GOTGINT_DBCDNE_Msk (0x1UL << USB_OTG_GOTGINT_DBCDNE_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_GOTGINT_DBCDNE USB_OTG_GOTGINT_DBCDNE_Msk /*!< Debounce done */\r
-#define USB_OTG_GOTGINT_IDCHNG_Pos (20U) \r
-#define USB_OTG_GOTGINT_IDCHNG_Msk (0x1UL << USB_OTG_GOTGINT_IDCHNG_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_GOTGINT_IDCHNG USB_OTG_GOTGINT_IDCHNG_Msk /*!< Change in ID pin input value */\r
-\r
-/******************** Bit definition for USB_OTG_DCTL register ********************/\r
-#define USB_OTG_DCTL_RWUSIG_Pos (0U) \r
-#define USB_OTG_DCTL_RWUSIG_Msk (0x1UL << USB_OTG_DCTL_RWUSIG_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DCTL_RWUSIG USB_OTG_DCTL_RWUSIG_Msk /*!< Remote wakeup signaling */\r
-#define USB_OTG_DCTL_SDIS_Pos (1U) \r
-#define USB_OTG_DCTL_SDIS_Msk (0x1UL << USB_OTG_DCTL_SDIS_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DCTL_SDIS USB_OTG_DCTL_SDIS_Msk /*!< Soft disconnect */\r
-#define USB_OTG_DCTL_GINSTS_Pos (2U) \r
-#define USB_OTG_DCTL_GINSTS_Msk (0x1UL << USB_OTG_DCTL_GINSTS_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_DCTL_GINSTS USB_OTG_DCTL_GINSTS_Msk /*!< Global IN NAK status */\r
-#define USB_OTG_DCTL_GONSTS_Pos (3U) \r
-#define USB_OTG_DCTL_GONSTS_Msk (0x1UL << USB_OTG_DCTL_GONSTS_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DCTL_GONSTS USB_OTG_DCTL_GONSTS_Msk /*!< Global OUT NAK status */\r
-\r
-#define USB_OTG_DCTL_TCTL_Pos (4U) \r
-#define USB_OTG_DCTL_TCTL_Msk (0x7UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000070 */\r
-#define USB_OTG_DCTL_TCTL USB_OTG_DCTL_TCTL_Msk /*!< Test control */\r
-#define USB_OTG_DCTL_TCTL_0 (0x1UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DCTL_TCTL_1 (0x2UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DCTL_TCTL_2 (0x4UL << USB_OTG_DCTL_TCTL_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DCTL_SGINAK_Pos (7U) \r
-#define USB_OTG_DCTL_SGINAK_Msk (0x1UL << USB_OTG_DCTL_SGINAK_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_DCTL_SGINAK USB_OTG_DCTL_SGINAK_Msk /*!< Set global IN NAK */\r
-#define USB_OTG_DCTL_CGINAK_Pos (8U) \r
-#define USB_OTG_DCTL_CGINAK_Msk (0x1UL << USB_OTG_DCTL_CGINAK_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DCTL_CGINAK USB_OTG_DCTL_CGINAK_Msk /*!< Clear global IN NAK */\r
-#define USB_OTG_DCTL_SGONAK_Pos (9U) \r
-#define USB_OTG_DCTL_SGONAK_Msk (0x1UL << USB_OTG_DCTL_SGONAK_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DCTL_SGONAK USB_OTG_DCTL_SGONAK_Msk /*!< Set global OUT NAK */\r
-#define USB_OTG_DCTL_CGONAK_Pos (10U) \r
-#define USB_OTG_DCTL_CGONAK_Msk (0x1UL << USB_OTG_DCTL_CGONAK_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_DCTL_CGONAK USB_OTG_DCTL_CGONAK_Msk /*!< Clear global OUT NAK */\r
-#define USB_OTG_DCTL_POPRGDNE_Pos (11U) \r
-#define USB_OTG_DCTL_POPRGDNE_Msk (0x1UL << USB_OTG_DCTL_POPRGDNE_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_DCTL_POPRGDNE USB_OTG_DCTL_POPRGDNE_Msk /*!< Power-on programming done */\r
-\r
-/******************** Bit definition for USB_OTG_HFIR register ********************/\r
-#define USB_OTG_HFIR_FRIVL_Pos (0U) \r
-#define USB_OTG_HFIR_FRIVL_Msk (0xFFFFUL << USB_OTG_HFIR_FRIVL_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_HFIR_FRIVL USB_OTG_HFIR_FRIVL_Msk /*!< Frame interval */\r
-\r
-/******************** Bit definition for USB_OTG_HFNUM register ********************/\r
-#define USB_OTG_HFNUM_FRNUM_Pos (0U) \r
-#define USB_OTG_HFNUM_FRNUM_Msk (0xFFFFUL << USB_OTG_HFNUM_FRNUM_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_HFNUM_FRNUM USB_OTG_HFNUM_FRNUM_Msk /*!< Frame number */\r
-#define USB_OTG_HFNUM_FTREM_Pos (16U) \r
-#define USB_OTG_HFNUM_FTREM_Msk (0xFFFFUL << USB_OTG_HFNUM_FTREM_Pos) /*!< 0xFFFF0000 */\r
-#define USB_OTG_HFNUM_FTREM USB_OTG_HFNUM_FTREM_Msk /*!< Frame time remaining */\r
-\r
-/******************** Bit definition for USB_OTG_DSTS register ********************/\r
-#define USB_OTG_DSTS_SUSPSTS_Pos (0U) \r
-#define USB_OTG_DSTS_SUSPSTS_Msk (0x1UL << USB_OTG_DSTS_SUSPSTS_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DSTS_SUSPSTS USB_OTG_DSTS_SUSPSTS_Msk /*!< Suspend status */\r
-\r
-#define USB_OTG_DSTS_ENUMSPD_Pos (1U) \r
-#define USB_OTG_DSTS_ENUMSPD_Msk (0x3UL << USB_OTG_DSTS_ENUMSPD_Pos) /*!< 0x00000006 */\r
-#define USB_OTG_DSTS_ENUMSPD USB_OTG_DSTS_ENUMSPD_Msk /*!< Enumerated speed */\r
-#define USB_OTG_DSTS_ENUMSPD_0 (0x1UL << USB_OTG_DSTS_ENUMSPD_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DSTS_ENUMSPD_1 (0x2UL << USB_OTG_DSTS_ENUMSPD_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_DSTS_EERR_Pos (3U) \r
-#define USB_OTG_DSTS_EERR_Msk (0x1UL << USB_OTG_DSTS_EERR_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DSTS_EERR USB_OTG_DSTS_EERR_Msk /*!< Erratic error */\r
-#define USB_OTG_DSTS_FNSOF_Pos (8U) \r
-#define USB_OTG_DSTS_FNSOF_Msk (0x3FFFUL << USB_OTG_DSTS_FNSOF_Pos) /*!< 0x003FFF00 */\r
-#define USB_OTG_DSTS_FNSOF USB_OTG_DSTS_FNSOF_Msk /*!< Frame number of the received SOF */\r
-\r
-/******************** Bit definition for USB_OTG_GAHBCFG register ********************/\r
-#define USB_OTG_GAHBCFG_GINT_Pos (0U) \r
-#define USB_OTG_GAHBCFG_GINT_Msk (0x1UL << USB_OTG_GAHBCFG_GINT_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_GAHBCFG_GINT USB_OTG_GAHBCFG_GINT_Msk /*!< Global interrupt mask */\r
-#define USB_OTG_GAHBCFG_HBSTLEN_Pos (1U) \r
-#define USB_OTG_GAHBCFG_HBSTLEN_Msk (0xFUL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< 0x0000001E */\r
-#define USB_OTG_GAHBCFG_HBSTLEN USB_OTG_GAHBCFG_HBSTLEN_Msk /*!< Burst length/type */\r
-#define USB_OTG_GAHBCFG_HBSTLEN_0 (0x0UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< Single */\r
-#define USB_OTG_GAHBCFG_HBSTLEN_1 (0x1UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR */\r
-#define USB_OTG_GAHBCFG_HBSTLEN_2 (0x3UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR4 */\r
-#define USB_OTG_GAHBCFG_HBSTLEN_3 (0x5UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR8 */\r
-#define USB_OTG_GAHBCFG_HBSTLEN_4 (0x7UL << USB_OTG_GAHBCFG_HBSTLEN_Pos) /*!< INCR16 */\r
-#define USB_OTG_GAHBCFG_DMAEN_Pos (5U) \r
-#define USB_OTG_GAHBCFG_DMAEN_Msk (0x1UL << USB_OTG_GAHBCFG_DMAEN_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_GAHBCFG_DMAEN USB_OTG_GAHBCFG_DMAEN_Msk /*!< DMA enable */\r
-#define USB_OTG_GAHBCFG_TXFELVL_Pos (7U) \r
-#define USB_OTG_GAHBCFG_TXFELVL_Msk (0x1UL << USB_OTG_GAHBCFG_TXFELVL_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_GAHBCFG_TXFELVL USB_OTG_GAHBCFG_TXFELVL_Msk /*!< TxFIFO empty level */\r
-#define USB_OTG_GAHBCFG_PTXFELVL_Pos (8U) \r
-#define USB_OTG_GAHBCFG_PTXFELVL_Msk (0x1UL << USB_OTG_GAHBCFG_PTXFELVL_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_GAHBCFG_PTXFELVL USB_OTG_GAHBCFG_PTXFELVL_Msk /*!< Periodic TxFIFO empty level */\r
-\r
-/******************** Bit definition for USB_OTG_GUSBCFG register ********************/\r
-#define USB_OTG_GUSBCFG_TOCAL_Pos (0U) \r
-#define USB_OTG_GUSBCFG_TOCAL_Msk (0x7UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000007 */\r
-#define USB_OTG_GUSBCFG_TOCAL USB_OTG_GUSBCFG_TOCAL_Msk /*!< FS timeout calibration */\r
-#define USB_OTG_GUSBCFG_TOCAL_0 (0x1UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_GUSBCFG_TOCAL_1 (0x2UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_GUSBCFG_TOCAL_2 (0x4UL << USB_OTG_GUSBCFG_TOCAL_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_GUSBCFG_PHYSEL_Pos (6U) \r
-#define USB_OTG_GUSBCFG_PHYSEL_Msk (0x1UL << USB_OTG_GUSBCFG_PHYSEL_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_GUSBCFG_PHYSEL USB_OTG_GUSBCFG_PHYSEL_Msk /*!< USB 2.0 high-speed ULPI PHY or USB 1.1 full-speed serial transceiver select */\r
-#define USB_OTG_GUSBCFG_SRPCAP_Pos (8U) \r
-#define USB_OTG_GUSBCFG_SRPCAP_Msk (0x1UL << USB_OTG_GUSBCFG_SRPCAP_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_GUSBCFG_SRPCAP USB_OTG_GUSBCFG_SRPCAP_Msk /*!< SRP-capable */\r
-#define USB_OTG_GUSBCFG_HNPCAP_Pos (9U) \r
-#define USB_OTG_GUSBCFG_HNPCAP_Msk (0x1UL << USB_OTG_GUSBCFG_HNPCAP_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_GUSBCFG_HNPCAP USB_OTG_GUSBCFG_HNPCAP_Msk /*!< HNP-capable */\r
-#define USB_OTG_GUSBCFG_TRDT_Pos (10U) \r
-#define USB_OTG_GUSBCFG_TRDT_Msk (0xFUL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00003C00 */\r
-#define USB_OTG_GUSBCFG_TRDT USB_OTG_GUSBCFG_TRDT_Msk /*!< USB turnaround time */\r
-#define USB_OTG_GUSBCFG_TRDT_0 (0x1UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_GUSBCFG_TRDT_1 (0x2UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_GUSBCFG_TRDT_2 (0x4UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_GUSBCFG_TRDT_3 (0x8UL << USB_OTG_GUSBCFG_TRDT_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_GUSBCFG_PHYLPCS_Pos (15U) \r
-#define USB_OTG_GUSBCFG_PHYLPCS_Msk (0x1UL << USB_OTG_GUSBCFG_PHYLPCS_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_GUSBCFG_PHYLPCS USB_OTG_GUSBCFG_PHYLPCS_Msk /*!< PHY Low-power clock select */\r
-#define USB_OTG_GUSBCFG_ULPIFSLS_Pos (17U) \r
-#define USB_OTG_GUSBCFG_ULPIFSLS_Msk (0x1UL << USB_OTG_GUSBCFG_ULPIFSLS_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_GUSBCFG_ULPIFSLS USB_OTG_GUSBCFG_ULPIFSLS_Msk /*!< ULPI FS/LS select */\r
-#define USB_OTG_GUSBCFG_ULPIAR_Pos (18U) \r
-#define USB_OTG_GUSBCFG_ULPIAR_Msk (0x1UL << USB_OTG_GUSBCFG_ULPIAR_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_GUSBCFG_ULPIAR USB_OTG_GUSBCFG_ULPIAR_Msk /*!< ULPI Auto-resume */\r
-#define USB_OTG_GUSBCFG_ULPICSM_Pos (19U) \r
-#define USB_OTG_GUSBCFG_ULPICSM_Msk (0x1UL << USB_OTG_GUSBCFG_ULPICSM_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_GUSBCFG_ULPICSM USB_OTG_GUSBCFG_ULPICSM_Msk /*!< ULPI Clock SuspendM */\r
-#define USB_OTG_GUSBCFG_ULPIEVBUSD_Pos (20U) \r
-#define USB_OTG_GUSBCFG_ULPIEVBUSD_Msk (0x1UL << USB_OTG_GUSBCFG_ULPIEVBUSD_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_GUSBCFG_ULPIEVBUSD USB_OTG_GUSBCFG_ULPIEVBUSD_Msk /*!< ULPI External VBUS Drive */\r
-#define USB_OTG_GUSBCFG_ULPIEVBUSI_Pos (21U) \r
-#define USB_OTG_GUSBCFG_ULPIEVBUSI_Msk (0x1UL << USB_OTG_GUSBCFG_ULPIEVBUSI_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_GUSBCFG_ULPIEVBUSI USB_OTG_GUSBCFG_ULPIEVBUSI_Msk /*!< ULPI external VBUS indicator */\r
-#define USB_OTG_GUSBCFG_TSDPS_Pos (22U) \r
-#define USB_OTG_GUSBCFG_TSDPS_Msk (0x1UL << USB_OTG_GUSBCFG_TSDPS_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_GUSBCFG_TSDPS USB_OTG_GUSBCFG_TSDPS_Msk /*!< TermSel DLine pulsing selection */\r
-#define USB_OTG_GUSBCFG_PCCI_Pos (23U) \r
-#define USB_OTG_GUSBCFG_PCCI_Msk (0x1UL << USB_OTG_GUSBCFG_PCCI_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_GUSBCFG_PCCI USB_OTG_GUSBCFG_PCCI_Msk /*!< Indicator complement */\r
-#define USB_OTG_GUSBCFG_PTCI_Pos (24U) \r
-#define USB_OTG_GUSBCFG_PTCI_Msk (0x1UL << USB_OTG_GUSBCFG_PTCI_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_GUSBCFG_PTCI USB_OTG_GUSBCFG_PTCI_Msk /*!< Indicator pass through */\r
-#define USB_OTG_GUSBCFG_ULPIIPD_Pos (25U) \r
-#define USB_OTG_GUSBCFG_ULPIIPD_Msk (0x1UL << USB_OTG_GUSBCFG_ULPIIPD_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_GUSBCFG_ULPIIPD USB_OTG_GUSBCFG_ULPIIPD_Msk /*!< ULPI interface protect disable */\r
-#define USB_OTG_GUSBCFG_FHMOD_Pos (29U) \r
-#define USB_OTG_GUSBCFG_FHMOD_Msk (0x1UL << USB_OTG_GUSBCFG_FHMOD_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_GUSBCFG_FHMOD USB_OTG_GUSBCFG_FHMOD_Msk /*!< Forced host mode */\r
-#define USB_OTG_GUSBCFG_FDMOD_Pos (30U) \r
-#define USB_OTG_GUSBCFG_FDMOD_Msk (0x1UL << USB_OTG_GUSBCFG_FDMOD_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_GUSBCFG_FDMOD USB_OTG_GUSBCFG_FDMOD_Msk /*!< Forced peripheral mode */\r
-#define USB_OTG_GUSBCFG_CTXPKT_Pos (31U) \r
-#define USB_OTG_GUSBCFG_CTXPKT_Msk (0x1UL << USB_OTG_GUSBCFG_CTXPKT_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_GUSBCFG_CTXPKT USB_OTG_GUSBCFG_CTXPKT_Msk /*!< Corrupt Tx packet */\r
-\r
-/******************** Bit definition for USB_OTG_GRSTCTL register ********************/\r
-#define USB_OTG_GRSTCTL_CSRST_Pos (0U) \r
-#define USB_OTG_GRSTCTL_CSRST_Msk (0x1UL << USB_OTG_GRSTCTL_CSRST_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_GRSTCTL_CSRST USB_OTG_GRSTCTL_CSRST_Msk /*!< Core soft reset */\r
-#define USB_OTG_GRSTCTL_HSRST_Pos (1U) \r
-#define USB_OTG_GRSTCTL_HSRST_Msk (0x1UL << USB_OTG_GRSTCTL_HSRST_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_GRSTCTL_HSRST USB_OTG_GRSTCTL_HSRST_Msk /*!< HCLK soft reset */\r
-#define USB_OTG_GRSTCTL_FCRST_Pos (2U) \r
-#define USB_OTG_GRSTCTL_FCRST_Msk (0x1UL << USB_OTG_GRSTCTL_FCRST_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_GRSTCTL_FCRST USB_OTG_GRSTCTL_FCRST_Msk /*!< Host frame counter reset */\r
-#define USB_OTG_GRSTCTL_RXFFLSH_Pos (4U) \r
-#define USB_OTG_GRSTCTL_RXFFLSH_Msk (0x1UL << USB_OTG_GRSTCTL_RXFFLSH_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_GRSTCTL_RXFFLSH USB_OTG_GRSTCTL_RXFFLSH_Msk /*!< RxFIFO flush */\r
-#define USB_OTG_GRSTCTL_TXFFLSH_Pos (5U) \r
-#define USB_OTG_GRSTCTL_TXFFLSH_Msk (0x1UL << USB_OTG_GRSTCTL_TXFFLSH_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_GRSTCTL_TXFFLSH USB_OTG_GRSTCTL_TXFFLSH_Msk /*!< TxFIFO flush */\r
-#define USB_OTG_GRSTCTL_TXFNUM_Pos (6U) \r
-#define USB_OTG_GRSTCTL_TXFNUM_Msk (0x1FUL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x000007C0 */\r
-#define USB_OTG_GRSTCTL_TXFNUM USB_OTG_GRSTCTL_TXFNUM_Msk /*!< TxFIFO number */\r
-#define USB_OTG_GRSTCTL_TXFNUM_0 (0x01UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_GRSTCTL_TXFNUM_1 (0x02UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_GRSTCTL_TXFNUM_2 (0x04UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_GRSTCTL_TXFNUM_3 (0x08UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_GRSTCTL_TXFNUM_4 (0x10UL << USB_OTG_GRSTCTL_TXFNUM_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_GRSTCTL_DMAREQ_Pos (30U) \r
-#define USB_OTG_GRSTCTL_DMAREQ_Msk (0x1UL << USB_OTG_GRSTCTL_DMAREQ_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_GRSTCTL_DMAREQ USB_OTG_GRSTCTL_DMAREQ_Msk /*!< DMA request signal */\r
-#define USB_OTG_GRSTCTL_AHBIDL_Pos (31U) \r
-#define USB_OTG_GRSTCTL_AHBIDL_Msk (0x1UL << USB_OTG_GRSTCTL_AHBIDL_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_GRSTCTL_AHBIDL USB_OTG_GRSTCTL_AHBIDL_Msk /*!< AHB master idle */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPMSK register ********************/\r
-#define USB_OTG_DIEPMSK_XFRCM_Pos (0U) \r
-#define USB_OTG_DIEPMSK_XFRCM_Msk (0x1UL << USB_OTG_DIEPMSK_XFRCM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DIEPMSK_XFRCM USB_OTG_DIEPMSK_XFRCM_Msk /*!< Transfer completed interrupt mask */\r
-#define USB_OTG_DIEPMSK_EPDM_Pos (1U) \r
-#define USB_OTG_DIEPMSK_EPDM_Msk (0x1UL << USB_OTG_DIEPMSK_EPDM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DIEPMSK_EPDM USB_OTG_DIEPMSK_EPDM_Msk /*!< Endpoint disabled interrupt mask */\r
-#define USB_OTG_DIEPMSK_TOM_Pos (3U) \r
-#define USB_OTG_DIEPMSK_TOM_Msk (0x1UL << USB_OTG_DIEPMSK_TOM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DIEPMSK_TOM USB_OTG_DIEPMSK_TOM_Msk /*!< Timeout condition mask (nonisochronous endpoints) */\r
-#define USB_OTG_DIEPMSK_ITTXFEMSK_Pos (4U) \r
-#define USB_OTG_DIEPMSK_ITTXFEMSK_Msk (0x1UL << USB_OTG_DIEPMSK_ITTXFEMSK_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DIEPMSK_ITTXFEMSK USB_OTG_DIEPMSK_ITTXFEMSK_Msk /*!< IN token received when TxFIFO empty mask */\r
-#define USB_OTG_DIEPMSK_INEPNMM_Pos (5U) \r
-#define USB_OTG_DIEPMSK_INEPNMM_Msk (0x1UL << USB_OTG_DIEPMSK_INEPNMM_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DIEPMSK_INEPNMM USB_OTG_DIEPMSK_INEPNMM_Msk /*!< IN token received with EP mismatch mask */\r
-#define USB_OTG_DIEPMSK_INEPNEM_Pos (6U) \r
-#define USB_OTG_DIEPMSK_INEPNEM_Msk (0x1UL << USB_OTG_DIEPMSK_INEPNEM_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DIEPMSK_INEPNEM USB_OTG_DIEPMSK_INEPNEM_Msk /*!< IN endpoint NAK effective mask */\r
-#define USB_OTG_DIEPMSK_TXFURM_Pos (8U) \r
-#define USB_OTG_DIEPMSK_TXFURM_Msk (0x1UL << USB_OTG_DIEPMSK_TXFURM_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DIEPMSK_TXFURM USB_OTG_DIEPMSK_TXFURM_Msk /*!< FIFO underrun mask */\r
-#define USB_OTG_DIEPMSK_BIM_Pos (9U) \r
-#define USB_OTG_DIEPMSK_BIM_Msk (0x1UL << USB_OTG_DIEPMSK_BIM_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DIEPMSK_BIM USB_OTG_DIEPMSK_BIM_Msk /*!< BNA interrupt mask */\r
-\r
-/******************** Bit definition for USB_OTG_HPTXSTS register ********************/\r
-#define USB_OTG_HPTXSTS_PTXFSAVL_Pos (0U) \r
-#define USB_OTG_HPTXSTS_PTXFSAVL_Msk (0xFFFFUL << USB_OTG_HPTXSTS_PTXFSAVL_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_HPTXSTS_PTXFSAVL USB_OTG_HPTXSTS_PTXFSAVL_Msk /*!< Periodic transmit data FIFO space available */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_Pos (16U) \r
-#define USB_OTG_HPTXSTS_PTXQSAV_Msk (0xFFUL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00FF0000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV USB_OTG_HPTXSTS_PTXQSAV_Msk /*!< Periodic transmit request queue space available */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_0 (0x01UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_1 (0x02UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_2 (0x04UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_3 (0x08UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_4 (0x10UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_5 (0x20UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_6 (0x40UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_HPTXSTS_PTXQSAV_7 (0x80UL << USB_OTG_HPTXSTS_PTXQSAV_Pos) /*!< 0x00800000 */\r
-\r
-#define USB_OTG_HPTXSTS_PTXQTOP_Pos (24U) \r
-#define USB_OTG_HPTXSTS_PTXQTOP_Msk (0xFFUL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0xFF000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP USB_OTG_HPTXSTS_PTXQTOP_Msk /*!< Top of the periodic transmit request queue */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_0 (0x01UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_1 (0x02UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_2 (0x04UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x04000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_3 (0x08UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_4 (0x10UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_5 (0x20UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_6 (0x40UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_HPTXSTS_PTXQTOP_7 (0x80UL << USB_OTG_HPTXSTS_PTXQTOP_Pos) /*!< 0x80000000 */\r
-\r
-/******************** Bit definition for USB_OTG_HAINT register ********************/\r
-#define USB_OTG_HAINT_HAINT_Pos (0U) \r
-#define USB_OTG_HAINT_HAINT_Msk (0xFFFFUL << USB_OTG_HAINT_HAINT_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_HAINT_HAINT USB_OTG_HAINT_HAINT_Msk /*!< Channel interrupts */\r
-\r
-/******************** Bit definition for USB_OTG_DOEPMSK register ********************/\r
-#define USB_OTG_DOEPMSK_XFRCM_Pos (0U) \r
-#define USB_OTG_DOEPMSK_XFRCM_Msk (0x1UL << USB_OTG_DOEPMSK_XFRCM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DOEPMSK_XFRCM USB_OTG_DOEPMSK_XFRCM_Msk /*!< Transfer completed interrupt mask */\r
-#define USB_OTG_DOEPMSK_EPDM_Pos (1U) \r
-#define USB_OTG_DOEPMSK_EPDM_Msk (0x1UL << USB_OTG_DOEPMSK_EPDM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DOEPMSK_EPDM USB_OTG_DOEPMSK_EPDM_Msk /*!< Endpoint disabled interrupt mask */\r
-#define USB_OTG_DOEPMSK_AHBERRM_Pos (2U)\r
-#define USB_OTG_DOEPMSK_AHBERRM_Msk (0x1UL << USB_OTG_DOEPMSK_AHBERRM_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_DOEPMSK_AHBERRM USB_OTG_DOEPMSK_AHBERRM_Msk /*!< OUT transaction AHB Error interrupt mask */\r
-#define USB_OTG_DOEPMSK_STUPM_Pos (3U) \r
-#define USB_OTG_DOEPMSK_STUPM_Msk (0x1UL << USB_OTG_DOEPMSK_STUPM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DOEPMSK_STUPM USB_OTG_DOEPMSK_STUPM_Msk /*!< SETUP phase done mask */\r
-#define USB_OTG_DOEPMSK_OTEPDM_Pos (4U) \r
-#define USB_OTG_DOEPMSK_OTEPDM_Msk (0x1UL << USB_OTG_DOEPMSK_OTEPDM_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DOEPMSK_OTEPDM USB_OTG_DOEPMSK_OTEPDM_Msk /*!< OUT token received when endpoint disabled mask */\r
-#define USB_OTG_DOEPMSK_OTEPSPRM_Pos (5U) \r
-#define USB_OTG_DOEPMSK_OTEPSPRM_Msk (0x1UL << USB_OTG_DOEPMSK_OTEPSPRM_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DOEPMSK_OTEPSPRM USB_OTG_DOEPMSK_OTEPSPRM_Msk /*!< Status Phase Received mask */\r
-#define USB_OTG_DOEPMSK_B2BSTUP_Pos (6U) \r
-#define USB_OTG_DOEPMSK_B2BSTUP_Msk (0x1UL << USB_OTG_DOEPMSK_B2BSTUP_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DOEPMSK_B2BSTUP USB_OTG_DOEPMSK_B2BSTUP_Msk /*!< Back-to-back SETUP packets received mask */\r
-#define USB_OTG_DOEPMSK_OPEM_Pos (8U) \r
-#define USB_OTG_DOEPMSK_OPEM_Msk (0x1UL << USB_OTG_DOEPMSK_OPEM_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DOEPMSK_OPEM USB_OTG_DOEPMSK_OPEM_Msk /*!< OUT packet error mask */\r
-#define USB_OTG_DOEPMSK_BOIM_Pos (9U) \r
-#define USB_OTG_DOEPMSK_BOIM_Msk (0x1UL << USB_OTG_DOEPMSK_BOIM_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DOEPMSK_BOIM USB_OTG_DOEPMSK_BOIM_Msk /*!< BNA interrupt mask */\r
-#define USB_OTG_DOEPMSK_BERRM_Pos (12U)\r
-#define USB_OTG_DOEPMSK_BERRM_Msk (0x1UL << USB_OTG_DOEPMSK_BERRM_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_DOEPMSK_BERRM USB_OTG_DOEPMSK_BERRM_Msk /*!< Babble error interrupt mask */\r
-#define USB_OTG_DOEPMSK_NAKM_Pos (13U)\r
-#define USB_OTG_DOEPMSK_NAKM_Msk (0x1UL << USB_OTG_DOEPMSK_NAKM_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_DOEPMSK_NAKM USB_OTG_DOEPMSK_NAKM_Msk /*!< OUT Packet NAK interrupt mask */\r
-#define USB_OTG_DOEPMSK_NYETM_Pos (14U)\r
-#define USB_OTG_DOEPMSK_NYETM_Msk (0x1UL << USB_OTG_DOEPMSK_NYETM_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_DOEPMSK_NYETM USB_OTG_DOEPMSK_NYETM_Msk /*!< NYET interrupt mask */\r
-\r
-/******************** Bit definition for USB_OTG_GINTSTS register ********************/\r
-#define USB_OTG_GINTSTS_CMOD_Pos (0U) \r
-#define USB_OTG_GINTSTS_CMOD_Msk (0x1UL << USB_OTG_GINTSTS_CMOD_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_GINTSTS_CMOD USB_OTG_GINTSTS_CMOD_Msk /*!< Current mode of operation */\r
-#define USB_OTG_GINTSTS_MMIS_Pos (1U) \r
-#define USB_OTG_GINTSTS_MMIS_Msk (0x1UL << USB_OTG_GINTSTS_MMIS_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_GINTSTS_MMIS USB_OTG_GINTSTS_MMIS_Msk /*!< Mode mismatch interrupt */\r
-#define USB_OTG_GINTSTS_OTGINT_Pos (2U) \r
-#define USB_OTG_GINTSTS_OTGINT_Msk (0x1UL << USB_OTG_GINTSTS_OTGINT_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_GINTSTS_OTGINT USB_OTG_GINTSTS_OTGINT_Msk /*!< OTG interrupt */\r
-#define USB_OTG_GINTSTS_SOF_Pos (3U) \r
-#define USB_OTG_GINTSTS_SOF_Msk (0x1UL << USB_OTG_GINTSTS_SOF_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_GINTSTS_SOF USB_OTG_GINTSTS_SOF_Msk /*!< Start of frame */\r
-#define USB_OTG_GINTSTS_RXFLVL_Pos (4U) \r
-#define USB_OTG_GINTSTS_RXFLVL_Msk (0x1UL << USB_OTG_GINTSTS_RXFLVL_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_GINTSTS_RXFLVL USB_OTG_GINTSTS_RXFLVL_Msk /*!< RxFIFO nonempty */\r
-#define USB_OTG_GINTSTS_NPTXFE_Pos (5U) \r
-#define USB_OTG_GINTSTS_NPTXFE_Msk (0x1UL << USB_OTG_GINTSTS_NPTXFE_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_GINTSTS_NPTXFE USB_OTG_GINTSTS_NPTXFE_Msk /*!< Nonperiodic TxFIFO empty */\r
-#define USB_OTG_GINTSTS_GINAKEFF_Pos (6U) \r
-#define USB_OTG_GINTSTS_GINAKEFF_Msk (0x1UL << USB_OTG_GINTSTS_GINAKEFF_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_GINTSTS_GINAKEFF USB_OTG_GINTSTS_GINAKEFF_Msk /*!< Global IN nonperiodic NAK effective */\r
-#define USB_OTG_GINTSTS_BOUTNAKEFF_Pos (7U) \r
-#define USB_OTG_GINTSTS_BOUTNAKEFF_Msk (0x1UL << USB_OTG_GINTSTS_BOUTNAKEFF_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_GINTSTS_BOUTNAKEFF USB_OTG_GINTSTS_BOUTNAKEFF_Msk /*!< Global OUT NAK effective */\r
-#define USB_OTG_GINTSTS_ESUSP_Pos (10U) \r
-#define USB_OTG_GINTSTS_ESUSP_Msk (0x1UL << USB_OTG_GINTSTS_ESUSP_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_GINTSTS_ESUSP USB_OTG_GINTSTS_ESUSP_Msk /*!< Early suspend */\r
-#define USB_OTG_GINTSTS_USBSUSP_Pos (11U) \r
-#define USB_OTG_GINTSTS_USBSUSP_Msk (0x1UL << USB_OTG_GINTSTS_USBSUSP_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_GINTSTS_USBSUSP USB_OTG_GINTSTS_USBSUSP_Msk /*!< USB suspend */\r
-#define USB_OTG_GINTSTS_USBRST_Pos (12U) \r
-#define USB_OTG_GINTSTS_USBRST_Msk (0x1UL << USB_OTG_GINTSTS_USBRST_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_GINTSTS_USBRST USB_OTG_GINTSTS_USBRST_Msk /*!< USB reset */\r
-#define USB_OTG_GINTSTS_ENUMDNE_Pos (13U) \r
-#define USB_OTG_GINTSTS_ENUMDNE_Msk (0x1UL << USB_OTG_GINTSTS_ENUMDNE_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_GINTSTS_ENUMDNE USB_OTG_GINTSTS_ENUMDNE_Msk /*!< Enumeration done */\r
-#define USB_OTG_GINTSTS_ISOODRP_Pos (14U) \r
-#define USB_OTG_GINTSTS_ISOODRP_Msk (0x1UL << USB_OTG_GINTSTS_ISOODRP_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_GINTSTS_ISOODRP USB_OTG_GINTSTS_ISOODRP_Msk /*!< Isochronous OUT packet dropped interrupt */\r
-#define USB_OTG_GINTSTS_EOPF_Pos (15U) \r
-#define USB_OTG_GINTSTS_EOPF_Msk (0x1UL << USB_OTG_GINTSTS_EOPF_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_GINTSTS_EOPF USB_OTG_GINTSTS_EOPF_Msk /*!< End of periodic frame interrupt */\r
-#define USB_OTG_GINTSTS_IEPINT_Pos (18U) \r
-#define USB_OTG_GINTSTS_IEPINT_Msk (0x1UL << USB_OTG_GINTSTS_IEPINT_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_GINTSTS_IEPINT USB_OTG_GINTSTS_IEPINT_Msk /*!< IN endpoint interrupt */\r
-#define USB_OTG_GINTSTS_OEPINT_Pos (19U) \r
-#define USB_OTG_GINTSTS_OEPINT_Msk (0x1UL << USB_OTG_GINTSTS_OEPINT_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_GINTSTS_OEPINT USB_OTG_GINTSTS_OEPINT_Msk /*!< OUT endpoint interrupt */\r
-#define USB_OTG_GINTSTS_IISOIXFR_Pos (20U) \r
-#define USB_OTG_GINTSTS_IISOIXFR_Msk (0x1UL << USB_OTG_GINTSTS_IISOIXFR_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_GINTSTS_IISOIXFR USB_OTG_GINTSTS_IISOIXFR_Msk /*!< Incomplete isochronous IN transfer */\r
-#define USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Pos (21U) \r
-#define USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Msk (0x1UL << USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_GINTSTS_PXFR_INCOMPISOOUT USB_OTG_GINTSTS_PXFR_INCOMPISOOUT_Msk /*!< Incomplete periodic transfer */\r
-#define USB_OTG_GINTSTS_DATAFSUSP_Pos (22U) \r
-#define USB_OTG_GINTSTS_DATAFSUSP_Msk (0x1UL << USB_OTG_GINTSTS_DATAFSUSP_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_GINTSTS_DATAFSUSP USB_OTG_GINTSTS_DATAFSUSP_Msk /*!< Data fetch suspended */\r
-#define USB_OTG_GINTSTS_RSTDET_Pos (23U) \r
-#define USB_OTG_GINTSTS_RSTDET_Msk (0x1UL << USB_OTG_GINTSTS_RSTDET_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_GINTSTS_RSTDET USB_OTG_GINTSTS_RSTDET_Msk /*!< Reset detected interrupt */\r
-#define USB_OTG_GINTSTS_HPRTINT_Pos (24U) \r
-#define USB_OTG_GINTSTS_HPRTINT_Msk (0x1UL << USB_OTG_GINTSTS_HPRTINT_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_GINTSTS_HPRTINT USB_OTG_GINTSTS_HPRTINT_Msk /*!< Host port interrupt */\r
-#define USB_OTG_GINTSTS_HCINT_Pos (25U) \r
-#define USB_OTG_GINTSTS_HCINT_Msk (0x1UL << USB_OTG_GINTSTS_HCINT_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_GINTSTS_HCINT USB_OTG_GINTSTS_HCINT_Msk /*!< Host channels interrupt */\r
-#define USB_OTG_GINTSTS_PTXFE_Pos (26U) \r
-#define USB_OTG_GINTSTS_PTXFE_Msk (0x1UL << USB_OTG_GINTSTS_PTXFE_Pos) /*!< 0x04000000 */\r
-#define USB_OTG_GINTSTS_PTXFE USB_OTG_GINTSTS_PTXFE_Msk /*!< Periodic TxFIFO empty */\r
-#define USB_OTG_GINTSTS_LPMINT_Pos (27U) \r
-#define USB_OTG_GINTSTS_LPMINT_Msk (0x1UL << USB_OTG_GINTSTS_LPMINT_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_GINTSTS_LPMINT USB_OTG_GINTSTS_LPMINT_Msk /*!< LPM interrupt */\r
-#define USB_OTG_GINTSTS_CIDSCHG_Pos (28U) \r
-#define USB_OTG_GINTSTS_CIDSCHG_Msk (0x1UL << USB_OTG_GINTSTS_CIDSCHG_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_GINTSTS_CIDSCHG USB_OTG_GINTSTS_CIDSCHG_Msk /*!< Connector ID status change */\r
-#define USB_OTG_GINTSTS_DISCINT_Pos (29U) \r
-#define USB_OTG_GINTSTS_DISCINT_Msk (0x1UL << USB_OTG_GINTSTS_DISCINT_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_GINTSTS_DISCINT USB_OTG_GINTSTS_DISCINT_Msk /*!< Disconnect detected interrupt */\r
-#define USB_OTG_GINTSTS_SRQINT_Pos (30U) \r
-#define USB_OTG_GINTSTS_SRQINT_Msk (0x1UL << USB_OTG_GINTSTS_SRQINT_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_GINTSTS_SRQINT USB_OTG_GINTSTS_SRQINT_Msk /*!< Session request/new session detected interrupt */\r
-#define USB_OTG_GINTSTS_WKUINT_Pos (31U) \r
-#define USB_OTG_GINTSTS_WKUINT_Msk (0x1UL << USB_OTG_GINTSTS_WKUINT_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_GINTSTS_WKUINT USB_OTG_GINTSTS_WKUINT_Msk /*!< Resume/remote wakeup detected interrupt */\r
-\r
-/******************** Bit definition for USB_OTG_GINTMSK register ********************/\r
-#define USB_OTG_GINTMSK_MMISM_Pos (1U) \r
-#define USB_OTG_GINTMSK_MMISM_Msk (0x1UL << USB_OTG_GINTMSK_MMISM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_GINTMSK_MMISM USB_OTG_GINTMSK_MMISM_Msk /*!< Mode mismatch interrupt mask */\r
-#define USB_OTG_GINTMSK_OTGINT_Pos (2U) \r
-#define USB_OTG_GINTMSK_OTGINT_Msk (0x1UL << USB_OTG_GINTMSK_OTGINT_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_GINTMSK_OTGINT USB_OTG_GINTMSK_OTGINT_Msk /*!< OTG interrupt mask */\r
-#define USB_OTG_GINTMSK_SOFM_Pos (3U) \r
-#define USB_OTG_GINTMSK_SOFM_Msk (0x1UL << USB_OTG_GINTMSK_SOFM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_GINTMSK_SOFM USB_OTG_GINTMSK_SOFM_Msk /*!< Start of frame mask */\r
-#define USB_OTG_GINTMSK_RXFLVLM_Pos (4U) \r
-#define USB_OTG_GINTMSK_RXFLVLM_Msk (0x1UL << USB_OTG_GINTMSK_RXFLVLM_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_GINTMSK_RXFLVLM USB_OTG_GINTMSK_RXFLVLM_Msk /*!< Receive FIFO nonempty mask */\r
-#define USB_OTG_GINTMSK_NPTXFEM_Pos (5U) \r
-#define USB_OTG_GINTMSK_NPTXFEM_Msk (0x1UL << USB_OTG_GINTMSK_NPTXFEM_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_GINTMSK_NPTXFEM USB_OTG_GINTMSK_NPTXFEM_Msk /*!< Nonperiodic TxFIFO empty mask */\r
-#define USB_OTG_GINTMSK_GINAKEFFM_Pos (6U) \r
-#define USB_OTG_GINTMSK_GINAKEFFM_Msk (0x1UL << USB_OTG_GINTMSK_GINAKEFFM_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_GINTMSK_GINAKEFFM USB_OTG_GINTMSK_GINAKEFFM_Msk /*!< Global nonperiodic IN NAK effective mask */\r
-#define USB_OTG_GINTMSK_GONAKEFFM_Pos (7U) \r
-#define USB_OTG_GINTMSK_GONAKEFFM_Msk (0x1UL << USB_OTG_GINTMSK_GONAKEFFM_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_GINTMSK_GONAKEFFM USB_OTG_GINTMSK_GONAKEFFM_Msk /*!< Global OUT NAK effective mask */\r
-#define USB_OTG_GINTMSK_ESUSPM_Pos (10U) \r
-#define USB_OTG_GINTMSK_ESUSPM_Msk (0x1UL << USB_OTG_GINTMSK_ESUSPM_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_GINTMSK_ESUSPM USB_OTG_GINTMSK_ESUSPM_Msk /*!< Early suspend mask */\r
-#define USB_OTG_GINTMSK_USBSUSPM_Pos (11U) \r
-#define USB_OTG_GINTMSK_USBSUSPM_Msk (0x1UL << USB_OTG_GINTMSK_USBSUSPM_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_GINTMSK_USBSUSPM USB_OTG_GINTMSK_USBSUSPM_Msk /*!< USB suspend mask */\r
-#define USB_OTG_GINTMSK_USBRST_Pos (12U) \r
-#define USB_OTG_GINTMSK_USBRST_Msk (0x1UL << USB_OTG_GINTMSK_USBRST_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_GINTMSK_USBRST USB_OTG_GINTMSK_USBRST_Msk /*!< USB reset mask */\r
-#define USB_OTG_GINTMSK_ENUMDNEM_Pos (13U) \r
-#define USB_OTG_GINTMSK_ENUMDNEM_Msk (0x1UL << USB_OTG_GINTMSK_ENUMDNEM_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_GINTMSK_ENUMDNEM USB_OTG_GINTMSK_ENUMDNEM_Msk /*!< Enumeration done mask */\r
-#define USB_OTG_GINTMSK_ISOODRPM_Pos (14U) \r
-#define USB_OTG_GINTMSK_ISOODRPM_Msk (0x1UL << USB_OTG_GINTMSK_ISOODRPM_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_GINTMSK_ISOODRPM USB_OTG_GINTMSK_ISOODRPM_Msk /*!< Isochronous OUT packet dropped interrupt mask */\r
-#define USB_OTG_GINTMSK_EOPFM_Pos (15U) \r
-#define USB_OTG_GINTMSK_EOPFM_Msk (0x1UL << USB_OTG_GINTMSK_EOPFM_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_GINTMSK_EOPFM USB_OTG_GINTMSK_EOPFM_Msk /*!< End of periodic frame interrupt mask */\r
-#define USB_OTG_GINTMSK_EPMISM_Pos (17U) \r
-#define USB_OTG_GINTMSK_EPMISM_Msk (0x1UL << USB_OTG_GINTMSK_EPMISM_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_GINTMSK_EPMISM USB_OTG_GINTMSK_EPMISM_Msk /*!< Endpoint mismatch interrupt mask */\r
-#define USB_OTG_GINTMSK_IEPINT_Pos (18U) \r
-#define USB_OTG_GINTMSK_IEPINT_Msk (0x1UL << USB_OTG_GINTMSK_IEPINT_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_GINTMSK_IEPINT USB_OTG_GINTMSK_IEPINT_Msk /*!< IN endpoints interrupt mask */\r
-#define USB_OTG_GINTMSK_OEPINT_Pos (19U) \r
-#define USB_OTG_GINTMSK_OEPINT_Msk (0x1UL << USB_OTG_GINTMSK_OEPINT_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_GINTMSK_OEPINT USB_OTG_GINTMSK_OEPINT_Msk /*!< OUT endpoints interrupt mask */\r
-#define USB_OTG_GINTMSK_IISOIXFRM_Pos (20U) \r
-#define USB_OTG_GINTMSK_IISOIXFRM_Msk (0x1UL << USB_OTG_GINTMSK_IISOIXFRM_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_GINTMSK_IISOIXFRM USB_OTG_GINTMSK_IISOIXFRM_Msk /*!< Incomplete isochronous IN transfer mask */\r
-#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Pos (21U) \r
-#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Msk (0x1UL << USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM USB_OTG_GINTMSK_PXFRM_IISOOXFRM_Msk /*!< Incomplete periodic transfer mask */\r
-#define USB_OTG_GINTMSK_FSUSPM_Pos (22U) \r
-#define USB_OTG_GINTMSK_FSUSPM_Msk (0x1UL << USB_OTG_GINTMSK_FSUSPM_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_GINTMSK_FSUSPM USB_OTG_GINTMSK_FSUSPM_Msk /*!< Data fetch suspended mask */\r
-#define USB_OTG_GINTMSK_RSTDEM_Pos (23U) \r
-#define USB_OTG_GINTMSK_RSTDEM_Msk (0x1UL << USB_OTG_GINTMSK_RSTDEM_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_GINTMSK_RSTDEM USB_OTG_GINTMSK_RSTDEM_Msk /*!< Reset detected interrupt mask */\r
-#define USB_OTG_GINTMSK_PRTIM_Pos (24U) \r
-#define USB_OTG_GINTMSK_PRTIM_Msk (0x1UL << USB_OTG_GINTMSK_PRTIM_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_GINTMSK_PRTIM USB_OTG_GINTMSK_PRTIM_Msk /*!< Host port interrupt mask */\r
-#define USB_OTG_GINTMSK_HCIM_Pos (25U) \r
-#define USB_OTG_GINTMSK_HCIM_Msk (0x1UL << USB_OTG_GINTMSK_HCIM_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_GINTMSK_HCIM USB_OTG_GINTMSK_HCIM_Msk /*!< Host channels interrupt mask */\r
-#define USB_OTG_GINTMSK_PTXFEM_Pos (26U) \r
-#define USB_OTG_GINTMSK_PTXFEM_Msk (0x1UL << USB_OTG_GINTMSK_PTXFEM_Pos) /*!< 0x04000000 */\r
-#define USB_OTG_GINTMSK_PTXFEM USB_OTG_GINTMSK_PTXFEM_Msk /*!< Periodic TxFIFO empty mask */\r
-#define USB_OTG_GINTMSK_LPMINTM_Pos (27U) \r
-#define USB_OTG_GINTMSK_LPMINTM_Msk (0x1UL << USB_OTG_GINTMSK_LPMINTM_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_GINTMSK_LPMINTM USB_OTG_GINTMSK_LPMINTM_Msk /*!< LPM interrupt Mask */\r
-#define USB_OTG_GINTMSK_CIDSCHGM_Pos (28U) \r
-#define USB_OTG_GINTMSK_CIDSCHGM_Msk (0x1UL << USB_OTG_GINTMSK_CIDSCHGM_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_GINTMSK_CIDSCHGM USB_OTG_GINTMSK_CIDSCHGM_Msk /*!< Connector ID status change mask */\r
-#define USB_OTG_GINTMSK_DISCINT_Pos (29U) \r
-#define USB_OTG_GINTMSK_DISCINT_Msk (0x1UL << USB_OTG_GINTMSK_DISCINT_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_GINTMSK_DISCINT USB_OTG_GINTMSK_DISCINT_Msk /*!< Disconnect detected interrupt mask */\r
-#define USB_OTG_GINTMSK_SRQIM_Pos (30U) \r
-#define USB_OTG_GINTMSK_SRQIM_Msk (0x1UL << USB_OTG_GINTMSK_SRQIM_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_GINTMSK_SRQIM USB_OTG_GINTMSK_SRQIM_Msk /*!< Session request/new session detected interrupt mask */\r
-#define USB_OTG_GINTMSK_WUIM_Pos (31U) \r
-#define USB_OTG_GINTMSK_WUIM_Msk (0x1UL << USB_OTG_GINTMSK_WUIM_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_GINTMSK_WUIM USB_OTG_GINTMSK_WUIM_Msk /*!< Resume/remote wakeup detected interrupt mask */\r
-\r
-/******************** Bit definition for USB_OTG_DAINT register ********************/\r
-#define USB_OTG_DAINT_IEPINT_Pos (0U) \r
-#define USB_OTG_DAINT_IEPINT_Msk (0xFFFFUL << USB_OTG_DAINT_IEPINT_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_DAINT_IEPINT USB_OTG_DAINT_IEPINT_Msk /*!< IN endpoint interrupt bits */\r
-#define USB_OTG_DAINT_OEPINT_Pos (16U) \r
-#define USB_OTG_DAINT_OEPINT_Msk (0xFFFFUL << USB_OTG_DAINT_OEPINT_Pos) /*!< 0xFFFF0000 */\r
-#define USB_OTG_DAINT_OEPINT USB_OTG_DAINT_OEPINT_Msk /*!< OUT endpoint interrupt bits */\r
-\r
-/******************** Bit definition for USB_OTG_HAINTMSK register ********************/\r
-#define USB_OTG_HAINTMSK_HAINTM_Pos (0U) \r
-#define USB_OTG_HAINTMSK_HAINTM_Msk (0xFFFFUL << USB_OTG_HAINTMSK_HAINTM_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_HAINTMSK_HAINTM USB_OTG_HAINTMSK_HAINTM_Msk /*!< Channel interrupt mask */\r
-\r
-/******************** Bit definition for USB_OTG_GRXSTSP register ********************/\r
-#define USB_OTG_GRXSTSP_EPNUM_Pos (0U) \r
-#define USB_OTG_GRXSTSP_EPNUM_Msk (0xFUL << USB_OTG_GRXSTSP_EPNUM_Pos) /*!< 0x0000000F */\r
-#define USB_OTG_GRXSTSP_EPNUM USB_OTG_GRXSTSP_EPNUM_Msk /*!< IN EP interrupt mask bits */\r
-#define USB_OTG_GRXSTSP_BCNT_Pos (4U) \r
-#define USB_OTG_GRXSTSP_BCNT_Msk (0x7FFUL << USB_OTG_GRXSTSP_BCNT_Pos) /*!< 0x00007FF0 */\r
-#define USB_OTG_GRXSTSP_BCNT USB_OTG_GRXSTSP_BCNT_Msk /*!< OUT EP interrupt mask bits */\r
-#define USB_OTG_GRXSTSP_DPID_Pos (15U) \r
-#define USB_OTG_GRXSTSP_DPID_Msk (0x3UL << USB_OTG_GRXSTSP_DPID_Pos) /*!< 0x00018000 */\r
-#define USB_OTG_GRXSTSP_DPID USB_OTG_GRXSTSP_DPID_Msk /*!< OUT EP interrupt mask bits */\r
-#define USB_OTG_GRXSTSP_PKTSTS_Pos (17U) \r
-#define USB_OTG_GRXSTSP_PKTSTS_Msk (0xFUL << USB_OTG_GRXSTSP_PKTSTS_Pos) /*!< 0x001E0000 */\r
-#define USB_OTG_GRXSTSP_PKTSTS USB_OTG_GRXSTSP_PKTSTS_Msk /*!< OUT EP interrupt mask bits */\r
-\r
-/******************** Bit definition for USB_OTG_DAINTMSK register ********************/\r
-#define USB_OTG_DAINTMSK_IEPM_Pos (0U) \r
-#define USB_OTG_DAINTMSK_IEPM_Msk (0xFFFFUL << USB_OTG_DAINTMSK_IEPM_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_DAINTMSK_IEPM USB_OTG_DAINTMSK_IEPM_Msk /*!< IN EP interrupt mask bits */\r
-#define USB_OTG_DAINTMSK_OEPM_Pos (16U) \r
-#define USB_OTG_DAINTMSK_OEPM_Msk (0xFFFFUL << USB_OTG_DAINTMSK_OEPM_Pos) /*!< 0xFFFF0000 */\r
-#define USB_OTG_DAINTMSK_OEPM USB_OTG_DAINTMSK_OEPM_Msk /*!< OUT EP interrupt mask bits */\r
-\r
-/******************** Bit definition for OTG register ********************/\r
-\r
-#define USB_OTG_CHNUM_Pos (0U) \r
-#define USB_OTG_CHNUM_Msk (0xFUL << USB_OTG_CHNUM_Pos) /*!< 0x0000000F */\r
-#define USB_OTG_CHNUM USB_OTG_CHNUM_Msk /*!< Channel number */\r
-#define USB_OTG_CHNUM_0 (0x1UL << USB_OTG_CHNUM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_CHNUM_1 (0x2UL << USB_OTG_CHNUM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_CHNUM_2 (0x4UL << USB_OTG_CHNUM_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_CHNUM_3 (0x8UL << USB_OTG_CHNUM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_BCNT_Pos (4U) \r
-#define USB_OTG_BCNT_Msk (0x7FFUL << USB_OTG_BCNT_Pos) /*!< 0x00007FF0 */\r
-#define USB_OTG_BCNT USB_OTG_BCNT_Msk /*!< Byte count */\r
-\r
-#define USB_OTG_DPID_Pos (15U) \r
-#define USB_OTG_DPID_Msk (0x3UL << USB_OTG_DPID_Pos) /*!< 0x00018000 */\r
-#define USB_OTG_DPID USB_OTG_DPID_Msk /*!< Data PID */\r
-#define USB_OTG_DPID_0 (0x1UL << USB_OTG_DPID_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_DPID_1 (0x2UL << USB_OTG_DPID_Pos) /*!< 0x00010000 */\r
-\r
-#define USB_OTG_PKTSTS_Pos (17U) \r
-#define USB_OTG_PKTSTS_Msk (0xFUL << USB_OTG_PKTSTS_Pos) /*!< 0x001E0000 */\r
-#define USB_OTG_PKTSTS USB_OTG_PKTSTS_Msk /*!< Packet status */\r
-#define USB_OTG_PKTSTS_0 (0x1UL << USB_OTG_PKTSTS_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_PKTSTS_1 (0x2UL << USB_OTG_PKTSTS_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_PKTSTS_2 (0x4UL << USB_OTG_PKTSTS_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_PKTSTS_3 (0x8UL << USB_OTG_PKTSTS_Pos) /*!< 0x00100000 */\r
-\r
-#define USB_OTG_EPNUM_Pos (0U) \r
-#define USB_OTG_EPNUM_Msk (0xFUL << USB_OTG_EPNUM_Pos) /*!< 0x0000000F */\r
-#define USB_OTG_EPNUM USB_OTG_EPNUM_Msk /*!< Endpoint number */\r
-#define USB_OTG_EPNUM_0 (0x1UL << USB_OTG_EPNUM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_EPNUM_1 (0x2UL << USB_OTG_EPNUM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_EPNUM_2 (0x4UL << USB_OTG_EPNUM_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_EPNUM_3 (0x8UL << USB_OTG_EPNUM_Pos) /*!< 0x00000008 */\r
-\r
-#define USB_OTG_FRMNUM_Pos (21U) \r
-#define USB_OTG_FRMNUM_Msk (0xFUL << USB_OTG_FRMNUM_Pos) /*!< 0x01E00000 */\r
-#define USB_OTG_FRMNUM USB_OTG_FRMNUM_Msk /*!< Frame number */\r
-#define USB_OTG_FRMNUM_0 (0x1UL << USB_OTG_FRMNUM_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_FRMNUM_1 (0x2UL << USB_OTG_FRMNUM_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_FRMNUM_2 (0x4UL << USB_OTG_FRMNUM_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_FRMNUM_3 (0x8UL << USB_OTG_FRMNUM_Pos) /*!< 0x01000000 */\r
-\r
-/******************** Bit definition for OTG register ********************/\r
-\r
-#define USB_OTG_CHNUM_Pos (0U) \r
-#define USB_OTG_CHNUM_Msk (0xFUL << USB_OTG_CHNUM_Pos) /*!< 0x0000000F */\r
-#define USB_OTG_CHNUM USB_OTG_CHNUM_Msk /*!< Channel number */\r
-#define USB_OTG_CHNUM_0 (0x1UL << USB_OTG_CHNUM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_CHNUM_1 (0x2UL << USB_OTG_CHNUM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_CHNUM_2 (0x4UL << USB_OTG_CHNUM_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_CHNUM_3 (0x8UL << USB_OTG_CHNUM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_BCNT_Pos (4U) \r
-#define USB_OTG_BCNT_Msk (0x7FFUL << USB_OTG_BCNT_Pos) /*!< 0x00007FF0 */\r
-#define USB_OTG_BCNT USB_OTG_BCNT_Msk /*!< Byte count */\r
-\r
-#define USB_OTG_DPID_Pos (15U) \r
-#define USB_OTG_DPID_Msk (0x3UL << USB_OTG_DPID_Pos) /*!< 0x00018000 */\r
-#define USB_OTG_DPID USB_OTG_DPID_Msk /*!< Data PID */\r
-#define USB_OTG_DPID_0 (0x1UL << USB_OTG_DPID_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_DPID_1 (0x2UL << USB_OTG_DPID_Pos) /*!< 0x00010000 */\r
-\r
-#define USB_OTG_PKTSTS_Pos (17U) \r
-#define USB_OTG_PKTSTS_Msk (0xFUL << USB_OTG_PKTSTS_Pos) /*!< 0x001E0000 */\r
-#define USB_OTG_PKTSTS USB_OTG_PKTSTS_Msk /*!< Packet status */\r
-#define USB_OTG_PKTSTS_0 (0x1UL << USB_OTG_PKTSTS_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_PKTSTS_1 (0x2UL << USB_OTG_PKTSTS_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_PKTSTS_2 (0x4UL << USB_OTG_PKTSTS_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_PKTSTS_3 (0x8UL << USB_OTG_PKTSTS_Pos) /*!< 0x00100000 */\r
-\r
-#define USB_OTG_EPNUM_Pos (0U) \r
-#define USB_OTG_EPNUM_Msk (0xFUL << USB_OTG_EPNUM_Pos) /*!< 0x0000000F */\r
-#define USB_OTG_EPNUM USB_OTG_EPNUM_Msk /*!< Endpoint number */\r
-#define USB_OTG_EPNUM_0 (0x1UL << USB_OTG_EPNUM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_EPNUM_1 (0x2UL << USB_OTG_EPNUM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_EPNUM_2 (0x4UL << USB_OTG_EPNUM_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_EPNUM_3 (0x8UL << USB_OTG_EPNUM_Pos) /*!< 0x00000008 */\r
-\r
-#define USB_OTG_FRMNUM_Pos (21U) \r
-#define USB_OTG_FRMNUM_Msk (0xFUL << USB_OTG_FRMNUM_Pos) /*!< 0x01E00000 */\r
-#define USB_OTG_FRMNUM USB_OTG_FRMNUM_Msk /*!< Frame number */\r
-#define USB_OTG_FRMNUM_0 (0x1UL << USB_OTG_FRMNUM_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_FRMNUM_1 (0x2UL << USB_OTG_FRMNUM_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_FRMNUM_2 (0x4UL << USB_OTG_FRMNUM_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_FRMNUM_3 (0x8UL << USB_OTG_FRMNUM_Pos) /*!< 0x01000000 */\r
-\r
-/******************** Bit definition for USB_OTG_GRXFSIZ register ********************/\r
-#define USB_OTG_GRXFSIZ_RXFD_Pos (0U) \r
-#define USB_OTG_GRXFSIZ_RXFD_Msk (0xFFFFUL << USB_OTG_GRXFSIZ_RXFD_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_GRXFSIZ_RXFD USB_OTG_GRXFSIZ_RXFD_Msk /*!< RxFIFO depth */\r
-\r
-/******************** Bit definition for USB_OTG_DVBUSDIS register ********************/\r
-#define USB_OTG_DVBUSDIS_VBUSDT_Pos (0U) \r
-#define USB_OTG_DVBUSDIS_VBUSDT_Msk (0xFFFFUL << USB_OTG_DVBUSDIS_VBUSDT_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_DVBUSDIS_VBUSDT USB_OTG_DVBUSDIS_VBUSDT_Msk /*!< Device VBUS discharge time */\r
-\r
-/******************** Bit definition for OTG register ********************/\r
-#define USB_OTG_NPTXFSA_Pos (0U) \r
-#define USB_OTG_NPTXFSA_Msk (0xFFFFUL << USB_OTG_NPTXFSA_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_NPTXFSA USB_OTG_NPTXFSA_Msk /*!< Nonperiodic transmit RAM start address */\r
-#define USB_OTG_NPTXFD_Pos (16U) \r
-#define USB_OTG_NPTXFD_Msk (0xFFFFUL << USB_OTG_NPTXFD_Pos) /*!< 0xFFFF0000 */\r
-#define USB_OTG_NPTXFD USB_OTG_NPTXFD_Msk /*!< Nonperiodic TxFIFO depth */\r
-#define USB_OTG_TX0FSA_Pos (0U) \r
-#define USB_OTG_TX0FSA_Msk (0xFFFFUL << USB_OTG_TX0FSA_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_TX0FSA USB_OTG_TX0FSA_Msk /*!< Endpoint 0 transmit RAM start address */\r
-#define USB_OTG_TX0FD_Pos (16U) \r
-#define USB_OTG_TX0FD_Msk (0xFFFFUL << USB_OTG_TX0FD_Pos) /*!< 0xFFFF0000 */\r
-#define USB_OTG_TX0FD USB_OTG_TX0FD_Msk /*!< Endpoint 0 TxFIFO depth */\r
-\r
-/******************** Bit definition for USB_OTG_DVBUSPULSE register ********************/\r
-#define USB_OTG_DVBUSPULSE_DVBUSP_Pos (0U) \r
-#define USB_OTG_DVBUSPULSE_DVBUSP_Msk (0xFFFUL << USB_OTG_DVBUSPULSE_DVBUSP_Pos) /*!< 0x00000FFF */\r
-#define USB_OTG_DVBUSPULSE_DVBUSP USB_OTG_DVBUSPULSE_DVBUSP_Msk /*!< Device VBUS pulsing time */\r
-\r
-/******************** Bit definition for USB_OTG_GNPTXSTS register ********************/\r
-#define USB_OTG_GNPTXSTS_NPTXFSAV_Pos (0U) \r
-#define USB_OTG_GNPTXSTS_NPTXFSAV_Msk (0xFFFFUL << USB_OTG_GNPTXSTS_NPTXFSAV_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_GNPTXSTS_NPTXFSAV USB_OTG_GNPTXSTS_NPTXFSAV_Msk /*!< Nonperiodic TxFIFO space available */\r
-\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_Pos (16U) \r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_Msk (0xFFUL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00FF0000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV USB_OTG_GNPTXSTS_NPTQXSAV_Msk /*!< Nonperiodic transmit request queue space available */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_0 (0x01UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_1 (0x02UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_2 (0x04UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_3 (0x08UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_4 (0x10UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_5 (0x20UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_6 (0x40UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_GNPTXSTS_NPTQXSAV_7 (0x80UL << USB_OTG_GNPTXSTS_NPTQXSAV_Pos) /*!< 0x00800000 */\r
-\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_Pos (24U) \r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_Msk (0x7FUL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x7F000000 */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP USB_OTG_GNPTXSTS_NPTXQTOP_Msk /*!< Top of the nonperiodic transmit request queue */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_0 (0x01UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_1 (0x02UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_2 (0x04UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x04000000 */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_3 (0x08UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_4 (0x10UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_5 (0x20UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_GNPTXSTS_NPTXQTOP_6 (0x40UL << USB_OTG_GNPTXSTS_NPTXQTOP_Pos) /*!< 0x40000000 */\r
-\r
-/******************** Bit definition for USB_OTG_DTHRCTL register ********************/\r
-#define USB_OTG_DTHRCTL_NONISOTHREN_Pos (0U) \r
-#define USB_OTG_DTHRCTL_NONISOTHREN_Msk (0x1UL << USB_OTG_DTHRCTL_NONISOTHREN_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DTHRCTL_NONISOTHREN USB_OTG_DTHRCTL_NONISOTHREN_Msk /*!< Nonisochronous IN endpoints threshold enable */\r
-#define USB_OTG_DTHRCTL_ISOTHREN_Pos (1U) \r
-#define USB_OTG_DTHRCTL_ISOTHREN_Msk (0x1UL << USB_OTG_DTHRCTL_ISOTHREN_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DTHRCTL_ISOTHREN USB_OTG_DTHRCTL_ISOTHREN_Msk /*!< ISO IN endpoint threshold enable */\r
-\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_Pos (2U) \r
-#define USB_OTG_DTHRCTL_TXTHRLEN_Msk (0x1FFUL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x000007FC */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN USB_OTG_DTHRCTL_TXTHRLEN_Msk /*!< Transmit threshold length */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_0 (0x001UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_1 (0x002UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_2 (0x004UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_3 (0x008UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_4 (0x010UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_5 (0x020UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_6 (0x040UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_7 (0x080UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DTHRCTL_TXTHRLEN_8 (0x100UL << USB_OTG_DTHRCTL_TXTHRLEN_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_DTHRCTL_RXTHREN_Pos (16U) \r
-#define USB_OTG_DTHRCTL_RXTHREN_Msk (0x1UL << USB_OTG_DTHRCTL_RXTHREN_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_DTHRCTL_RXTHREN USB_OTG_DTHRCTL_RXTHREN_Msk /*!< Receive threshold enable */\r
-\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_Pos (17U) \r
-#define USB_OTG_DTHRCTL_RXTHRLEN_Msk (0x1FFUL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x03FE0000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN USB_OTG_DTHRCTL_RXTHRLEN_Msk /*!< Receive threshold length */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_0 (0x001UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_1 (0x002UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_2 (0x004UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_3 (0x008UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_4 (0x010UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_5 (0x020UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_6 (0x040UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_7 (0x080UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_DTHRCTL_RXTHRLEN_8 (0x100UL << USB_OTG_DTHRCTL_RXTHRLEN_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_DTHRCTL_ARPEN_Pos (27U) \r
-#define USB_OTG_DTHRCTL_ARPEN_Msk (0x1UL << USB_OTG_DTHRCTL_ARPEN_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_DTHRCTL_ARPEN USB_OTG_DTHRCTL_ARPEN_Msk /*!< Arbiter parking enable */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPEMPMSK register ********************/\r
-#define USB_OTG_DIEPEMPMSK_INEPTXFEM_Pos (0U) \r
-#define USB_OTG_DIEPEMPMSK_INEPTXFEM_Msk (0xFFFFUL << USB_OTG_DIEPEMPMSK_INEPTXFEM_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_DIEPEMPMSK_INEPTXFEM USB_OTG_DIEPEMPMSK_INEPTXFEM_Msk /*!< IN EP Tx FIFO empty interrupt mask bits */\r
-\r
-/******************** Bit definition for USB_OTG_DEACHINT register ********************/\r
-#define USB_OTG_DEACHINT_IEP1INT_Pos (1U) \r
-#define USB_OTG_DEACHINT_IEP1INT_Msk (0x1UL << USB_OTG_DEACHINT_IEP1INT_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DEACHINT_IEP1INT USB_OTG_DEACHINT_IEP1INT_Msk /*!< IN endpoint 1interrupt bit */\r
-#define USB_OTG_DEACHINT_OEP1INT_Pos (17U) \r
-#define USB_OTG_DEACHINT_OEP1INT_Msk (0x1UL << USB_OTG_DEACHINT_OEP1INT_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_DEACHINT_OEP1INT USB_OTG_DEACHINT_OEP1INT_Msk /*!< OUT endpoint 1 interrupt bit */\r
-\r
-/******************** Bit definition for USB_OTG_GCCFG register ********************/\r
-#define USB_OTG_GCCFG_PWRDWN_Pos (16U) \r
-#define USB_OTG_GCCFG_PWRDWN_Msk (0x1UL << USB_OTG_GCCFG_PWRDWN_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_GCCFG_PWRDWN USB_OTG_GCCFG_PWRDWN_Msk /*!< Power down */\r
-#define USB_OTG_GCCFG_VBDEN_Pos (21U) \r
-#define USB_OTG_GCCFG_VBDEN_Msk (0x1UL << USB_OTG_GCCFG_VBDEN_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_GCCFG_VBDEN USB_OTG_GCCFG_VBDEN_Msk /*!< USB VBUS Detection Enable */\r
-\r
-/******************** Bit definition for USB_OTG_DEACHINTMSK register ********************/\r
-#define USB_OTG_DEACHINTMSK_IEP1INTM_Pos (1U) \r
-#define USB_OTG_DEACHINTMSK_IEP1INTM_Msk (0x1UL << USB_OTG_DEACHINTMSK_IEP1INTM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DEACHINTMSK_IEP1INTM USB_OTG_DEACHINTMSK_IEP1INTM_Msk /*!< IN Endpoint 1 interrupt mask bit */\r
-#define USB_OTG_DEACHINTMSK_OEP1INTM_Pos (17U) \r
-#define USB_OTG_DEACHINTMSK_OEP1INTM_Msk (0x1UL << USB_OTG_DEACHINTMSK_OEP1INTM_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_DEACHINTMSK_OEP1INTM USB_OTG_DEACHINTMSK_OEP1INTM_Msk /*!< OUT Endpoint 1 interrupt mask bit */\r
-\r
-/******************** Bit definition for USB_OTG_CID register ********************/\r
-#define USB_OTG_CID_PRODUCT_ID_Pos (0U) \r
-#define USB_OTG_CID_PRODUCT_ID_Msk (0xFFFFFFFFUL << USB_OTG_CID_PRODUCT_ID_Pos) /*!< 0xFFFFFFFF */\r
-#define USB_OTG_CID_PRODUCT_ID USB_OTG_CID_PRODUCT_ID_Msk /*!< Product ID field */\r
-\r
-/******************** Bit definition for USB_OTG_GLPMCFG register ********************/\r
-#define USB_OTG_GLPMCFG_LPMEN_Pos (0U) \r
-#define USB_OTG_GLPMCFG_LPMEN_Msk (0x1UL << USB_OTG_GLPMCFG_LPMEN_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_GLPMCFG_LPMEN USB_OTG_GLPMCFG_LPMEN_Msk /*!< LPM support enable */\r
-#define USB_OTG_GLPMCFG_LPMACK_Pos (1U) \r
-#define USB_OTG_GLPMCFG_LPMACK_Msk (0x1UL << USB_OTG_GLPMCFG_LPMACK_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_GLPMCFG_LPMACK USB_OTG_GLPMCFG_LPMACK_Msk /*!< LPM Token acknowledge enable */\r
-#define USB_OTG_GLPMCFG_BESL_Pos (2U) \r
-#define USB_OTG_GLPMCFG_BESL_Msk (0xFUL << USB_OTG_GLPMCFG_BESL_Pos) /*!< 0x0000003C */\r
-#define USB_OTG_GLPMCFG_BESL USB_OTG_GLPMCFG_BESL_Msk /*!< BESL value received with last ACKed LPM Token */\r
-#define USB_OTG_GLPMCFG_REMWAKE_Pos (6U) \r
-#define USB_OTG_GLPMCFG_REMWAKE_Msk (0x1UL << USB_OTG_GLPMCFG_REMWAKE_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_GLPMCFG_REMWAKE USB_OTG_GLPMCFG_REMWAKE_Msk /*!< bRemoteWake value received with last ACKed LPM Token */\r
-#define USB_OTG_GLPMCFG_L1SSEN_Pos (7U) \r
-#define USB_OTG_GLPMCFG_L1SSEN_Msk (0x1UL << USB_OTG_GLPMCFG_L1SSEN_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_GLPMCFG_L1SSEN USB_OTG_GLPMCFG_L1SSEN_Msk /*!< L1 shallow sleep enable */\r
-#define USB_OTG_GLPMCFG_BESLTHRS_Pos (8U) \r
-#define USB_OTG_GLPMCFG_BESLTHRS_Msk (0xFUL << USB_OTG_GLPMCFG_BESLTHRS_Pos) /*!< 0x00000F00 */\r
-#define USB_OTG_GLPMCFG_BESLTHRS USB_OTG_GLPMCFG_BESLTHRS_Msk /*!< BESL threshold */\r
-#define USB_OTG_GLPMCFG_L1DSEN_Pos (12U) \r
-#define USB_OTG_GLPMCFG_L1DSEN_Msk (0x1UL << USB_OTG_GLPMCFG_L1DSEN_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_GLPMCFG_L1DSEN USB_OTG_GLPMCFG_L1DSEN_Msk /*!< L1 deep sleep enable */\r
-#define USB_OTG_GLPMCFG_LPMRSP_Pos (13U) \r
-#define USB_OTG_GLPMCFG_LPMRSP_Msk (0x3UL << USB_OTG_GLPMCFG_LPMRSP_Pos) /*!< 0x00006000 */\r
-#define USB_OTG_GLPMCFG_LPMRSP USB_OTG_GLPMCFG_LPMRSP_Msk /*!< LPM response */\r
-#define USB_OTG_GLPMCFG_SLPSTS_Pos (15U) \r
-#define USB_OTG_GLPMCFG_SLPSTS_Msk (0x1UL << USB_OTG_GLPMCFG_SLPSTS_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_GLPMCFG_SLPSTS USB_OTG_GLPMCFG_SLPSTS_Msk /*!< Port sleep status */\r
-#define USB_OTG_GLPMCFG_L1RSMOK_Pos (16U) \r
-#define USB_OTG_GLPMCFG_L1RSMOK_Msk (0x1UL << USB_OTG_GLPMCFG_L1RSMOK_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_GLPMCFG_L1RSMOK USB_OTG_GLPMCFG_L1RSMOK_Msk /*!< Sleep State Resume OK */\r
-#define USB_OTG_GLPMCFG_LPMCHIDX_Pos (17U) \r
-#define USB_OTG_GLPMCFG_LPMCHIDX_Msk (0xFUL << USB_OTG_GLPMCFG_LPMCHIDX_Pos) /*!< 0x001E0000 */\r
-#define USB_OTG_GLPMCFG_LPMCHIDX USB_OTG_GLPMCFG_LPMCHIDX_Msk /*!< LPM Channel Index */\r
-#define USB_OTG_GLPMCFG_LPMRCNT_Pos (21U) \r
-#define USB_OTG_GLPMCFG_LPMRCNT_Msk (0x7UL << USB_OTG_GLPMCFG_LPMRCNT_Pos) /*!< 0x00E00000 */\r
-#define USB_OTG_GLPMCFG_LPMRCNT USB_OTG_GLPMCFG_LPMRCNT_Msk /*!< LPM retry count */\r
-#define USB_OTG_GLPMCFG_SNDLPM_Pos (24U) \r
-#define USB_OTG_GLPMCFG_SNDLPM_Msk (0x1UL << USB_OTG_GLPMCFG_SNDLPM_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_GLPMCFG_SNDLPM USB_OTG_GLPMCFG_SNDLPM_Msk /*!< Send LPM transaction */\r
-#define USB_OTG_GLPMCFG_LPMRCNTSTS_Pos (25U) \r
-#define USB_OTG_GLPMCFG_LPMRCNTSTS_Msk (0x7UL << USB_OTG_GLPMCFG_LPMRCNTSTS_Pos) /*!< 0x0E000000 */\r
-#define USB_OTG_GLPMCFG_LPMRCNTSTS USB_OTG_GLPMCFG_LPMRCNTSTS_Msk /*!< LPM retry count status */\r
-#define USB_OTG_GLPMCFG_ENBESL_Pos (28U) \r
-#define USB_OTG_GLPMCFG_ENBESL_Msk (0x1UL << USB_OTG_GLPMCFG_ENBESL_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_GLPMCFG_ENBESL USB_OTG_GLPMCFG_ENBESL_Msk /*!< Enable best effort service latency */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPEACHMSK1 register ********************/\r
-#define USB_OTG_DIEPEACHMSK1_XFRCM_Pos (0U) \r
-#define USB_OTG_DIEPEACHMSK1_XFRCM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_XFRCM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DIEPEACHMSK1_XFRCM USB_OTG_DIEPEACHMSK1_XFRCM_Msk /*!< Transfer completed interrupt mask */\r
-#define USB_OTG_DIEPEACHMSK1_EPDM_Pos (1U) \r
-#define USB_OTG_DIEPEACHMSK1_EPDM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_EPDM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DIEPEACHMSK1_EPDM USB_OTG_DIEPEACHMSK1_EPDM_Msk /*!< Endpoint disabled interrupt mask */\r
-#define USB_OTG_DIEPEACHMSK1_TOM_Pos (3U) \r
-#define USB_OTG_DIEPEACHMSK1_TOM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_TOM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DIEPEACHMSK1_TOM USB_OTG_DIEPEACHMSK1_TOM_Msk /*!< Timeout condition mask (nonisochronous endpoints) */\r
-#define USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Pos (4U) \r
-#define USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DIEPEACHMSK1_ITTXFEMSK USB_OTG_DIEPEACHMSK1_ITTXFEMSK_Msk /*!< IN token received when TxFIFO empty mask */\r
-#define USB_OTG_DIEPEACHMSK1_INEPNMM_Pos (5U) \r
-#define USB_OTG_DIEPEACHMSK1_INEPNMM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_INEPNMM_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DIEPEACHMSK1_INEPNMM USB_OTG_DIEPEACHMSK1_INEPNMM_Msk /*!< IN token received with EP mismatch mask */\r
-#define USB_OTG_DIEPEACHMSK1_INEPNEM_Pos (6U) \r
-#define USB_OTG_DIEPEACHMSK1_INEPNEM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_INEPNEM_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DIEPEACHMSK1_INEPNEM USB_OTG_DIEPEACHMSK1_INEPNEM_Msk /*!< IN endpoint NAK effective mask */\r
-#define USB_OTG_DIEPEACHMSK1_TXFURM_Pos (8U) \r
-#define USB_OTG_DIEPEACHMSK1_TXFURM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_TXFURM_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DIEPEACHMSK1_TXFURM USB_OTG_DIEPEACHMSK1_TXFURM_Msk /*!< FIFO underrun mask */\r
-#define USB_OTG_DIEPEACHMSK1_BIM_Pos (9U) \r
-#define USB_OTG_DIEPEACHMSK1_BIM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_BIM_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DIEPEACHMSK1_BIM USB_OTG_DIEPEACHMSK1_BIM_Msk /*!< BNA interrupt mask */\r
-#define USB_OTG_DIEPEACHMSK1_NAKM_Pos (13U) \r
-#define USB_OTG_DIEPEACHMSK1_NAKM_Msk (0x1UL << USB_OTG_DIEPEACHMSK1_NAKM_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_DIEPEACHMSK1_NAKM USB_OTG_DIEPEACHMSK1_NAKM_Msk /*!< NAK interrupt mask */\r
-\r
-/******************** Bit definition for USB_OTG_HPRT register ********************/\r
-#define USB_OTG_HPRT_PCSTS_Pos (0U) \r
-#define USB_OTG_HPRT_PCSTS_Msk (0x1UL << USB_OTG_HPRT_PCSTS_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_HPRT_PCSTS USB_OTG_HPRT_PCSTS_Msk /*!< Port connect status */\r
-#define USB_OTG_HPRT_PCDET_Pos (1U) \r
-#define USB_OTG_HPRT_PCDET_Msk (0x1UL << USB_OTG_HPRT_PCDET_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_HPRT_PCDET USB_OTG_HPRT_PCDET_Msk /*!< Port connect detected */\r
-#define USB_OTG_HPRT_PENA_Pos (2U) \r
-#define USB_OTG_HPRT_PENA_Msk (0x1UL << USB_OTG_HPRT_PENA_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_HPRT_PENA USB_OTG_HPRT_PENA_Msk /*!< Port enable */\r
-#define USB_OTG_HPRT_PENCHNG_Pos (3U) \r
-#define USB_OTG_HPRT_PENCHNG_Msk (0x1UL << USB_OTG_HPRT_PENCHNG_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_HPRT_PENCHNG USB_OTG_HPRT_PENCHNG_Msk /*!< Port enable/disable change */\r
-#define USB_OTG_HPRT_POCA_Pos (4U) \r
-#define USB_OTG_HPRT_POCA_Msk (0x1UL << USB_OTG_HPRT_POCA_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_HPRT_POCA USB_OTG_HPRT_POCA_Msk /*!< Port overcurrent active */\r
-#define USB_OTG_HPRT_POCCHNG_Pos (5U) \r
-#define USB_OTG_HPRT_POCCHNG_Msk (0x1UL << USB_OTG_HPRT_POCCHNG_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_HPRT_POCCHNG USB_OTG_HPRT_POCCHNG_Msk /*!< Port overcurrent change */\r
-#define USB_OTG_HPRT_PRES_Pos (6U) \r
-#define USB_OTG_HPRT_PRES_Msk (0x1UL << USB_OTG_HPRT_PRES_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_HPRT_PRES USB_OTG_HPRT_PRES_Msk /*!< Port resume */\r
-#define USB_OTG_HPRT_PSUSP_Pos (7U) \r
-#define USB_OTG_HPRT_PSUSP_Msk (0x1UL << USB_OTG_HPRT_PSUSP_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_HPRT_PSUSP USB_OTG_HPRT_PSUSP_Msk /*!< Port suspend */\r
-#define USB_OTG_HPRT_PRST_Pos (8U) \r
-#define USB_OTG_HPRT_PRST_Msk (0x1UL << USB_OTG_HPRT_PRST_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_HPRT_PRST USB_OTG_HPRT_PRST_Msk /*!< Port reset */\r
-\r
-#define USB_OTG_HPRT_PLSTS_Pos (10U) \r
-#define USB_OTG_HPRT_PLSTS_Msk (0x3UL << USB_OTG_HPRT_PLSTS_Pos) /*!< 0x00000C00 */\r
-#define USB_OTG_HPRT_PLSTS USB_OTG_HPRT_PLSTS_Msk /*!< Port line status */\r
-#define USB_OTG_HPRT_PLSTS_0 (0x1UL << USB_OTG_HPRT_PLSTS_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_HPRT_PLSTS_1 (0x2UL << USB_OTG_HPRT_PLSTS_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_HPRT_PPWR_Pos (12U) \r
-#define USB_OTG_HPRT_PPWR_Msk (0x1UL << USB_OTG_HPRT_PPWR_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_HPRT_PPWR USB_OTG_HPRT_PPWR_Msk /*!< Port power */\r
-\r
-#define USB_OTG_HPRT_PTCTL_Pos (13U) \r
-#define USB_OTG_HPRT_PTCTL_Msk (0xFUL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x0001E000 */\r
-#define USB_OTG_HPRT_PTCTL USB_OTG_HPRT_PTCTL_Msk /*!< Port test control */\r
-#define USB_OTG_HPRT_PTCTL_0 (0x1UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_HPRT_PTCTL_1 (0x2UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_HPRT_PTCTL_2 (0x4UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_HPRT_PTCTL_3 (0x8UL << USB_OTG_HPRT_PTCTL_Pos) /*!< 0x00010000 */\r
-\r
-#define USB_OTG_HPRT_PSPD_Pos (17U) \r
-#define USB_OTG_HPRT_PSPD_Msk (0x3UL << USB_OTG_HPRT_PSPD_Pos) /*!< 0x00060000 */\r
-#define USB_OTG_HPRT_PSPD USB_OTG_HPRT_PSPD_Msk /*!< Port speed */\r
-#define USB_OTG_HPRT_PSPD_0 (0x1UL << USB_OTG_HPRT_PSPD_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_HPRT_PSPD_1 (0x2UL << USB_OTG_HPRT_PSPD_Pos) /*!< 0x00040000 */\r
-\r
-/******************** Bit definition for USB_OTG_DOEPEACHMSK1 register ********************/\r
-#define USB_OTG_DOEPEACHMSK1_XFRCM_Pos (0U) \r
-#define USB_OTG_DOEPEACHMSK1_XFRCM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_XFRCM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DOEPEACHMSK1_XFRCM USB_OTG_DOEPEACHMSK1_XFRCM_Msk /*!< Transfer completed interrupt mask */\r
-#define USB_OTG_DOEPEACHMSK1_EPDM_Pos (1U) \r
-#define USB_OTG_DOEPEACHMSK1_EPDM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_EPDM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DOEPEACHMSK1_EPDM USB_OTG_DOEPEACHMSK1_EPDM_Msk /*!< Endpoint disabled interrupt mask */\r
-#define USB_OTG_DOEPEACHMSK1_TOM_Pos (3U) \r
-#define USB_OTG_DOEPEACHMSK1_TOM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_TOM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DOEPEACHMSK1_TOM USB_OTG_DOEPEACHMSK1_TOM_Msk /*!< Timeout condition mask */\r
-#define USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Pos (4U) \r
-#define USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DOEPEACHMSK1_ITTXFEMSK USB_OTG_DOEPEACHMSK1_ITTXFEMSK_Msk /*!< IN token received when TxFIFO empty mask */\r
-#define USB_OTG_DOEPEACHMSK1_INEPNMM_Pos (5U) \r
-#define USB_OTG_DOEPEACHMSK1_INEPNMM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_INEPNMM_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DOEPEACHMSK1_INEPNMM USB_OTG_DOEPEACHMSK1_INEPNMM_Msk /*!< IN token received with EP mismatch mask */\r
-#define USB_OTG_DOEPEACHMSK1_INEPNEM_Pos (6U) \r
-#define USB_OTG_DOEPEACHMSK1_INEPNEM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_INEPNEM_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DOEPEACHMSK1_INEPNEM USB_OTG_DOEPEACHMSK1_INEPNEM_Msk /*!< IN endpoint NAK effective mask */\r
-#define USB_OTG_DOEPEACHMSK1_TXFURM_Pos (8U) \r
-#define USB_OTG_DOEPEACHMSK1_TXFURM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_TXFURM_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DOEPEACHMSK1_TXFURM USB_OTG_DOEPEACHMSK1_TXFURM_Msk /*!< OUT packet error mask */\r
-#define USB_OTG_DOEPEACHMSK1_BIM_Pos (9U) \r
-#define USB_OTG_DOEPEACHMSK1_BIM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_BIM_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DOEPEACHMSK1_BIM USB_OTG_DOEPEACHMSK1_BIM_Msk /*!< BNA interrupt mask */\r
-#define USB_OTG_DOEPEACHMSK1_BERRM_Pos (12U) \r
-#define USB_OTG_DOEPEACHMSK1_BERRM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_BERRM_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_DOEPEACHMSK1_BERRM USB_OTG_DOEPEACHMSK1_BERRM_Msk /*!< Bubble error interrupt mask */\r
-#define USB_OTG_DOEPEACHMSK1_NAKM_Pos (13U) \r
-#define USB_OTG_DOEPEACHMSK1_NAKM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_NAKM_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_DOEPEACHMSK1_NAKM USB_OTG_DOEPEACHMSK1_NAKM_Msk /*!< NAK interrupt mask */\r
-#define USB_OTG_DOEPEACHMSK1_NYETM_Pos (14U) \r
-#define USB_OTG_DOEPEACHMSK1_NYETM_Msk (0x1UL << USB_OTG_DOEPEACHMSK1_NYETM_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_DOEPEACHMSK1_NYETM USB_OTG_DOEPEACHMSK1_NYETM_Msk /*!< NYET interrupt mask */\r
-\r
-/******************** Bit definition for USB_OTG_HPTXFSIZ register ********************/\r
-#define USB_OTG_HPTXFSIZ_PTXSA_Pos (0U) \r
-#define USB_OTG_HPTXFSIZ_PTXSA_Msk (0xFFFFUL << USB_OTG_HPTXFSIZ_PTXSA_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_HPTXFSIZ_PTXSA USB_OTG_HPTXFSIZ_PTXSA_Msk /*!< Host periodic TxFIFO start address */\r
-#define USB_OTG_HPTXFSIZ_PTXFD_Pos (16U) \r
-#define USB_OTG_HPTXFSIZ_PTXFD_Msk (0xFFFFUL << USB_OTG_HPTXFSIZ_PTXFD_Pos) /*!< 0xFFFF0000 */\r
-#define USB_OTG_HPTXFSIZ_PTXFD USB_OTG_HPTXFSIZ_PTXFD_Msk /*!< Host periodic TxFIFO depth */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPCTL register ********************/\r
-#define USB_OTG_DIEPCTL_MPSIZ_Pos (0U) \r
-#define USB_OTG_DIEPCTL_MPSIZ_Msk (0x7FFUL << USB_OTG_DIEPCTL_MPSIZ_Pos) /*!< 0x000007FF */\r
-#define USB_OTG_DIEPCTL_MPSIZ USB_OTG_DIEPCTL_MPSIZ_Msk /*!< Maximum packet size */\r
-#define USB_OTG_DIEPCTL_USBAEP_Pos (15U) \r
-#define USB_OTG_DIEPCTL_USBAEP_Msk (0x1UL << USB_OTG_DIEPCTL_USBAEP_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_DIEPCTL_USBAEP USB_OTG_DIEPCTL_USBAEP_Msk /*!< USB active endpoint */\r
-#define USB_OTG_DIEPCTL_EONUM_DPID_Pos (16U) \r
-#define USB_OTG_DIEPCTL_EONUM_DPID_Msk (0x1UL << USB_OTG_DIEPCTL_EONUM_DPID_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_DIEPCTL_EONUM_DPID USB_OTG_DIEPCTL_EONUM_DPID_Msk /*!< Even/odd frame */\r
-#define USB_OTG_DIEPCTL_NAKSTS_Pos (17U) \r
-#define USB_OTG_DIEPCTL_NAKSTS_Msk (0x1UL << USB_OTG_DIEPCTL_NAKSTS_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_DIEPCTL_NAKSTS USB_OTG_DIEPCTL_NAKSTS_Msk /*!< NAK status */\r
-\r
-#define USB_OTG_DIEPCTL_EPTYP_Pos (18U) \r
-#define USB_OTG_DIEPCTL_EPTYP_Msk (0x3UL << USB_OTG_DIEPCTL_EPTYP_Pos) /*!< 0x000C0000 */\r
-#define USB_OTG_DIEPCTL_EPTYP USB_OTG_DIEPCTL_EPTYP_Msk /*!< Endpoint type */\r
-#define USB_OTG_DIEPCTL_EPTYP_0 (0x1UL << USB_OTG_DIEPCTL_EPTYP_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_DIEPCTL_EPTYP_1 (0x2UL << USB_OTG_DIEPCTL_EPTYP_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_DIEPCTL_STALL_Pos (21U) \r
-#define USB_OTG_DIEPCTL_STALL_Msk (0x1UL << USB_OTG_DIEPCTL_STALL_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_DIEPCTL_STALL USB_OTG_DIEPCTL_STALL_Msk /*!< STALL handshake */\r
-\r
-#define USB_OTG_DIEPCTL_TXFNUM_Pos (22U) \r
-#define USB_OTG_DIEPCTL_TXFNUM_Msk (0xFUL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x03C00000 */\r
-#define USB_OTG_DIEPCTL_TXFNUM USB_OTG_DIEPCTL_TXFNUM_Msk /*!< TxFIFO number */\r
-#define USB_OTG_DIEPCTL_TXFNUM_0 (0x1UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_DIEPCTL_TXFNUM_1 (0x2UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_DIEPCTL_TXFNUM_2 (0x4UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_DIEPCTL_TXFNUM_3 (0x8UL << USB_OTG_DIEPCTL_TXFNUM_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_DIEPCTL_CNAK_Pos (26U) \r
-#define USB_OTG_DIEPCTL_CNAK_Msk (0x1UL << USB_OTG_DIEPCTL_CNAK_Pos) /*!< 0x04000000 */\r
-#define USB_OTG_DIEPCTL_CNAK USB_OTG_DIEPCTL_CNAK_Msk /*!< Clear NAK */\r
-#define USB_OTG_DIEPCTL_SNAK_Pos (27U) \r
-#define USB_OTG_DIEPCTL_SNAK_Msk (0x1UL << USB_OTG_DIEPCTL_SNAK_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_DIEPCTL_SNAK USB_OTG_DIEPCTL_SNAK_Msk /*!< Set NAK */\r
-#define USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Pos (28U) \r
-#define USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Msk (0x1UL << USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_DIEPCTL_SD0PID_SEVNFRM USB_OTG_DIEPCTL_SD0PID_SEVNFRM_Msk /*!< Set DATA0 PID */\r
-#define USB_OTG_DIEPCTL_SODDFRM_Pos (29U) \r
-#define USB_OTG_DIEPCTL_SODDFRM_Msk (0x1UL << USB_OTG_DIEPCTL_SODDFRM_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_DIEPCTL_SODDFRM USB_OTG_DIEPCTL_SODDFRM_Msk /*!< Set odd frame */\r
-#define USB_OTG_DIEPCTL_EPDIS_Pos (30U) \r
-#define USB_OTG_DIEPCTL_EPDIS_Msk (0x1UL << USB_OTG_DIEPCTL_EPDIS_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_DIEPCTL_EPDIS USB_OTG_DIEPCTL_EPDIS_Msk /*!< Endpoint disable */\r
-#define USB_OTG_DIEPCTL_EPENA_Pos (31U) \r
-#define USB_OTG_DIEPCTL_EPENA_Msk (0x1UL << USB_OTG_DIEPCTL_EPENA_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_DIEPCTL_EPENA USB_OTG_DIEPCTL_EPENA_Msk /*!< Endpoint enable */\r
-\r
-/******************** Bit definition for USB_OTG_HCCHAR register ********************/\r
-#define USB_OTG_HCCHAR_MPSIZ_Pos (0U) \r
-#define USB_OTG_HCCHAR_MPSIZ_Msk (0x7FFUL << USB_OTG_HCCHAR_MPSIZ_Pos) /*!< 0x000007FF */\r
-#define USB_OTG_HCCHAR_MPSIZ USB_OTG_HCCHAR_MPSIZ_Msk /*!< Maximum packet size */\r
-\r
-#define USB_OTG_HCCHAR_EPNUM_Pos (11U) \r
-#define USB_OTG_HCCHAR_EPNUM_Msk (0xFUL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00007800 */\r
-#define USB_OTG_HCCHAR_EPNUM USB_OTG_HCCHAR_EPNUM_Msk /*!< Endpoint number */\r
-#define USB_OTG_HCCHAR_EPNUM_0 (0x1UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_HCCHAR_EPNUM_1 (0x2UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_HCCHAR_EPNUM_2 (0x4UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_HCCHAR_EPNUM_3 (0x8UL << USB_OTG_HCCHAR_EPNUM_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_HCCHAR_EPDIR_Pos (15U) \r
-#define USB_OTG_HCCHAR_EPDIR_Msk (0x1UL << USB_OTG_HCCHAR_EPDIR_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_HCCHAR_EPDIR USB_OTG_HCCHAR_EPDIR_Msk /*!< Endpoint direction */\r
-#define USB_OTG_HCCHAR_LSDEV_Pos (17U) \r
-#define USB_OTG_HCCHAR_LSDEV_Msk (0x1UL << USB_OTG_HCCHAR_LSDEV_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_HCCHAR_LSDEV USB_OTG_HCCHAR_LSDEV_Msk /*!< Low-speed device */\r
-\r
-#define USB_OTG_HCCHAR_EPTYP_Pos (18U) \r
-#define USB_OTG_HCCHAR_EPTYP_Msk (0x3UL << USB_OTG_HCCHAR_EPTYP_Pos) /*!< 0x000C0000 */\r
-#define USB_OTG_HCCHAR_EPTYP USB_OTG_HCCHAR_EPTYP_Msk /*!< Endpoint type */\r
-#define USB_OTG_HCCHAR_EPTYP_0 (0x1UL << USB_OTG_HCCHAR_EPTYP_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_HCCHAR_EPTYP_1 (0x2UL << USB_OTG_HCCHAR_EPTYP_Pos) /*!< 0x00080000 */\r
-\r
-#define USB_OTG_HCCHAR_MC_Pos (20U) \r
-#define USB_OTG_HCCHAR_MC_Msk (0x3UL << USB_OTG_HCCHAR_MC_Pos) /*!< 0x00300000 */\r
-#define USB_OTG_HCCHAR_MC USB_OTG_HCCHAR_MC_Msk /*!< Multi Count (MC) / Error Count (EC) */\r
-#define USB_OTG_HCCHAR_MC_0 (0x1UL << USB_OTG_HCCHAR_MC_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_HCCHAR_MC_1 (0x2UL << USB_OTG_HCCHAR_MC_Pos) /*!< 0x00200000 */\r
-\r
-#define USB_OTG_HCCHAR_DAD_Pos (22U) \r
-#define USB_OTG_HCCHAR_DAD_Msk (0x7FUL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x1FC00000 */\r
-#define USB_OTG_HCCHAR_DAD USB_OTG_HCCHAR_DAD_Msk /*!< Device address */\r
-#define USB_OTG_HCCHAR_DAD_0 (0x01UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x00400000 */\r
-#define USB_OTG_HCCHAR_DAD_1 (0x02UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x00800000 */\r
-#define USB_OTG_HCCHAR_DAD_2 (0x04UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x01000000 */\r
-#define USB_OTG_HCCHAR_DAD_3 (0x08UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x02000000 */\r
-#define USB_OTG_HCCHAR_DAD_4 (0x10UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x04000000 */\r
-#define USB_OTG_HCCHAR_DAD_5 (0x20UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_HCCHAR_DAD_6 (0x40UL << USB_OTG_HCCHAR_DAD_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_HCCHAR_ODDFRM_Pos (29U) \r
-#define USB_OTG_HCCHAR_ODDFRM_Msk (0x1UL << USB_OTG_HCCHAR_ODDFRM_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_HCCHAR_ODDFRM USB_OTG_HCCHAR_ODDFRM_Msk /*!< Odd frame */\r
-#define USB_OTG_HCCHAR_CHDIS_Pos (30U) \r
-#define USB_OTG_HCCHAR_CHDIS_Msk (0x1UL << USB_OTG_HCCHAR_CHDIS_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_HCCHAR_CHDIS USB_OTG_HCCHAR_CHDIS_Msk /*!< Channel disable */\r
-#define USB_OTG_HCCHAR_CHENA_Pos (31U) \r
-#define USB_OTG_HCCHAR_CHENA_Msk (0x1UL << USB_OTG_HCCHAR_CHENA_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_HCCHAR_CHENA USB_OTG_HCCHAR_CHENA_Msk /*!< Channel enable */\r
-\r
-/******************** Bit definition for USB_OTG_HCSPLT register ********************/\r
-\r
-#define USB_OTG_HCSPLT_PRTADDR_Pos (0U) \r
-#define USB_OTG_HCSPLT_PRTADDR_Msk (0x7FUL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x0000007F */\r
-#define USB_OTG_HCSPLT_PRTADDR USB_OTG_HCSPLT_PRTADDR_Msk /*!< Port address */\r
-#define USB_OTG_HCSPLT_PRTADDR_0 (0x01UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_HCSPLT_PRTADDR_1 (0x02UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_HCSPLT_PRTADDR_2 (0x04UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_HCSPLT_PRTADDR_3 (0x08UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_HCSPLT_PRTADDR_4 (0x10UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_HCSPLT_PRTADDR_5 (0x20UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_HCSPLT_PRTADDR_6 (0x40UL << USB_OTG_HCSPLT_PRTADDR_Pos) /*!< 0x00000040 */\r
-\r
-#define USB_OTG_HCSPLT_HUBADDR_Pos (7U) \r
-#define USB_OTG_HCSPLT_HUBADDR_Msk (0x7FUL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00003F80 */\r
-#define USB_OTG_HCSPLT_HUBADDR USB_OTG_HCSPLT_HUBADDR_Msk /*!< Hub address */\r
-#define USB_OTG_HCSPLT_HUBADDR_0 (0x01UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_HCSPLT_HUBADDR_1 (0x02UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_HCSPLT_HUBADDR_2 (0x04UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_HCSPLT_HUBADDR_3 (0x08UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_HCSPLT_HUBADDR_4 (0x10UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_HCSPLT_HUBADDR_5 (0x20UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_HCSPLT_HUBADDR_6 (0x40UL << USB_OTG_HCSPLT_HUBADDR_Pos) /*!< 0x00002000 */\r
-\r
-#define USB_OTG_HCSPLT_XACTPOS_Pos (14U) \r
-#define USB_OTG_HCSPLT_XACTPOS_Msk (0x3UL << USB_OTG_HCSPLT_XACTPOS_Pos) /*!< 0x0000C000 */\r
-#define USB_OTG_HCSPLT_XACTPOS USB_OTG_HCSPLT_XACTPOS_Msk /*!< XACTPOS */\r
-#define USB_OTG_HCSPLT_XACTPOS_0 (0x1UL << USB_OTG_HCSPLT_XACTPOS_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_HCSPLT_XACTPOS_1 (0x2UL << USB_OTG_HCSPLT_XACTPOS_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_HCSPLT_COMPLSPLT_Pos (16U) \r
-#define USB_OTG_HCSPLT_COMPLSPLT_Msk (0x1UL << USB_OTG_HCSPLT_COMPLSPLT_Pos) /*!< 0x00010000 */\r
-#define USB_OTG_HCSPLT_COMPLSPLT USB_OTG_HCSPLT_COMPLSPLT_Msk /*!< Do complete split */\r
-#define USB_OTG_HCSPLT_SPLITEN_Pos (31U) \r
-#define USB_OTG_HCSPLT_SPLITEN_Msk (0x1UL << USB_OTG_HCSPLT_SPLITEN_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_HCSPLT_SPLITEN USB_OTG_HCSPLT_SPLITEN_Msk /*!< Split enable */\r
-\r
-/******************** Bit definition for USB_OTG_HCINT register ********************/\r
-#define USB_OTG_HCINT_XFRC_Pos (0U) \r
-#define USB_OTG_HCINT_XFRC_Msk (0x1UL << USB_OTG_HCINT_XFRC_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_HCINT_XFRC USB_OTG_HCINT_XFRC_Msk /*!< Transfer completed */\r
-#define USB_OTG_HCINT_CHH_Pos (1U) \r
-#define USB_OTG_HCINT_CHH_Msk (0x1UL << USB_OTG_HCINT_CHH_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_HCINT_CHH USB_OTG_HCINT_CHH_Msk /*!< Channel halted */\r
-#define USB_OTG_HCINT_AHBERR_Pos (2U) \r
-#define USB_OTG_HCINT_AHBERR_Msk (0x1UL << USB_OTG_HCINT_AHBERR_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_HCINT_AHBERR USB_OTG_HCINT_AHBERR_Msk /*!< AHB error */\r
-#define USB_OTG_HCINT_STALL_Pos (3U) \r
-#define USB_OTG_HCINT_STALL_Msk (0x1UL << USB_OTG_HCINT_STALL_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_HCINT_STALL USB_OTG_HCINT_STALL_Msk /*!< STALL response received interrupt */\r
-#define USB_OTG_HCINT_NAK_Pos (4U) \r
-#define USB_OTG_HCINT_NAK_Msk (0x1UL << USB_OTG_HCINT_NAK_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_HCINT_NAK USB_OTG_HCINT_NAK_Msk /*!< NAK response received interrupt */\r
-#define USB_OTG_HCINT_ACK_Pos (5U) \r
-#define USB_OTG_HCINT_ACK_Msk (0x1UL << USB_OTG_HCINT_ACK_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_HCINT_ACK USB_OTG_HCINT_ACK_Msk /*!< ACK response received/transmitted interrupt */\r
-#define USB_OTG_HCINT_NYET_Pos (6U) \r
-#define USB_OTG_HCINT_NYET_Msk (0x1UL << USB_OTG_HCINT_NYET_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_HCINT_NYET USB_OTG_HCINT_NYET_Msk /*!< Response received interrupt */\r
-#define USB_OTG_HCINT_TXERR_Pos (7U) \r
-#define USB_OTG_HCINT_TXERR_Msk (0x1UL << USB_OTG_HCINT_TXERR_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_HCINT_TXERR USB_OTG_HCINT_TXERR_Msk /*!< Transaction error */\r
-#define USB_OTG_HCINT_BBERR_Pos (8U) \r
-#define USB_OTG_HCINT_BBERR_Msk (0x1UL << USB_OTG_HCINT_BBERR_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_HCINT_BBERR USB_OTG_HCINT_BBERR_Msk /*!< Babble error */\r
-#define USB_OTG_HCINT_FRMOR_Pos (9U) \r
-#define USB_OTG_HCINT_FRMOR_Msk (0x1UL << USB_OTG_HCINT_FRMOR_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_HCINT_FRMOR USB_OTG_HCINT_FRMOR_Msk /*!< Frame overrun */\r
-#define USB_OTG_HCINT_DTERR_Pos (10U) \r
-#define USB_OTG_HCINT_DTERR_Msk (0x1UL << USB_OTG_HCINT_DTERR_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_HCINT_DTERR USB_OTG_HCINT_DTERR_Msk /*!< Data toggle error */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPINT register ********************/\r
-#define USB_OTG_DIEPINT_XFRC_Pos (0U) \r
-#define USB_OTG_DIEPINT_XFRC_Msk (0x1UL << USB_OTG_DIEPINT_XFRC_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DIEPINT_XFRC USB_OTG_DIEPINT_XFRC_Msk /*!< Transfer completed interrupt */\r
-#define USB_OTG_DIEPINT_EPDISD_Pos (1U) \r
-#define USB_OTG_DIEPINT_EPDISD_Msk (0x1UL << USB_OTG_DIEPINT_EPDISD_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DIEPINT_EPDISD USB_OTG_DIEPINT_EPDISD_Msk /*!< Endpoint disabled interrupt */\r
-#define USB_OTG_DIEPINT_AHBERR_Pos (2U)\r
-#define USB_OTG_DIEPINT_AHBERR_Msk (0x1UL << USB_OTG_DIEPINT_AHBERR_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_DIEPINT_AHBERR USB_OTG_DIEPINT_AHBERR_Msk /*!< AHB Error (AHBErr) during an IN transaction */\r
-#define USB_OTG_DIEPINT_TOC_Pos (3U) \r
-#define USB_OTG_DIEPINT_TOC_Msk (0x1UL << USB_OTG_DIEPINT_TOC_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DIEPINT_TOC USB_OTG_DIEPINT_TOC_Msk /*!< Timeout condition */\r
-#define USB_OTG_DIEPINT_ITTXFE_Pos (4U) \r
-#define USB_OTG_DIEPINT_ITTXFE_Msk (0x1UL << USB_OTG_DIEPINT_ITTXFE_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DIEPINT_ITTXFE USB_OTG_DIEPINT_ITTXFE_Msk /*!< IN token received when TxFIFO is empty */\r
-#define USB_OTG_DIEPINT_INEPNM_Pos (5U)\r
-#define USB_OTG_DIEPINT_INEPNM_Msk (0x1UL << USB_OTG_DIEPINT_INEPNM_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DIEPINT_INEPNM USB_OTG_DIEPINT_INEPNM_Msk /*!< IN token received with EP mismatch */\r
-#define USB_OTG_DIEPINT_INEPNE_Pos (6U) \r
-#define USB_OTG_DIEPINT_INEPNE_Msk (0x1UL << USB_OTG_DIEPINT_INEPNE_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DIEPINT_INEPNE USB_OTG_DIEPINT_INEPNE_Msk /*!< IN endpoint NAK effective */\r
-#define USB_OTG_DIEPINT_TXFE_Pos (7U) \r
-#define USB_OTG_DIEPINT_TXFE_Msk (0x1UL << USB_OTG_DIEPINT_TXFE_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_DIEPINT_TXFE USB_OTG_DIEPINT_TXFE_Msk /*!< Transmit FIFO empty */\r
-#define USB_OTG_DIEPINT_TXFIFOUDRN_Pos (8U) \r
-#define USB_OTG_DIEPINT_TXFIFOUDRN_Msk (0x1UL << USB_OTG_DIEPINT_TXFIFOUDRN_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DIEPINT_TXFIFOUDRN USB_OTG_DIEPINT_TXFIFOUDRN_Msk /*!< Transmit Fifo Underrun */\r
-#define USB_OTG_DIEPINT_BNA_Pos (9U) \r
-#define USB_OTG_DIEPINT_BNA_Msk (0x1UL << USB_OTG_DIEPINT_BNA_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_DIEPINT_BNA USB_OTG_DIEPINT_BNA_Msk /*!< Buffer not available interrupt */\r
-#define USB_OTG_DIEPINT_PKTDRPSTS_Pos (11U) \r
-#define USB_OTG_DIEPINT_PKTDRPSTS_Msk (0x1UL << USB_OTG_DIEPINT_PKTDRPSTS_Pos) /*!< 0x00000800 */\r
-#define USB_OTG_DIEPINT_PKTDRPSTS USB_OTG_DIEPINT_PKTDRPSTS_Msk /*!< Packet dropped status */\r
-#define USB_OTG_DIEPINT_BERR_Pos (12U) \r
-#define USB_OTG_DIEPINT_BERR_Msk (0x1UL << USB_OTG_DIEPINT_BERR_Pos) /*!< 0x00001000 */\r
-#define USB_OTG_DIEPINT_BERR USB_OTG_DIEPINT_BERR_Msk /*!< Babble error interrupt */\r
-#define USB_OTG_DIEPINT_NAK_Pos (13U) \r
-#define USB_OTG_DIEPINT_NAK_Msk (0x1UL << USB_OTG_DIEPINT_NAK_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_DIEPINT_NAK USB_OTG_DIEPINT_NAK_Msk /*!< NAK interrupt */\r
-\r
-/******************** Bit definition for USB_OTG_HCINTMSK register ********************/\r
-#define USB_OTG_HCINTMSK_XFRCM_Pos (0U) \r
-#define USB_OTG_HCINTMSK_XFRCM_Msk (0x1UL << USB_OTG_HCINTMSK_XFRCM_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_HCINTMSK_XFRCM USB_OTG_HCINTMSK_XFRCM_Msk /*!< Transfer completed mask */\r
-#define USB_OTG_HCINTMSK_CHHM_Pos (1U) \r
-#define USB_OTG_HCINTMSK_CHHM_Msk (0x1UL << USB_OTG_HCINTMSK_CHHM_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_HCINTMSK_CHHM USB_OTG_HCINTMSK_CHHM_Msk /*!< Channel halted mask */\r
-#define USB_OTG_HCINTMSK_AHBERR_Pos (2U) \r
-#define USB_OTG_HCINTMSK_AHBERR_Msk (0x1UL << USB_OTG_HCINTMSK_AHBERR_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_HCINTMSK_AHBERR USB_OTG_HCINTMSK_AHBERR_Msk /*!< AHB error */\r
-#define USB_OTG_HCINTMSK_STALLM_Pos (3U) \r
-#define USB_OTG_HCINTMSK_STALLM_Msk (0x1UL << USB_OTG_HCINTMSK_STALLM_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_HCINTMSK_STALLM USB_OTG_HCINTMSK_STALLM_Msk /*!< STALL response received interrupt mask */\r
-#define USB_OTG_HCINTMSK_NAKM_Pos (4U) \r
-#define USB_OTG_HCINTMSK_NAKM_Msk (0x1UL << USB_OTG_HCINTMSK_NAKM_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_HCINTMSK_NAKM USB_OTG_HCINTMSK_NAKM_Msk /*!< NAK response received interrupt mask */\r
-#define USB_OTG_HCINTMSK_ACKM_Pos (5U) \r
-#define USB_OTG_HCINTMSK_ACKM_Msk (0x1UL << USB_OTG_HCINTMSK_ACKM_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_HCINTMSK_ACKM USB_OTG_HCINTMSK_ACKM_Msk /*!< ACK response received/transmitted interrupt mask */\r
-#define USB_OTG_HCINTMSK_NYET_Pos (6U) \r
-#define USB_OTG_HCINTMSK_NYET_Msk (0x1UL << USB_OTG_HCINTMSK_NYET_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_HCINTMSK_NYET USB_OTG_HCINTMSK_NYET_Msk /*!< response received interrupt mask */\r
-#define USB_OTG_HCINTMSK_TXERRM_Pos (7U) \r
-#define USB_OTG_HCINTMSK_TXERRM_Msk (0x1UL << USB_OTG_HCINTMSK_TXERRM_Pos) /*!< 0x00000080 */\r
-#define USB_OTG_HCINTMSK_TXERRM USB_OTG_HCINTMSK_TXERRM_Msk /*!< Transaction error mask */\r
-#define USB_OTG_HCINTMSK_BBERRM_Pos (8U) \r
-#define USB_OTG_HCINTMSK_BBERRM_Msk (0x1UL << USB_OTG_HCINTMSK_BBERRM_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_HCINTMSK_BBERRM USB_OTG_HCINTMSK_BBERRM_Msk /*!< Babble error mask */\r
-#define USB_OTG_HCINTMSK_FRMORM_Pos (9U) \r
-#define USB_OTG_HCINTMSK_FRMORM_Msk (0x1UL << USB_OTG_HCINTMSK_FRMORM_Pos) /*!< 0x00000200 */\r
-#define USB_OTG_HCINTMSK_FRMORM USB_OTG_HCINTMSK_FRMORM_Msk /*!< Frame overrun mask */\r
-#define USB_OTG_HCINTMSK_DTERRM_Pos (10U) \r
-#define USB_OTG_HCINTMSK_DTERRM_Msk (0x1UL << USB_OTG_HCINTMSK_DTERRM_Pos) /*!< 0x00000400 */\r
-#define USB_OTG_HCINTMSK_DTERRM USB_OTG_HCINTMSK_DTERRM_Msk /*!< Data toggle error mask */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPTSIZ register ********************/\r
-\r
-#define USB_OTG_DIEPTSIZ_XFRSIZ_Pos (0U) \r
-#define USB_OTG_DIEPTSIZ_XFRSIZ_Msk (0x7FFFFUL << USB_OTG_DIEPTSIZ_XFRSIZ_Pos) /*!< 0x0007FFFF */\r
-#define USB_OTG_DIEPTSIZ_XFRSIZ USB_OTG_DIEPTSIZ_XFRSIZ_Msk /*!< Transfer size */\r
-#define USB_OTG_DIEPTSIZ_PKTCNT_Pos (19U) \r
-#define USB_OTG_DIEPTSIZ_PKTCNT_Msk (0x3FFUL << USB_OTG_DIEPTSIZ_PKTCNT_Pos) /*!< 0x1FF80000 */\r
-#define USB_OTG_DIEPTSIZ_PKTCNT USB_OTG_DIEPTSIZ_PKTCNT_Msk /*!< Packet count */\r
-#define USB_OTG_DIEPTSIZ_MULCNT_Pos (29U) \r
-#define USB_OTG_DIEPTSIZ_MULCNT_Msk (0x3UL << USB_OTG_DIEPTSIZ_MULCNT_Pos) /*!< 0x60000000 */\r
-#define USB_OTG_DIEPTSIZ_MULCNT USB_OTG_DIEPTSIZ_MULCNT_Msk /*!< Packet count */\r
-/******************** Bit definition for USB_OTG_HCTSIZ register ********************/\r
-#define USB_OTG_HCTSIZ_XFRSIZ_Pos (0U) \r
-#define USB_OTG_HCTSIZ_XFRSIZ_Msk (0x7FFFFUL << USB_OTG_HCTSIZ_XFRSIZ_Pos) /*!< 0x0007FFFF */\r
-#define USB_OTG_HCTSIZ_XFRSIZ USB_OTG_HCTSIZ_XFRSIZ_Msk /*!< Transfer size */\r
-#define USB_OTG_HCTSIZ_PKTCNT_Pos (19U) \r
-#define USB_OTG_HCTSIZ_PKTCNT_Msk (0x3FFUL << USB_OTG_HCTSIZ_PKTCNT_Pos) /*!< 0x1FF80000 */\r
-#define USB_OTG_HCTSIZ_PKTCNT USB_OTG_HCTSIZ_PKTCNT_Msk /*!< Packet count */\r
-#define USB_OTG_HCTSIZ_DOPING_Pos (31U) \r
-#define USB_OTG_HCTSIZ_DOPING_Msk (0x1UL << USB_OTG_HCTSIZ_DOPING_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_HCTSIZ_DOPING USB_OTG_HCTSIZ_DOPING_Msk /*!< Do PING */\r
-#define USB_OTG_HCTSIZ_DPID_Pos (29U) \r
-#define USB_OTG_HCTSIZ_DPID_Msk (0x3UL << USB_OTG_HCTSIZ_DPID_Pos) /*!< 0x60000000 */\r
-#define USB_OTG_HCTSIZ_DPID USB_OTG_HCTSIZ_DPID_Msk /*!< Data PID */\r
-#define USB_OTG_HCTSIZ_DPID_0 (0x1UL << USB_OTG_HCTSIZ_DPID_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_HCTSIZ_DPID_1 (0x2UL << USB_OTG_HCTSIZ_DPID_Pos) /*!< 0x40000000 */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPDMA register ********************/\r
-#define USB_OTG_DIEPDMA_DMAADDR_Pos (0U) \r
-#define USB_OTG_DIEPDMA_DMAADDR_Msk (0xFFFFFFFFUL << USB_OTG_DIEPDMA_DMAADDR_Pos) /*!< 0xFFFFFFFF */\r
-#define USB_OTG_DIEPDMA_DMAADDR USB_OTG_DIEPDMA_DMAADDR_Msk /*!< DMA address */\r
-\r
-/******************** Bit definition for USB_OTG_HCDMA register ********************/\r
-#define USB_OTG_HCDMA_DMAADDR_Pos (0U) \r
-#define USB_OTG_HCDMA_DMAADDR_Msk (0xFFFFFFFFUL << USB_OTG_HCDMA_DMAADDR_Pos) /*!< 0xFFFFFFFF */\r
-#define USB_OTG_HCDMA_DMAADDR USB_OTG_HCDMA_DMAADDR_Msk /*!< DMA address */\r
-\r
-/******************** Bit definition for USB_OTG_DTXFSTS register ********************/\r
-#define USB_OTG_DTXFSTS_INEPTFSAV_Pos (0U) \r
-#define USB_OTG_DTXFSTS_INEPTFSAV_Msk (0xFFFFUL << USB_OTG_DTXFSTS_INEPTFSAV_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_DTXFSTS_INEPTFSAV USB_OTG_DTXFSTS_INEPTFSAV_Msk /*!< IN endpoint TxFIFO space available */\r
-\r
-/******************** Bit definition for USB_OTG_DIEPTXF register ********************/\r
-#define USB_OTG_DIEPTXF_INEPTXSA_Pos (0U) \r
-#define USB_OTG_DIEPTXF_INEPTXSA_Msk (0xFFFFUL << USB_OTG_DIEPTXF_INEPTXSA_Pos) /*!< 0x0000FFFF */\r
-#define USB_OTG_DIEPTXF_INEPTXSA USB_OTG_DIEPTXF_INEPTXSA_Msk /*!< IN endpoint FIFOx transmit RAM start address */\r
-#define USB_OTG_DIEPTXF_INEPTXFD_Pos (16U) \r
-#define USB_OTG_DIEPTXF_INEPTXFD_Msk (0xFFFFUL << USB_OTG_DIEPTXF_INEPTXFD_Pos) /*!< 0xFFFF0000 */\r
-#define USB_OTG_DIEPTXF_INEPTXFD USB_OTG_DIEPTXF_INEPTXFD_Msk /*!< IN endpoint TxFIFO depth */\r
-\r
-/******************** Bit definition for USB_OTG_DOEPCTL register ********************/\r
-#define USB_OTG_DOEPCTL_MPSIZ_Pos (0U) \r
-#define USB_OTG_DOEPCTL_MPSIZ_Msk (0x7FFUL << USB_OTG_DOEPCTL_MPSIZ_Pos) /*!< 0x000007FF */\r
-#define USB_OTG_DOEPCTL_MPSIZ USB_OTG_DOEPCTL_MPSIZ_Msk /*!< Maximum packet size */ /*!<Bit 1 */\r
-#define USB_OTG_DOEPCTL_USBAEP_Pos (15U) \r
-#define USB_OTG_DOEPCTL_USBAEP_Msk (0x1UL << USB_OTG_DOEPCTL_USBAEP_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_DOEPCTL_USBAEP USB_OTG_DOEPCTL_USBAEP_Msk /*!< USB active endpoint */\r
-#define USB_OTG_DOEPCTL_NAKSTS_Pos (17U) \r
-#define USB_OTG_DOEPCTL_NAKSTS_Msk (0x1UL << USB_OTG_DOEPCTL_NAKSTS_Pos) /*!< 0x00020000 */\r
-#define USB_OTG_DOEPCTL_NAKSTS USB_OTG_DOEPCTL_NAKSTS_Msk /*!< NAK status */\r
-#define USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Pos (28U) \r
-#define USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Msk (0x1UL << USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Pos) /*!< 0x10000000 */\r
-#define USB_OTG_DOEPCTL_SD0PID_SEVNFRM USB_OTG_DOEPCTL_SD0PID_SEVNFRM_Msk /*!< Set DATA0 PID */\r
-#define USB_OTG_DOEPCTL_SODDFRM_Pos (29U) \r
-#define USB_OTG_DOEPCTL_SODDFRM_Msk (0x1UL << USB_OTG_DOEPCTL_SODDFRM_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_DOEPCTL_SODDFRM USB_OTG_DOEPCTL_SODDFRM_Msk /*!< Set odd frame */\r
-#define USB_OTG_DOEPCTL_EPTYP_Pos (18U) \r
-#define USB_OTG_DOEPCTL_EPTYP_Msk (0x3UL << USB_OTG_DOEPCTL_EPTYP_Pos) /*!< 0x000C0000 */\r
-#define USB_OTG_DOEPCTL_EPTYP USB_OTG_DOEPCTL_EPTYP_Msk /*!< Endpoint type */\r
-#define USB_OTG_DOEPCTL_EPTYP_0 (0x1UL << USB_OTG_DOEPCTL_EPTYP_Pos) /*!< 0x00040000 */\r
-#define USB_OTG_DOEPCTL_EPTYP_1 (0x2UL << USB_OTG_DOEPCTL_EPTYP_Pos) /*!< 0x00080000 */\r
-#define USB_OTG_DOEPCTL_SNPM_Pos (20U) \r
-#define USB_OTG_DOEPCTL_SNPM_Msk (0x1UL << USB_OTG_DOEPCTL_SNPM_Pos) /*!< 0x00100000 */\r
-#define USB_OTG_DOEPCTL_SNPM USB_OTG_DOEPCTL_SNPM_Msk /*!< Snoop mode */\r
-#define USB_OTG_DOEPCTL_STALL_Pos (21U) \r
-#define USB_OTG_DOEPCTL_STALL_Msk (0x1UL << USB_OTG_DOEPCTL_STALL_Pos) /*!< 0x00200000 */\r
-#define USB_OTG_DOEPCTL_STALL USB_OTG_DOEPCTL_STALL_Msk /*!< STALL handshake */\r
-#define USB_OTG_DOEPCTL_CNAK_Pos (26U) \r
-#define USB_OTG_DOEPCTL_CNAK_Msk (0x1UL << USB_OTG_DOEPCTL_CNAK_Pos) /*!< 0x04000000 */\r
-#define USB_OTG_DOEPCTL_CNAK USB_OTG_DOEPCTL_CNAK_Msk /*!< Clear NAK */\r
-#define USB_OTG_DOEPCTL_SNAK_Pos (27U) \r
-#define USB_OTG_DOEPCTL_SNAK_Msk (0x1UL << USB_OTG_DOEPCTL_SNAK_Pos) /*!< 0x08000000 */\r
-#define USB_OTG_DOEPCTL_SNAK USB_OTG_DOEPCTL_SNAK_Msk /*!< Set NAK */\r
-#define USB_OTG_DOEPCTL_EPDIS_Pos (30U) \r
-#define USB_OTG_DOEPCTL_EPDIS_Msk (0x1UL << USB_OTG_DOEPCTL_EPDIS_Pos) /*!< 0x40000000 */\r
-#define USB_OTG_DOEPCTL_EPDIS USB_OTG_DOEPCTL_EPDIS_Msk /*!< Endpoint disable */\r
-#define USB_OTG_DOEPCTL_EPENA_Pos (31U) \r
-#define USB_OTG_DOEPCTL_EPENA_Msk (0x1UL << USB_OTG_DOEPCTL_EPENA_Pos) /*!< 0x80000000 */\r
-#define USB_OTG_DOEPCTL_EPENA USB_OTG_DOEPCTL_EPENA_Msk /*!< Endpoint enable */\r
-\r
-/******************** Bit definition for USB_OTG_DOEPINT register ********************/\r
-#define USB_OTG_DOEPINT_XFRC_Pos (0U) \r
-#define USB_OTG_DOEPINT_XFRC_Msk (0x1UL << USB_OTG_DOEPINT_XFRC_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_DOEPINT_XFRC USB_OTG_DOEPINT_XFRC_Msk /*!< Transfer completed interrupt */\r
-#define USB_OTG_DOEPINT_EPDISD_Pos (1U) \r
-#define USB_OTG_DOEPINT_EPDISD_Msk (0x1UL << USB_OTG_DOEPINT_EPDISD_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_DOEPINT_EPDISD USB_OTG_DOEPINT_EPDISD_Msk /*!< Endpoint disabled interrupt */\r
-#define USB_OTG_DOEPINT_AHBERR_Pos (2U)\r
-#define USB_OTG_DOEPINT_AHBERR_Msk (0x1UL << USB_OTG_DOEPINT_AHBERR_Pos) /*!< 0x00000004 */\r
-#define USB_OTG_DOEPINT_AHBERR USB_OTG_DOEPINT_AHBERR_Msk /*!< AHB Error (AHBErr) during an OUT transaction */\r
-#define USB_OTG_DOEPINT_STUP_Pos (3U) \r
-#define USB_OTG_DOEPINT_STUP_Msk (0x1UL << USB_OTG_DOEPINT_STUP_Pos) /*!< 0x00000008 */\r
-#define USB_OTG_DOEPINT_STUP USB_OTG_DOEPINT_STUP_Msk /*!< SETUP phase done */\r
-#define USB_OTG_DOEPINT_OTEPDIS_Pos (4U) \r
-#define USB_OTG_DOEPINT_OTEPDIS_Msk (0x1UL << USB_OTG_DOEPINT_OTEPDIS_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_DOEPINT_OTEPDIS USB_OTG_DOEPINT_OTEPDIS_Msk /*!< OUT token received when endpoint disabled */\r
-#define USB_OTG_DOEPINT_OTEPSPR_Pos (5U) \r
-#define USB_OTG_DOEPINT_OTEPSPR_Msk (0x1UL << USB_OTG_DOEPINT_OTEPSPR_Pos) /*!< 0x00000020 */\r
-#define USB_OTG_DOEPINT_OTEPSPR USB_OTG_DOEPINT_OTEPSPR_Msk /*!< Status Phase Received For Control Write */\r
-#define USB_OTG_DOEPINT_B2BSTUP_Pos (6U) \r
-#define USB_OTG_DOEPINT_B2BSTUP_Msk (0x1UL << USB_OTG_DOEPINT_B2BSTUP_Pos) /*!< 0x00000040 */\r
-#define USB_OTG_DOEPINT_B2BSTUP USB_OTG_DOEPINT_B2BSTUP_Msk /*!< Back-to-back SETUP packets received */\r
-#define USB_OTG_DOEPINT_OUTPKTERR_Pos (8U)\r
-#define USB_OTG_DOEPINT_OUTPKTERR_Msk (0x1UL << USB_OTG_DOEPINT_OUTPKTERR_Pos) /*!< 0x00000100 */\r
-#define USB_OTG_DOEPINT_OUTPKTERR USB_OTG_DOEPINT_OUTPKTERR_Msk /*!< OUT packet error */\r
-#define USB_OTG_DOEPINT_NAK_Pos (13U)\r
-#define USB_OTG_DOEPINT_NAK_Msk (0x1UL << USB_OTG_DOEPINT_NAK_Pos) /*!< 0x00002000 */\r
-#define USB_OTG_DOEPINT_NAK USB_OTG_DOEPINT_NAK_Msk /*!< NAK Packet is transmitted by the device */\r
-#define USB_OTG_DOEPINT_NYET_Pos (14U) \r
-#define USB_OTG_DOEPINT_NYET_Msk (0x1UL << USB_OTG_DOEPINT_NYET_Pos) /*!< 0x00004000 */\r
-#define USB_OTG_DOEPINT_NYET USB_OTG_DOEPINT_NYET_Msk /*!< NYET interrupt */\r
-#define USB_OTG_DOEPINT_STPKTRX_Pos (15U)\r
-#define USB_OTG_DOEPINT_STPKTRX_Msk (0x1UL << USB_OTG_DOEPINT_STPKTRX_Pos) /*!< 0x00008000 */\r
-#define USB_OTG_DOEPINT_STPKTRX USB_OTG_DOEPINT_STPKTRX_Msk /*!< Setup Packet Received */\r
-\r
-/******************** Bit definition for USB_OTG_DOEPTSIZ register ********************/\r
-#define USB_OTG_DOEPTSIZ_XFRSIZ_Pos (0U) \r
-#define USB_OTG_DOEPTSIZ_XFRSIZ_Msk (0x7FFFFUL << USB_OTG_DOEPTSIZ_XFRSIZ_Pos) /*!< 0x0007FFFF */\r
-#define USB_OTG_DOEPTSIZ_XFRSIZ USB_OTG_DOEPTSIZ_XFRSIZ_Msk /*!< Transfer size */\r
-#define USB_OTG_DOEPTSIZ_PKTCNT_Pos (19U) \r
-#define USB_OTG_DOEPTSIZ_PKTCNT_Msk (0x3FFUL << USB_OTG_DOEPTSIZ_PKTCNT_Pos) /*!< 0x1FF80000 */\r
-#define USB_OTG_DOEPTSIZ_PKTCNT USB_OTG_DOEPTSIZ_PKTCNT_Msk /*!< Packet count */\r
-\r
-#define USB_OTG_DOEPTSIZ_STUPCNT_Pos (29U) \r
-#define USB_OTG_DOEPTSIZ_STUPCNT_Msk (0x3UL << USB_OTG_DOEPTSIZ_STUPCNT_Pos) /*!< 0x60000000 */\r
-#define USB_OTG_DOEPTSIZ_STUPCNT USB_OTG_DOEPTSIZ_STUPCNT_Msk /*!< SETUP packet count */\r
-#define USB_OTG_DOEPTSIZ_STUPCNT_0 (0x1UL << USB_OTG_DOEPTSIZ_STUPCNT_Pos) /*!< 0x20000000 */\r
-#define USB_OTG_DOEPTSIZ_STUPCNT_1 (0x2UL << USB_OTG_DOEPTSIZ_STUPCNT_Pos) /*!< 0x40000000 */\r
-\r
-/******************** Bit definition for PCGCCTL register ********************/\r
-#define USB_OTG_PCGCCTL_STOPCLK_Pos (0U) \r
-#define USB_OTG_PCGCCTL_STOPCLK_Msk (0x1UL << USB_OTG_PCGCCTL_STOPCLK_Pos) /*!< 0x00000001 */\r
-#define USB_OTG_PCGCCTL_STOPCLK USB_OTG_PCGCCTL_STOPCLK_Msk /*!< SETUP packet count */\r
-#define USB_OTG_PCGCCTL_GATECLK_Pos (1U) \r
-#define USB_OTG_PCGCCTL_GATECLK_Msk (0x1UL << USB_OTG_PCGCCTL_GATECLK_Pos) /*!< 0x00000002 */\r
-#define USB_OTG_PCGCCTL_GATECLK USB_OTG_PCGCCTL_GATECLK_Msk /*!<Bit 0 */\r
-#define USB_OTG_PCGCCTL_PHYSUSP_Pos (4U) \r
-#define USB_OTG_PCGCCTL_PHYSUSP_Msk (0x1UL << USB_OTG_PCGCCTL_PHYSUSP_Pos) /*!< 0x00000010 */\r
-#define USB_OTG_PCGCCTL_PHYSUSP USB_OTG_PCGCCTL_PHYSUSP_Msk /*!<Bit 1 */\r
-\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* JPEG Encoder/Decoder */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for CONFR0 register ********************/\r
-#define JPEG_CONFR0_START_Pos (0U) \r
-#define JPEG_CONFR0_START_Msk (0x1UL << JPEG_CONFR0_START_Pos) /*!< 0x00000001 */\r
-#define JPEG_CONFR0_START JPEG_CONFR0_START_Msk /*!<Start/Stop bit */\r
-\r
-/******************** Bit definition for CONFR1 register *******************/\r
-#define JPEG_CONFR1_NF_Pos (0U) \r
-#define JPEG_CONFR1_NF_Msk (0x3UL << JPEG_CONFR1_NF_Pos) /*!< 0x00000003 */\r
-#define JPEG_CONFR1_NF JPEG_CONFR1_NF_Msk /*!<Number of color components */\r
-#define JPEG_CONFR1_NF_0 (0x1UL << JPEG_CONFR1_NF_Pos) /*!< 0x00000001 */\r
-#define JPEG_CONFR1_NF_1 (0x2UL << JPEG_CONFR1_NF_Pos) /*!< 0x00000002 */\r
-#define JPEG_CONFR1_RE_Pos (2U) \r
-#define JPEG_CONFR1_RE_Msk (0x1UL << JPEG_CONFR1_RE_Pos) /*!< 0x00000004 */\r
-#define JPEG_CONFR1_RE JPEG_CONFR1_RE_Msk /*!<Restart maker Enable */\r
-#define JPEG_CONFR1_DE_Pos (3U) \r
-#define JPEG_CONFR1_DE_Msk (0x1UL << JPEG_CONFR1_DE_Pos) /*!< 0x00000008 */\r
-#define JPEG_CONFR1_DE JPEG_CONFR1_DE_Msk /*!<Decoding Enable */\r
-#define JPEG_CONFR1_COLORSPACE_Pos (4U) \r
-#define JPEG_CONFR1_COLORSPACE_Msk (0x3UL << JPEG_CONFR1_COLORSPACE_Pos) /*!< 0x00000030 */\r
-#define JPEG_CONFR1_COLORSPACE JPEG_CONFR1_COLORSPACE_Msk /*!<Color Space */\r
-#define JPEG_CONFR1_COLORSPACE_0 (0x1UL << JPEG_CONFR1_COLORSPACE_Pos) /*!< 0x00000010 */\r
-#define JPEG_CONFR1_COLORSPACE_1 (0x2UL << JPEG_CONFR1_COLORSPACE_Pos) /*!< 0x00000020 */\r
-#define JPEG_CONFR1_NS_Pos (6U) \r
-#define JPEG_CONFR1_NS_Msk (0x3UL << JPEG_CONFR1_NS_Pos) /*!< 0x000000C0 */\r
-#define JPEG_CONFR1_NS JPEG_CONFR1_NS_Msk /*!<Number of components for Scan */\r
-#define JPEG_CONFR1_NS_0 (0x1UL << JPEG_CONFR1_NS_Pos) /*!< 0x00000040 */\r
-#define JPEG_CONFR1_NS_1 (0x2UL << JPEG_CONFR1_NS_Pos) /*!< 0x00000080 */\r
-#define JPEG_CONFR1_HDR_Pos (8U) \r
-#define JPEG_CONFR1_HDR_Msk (0x1UL << JPEG_CONFR1_HDR_Pos) /*!< 0x00000100 */\r
-#define JPEG_CONFR1_HDR JPEG_CONFR1_HDR_Msk /*!<Header Processing On/Off */\r
-#define JPEG_CONFR1_YSIZE_Pos (16U) \r
-#define JPEG_CONFR1_YSIZE_Msk (0xFFFFUL << JPEG_CONFR1_YSIZE_Pos) /*!< 0xFFFF0000 */\r
-#define JPEG_CONFR1_YSIZE JPEG_CONFR1_YSIZE_Msk /*!<Number of lines in source image */\r
-\r
-/******************** Bit definition for CONFR2 register *******************/\r
-#define JPEG_CONFR2_NMCU_Pos (0U) \r
-#define JPEG_CONFR2_NMCU_Msk (0x3FFFFFFUL << JPEG_CONFR2_NMCU_Pos) /*!< 0x03FFFFFF */\r
-#define JPEG_CONFR2_NMCU JPEG_CONFR2_NMCU_Msk /*!<Number of MCU units minus 1 to encode */\r
-\r
-/******************** Bit definition for CONFR3 register *******************/\r
-#define JPEG_CONFR3_NRST_Pos (0U) \r
-#define JPEG_CONFR3_NRST_Msk (0xFFFFUL << JPEG_CONFR3_NRST_Pos) /*!< 0x0000FFFF */\r
-#define JPEG_CONFR3_NRST JPEG_CONFR3_NRST_Msk /*!<Number of MCU between two restart makers minus 1 */\r
-#define JPEG_CONFR3_XSIZE_Pos (16U) \r
-#define JPEG_CONFR3_XSIZE_Msk (0xFFFFUL << JPEG_CONFR3_XSIZE_Pos) /*!< 0xFFFF0000 */\r
-#define JPEG_CONFR3_XSIZE JPEG_CONFR3_XSIZE_Msk /*!<Number of pixels per line */\r
-\r
-/******************** Bit definition for CONFR4 register *******************/\r
-#define JPEG_CONFR4_HD_Pos (0U) \r
-#define JPEG_CONFR4_HD_Msk (0x1UL << JPEG_CONFR4_HD_Pos) /*!< 0x00000001 */\r
-#define JPEG_CONFR4_HD JPEG_CONFR4_HD_Msk /*!<Selects the Huffman table for encoding the DC coefficients */\r
-#define JPEG_CONFR4_HA_Pos (1U) \r
-#define JPEG_CONFR4_HA_Msk (0x1UL << JPEG_CONFR4_HA_Pos) /*!< 0x00000002 */\r
-#define JPEG_CONFR4_HA JPEG_CONFR4_HA_Msk /*!<Selects the Huffman table for encoding the AC coefficients */\r
-#define JPEG_CONFR4_QT_Pos (2U) \r
-#define JPEG_CONFR4_QT_Msk (0x3UL << JPEG_CONFR4_QT_Pos) /*!< 0x0000000C */\r
-#define JPEG_CONFR4_QT JPEG_CONFR4_QT_Msk /*!<Selects quantization table associated with a color component */\r
-#define JPEG_CONFR4_QT_0 (0x1UL << JPEG_CONFR4_QT_Pos) /*!< 0x00000004 */\r
-#define JPEG_CONFR4_QT_1 (0x2UL << JPEG_CONFR4_QT_Pos) /*!< 0x00000008 */\r
-#define JPEG_CONFR4_NB_Pos (4U) \r
-#define JPEG_CONFR4_NB_Msk (0xFUL << JPEG_CONFR4_NB_Pos) /*!< 0x000000F0 */\r
-#define JPEG_CONFR4_NB JPEG_CONFR4_NB_Msk /*!<Number of data units minus 1 that belong to a particular color in the MCU */\r
-#define JPEG_CONFR4_NB_0 (0x1UL << JPEG_CONFR4_NB_Pos) /*!< 0x00000010 */\r
-#define JPEG_CONFR4_NB_1 (0x2UL << JPEG_CONFR4_NB_Pos) /*!< 0x00000020 */\r
-#define JPEG_CONFR4_NB_2 (0x4UL << JPEG_CONFR4_NB_Pos) /*!< 0x00000040 */\r
-#define JPEG_CONFR4_NB_3 (0x8UL << JPEG_CONFR4_NB_Pos) /*!< 0x00000080 */\r
-#define JPEG_CONFR4_VSF_Pos (8U) \r
-#define JPEG_CONFR4_VSF_Msk (0xFUL << JPEG_CONFR4_VSF_Pos) /*!< 0x00000F00 */\r
-#define JPEG_CONFR4_VSF JPEG_CONFR4_VSF_Msk /*!<Vertical sampling factor for component 1 */\r
-#define JPEG_CONFR4_VSF_0 (0x1UL << JPEG_CONFR4_VSF_Pos) /*!< 0x00000100 */\r
-#define JPEG_CONFR4_VSF_1 (0x2UL << JPEG_CONFR4_VSF_Pos) /*!< 0x00000200 */\r
-#define JPEG_CONFR4_VSF_2 (0x4UL << JPEG_CONFR4_VSF_Pos) /*!< 0x00000400 */\r
-#define JPEG_CONFR4_VSF_3 (0x8UL << JPEG_CONFR4_VSF_Pos) /*!< 0x00000800 */\r
-#define JPEG_CONFR4_HSF_Pos (12U) \r
-#define JPEG_CONFR4_HSF_Msk (0xFUL << JPEG_CONFR4_HSF_Pos) /*!< 0x0000F000 */\r
-#define JPEG_CONFR4_HSF JPEG_CONFR4_HSF_Msk /*!<Horizontal sampling factor for component 1 */\r
-#define JPEG_CONFR4_HSF_0 (0x1UL << JPEG_CONFR4_HSF_Pos) /*!< 0x00001000 */\r
-#define JPEG_CONFR4_HSF_1 (0x2UL << JPEG_CONFR4_HSF_Pos) /*!< 0x00002000 */\r
-#define JPEG_CONFR4_HSF_2 (0x4UL << JPEG_CONFR4_HSF_Pos) /*!< 0x00004000 */\r
-#define JPEG_CONFR4_HSF_3 (0x8UL << JPEG_CONFR4_HSF_Pos) /*!< 0x00008000 */\r
-\r
-/******************** Bit definition for CONFR5 register *******************/\r
-#define JPEG_CONFR5_HD_Pos (0U) \r
-#define JPEG_CONFR5_HD_Msk (0x1UL << JPEG_CONFR5_HD_Pos) /*!< 0x00000001 */\r
-#define JPEG_CONFR5_HD JPEG_CONFR5_HD_Msk /*!<Selects the Huffman table for encoding the DC coefficients */\r
-#define JPEG_CONFR5_HA_Pos (1U) \r
-#define JPEG_CONFR5_HA_Msk (0x1UL << JPEG_CONFR5_HA_Pos) /*!< 0x00000002 */\r
-#define JPEG_CONFR5_HA JPEG_CONFR5_HA_Msk /*!<Selects the Huffman table for encoding the AC coefficients */\r
-#define JPEG_CONFR5_QT_Pos (2U) \r
-#define JPEG_CONFR5_QT_Msk (0x3UL << JPEG_CONFR5_QT_Pos) /*!< 0x0000000C */\r
-#define JPEG_CONFR5_QT JPEG_CONFR5_QT_Msk /*!<Selects quantization table associated with a color component */\r
-#define JPEG_CONFR5_QT_0 (0x1UL << JPEG_CONFR5_QT_Pos) /*!< 0x00000004 */\r
-#define JPEG_CONFR5_QT_1 (0x2UL << JPEG_CONFR5_QT_Pos) /*!< 0x00000008 */\r
-#define JPEG_CONFR5_NB_Pos (4U) \r
-#define JPEG_CONFR5_NB_Msk (0xFUL << JPEG_CONFR5_NB_Pos) /*!< 0x000000F0 */\r
-#define JPEG_CONFR5_NB JPEG_CONFR5_NB_Msk /*!<Number of data units minus 1 that belong to a particular color in the MCU */\r
-#define JPEG_CONFR5_NB_0 (0x1UL << JPEG_CONFR5_NB_Pos) /*!< 0x00000010 */\r
-#define JPEG_CONFR5_NB_1 (0x2UL << JPEG_CONFR5_NB_Pos) /*!< 0x00000020 */\r
-#define JPEG_CONFR5_NB_2 (0x4UL << JPEG_CONFR5_NB_Pos) /*!< 0x00000040 */\r
-#define JPEG_CONFR5_NB_3 (0x8UL << JPEG_CONFR5_NB_Pos) /*!< 0x00000080 */\r
-#define JPEG_CONFR5_VSF_Pos (8U) \r
-#define JPEG_CONFR5_VSF_Msk (0xFUL << JPEG_CONFR5_VSF_Pos) /*!< 0x00000F00 */\r
-#define JPEG_CONFR5_VSF JPEG_CONFR5_VSF_Msk /*!<Vertical sampling factor for component 2 */\r
-#define JPEG_CONFR5_VSF_0 (0x1UL << JPEG_CONFR5_VSF_Pos) /*!< 0x00000100 */\r
-#define JPEG_CONFR5_VSF_1 (0x2UL << JPEG_CONFR5_VSF_Pos) /*!< 0x00000200 */\r
-#define JPEG_CONFR5_VSF_2 (0x4UL << JPEG_CONFR5_VSF_Pos) /*!< 0x00000400 */\r
-#define JPEG_CONFR5_VSF_3 (0x8UL << JPEG_CONFR5_VSF_Pos) /*!< 0x00000800 */\r
-#define JPEG_CONFR5_HSF_Pos (12U) \r
-#define JPEG_CONFR5_HSF_Msk (0xFUL << JPEG_CONFR5_HSF_Pos) /*!< 0x0000F000 */\r
-#define JPEG_CONFR5_HSF JPEG_CONFR5_HSF_Msk /*!<Horizontal sampling factor for component 2 */\r
-#define JPEG_CONFR5_HSF_0 (0x1UL << JPEG_CONFR5_HSF_Pos) /*!< 0x00001000 */\r
-#define JPEG_CONFR5_HSF_1 (0x2UL << JPEG_CONFR5_HSF_Pos) /*!< 0x00002000 */\r
-#define JPEG_CONFR5_HSF_2 (0x4UL << JPEG_CONFR5_HSF_Pos) /*!< 0x00004000 */\r
-#define JPEG_CONFR5_HSF_3 (0x8UL << JPEG_CONFR5_HSF_Pos) /*!< 0x00008000 */\r
-\r
-/******************** Bit definition for CONFR6 register *******************/\r
-#define JPEG_CONFR6_HD_Pos (0U) \r
-#define JPEG_CONFR6_HD_Msk (0x1UL << JPEG_CONFR6_HD_Pos) /*!< 0x00000001 */\r
-#define JPEG_CONFR6_HD JPEG_CONFR6_HD_Msk /*!<Selects the Huffman table for encoding the DC coefficients */\r
-#define JPEG_CONFR6_HA_Pos (1U) \r
-#define JPEG_CONFR6_HA_Msk (0x1UL << JPEG_CONFR6_HA_Pos) /*!< 0x00000002 */\r
-#define JPEG_CONFR6_HA JPEG_CONFR6_HA_Msk /*!<Selects the Huffman table for encoding the AC coefficients */\r
-#define JPEG_CONFR6_QT_Pos (2U) \r
-#define JPEG_CONFR6_QT_Msk (0x3UL << JPEG_CONFR6_QT_Pos) /*!< 0x0000000C */\r
-#define JPEG_CONFR6_QT JPEG_CONFR6_QT_Msk /*!<Selects quantization table associated with a color component */\r
-#define JPEG_CONFR6_QT_0 (0x1UL << JPEG_CONFR6_QT_Pos) /*!< 0x00000004 */\r
-#define JPEG_CONFR6_QT_1 (0x2UL << JPEG_CONFR6_QT_Pos) /*!< 0x00000008 */\r
-#define JPEG_CONFR6_NB_Pos (4U) \r
-#define JPEG_CONFR6_NB_Msk (0xFUL << JPEG_CONFR6_NB_Pos) /*!< 0x000000F0 */\r
-#define JPEG_CONFR6_NB JPEG_CONFR6_NB_Msk /*!<Number of data units minus 1 that belong to a particular color in the MCU */\r
-#define JPEG_CONFR6_NB_0 (0x1UL << JPEG_CONFR6_NB_Pos) /*!< 0x00000010 */\r
-#define JPEG_CONFR6_NB_1 (0x2UL << JPEG_CONFR6_NB_Pos) /*!< 0x00000020 */\r
-#define JPEG_CONFR6_NB_2 (0x4UL << JPEG_CONFR6_NB_Pos) /*!< 0x00000040 */\r
-#define JPEG_CONFR6_NB_3 (0x8UL << JPEG_CONFR6_NB_Pos) /*!< 0x00000080 */\r
-#define JPEG_CONFR6_VSF_Pos (8U) \r
-#define JPEG_CONFR6_VSF_Msk (0xFUL << JPEG_CONFR6_VSF_Pos) /*!< 0x00000F00 */\r
-#define JPEG_CONFR6_VSF JPEG_CONFR6_VSF_Msk /*!<Vertical sampling factor for component 2 */\r
-#define JPEG_CONFR6_VSF_0 (0x1UL << JPEG_CONFR6_VSF_Pos) /*!< 0x00000100 */\r
-#define JPEG_CONFR6_VSF_1 (0x2UL << JPEG_CONFR6_VSF_Pos) /*!< 0x00000200 */\r
-#define JPEG_CONFR6_VSF_2 (0x4UL << JPEG_CONFR6_VSF_Pos) /*!< 0x00000400 */\r
-#define JPEG_CONFR6_VSF_3 (0x8UL << JPEG_CONFR6_VSF_Pos) /*!< 0x00000800 */\r
-#define JPEG_CONFR6_HSF_Pos (12U) \r
-#define JPEG_CONFR6_HSF_Msk (0xFUL << JPEG_CONFR6_HSF_Pos) /*!< 0x0000F000 */\r
-#define JPEG_CONFR6_HSF JPEG_CONFR6_HSF_Msk /*!<Horizontal sampling factor for component 2 */\r
-#define JPEG_CONFR6_HSF_0 (0x1UL << JPEG_CONFR6_HSF_Pos) /*!< 0x00001000 */\r
-#define JPEG_CONFR6_HSF_1 (0x2UL << JPEG_CONFR6_HSF_Pos) /*!< 0x00002000 */\r
-#define JPEG_CONFR6_HSF_2 (0x4UL << JPEG_CONFR6_HSF_Pos) /*!< 0x00004000 */\r
-#define JPEG_CONFR6_HSF_3 (0x8UL << JPEG_CONFR6_HSF_Pos) /*!< 0x00008000 */\r
-\r
-/******************** Bit definition for CONFR7 register *******************/\r
-#define JPEG_CONFR7_HD_Pos (0U) \r
-#define JPEG_CONFR7_HD_Msk (0x1UL << JPEG_CONFR7_HD_Pos) /*!< 0x00000001 */\r
-#define JPEG_CONFR7_HD JPEG_CONFR7_HD_Msk /*!<Selects the Huffman table for encoding the DC coefficients */\r
-#define JPEG_CONFR7_HA_Pos (1U) \r
-#define JPEG_CONFR7_HA_Msk (0x1UL << JPEG_CONFR7_HA_Pos) /*!< 0x00000002 */\r
-#define JPEG_CONFR7_HA JPEG_CONFR7_HA_Msk /*!<Selects the Huffman table for encoding the AC coefficients */\r
-#define JPEG_CONFR7_QT_Pos (2U) \r
-#define JPEG_CONFR7_QT_Msk (0x3UL << JPEG_CONFR7_QT_Pos) /*!< 0x0000000C */\r
-#define JPEG_CONFR7_QT JPEG_CONFR7_QT_Msk /*!<Selects quantization table associated with a color component */\r
-#define JPEG_CONFR7_QT_0 (0x1UL << JPEG_CONFR7_QT_Pos) /*!< 0x00000004 */\r
-#define JPEG_CONFR7_QT_1 (0x2UL << JPEG_CONFR7_QT_Pos) /*!< 0x00000008 */\r
-#define JPEG_CONFR7_NB_Pos (4U) \r
-#define JPEG_CONFR7_NB_Msk (0xFUL << JPEG_CONFR7_NB_Pos) /*!< 0x000000F0 */\r
-#define JPEG_CONFR7_NB JPEG_CONFR7_NB_Msk /*!<Number of data units minus 1 that belong to a particular color in the MCU */\r
-#define JPEG_CONFR7_NB_0 (0x1UL << JPEG_CONFR7_NB_Pos) /*!< 0x00000010 */\r
-#define JPEG_CONFR7_NB_1 (0x2UL << JPEG_CONFR7_NB_Pos) /*!< 0x00000020 */\r
-#define JPEG_CONFR7_NB_2 (0x4UL << JPEG_CONFR7_NB_Pos) /*!< 0x00000040 */\r
-#define JPEG_CONFR7_NB_3 (0x8UL << JPEG_CONFR7_NB_Pos) /*!< 0x00000080 */\r
-#define JPEG_CONFR7_VSF_Pos (8U) \r
-#define JPEG_CONFR7_VSF_Msk (0xFUL << JPEG_CONFR7_VSF_Pos) /*!< 0x00000F00 */\r
-#define JPEG_CONFR7_VSF JPEG_CONFR7_VSF_Msk /*!<Vertical sampling factor for component 2 */\r
-#define JPEG_CONFR7_VSF_0 (0x1UL << JPEG_CONFR7_VSF_Pos) /*!< 0x00000100 */\r
-#define JPEG_CONFR7_VSF_1 (0x2UL << JPEG_CONFR7_VSF_Pos) /*!< 0x00000200 */\r
-#define JPEG_CONFR7_VSF_2 (0x4UL << JPEG_CONFR7_VSF_Pos) /*!< 0x00000400 */\r
-#define JPEG_CONFR7_VSF_3 (0x8UL << JPEG_CONFR7_VSF_Pos) /*!< 0x00000800 */\r
-#define JPEG_CONFR7_HSF_Pos (12U) \r
-#define JPEG_CONFR7_HSF_Msk (0xFUL << JPEG_CONFR7_HSF_Pos) /*!< 0x0000F000 */\r
-#define JPEG_CONFR7_HSF JPEG_CONFR7_HSF_Msk /*!<Horizontal sampling factor for component 2 */\r
-#define JPEG_CONFR7_HSF_0 (0x1UL << JPEG_CONFR7_HSF_Pos) /*!< 0x00001000 */\r
-#define JPEG_CONFR7_HSF_1 (0x2UL << JPEG_CONFR7_HSF_Pos) /*!< 0x00002000 */\r
-#define JPEG_CONFR7_HSF_2 (0x4UL << JPEG_CONFR7_HSF_Pos) /*!< 0x00004000 */\r
-#define JPEG_CONFR7_HSF_3 (0x8UL << JPEG_CONFR7_HSF_Pos) /*!< 0x00008000 */\r
-\r
-/******************** Bit definition for CR register *******************/\r
-#define JPEG_CR_JCEN_Pos (0U) \r
-#define JPEG_CR_JCEN_Msk (0x1UL << JPEG_CR_JCEN_Pos) /*!< 0x00000001 */\r
-#define JPEG_CR_JCEN JPEG_CR_JCEN_Msk /*!<Enable the JPEG Codec Core */\r
-#define JPEG_CR_IFTIE_Pos (1U) \r
-#define JPEG_CR_IFTIE_Msk (0x1UL << JPEG_CR_IFTIE_Pos) /*!< 0x00000002 */\r
-#define JPEG_CR_IFTIE JPEG_CR_IFTIE_Msk /*!<Input FIFO Threshold Interrupt Enable */\r
-#define JPEG_CR_IFNFIE_Pos (2U) \r
-#define JPEG_CR_IFNFIE_Msk (0x1UL << JPEG_CR_IFNFIE_Pos) /*!< 0x00000004 */\r
-#define JPEG_CR_IFNFIE JPEG_CR_IFNFIE_Msk /*!<Input FIFO Not Full Interrupt Enable */\r
-#define JPEG_CR_OFTIE_Pos (3U) \r
-#define JPEG_CR_OFTIE_Msk (0x1UL << JPEG_CR_OFTIE_Pos) /*!< 0x00000008 */\r
-#define JPEG_CR_OFTIE JPEG_CR_OFTIE_Msk /*!<Output FIFO Threshold Interrupt Enable */\r
-#define JPEG_CR_OFNEIE_Pos (4U) \r
-#define JPEG_CR_OFNEIE_Msk (0x1UL << JPEG_CR_OFNEIE_Pos) /*!< 0x00000010 */\r
-#define JPEG_CR_OFNEIE JPEG_CR_OFNEIE_Msk /*!<Output FIFO Not Empty Interrupt Enable */\r
-#define JPEG_CR_EOCIE_Pos (5U) \r
-#define JPEG_CR_EOCIE_Msk (0x1UL << JPEG_CR_EOCIE_Pos) /*!< 0x00000020 */\r
-#define JPEG_CR_EOCIE JPEG_CR_EOCIE_Msk /*!<End of Conversion Interrupt Enable */\r
-#define JPEG_CR_HPDIE_Pos (6U) \r
-#define JPEG_CR_HPDIE_Msk (0x1UL << JPEG_CR_HPDIE_Pos) /*!< 0x00000040 */\r
-#define JPEG_CR_HPDIE JPEG_CR_HPDIE_Msk /*!<Header Parsing Done Interrupt Enable */\r
-#define JPEG_CR_IDMAEN_Pos (11U) \r
-#define JPEG_CR_IDMAEN_Msk (0x1UL << JPEG_CR_IDMAEN_Pos) /*!< 0x00000800 */\r
-#define JPEG_CR_IDMAEN JPEG_CR_IDMAEN_Msk /*!<Enable the DMA request generation for the input FIFO */\r
-#define JPEG_CR_ODMAEN_Pos (12U) \r
-#define JPEG_CR_ODMAEN_Msk (0x1UL << JPEG_CR_ODMAEN_Pos) /*!< 0x00001000 */\r
-#define JPEG_CR_ODMAEN JPEG_CR_ODMAEN_Msk /*!<Enable the DMA request generation for the output FIFO */\r
-#define JPEG_CR_IFF_Pos (13U) \r
-#define JPEG_CR_IFF_Msk (0x1UL << JPEG_CR_IFF_Pos) /*!< 0x00002000 */\r
-#define JPEG_CR_IFF JPEG_CR_IFF_Msk /*!<Flush the input FIFO */\r
-#define JPEG_CR_OFF_Pos (14U) \r
-#define JPEG_CR_OFF_Msk (0x1UL << JPEG_CR_OFF_Pos) /*!< 0x00004000 */\r
-#define JPEG_CR_OFF JPEG_CR_OFF_Msk /*!<Flush the output FIFO */\r
-\r
-/******************** Bit definition for SR register *******************/\r
-#define JPEG_SR_IFTF_Pos (1U) \r
-#define JPEG_SR_IFTF_Msk (0x1UL << JPEG_SR_IFTF_Pos) /*!< 0x00000002 */\r
-#define JPEG_SR_IFTF JPEG_SR_IFTF_Msk /*!<Input FIFO is not full and is bellow its threshold flag */\r
-#define JPEG_SR_IFNFF_Pos (2U) \r
-#define JPEG_SR_IFNFF_Msk (0x1UL << JPEG_SR_IFNFF_Pos) /*!< 0x00000004 */\r
-#define JPEG_SR_IFNFF JPEG_SR_IFNFF_Msk /*!<Input FIFO Not Full Flag, a data can be written */\r
-#define JPEG_SR_OFTF_Pos (3U) \r
-#define JPEG_SR_OFTF_Msk (0x1UL << JPEG_SR_OFTF_Pos) /*!< 0x00000008 */\r
-#define JPEG_SR_OFTF JPEG_SR_OFTF_Msk /*!<Output FIFO is not empty and has reach its threshold */\r
-#define JPEG_SR_OFNEF_Pos (4U) \r
-#define JPEG_SR_OFNEF_Msk (0x1UL << JPEG_SR_OFNEF_Pos) /*!< 0x00000001 */\r
-#define JPEG_SR_OFNEF JPEG_SR_OFNEF_Msk /*!<Output FIFO is not empty, a data is available */\r
-#define JPEG_SR_EOCF_Pos (5U) \r
-#define JPEG_SR_EOCF_Msk (0x1UL << JPEG_SR_EOCF_Pos) /*!< 0x00000002 */\r
-#define JPEG_SR_EOCF JPEG_SR_EOCF_Msk /*!<JPEG Codec core has finished the encoding or the decoding process and than last data has been sent to the output FIFO */\r
-#define JPEG_SR_HPDF_Pos (6U) \r
-#define JPEG_SR_HPDF_Msk (0x1UL << JPEG_SR_HPDF_Pos) /*!< 0x00000004 */\r
-#define JPEG_SR_HPDF JPEG_SR_HPDF_Msk /*!<JPEG Codec has finished the parsing of the headers and the internal registers have been updated */\r
-#define JPEG_SR_COF_Pos (7U) \r
-#define JPEG_SR_COF_Msk (0x1UL << JPEG_SR_COF_Pos) /*!< 0x00000008 */\r
-#define JPEG_SR_COF JPEG_SR_COF_Msk /*!<JPEG Codec operation on going flag */\r
-\r
-/******************** Bit definition for CFR register *******************/\r
-#define JPEG_CFR_CEOCF_Pos (5U) \r
-#define JPEG_CFR_CEOCF_Msk (0x1UL << JPEG_CFR_CEOCF_Pos) /*!< 0x00000020 */\r
-#define JPEG_CFR_CEOCF JPEG_CFR_CEOCF_Msk /*!<Clear End of Conversion Flag */\r
-#define JPEG_CFR_CHPDF_Pos (6U) \r
-#define JPEG_CFR_CHPDF_Msk (0x1UL << JPEG_CFR_CHPDF_Pos) /*!< 0x00000040 */\r
-#define JPEG_CFR_CHPDF JPEG_CFR_CHPDF_Msk /*!<Clear Header Parsing Done Flag */\r
-\r
-/******************** Bit definition for DIR register ********************/\r
-#define JPEG_DIR_DATAIN_Pos (0U) \r
-#define JPEG_DIR_DATAIN_Msk (0xFFFFFFFFUL << JPEG_DIR_DATAIN_Pos) /*!< 0xFFFFFFFF */\r
-#define JPEG_DIR_DATAIN JPEG_DIR_DATAIN_Msk /*!<Data Input FIFO */\r
-\r
-/******************** Bit definition for DOR register ********************/\r
-#define JPEG_DOR_DATAOUT_Pos (0U) \r
-#define JPEG_DOR_DATAOUT_Msk (0xFFFFFFFFUL << JPEG_DOR_DATAOUT_Pos) /*!< 0xFFFFFFFF */\r
-#define JPEG_DOR_DATAOUT JPEG_DOR_DATAOUT_Msk /*!<Data Output FIFO */\r
-\r
-/******************************************************************************/\r
-/* */\r
-/* MDIOS */\r
-/* */\r
-/******************************************************************************/\r
-/******************** Bit definition for MDIOS_CR register *******************/\r
-#define MDIOS_CR_EN_Pos (0U) \r
-#define MDIOS_CR_EN_Msk (0x1UL << MDIOS_CR_EN_Pos) /*!< 0x00000001 */\r
-#define MDIOS_CR_EN MDIOS_CR_EN_Msk /*!<Peripheral enable */\r
-#define MDIOS_CR_WRIE_Pos (1U) \r
-#define MDIOS_CR_WRIE_Msk (0x1UL << MDIOS_CR_WRIE_Pos) /*!< 0x00000002 */\r
-#define MDIOS_CR_WRIE MDIOS_CR_WRIE_Msk /*!<Register write interrupt enable */\r
-#define MDIOS_CR_RDIE_Pos (2U) \r
-#define MDIOS_CR_RDIE_Msk (0x1UL << MDIOS_CR_RDIE_Pos) /*!< 0x00000004 */\r
-#define MDIOS_CR_RDIE MDIOS_CR_RDIE_Msk /*!<Register Read Interrupt Enable */\r
-#define MDIOS_CR_EIE_Pos (3U) \r
-#define MDIOS_CR_EIE_Msk (0x1UL << MDIOS_CR_EIE_Pos) /*!< 0x00000008 */\r
-#define MDIOS_CR_EIE MDIOS_CR_EIE_Msk /*!<Error interrupt enable */\r
-#define MDIOS_CR_DPC_Pos (7U) \r
-#define MDIOS_CR_DPC_Msk (0x1UL << MDIOS_CR_DPC_Pos) /*!< 0x00000080 */\r
-#define MDIOS_CR_DPC MDIOS_CR_DPC_Msk /*!<Disable Preamble Check */\r
-#define MDIOS_CR_PORT_ADDRESS_Pos (8U) \r
-#define MDIOS_CR_PORT_ADDRESS_Msk (0x1FUL << MDIOS_CR_PORT_ADDRESS_Pos) /*!< 0x00001F00 */\r
-#define MDIOS_CR_PORT_ADDRESS MDIOS_CR_PORT_ADDRESS_Msk /*!<PORT_ADDRESS[4:0] bits */\r
-#define MDIOS_CR_PORT_ADDRESS_0 (0x01UL << MDIOS_CR_PORT_ADDRESS_Pos) /*!< 0x00000100 */\r
-#define MDIOS_CR_PORT_ADDRESS_1 (0x02UL << MDIOS_CR_PORT_ADDRESS_Pos) /*!< 0x00000200 */\r
-#define MDIOS_CR_PORT_ADDRESS_2 (0x04UL << MDIOS_CR_PORT_ADDRESS_Pos) /*!< 0x00000400 */\r
-#define MDIOS_CR_PORT_ADDRESS_3 (0x08UL << MDIOS_CR_PORT_ADDRESS_Pos) /*!< 0x00000800 */\r
-#define MDIOS_CR_PORT_ADDRESS_4 (0x10UL << MDIOS_CR_PORT_ADDRESS_Pos) /*!< 0x00001000 */\r
-\r
-/******************** Bit definition for MDIOS_WRFR register *******************/\r
-#define MDIOS_WRFR_WRF_Pos (0U) \r
-#define MDIOS_WRFR_WRF_Msk (0xFFFFFFFFUL << MDIOS_WRFR_WRF_Pos) /*!< 0xFFFFFFFF */\r
-#define MDIOS_WRFR_WRF MDIOS_WRFR_WRF_Msk /*!<WRF[31:0] bits (Write flags for MDIO register 0 to 31) */\r
-\r
-/******************** Bit definition for MDIOS_CWRFR register *******************/\r
-#define MDIOS_CWRFR_CWRF_Pos (0U) \r
-#define MDIOS_CWRFR_CWRF_Msk (0xFFFFFFFFUL << MDIOS_CWRFR_CWRF_Pos) /*!< 0xFFFFFFFF */\r
-#define MDIOS_CWRFR_CWRF MDIOS_CWRFR_CWRF_Msk /*!<CWRF[31:0] bits (Clear the write flag for MDIO register 0 to 31) */\r
-\r
-/******************** Bit definition for MDIOS_RDFR register *******************/\r
-#define MDIOS_RDFR_RDF_Pos (0U) \r
-#define MDIOS_RDFR_RDF_Msk (0xFFFFFFFFUL << MDIOS_RDFR_RDF_Pos) /*!< 0xFFFFFFFF */\r
-#define MDIOS_RDFR_RDF MDIOS_RDFR_RDF_Msk /*!<RDF[31:0] bits (Read flags for MDIO registers 0 to 31) */\r
-\r
-/******************** Bit definition for MDIOS_CRDFR register *******************/\r
-#define MDIOS_CRDFR_CRDF_Pos (0U) \r
-#define MDIOS_CRDFR_CRDF_Msk (0xFFFFFFFFUL << MDIOS_CRDFR_CRDF_Pos) /*!< 0xFFFFFFFF */\r
-#define MDIOS_CRDFR_CRDF MDIOS_CRDFR_CRDF_Msk /*!<CRDF[31:0] bits (Clear the read flag for MDIO registers 0 to 31) */\r
-\r
-/******************** Bit definition for MDIOS_SR register *******************/\r
-#define MDIOS_SR_PERF_Pos (0U) \r
-#define MDIOS_SR_PERF_Msk (0x1UL << MDIOS_SR_PERF_Pos) /*!< 0x00000001 */\r
-#define MDIOS_SR_PERF MDIOS_SR_PERF_Msk /*!< Preamble error flag */\r
-#define MDIOS_SR_SERF_Pos (1U) \r
-#define MDIOS_SR_SERF_Msk (0x1UL << MDIOS_SR_SERF_Pos) /*!< 0x00000002 */\r
-#define MDIOS_SR_SERF MDIOS_SR_SERF_Msk /*!< Start error flag */\r
-#define MDIOS_SR_TERF_Pos (2U) \r
-#define MDIOS_SR_TERF_Msk (0x1UL << MDIOS_SR_TERF_Pos) /*!< 0x00000004 */\r
-#define MDIOS_SR_TERF MDIOS_SR_TERF_Msk /*!< Turnaround error flag */\r
-\r
-/******************** Bit definition for MDIOS_CLRFR register *******************/\r
-#define MDIOS_CLRFR_CPERF_Pos (0U) \r
-#define MDIOS_CLRFR_CPERF_Msk (0x1UL << MDIOS_CLRFR_CPERF_Pos) /*!< 0x00000001 */\r
-#define MDIOS_CLRFR_CPERF MDIOS_CLRFR_CPERF_Msk /*!< Clear the preamble error flag */\r
-#define MDIOS_CLRFR_CSERF_Pos (1U) \r
-#define MDIOS_CLRFR_CSERF_Msk (0x1UL << MDIOS_CLRFR_CSERF_Pos) /*!< 0x00000002 */\r
-#define MDIOS_CLRFR_CSERF MDIOS_CLRFR_CSERF_Msk /*!< Clear the start error flag */\r
-#define MDIOS_CLRFR_CTERF_Pos (2U) \r
-#define MDIOS_CLRFR_CTERF_Msk (0x1UL << MDIOS_CLRFR_CTERF_Pos) /*!< 0x00000004 */\r
-#define MDIOS_CLRFR_CTERF MDIOS_CLRFR_CTERF_Msk /*!< Clear the turnaround error flag */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup Exported_macros\r
- * @{\r
- */\r
-\r
-/******************************* ADC Instances ********************************/\r
-#define IS_ADC_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == ADC1) || \\r
- ((__INSTANCE__) == ADC2) || \\r
- ((__INSTANCE__) == ADC3))\r
-#define IS_ADC_MULTIMODE_MASTER_INSTANCE(INSTANCE) ((INSTANCE) == ADC1)\r
-\r
-#define IS_ADC_COMMON_INSTANCE(INSTANCE) ((INSTANCE) == ADC123_COMMON)\r
-\r
-/******************************* CAN Instances ********************************/\r
-#define IS_CAN_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == CAN1) || \\r
- ((__INSTANCE__) == CAN2) || \\r
- ((__INSTANCE__) == CAN3))\r
-/******************************* CRC Instances ********************************/\r
-#define IS_CRC_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == CRC)\r
-\r
-/******************************* DAC Instances ********************************/\r
-#define IS_DAC_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == DAC1)\r
-\r
-/******************************* DCMI Instances *******************************/\r
-#define IS_DCMI_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == DCMI)\r
-\r
-/****************************** DFSDM Instances *******************************/\r
-#define IS_DFSDM_FILTER_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DFSDM1_Filter0) || \\r
- ((INSTANCE) == DFSDM1_Filter1) || \\r
- ((INSTANCE) == DFSDM1_Filter2) || \\r
- ((INSTANCE) == DFSDM1_Filter3))\r
-\r
-#define IS_DFSDM_CHANNEL_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DFSDM1_Channel0) || \\r
- ((INSTANCE) == DFSDM1_Channel1) || \\r
- ((INSTANCE) == DFSDM1_Channel2) || \\r
- ((INSTANCE) == DFSDM1_Channel3) || \\r
- ((INSTANCE) == DFSDM1_Channel4) || \\r
- ((INSTANCE) == DFSDM1_Channel5) || \\r
- ((INSTANCE) == DFSDM1_Channel6) || \\r
- ((INSTANCE) == DFSDM1_Channel7))\r
-\r
-/******************************* DMA2D Instances *******************************/\r
-#define IS_DMA2D_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == DMA2D)\r
-\r
-/******************************** DMA Instances *******************************/\r
-#define IS_DMA_STREAM_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DMA1_Stream0) || \\r
- ((__INSTANCE__) == DMA1_Stream1) || \\r
- ((__INSTANCE__) == DMA1_Stream2) || \\r
- ((__INSTANCE__) == DMA1_Stream3) || \\r
- ((__INSTANCE__) == DMA1_Stream4) || \\r
- ((__INSTANCE__) == DMA1_Stream5) || \\r
- ((__INSTANCE__) == DMA1_Stream6) || \\r
- ((__INSTANCE__) == DMA1_Stream7) || \\r
- ((__INSTANCE__) == DMA2_Stream0) || \\r
- ((__INSTANCE__) == DMA2_Stream1) || \\r
- ((__INSTANCE__) == DMA2_Stream2) || \\r
- ((__INSTANCE__) == DMA2_Stream3) || \\r
- ((__INSTANCE__) == DMA2_Stream4) || \\r
- ((__INSTANCE__) == DMA2_Stream5) || \\r
- ((__INSTANCE__) == DMA2_Stream6) || \\r
- ((__INSTANCE__) == DMA2_Stream7))\r
-\r
-/******************************* GPIO Instances *******************************/\r
-#define IS_GPIO_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == GPIOA) || \\r
- ((__INSTANCE__) == GPIOB) || \\r
- ((__INSTANCE__) == GPIOC) || \\r
- ((__INSTANCE__) == GPIOD) || \\r
- ((__INSTANCE__) == GPIOE) || \\r
- ((__INSTANCE__) == GPIOF) || \\r
- ((__INSTANCE__) == GPIOG) || \\r
- ((__INSTANCE__) == GPIOH) || \\r
- ((__INSTANCE__) == GPIOI) || \\r
- ((__INSTANCE__) == GPIOJ) || \\r
- ((__INSTANCE__) == GPIOK))\r
-\r
-#define IS_GPIO_AF_INSTANCE(__INSTANCE__) (((__INSTANCE__) == GPIOA) || \\r
- ((__INSTANCE__) == GPIOB) || \\r
- ((__INSTANCE__) == GPIOC) || \\r
- ((__INSTANCE__) == GPIOD) || \\r
- ((__INSTANCE__) == GPIOE) || \\r
- ((__INSTANCE__) == GPIOF) || \\r
- ((__INSTANCE__) == GPIOG) || \\r
- ((__INSTANCE__) == GPIOH) || \\r
- ((__INSTANCE__) == GPIOI) || \\r
- ((__INSTANCE__) == GPIOJ) || \\r
- ((__INSTANCE__) == GPIOK))\r
-\r
-/****************************** CEC Instances *********************************/\r
-#define IS_CEC_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == CEC)\r
-\r
-/****************************** QSPI Instances *********************************/\r
-#define IS_QSPI_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == QUADSPI)\r
-\r
-\r
-/******************************** I2C Instances *******************************/\r
-#define IS_I2C_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == I2C1) || \\r
- ((__INSTANCE__) == I2C2) || \\r
- ((__INSTANCE__) == I2C3) || \\r
- ((__INSTANCE__) == I2C4))\r
-\r
-/****************************** SMBUS Instances *******************************/\r
-#define IS_SMBUS_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == I2C1) || \\r
- ((__INSTANCE__) == I2C2) || \\r
- ((__INSTANCE__) == I2C3) || \\r
- ((__INSTANCE__) == I2C4))\r
-\r
-\r
-/******************************** I2S Instances *******************************/\r
-#define IS_I2S_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == SPI1) || \\r
- ((__INSTANCE__) == SPI2) || \\r
- ((__INSTANCE__) == SPI3))\r
-\r
-/******************************* LPTIM Instances ********************************/\r
-#define IS_LPTIM_INSTANCE(__INSTANCE__) ((__INSTANCE__) == LPTIM1)\r
-\r
-/****************************** LTDC Instances ********************************/\r
-#define IS_LTDC_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == LTDC)\r
-\r
-/****************************** MDIOS Instances ********************************/\r
-#define IS_MDIOS_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == MDIOS)\r
-\r
-/****************************** MDIOS Instances ********************************/\r
-#define IS_JPEG_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == JPEG)\r
-\r
-\r
-/******************************* RNG Instances ********************************/\r
-#define IS_RNG_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == RNG)\r
-\r
-/****************************** RTC Instances *********************************/\r
-#define IS_RTC_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == RTC)\r
-\r
-/******************************* SAI Instances ********************************/\r
-#define IS_SAI_ALL_INSTANCE(__PERIPH__) (((__PERIPH__) == SAI1_Block_A) || \\r
- ((__PERIPH__) == SAI1_Block_B) || \\r
- ((__PERIPH__) == SAI2_Block_A) || \\r
- ((__PERIPH__) == SAI2_Block_B))\r
-/* Legacy define */\r
-#define IS_SAI_BLOCK_PERIPH IS_SAI_ALL_INSTANCE\r
-\r
-/******************************** SDMMC Instances *******************************/\r
-#define IS_SDMMC_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == SDMMC1) || \\r
- ((__INSTANCE__) == SDMMC2))\r
-\r
-/****************************** SPDIFRX Instances *********************************/\r
-#define IS_SPDIFRX_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == SPDIFRX)\r
-\r
-/******************************** SPI Instances *******************************/\r
-#define IS_SPI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == SPI1) || \\r
- ((__INSTANCE__) == SPI2) || \\r
- ((__INSTANCE__) == SPI3) || \\r
- ((__INSTANCE__) == SPI4) || \\r
- ((__INSTANCE__) == SPI5) || \\r
- ((__INSTANCE__) == SPI6))\r
-\r
-/****************** TIM Instances : All supported instances *******************/\r
-#define IS_TIM_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM6) || \\r
- ((__INSTANCE__) == TIM7) || \\r
- ((__INSTANCE__) == TIM8) || \\r
- ((__INSTANCE__) == TIM9) || \\r
- ((__INSTANCE__) == TIM10) || \\r
- ((__INSTANCE__) == TIM11) || \\r
- ((__INSTANCE__) == TIM12) || \\r
- ((__INSTANCE__) == TIM13) || \\r
- ((__INSTANCE__) == TIM14))\r
-\r
-/****************** TIM Instances : supporting 32 bits counter ****************/\r
-#define IS_TIM_32B_COUNTER_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM5))\r
-\r
-/****************** TIM Instances : supporting the break function *************/\r
-#define IS_TIM_BREAK_INSTANCE(INSTANCE) (((INSTANCE) == TIM1) || \\r
- ((INSTANCE) == TIM8))\r
-\r
-/************** TIM Instances : supporting Break source selection *************/\r
-#define IS_TIM_BREAKSOURCE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1) || \\r
- ((INSTANCE) == TIM8))\r
-\r
-/****************** TIM Instances : supporting 2 break inputs *****************/\r
-#define IS_TIM_BKIN2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1) || \\r
- ((INSTANCE) == TIM8))\r
-\r
-/************* TIM Instances : at least 1 capture/compare channel *************/\r
-#define IS_TIM_CC1_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8) || \\r
- ((__INSTANCE__) == TIM9) || \\r
- ((__INSTANCE__) == TIM10) || \\r
- ((__INSTANCE__) == TIM11) || \\r
- ((__INSTANCE__) == TIM12) || \\r
- ((__INSTANCE__) == TIM13) || \\r
- ((__INSTANCE__) == TIM14))\r
-\r
-/************ TIM Instances : at least 2 capture/compare channels *************/\r
-#define IS_TIM_CC2_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8) || \\r
- ((__INSTANCE__) == TIM9) || \\r
- ((__INSTANCE__) == TIM12))\r
-\r
-/************ TIM Instances : at least 3 capture/compare channels *************/\r
-#define IS_TIM_CC3_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/************ TIM Instances : at least 4 capture/compare channels *************/\r
-#define IS_TIM_CC4_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****************** TIM Instances : at least 5 capture/compare channels *******/\r
-#define IS_TIM_CC5_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****************** TIM Instances : at least 6 capture/compare channels *******/\r
-#define IS_TIM_CC6_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/************ TIM Instances : DMA requests generation (TIMx_DIER.COMDE) *******/\r
-#define IS_TIM_CCDMA_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****************** TIM Instances : DMA requests generation (TIMx_DIER.UDE) ***/\r
-#define IS_TIM_DMA_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM6) || \\r
- ((__INSTANCE__) == TIM7))\r
-\r
-/************ TIM Instances : DMA requests generation (CCxDE) *****************/\r
-#define IS_TIM_DMA_CC_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/******************** TIM Instances : DMA burst feature ***********************/\r
-#define IS_TIM_DMABURST_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****************** TIM Instances : supporting combined 3-phase PWM mode ******/\r
-#define IS_TIM_COMBINED3PHASEPWM_INSTANCE(__INSTANCE__) \\r
- (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****************** TIM Instances : supporting counting mode selection ********/\r
-#define IS_TIM_COUNTER_MODE_SELECT_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
- \r
-/****************** TIM Instances : supporting encoder interface **************/\r
-#define IS_TIM_ENCODER_INTERFACE_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
- \r
-/****************** TIM Instances : supporting OCxREF clear *******************/\r
-#define IS_TIM_OCXREF_CLEAR_INSTANCE(__INSTANCE__)\\r
- (((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5))\r
-\r
-/****************** TIM Instances : supporting external clock mode 1 for TIX inputs*/\r
-#define IS_TIM_CLOCKSOURCE_TIX_INSTANCE(__INSTANCE__)\\r
- (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****************** TIM Instances : supporting internal trigger inputs(ITRX) *******/\r
-#define IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(__INSTANCE__)\\r
- (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/******************** TIM Instances : Advanced-control timers *****************/\r
-#define IS_TIM_ADVANCED_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/******************* TIM Instances : Timer input XOR function *****************/\r
-#define IS_TIM_XOR_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****** TIM Instances : master mode available (TIMx_CR2.MMS available )********/\r
-#define IS_TIM_MASTER_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM6) || \\r
- ((__INSTANCE__) == TIM7) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/*********** TIM Instances : Slave mode available (TIMx_SMCR available )*******/\r
-#define IS_TIM_SLAVE_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8) || \\r
- ((__INSTANCE__) == TIM9) || \\r
- ((__INSTANCE__) == TIM12))\r
-\r
-/***************** TIM Instances : external trigger input available ************/\r
-#define IS_TIM_ETR_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
-\r
-/****************** TIM Instances : remapping capability **********************/\r
-#define IS_TIM_REMAP_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM11))\r
-\r
-/******************* TIM Instances : output(s) available **********************/\r
-#define IS_TIM_CCX_INSTANCE(__INSTANCE__, __CHANNEL__) \\r
- ((((__INSTANCE__) == TIM1) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_4) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_5) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_6))) \\r
- || \\r
- (((__INSTANCE__) == TIM2) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_4))) \\r
- || \\r
- (((__INSTANCE__) == TIM3) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_4))) \\r
- || \\r
- (((__INSTANCE__) == TIM4) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_4))) \\r
- || \\r
- (((__INSTANCE__) == TIM5) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_4))) \\r
- || \\r
- (((__INSTANCE__) == TIM8) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_4) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_5) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_6))) \\r
- || \\r
- (((__INSTANCE__) == TIM9) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2))) \\r
- || \\r
- (((__INSTANCE__) == TIM10) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1))) \\r
- || \\r
- (((__INSTANCE__) == TIM11) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1))) \\r
- || \\r
- (((__INSTANCE__) == TIM12) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2))) \\r
- || \\r
- (((__INSTANCE__) == TIM13) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1))) \\r
- || \\r
- (((__INSTANCE__) == TIM14) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1))))\r
-\r
-/************ TIM Instances : complementary output(s) available ***************/\r
-#define IS_TIM_CCXN_INSTANCE(__INSTANCE__, __CHANNEL__) \\r
- ((((__INSTANCE__) == TIM1) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3))) \\r
- || \\r
- (((__INSTANCE__) == TIM8) && \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3))))\r
-\r
-/****************** TIM Instances : supporting ADC triggering through TRGO2 ***/\r
-#define IS_TIM_TRGO2_INSTANCE(__INSTANCE__)\\r
- (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8) )\r
-\r
-/****************** TIM Instances : supporting synchronization ****************/\r
-#define IS_TIM_SYNCHRO_INSTANCE(__INSTANCE__)\\r
- (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM6) || \\r
- ((__INSTANCE__) == TIM7) || \\r
- ((__INSTANCE__) == TIM8))\r
- \r
-/****************** TIM Instances : supporting clock division *****************/\r
-#define IS_TIM_CLOCK_DIVISION_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8) || \\r
- ((__INSTANCE__) == TIM9) || \\r
- ((__INSTANCE__) == TIM10) || \\r
- ((__INSTANCE__) == TIM11) || \\r
- ((__INSTANCE__) == TIM12) || \\r
- ((__INSTANCE__) == TIM13) || \\r
- ((__INSTANCE__) == TIM14))\r
- \r
-/****************** TIM Instances : supporting repetition counter *************/\r
-#define IS_TIM_REPETITION_COUNTER_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8))\r
- \r
-/****** TIM Instances : supporting external clock mode 1 for ETRF input *******/\r
-#define IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8) || \\r
- ((__INSTANCE__) == TIM9) || \\r
- ((__INSTANCE__) == TIM12))\r
- \r
-/****** TIM Instances : supporting external clock mode 2 for ETRF input *******/\r
-#define IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
- \r
-/****************** TIM Instances : supporting Hall sensor interface **********/\r
-#define IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM2) || \\r
- ((__INSTANCE__) == TIM3) || \\r
- ((__INSTANCE__) == TIM4) || \\r
- ((__INSTANCE__) == TIM5) || \\r
- ((__INSTANCE__) == TIM8))\r
- \r
-/****************** TIM Instances : supporting commutation event generation ***/\r
-#define IS_TIM_COMMUTATION_EVENT_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1) || \\r
- ((__INSTANCE__) == TIM8)) \r
-\r
-/******************** USART Instances : Synchronous mode **********************/\r
-#define IS_USART_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == USART6))\r
-\r
-/******************** UART Instances : Asynchronous mode **********************/\r
-#define IS_UART_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == UART4) || \\r
- ((__INSTANCE__) == UART5) || \\r
- ((__INSTANCE__) == USART6) || \\r
- ((__INSTANCE__) == UART7) || \\r
- ((__INSTANCE__) == UART8))\r
-\r
-/****************** UART Instances : Auto Baud Rate detection ****************/\r
-#define IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == USART6))\r
-\r
-/****************** UART Instances : Driver Enable *****************/\r
-#define IS_UART_DRIVER_ENABLE_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == UART4) || \\r
- ((__INSTANCE__) == UART5) || \\r
- ((__INSTANCE__) == USART6) || \\r
- ((__INSTANCE__) == UART7) || \\r
- ((__INSTANCE__) == UART8))\r
-\r
-/******************** UART Instances : Half-Duplex mode **********************/\r
-#define IS_UART_HALFDUPLEX_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == UART4) || \\r
- ((__INSTANCE__) == UART5) || \\r
- ((__INSTANCE__) == USART6) || \\r
- ((__INSTANCE__) == UART7) || \\r
- ((__INSTANCE__) == UART8))\r
-\r
-/****************** UART Instances : Hardware Flow control ********************/\r
-#define IS_UART_HWFLOW_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == UART4) || \\r
- ((__INSTANCE__) == UART5) || \\r
- ((__INSTANCE__) == USART6) || \\r
- ((__INSTANCE__) == UART7) || \\r
- ((__INSTANCE__) == UART8))\r
-\r
-/******************** UART Instances : LIN mode **********************/\r
-#define IS_UART_LIN_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == UART4) || \\r
- ((__INSTANCE__) == UART5) || \\r
- ((__INSTANCE__) == USART6) || \\r
- ((__INSTANCE__) == UART7) || \\r
- ((__INSTANCE__) == UART8))\r
-\r
-/********************* UART Instances : Smart card mode ***********************/\r
-#define IS_SMARTCARD_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == USART6))\r
-\r
-/*********************** UART Instances : IRDA mode ***************************/\r
-#define IS_IRDA_INSTANCE(__INSTANCE__) (((__INSTANCE__) == USART1) || \\r
- ((__INSTANCE__) == USART2) || \\r
- ((__INSTANCE__) == USART3) || \\r
- ((__INSTANCE__) == UART4) || \\r
- ((__INSTANCE__) == UART5) || \\r
- ((__INSTANCE__) == USART6) || \\r
- ((__INSTANCE__) == UART7) || \\r
- ((__INSTANCE__) == UART8))\r
-\r
-/****************************** IWDG Instances ********************************/\r
-#define IS_IWDG_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == IWDG)\r
-\r
-/****************************** WWDG Instances ********************************/\r
-#define IS_WWDG_ALL_INSTANCE(__INSTANCE__) ((__INSTANCE__) == WWDG)\r
-\r
-/*********************** PCD Instances ****************************************/\r
-#define IS_PCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_OTG_FS) || \\r
- ((INSTANCE) == USB_OTG_HS))\r
-\r
-/*********************** HCD Instances ****************************************/\r
-#define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_OTG_FS) || \\r
- ((INSTANCE) == USB_OTG_HS))\r
-\r
-/******************************************************************************/\r
-/* For a painless codes migration between the STM32F7xx device product */\r
-/* lines, the aliases defined below are put in place to overcome the */\r
-/* differences in the interrupt handlers and IRQn definitions. */\r
-/* No need to update developed interrupt code when moving across */\r
-/* product lines within the same STM32F7 Family */\r
-/******************************************************************************/\r
-\r
-/* Aliases for __IRQn */\r
-#define HASH_RNG_IRQn RNG_IRQn\r
-\r
-/* Aliases for __IRQHandler */\r
-#define HASH_RNG_IRQHandler RNG_IRQHandler\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif /* __cplusplus */\r
-\r
-#endif /* __STM32F767xx_H */\r
-\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx.h\r
- * @author MCD Application Team\r
- * @brief CMSIS STM32F7xx Device Peripheral Access Layer Header File.\r
- *\r
- * The file is the unique include file that the application programmer\r
- * is using in the C source code, usually in main.c. This file contains:\r
- * - Configuration section that allows to select:\r
- * - The STM32F7xx device used in the target application\r
- * - To use or not the peripheral\92s drivers in application code(i.e.\r
- * code will be based on direct access to peripheral\92s registers\r
- * rather than drivers API), this option is controlled by\r
- * "#define USE_HAL_DRIVER"\r
- *\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>\r
- *\r
- * Redistribution and use in source and binary forms, with or without modification,\r
- * are permitted provided that the following conditions are met:\r
- * 1. Redistributions of source code must retain the above copyright notice,\r
- * this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright notice,\r
- * this list of conditions and the following disclaimer in the documentation\r
- * and/or other materials provided with the distribution.\r
- * 3. Neither the name of STMicroelectronics nor the names of its contributors\r
- * may be used to endorse or promote products derived from this software\r
- * without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/** @addtogroup CMSIS\r
- * @{\r
- */\r
-\r
-/** @addtogroup stm32f7xx\r
- * @{\r
- */\r
-\r
-#ifndef __STM32F7xx_H\r
-#define __STM32F7xx_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif /* __cplusplus */\r
-\r
-/** @addtogroup Library_configuration_section\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief STM32 Family\r
- */\r
-#if !defined (STM32F7)\r
-#define STM32F7\r
-#endif /* STM32F7 */\r
-\r
-/* Uncomment the line below according to the target STM32 device used in your\r
- application\r
- */\r
-#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F767xx) && \\r
- !defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && !defined (STM32F722xx) && \\r
- !defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && !defined (STM32F730xx) && \\r
- !defined (STM32F750xx)\r
-\r
- /* #define STM32F756xx */ /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,\r
- STM32F756NG Devices */\r
- /* #define STM32F746xx */ /*!< STM32F746VE, STM32F746VG, STM32F746ZE, STM32F746ZG, STM32F746IE, STM32F746IG,\r
- STM32F746BE, STM32F746BG, STM32F746NE, STM32F746NG Devices */\r
- /* #define STM32F745xx */ /*!< STM32F745VE, STM32F745VG, STM32F745ZG, STM32F745ZE, STM32F745IE, STM32F745IG Devices */\r
- /* #define STM32F765xx */ /*!< STM32F765BI, STM32F765BG, STM32F765NI, STM32F765NG, STM32F765II, STM32F765IG,\r
- STM32F765ZI, STM32F765ZG, STM32F765VI, STM32F765VG Devices */\r
- /* #define STM32F767xx */ /*!< STM32F767BG, STM32F767BI, STM32F767IG, STM32F767II, STM32F767NG, STM32F767NI,\r
- STM32F767VG, STM32F767VI, STM32F767ZG, STM32F767ZI Devices */\r
- /* #define STM32F769xx */ /*!< STM32F769AG, STM32F769AI, STM32F769BG, STM32F769BI, STM32F769IG, STM32F769II,\r
- STM32F769NG, STM32F769NI, STM32F768AI Devices */\r
- /* #define STM32F777xx */ /*!< STM32F777VI, STM32F777ZI, STM32F777II, STM32F777BI, STM32F777NI Devices */\r
- /* #define STM32F779xx */ /*!< STM32F779II, STM32F779BI, STM32F779NI, STM32F779AI, STM32F778AI Devices */\r
- /* #define STM32F722xx */ /*!< STM32F722IE, STM32F722ZE, STM32F722VE, STM32F722RE, STM32F722IC, STM32F722ZC,\r
- STM32F722VC, STM32F722RC Devices */\r
- /* #define STM32F723xx */ /*!< STM32F723IE, STM32F723ZE, STM32F723VE, STM32F723IC, STM32F723ZC, STM32F723VC Devices */\r
- /* #define STM32F732xx */ /*!< STM32F732IE, STM32F732ZE, STM32F732VE, STM32F732RE Devices */\r
- /* #define STM32F733xx */ /*!< STM32F733IE, STM32F733ZE, STM32F733VE Devices */\r
- /* #define STM32F730xx */ /*!< STM32F730R, STM32F730V, STM32F730Z, STM32F730I Devices */\r
- /* #define STM32F750xx */ /*!< STM32F750V, STM32F750Z, STM32F750N Devices */\r
-#endif\r
-\r
-/* Tip: To avoid modifying this file each time you need to switch between these\r
- devices, you can define the device in your toolchain compiler preprocessor.\r
- */\r
-\r
-#if !defined (USE_HAL_DRIVER)\r
-/**\r
- * @brief Comment the line below if you will not use the peripherals drivers.\r
- In this case, these drivers will not be included and the application code will\r
- be based on direct access to peripherals registers\r
- */\r
- /*#define USE_HAL_DRIVER */\r
-#endif /* USE_HAL_DRIVER */\r
-\r
-/**\r
- * @brief CMSIS Device version number V1.2.4\r
- */\r
-#define __STM32F7_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */\r
-#define __STM32F7_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */\r
-#define __STM32F7_CMSIS_VERSION_SUB2 (0x04) /*!< [15:8] sub2 version */\r
-#define __STM32F7_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */\r
-#define __STM32F7_CMSIS_VERSION ((__STM32F7_CMSIS_VERSION_MAIN << 24)\\r
- |(__STM32F7_CMSIS_VERSION_SUB1 << 16)\\r
- |(__STM32F7_CMSIS_VERSION_SUB2 << 8 )\\r
- |(__STM32F7_CMSIS_VERSION_RC))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup Device_Included\r
- * @{\r
- */\r
-#if defined(STM32F722xx)\r
- #include "stm32f722xx.h"\r
-#elif defined(STM32F723xx)\r
- #include "stm32f723xx.h"\r
-#elif defined(STM32F732xx)\r
- #include "stm32f732xx.h"\r
-#elif defined(STM32F733xx)\r
- #include "stm32f733xx.h"\r
-#elif defined(STM32F756xx)\r
- #include "stm32f756xx.h"\r
-#elif defined(STM32F746xx)\r
- #include "stm32f746xx.h"\r
-#elif defined(STM32F745xx)\r
- #include "stm32f745xx.h"\r
-#elif defined(STM32F765xx)\r
- #include "stm32f765xx.h"\r
-#elif defined(STM32F767xx)\r
- #include "stm32f767xx.h"\r
-#elif defined(STM32F769xx)\r
- #include "stm32f769xx.h"\r
-#elif defined(STM32F777xx)\r
- #include "stm32f777xx.h"\r
-#elif defined(STM32F779xx)\r
- #include "stm32f779xx.h"\r
-#elif defined(STM32F730xx)\r
- #include "stm32f730xx.h"\r
-#elif defined(STM32F750xx)\r
- #include "stm32f750xx.h"\r
-#else\r
- #error "Please select first the target STM32F7xx device used in your application (in stm32f7xx.h file)"\r
-#endif\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup Exported_types\r
- * @{\r
- */\r
-typedef enum\r
-{\r
- RESET = 0U,\r
- SET = !RESET\r
-} FlagStatus, ITStatus;\r
-\r
-typedef enum\r
-{\r
- DISABLE = 0U,\r
- ENABLE = !DISABLE\r
-} FunctionalState;\r
-#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))\r
-\r
-typedef enum\r
-{\r
- SUCCESS = 0U,\r
- ERROR = !SUCCESS\r
-} ErrorStatus;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup Exported_macro\r
- * @{\r
- */\r
-#define SET_BIT(REG, BIT) ((REG) |= (BIT))\r
-\r
-#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))\r
-\r
-#define READ_BIT(REG, BIT) ((REG) & (BIT))\r
-\r
-#define CLEAR_REG(REG) ((REG) = (0x0))\r
-\r
-#define WRITE_REG(REG, VAL) ((REG) = (VAL))\r
-\r
-#define READ_REG(REG) ((REG))\r
-\r
-#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))\r
-\r
-#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef USE_HAL_DRIVER\r
- #include "stm32f7xx_hal.h"\r
-#endif /* USE_HAL_DRIVER */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif /* __cplusplus */\r
-\r
-#endif /* __STM32F7xx_H */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file system_stm32f7xx.h\r
- * @author MCD Application Team\r
- * @brief CMSIS Cortex-M7 Device System Source File for STM32F7xx devices. \r
- ****************************************************************************** \r
- * @attention\r
- *\r
- * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>\r
- *\r
- * Redistribution and use in source and binary forms, with or without modification,\r
- * are permitted provided that the following conditions are met:\r
- * 1. Redistributions of source code must retain the above copyright notice,\r
- * this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright notice,\r
- * this list of conditions and the following disclaimer in the documentation\r
- * and/or other materials provided with the distribution.\r
- * 3. Neither the name of STMicroelectronics nor the names of its contributors\r
- * may be used to endorse or promote products derived from this software\r
- * without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- ****************************************************************************** \r
- */\r
-\r
-/** @addtogroup CMSIS\r
- * @{\r
- */\r
-\r
-/** @addtogroup stm32f7xx_system\r
- * @{\r
- */ \r
- \r
-/**\r
- * @brief Define to prevent recursive inclusion\r
- */\r
-#ifndef __SYSTEM_STM32F7XX_H\r
-#define __SYSTEM_STM32F7XX_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif \r
-\r
-/** @addtogroup STM32F7xx_System_Includes\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @addtogroup STM32F7xx_System_Exported_Variables\r
- * @{\r
- */\r
- /* The SystemCoreClock variable is updated in three ways:\r
- 1) by calling CMSIS function SystemCoreClockUpdate()\r
- 2) by calling HAL API function HAL_RCC_GetSysClockFreq()\r
- 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency \r
- Note: If you use this function to configure the system clock; then there\r
- is no need to call the 2 first functions listed above, since SystemCoreClock\r
- variable is updated automatically.\r
- */\r
-extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */\r
-\r
-extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */\r
-extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Exported_Constants\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Exported_Macros\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup STM32F7xx_System_Exported_Functions\r
- * @{\r
- */\r
- \r
-extern void SystemInit(void);\r
-extern void SystemCoreClockUpdate(void);\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /*__SYSTEM_STM32F7XX_H */\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/**\r
- * @}\r
- */ \r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file cmsis_armcc.h\r
- * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file\r
- * @version V5.0.4\r
- * @date 10. January 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#ifndef __CMSIS_ARMCC_H\r
-#define __CMSIS_ARMCC_H\r
-\r
-\r
-#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677)\r
- #error "Please use Arm Compiler Toolchain V4.0.677 or later!"\r
-#endif\r
-\r
-/* CMSIS compiler control architecture macros */\r
-#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \\r
- (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) )\r
- #define __ARM_ARCH_6M__ 1\r
-#endif\r
-\r
-#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1))\r
- #define __ARM_ARCH_7M__ 1\r
-#endif\r
-\r
-#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1))\r
- #define __ARM_ARCH_7EM__ 1\r
-#endif\r
-\r
- /* __ARM_ARCH_8M_BASE__ not applicable */\r
- /* __ARM_ARCH_8M_MAIN__ not applicable */\r
-\r
-\r
-/* CMSIS compiler specific defines */\r
-#ifndef __ASM\r
- #define __ASM __asm\r
-#endif\r
-#ifndef __INLINE\r
- #define __INLINE __inline\r
-#endif\r
-#ifndef __STATIC_INLINE\r
- #define __STATIC_INLINE static __inline\r
-#endif\r
-#ifndef __STATIC_FORCEINLINE \r
- #define __STATIC_FORCEINLINE static __forceinline\r
-#endif \r
-#ifndef __NO_RETURN\r
- #define __NO_RETURN __declspec(noreturn)\r
-#endif\r
-#ifndef __USED\r
- #define __USED __attribute__((used))\r
-#endif\r
-#ifndef __WEAK\r
- #define __WEAK __attribute__((weak))\r
-#endif\r
-#ifndef __PACKED\r
- #define __PACKED __attribute__((packed))\r
-#endif\r
-#ifndef __PACKED_STRUCT\r
- #define __PACKED_STRUCT __packed struct\r
-#endif\r
-#ifndef __PACKED_UNION\r
- #define __PACKED_UNION __packed union\r
-#endif\r
-#ifndef __UNALIGNED_UINT32 /* deprecated */\r
- #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x)))\r
-#endif\r
-#ifndef __UNALIGNED_UINT16_WRITE\r
- #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val))\r
-#endif\r
-#ifndef __UNALIGNED_UINT16_READ\r
- #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr)))\r
-#endif\r
-#ifndef __UNALIGNED_UINT32_WRITE\r
- #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val))\r
-#endif\r
-#ifndef __UNALIGNED_UINT32_READ\r
- #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr)))\r
-#endif\r
-#ifndef __ALIGNED\r
- #define __ALIGNED(x) __attribute__((aligned(x)))\r
-#endif\r
-#ifndef __RESTRICT\r
- #define __RESTRICT __restrict\r
-#endif\r
-\r
-/* ########################### Core Function Access ########################### */\r
-/** \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\r
- @{\r
- */\r
-\r
-/**\r
- \brief Enable IRQ Interrupts\r
- \details Enables IRQ interrupts by clearing the I-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-/* intrinsic void __enable_irq(); */\r
-\r
-\r
-/**\r
- \brief Disable IRQ Interrupts\r
- \details Disables IRQ interrupts by setting the I-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-/* intrinsic void __disable_irq(); */\r
-\r
-/**\r
- \brief Get Control Register\r
- \details Returns the content of the Control Register.\r
- \return Control Register value\r
- */\r
-__STATIC_INLINE uint32_t __get_CONTROL(void)\r
-{\r
- register uint32_t __regControl __ASM("control");\r
- return(__regControl);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Control Register\r
- \details Writes the given value to the Control Register.\r
- \param [in] control Control Register value to set\r
- */\r
-__STATIC_INLINE void __set_CONTROL(uint32_t control)\r
-{\r
- register uint32_t __regControl __ASM("control");\r
- __regControl = control;\r
-}\r
-\r
-\r
-/**\r
- \brief Get IPSR Register\r
- \details Returns the content of the IPSR Register.\r
- \return IPSR Register value\r
- */\r
-__STATIC_INLINE uint32_t __get_IPSR(void)\r
-{\r
- register uint32_t __regIPSR __ASM("ipsr");\r
- return(__regIPSR);\r
-}\r
-\r
-\r
-/**\r
- \brief Get APSR Register\r
- \details Returns the content of the APSR Register.\r
- \return APSR Register value\r
- */\r
-__STATIC_INLINE uint32_t __get_APSR(void)\r
-{\r
- register uint32_t __regAPSR __ASM("apsr");\r
- return(__regAPSR);\r
-}\r
-\r
-\r
-/**\r
- \brief Get xPSR Register\r
- \details Returns the content of the xPSR Register.\r
- \return xPSR Register value\r
- */\r
-__STATIC_INLINE uint32_t __get_xPSR(void)\r
-{\r
- register uint32_t __regXPSR __ASM("xpsr");\r
- return(__regXPSR);\r
-}\r
-\r
-\r
-/**\r
- \brief Get Process Stack Pointer\r
- \details Returns the current value of the Process Stack Pointer (PSP).\r
- \return PSP Register value\r
- */\r
-__STATIC_INLINE uint32_t __get_PSP(void)\r
-{\r
- register uint32_t __regProcessStackPointer __ASM("psp");\r
- return(__regProcessStackPointer);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Process Stack Pointer\r
- \details Assigns the given value to the Process Stack Pointer (PSP).\r
- \param [in] topOfProcStack Process Stack Pointer value to set\r
- */\r
-__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\r
-{\r
- register uint32_t __regProcessStackPointer __ASM("psp");\r
- __regProcessStackPointer = topOfProcStack;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Main Stack Pointer\r
- \details Returns the current value of the Main Stack Pointer (MSP).\r
- \return MSP Register value\r
- */\r
-__STATIC_INLINE uint32_t __get_MSP(void)\r
-{\r
- register uint32_t __regMainStackPointer __ASM("msp");\r
- return(__regMainStackPointer);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Main Stack Pointer\r
- \details Assigns the given value to the Main Stack Pointer (MSP).\r
- \param [in] topOfMainStack Main Stack Pointer value to set\r
- */\r
-__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\r
-{\r
- register uint32_t __regMainStackPointer __ASM("msp");\r
- __regMainStackPointer = topOfMainStack;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Mask\r
- \details Returns the current state of the priority mask bit from the Priority Mask Register.\r
- \return Priority Mask value\r
- */\r
-__STATIC_INLINE uint32_t __get_PRIMASK(void)\r
-{\r
- register uint32_t __regPriMask __ASM("primask");\r
- return(__regPriMask);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Priority Mask\r
- \details Assigns the given value to the Priority Mask Register.\r
- \param [in] priMask Priority Mask\r
- */\r
-__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\r
-{\r
- register uint32_t __regPriMask __ASM("primask");\r
- __regPriMask = (priMask);\r
-}\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) )\r
-\r
-/**\r
- \brief Enable FIQ\r
- \details Enables FIQ interrupts by clearing the F-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-#define __enable_fault_irq __enable_fiq\r
-\r
-\r
-/**\r
- \brief Disable FIQ\r
- \details Disables FIQ interrupts by setting the F-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-#define __disable_fault_irq __disable_fiq\r
-\r
-\r
-/**\r
- \brief Get Base Priority\r
- \details Returns the current value of the Base Priority register.\r
- \return Base Priority register value\r
- */\r
-__STATIC_INLINE uint32_t __get_BASEPRI(void)\r
-{\r
- register uint32_t __regBasePri __ASM("basepri");\r
- return(__regBasePri);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Base Priority\r
- \details Assigns the given value to the Base Priority register.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)\r
-{\r
- register uint32_t __regBasePri __ASM("basepri");\r
- __regBasePri = (basePri & 0xFFU);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Base Priority with condition\r
- \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\r
- or the new value increases the BASEPRI priority level.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)\r
-{\r
- register uint32_t __regBasePriMax __ASM("basepri_max");\r
- __regBasePriMax = (basePri & 0xFFU);\r
-}\r
-\r
-\r
-/**\r
- \brief Get Fault Mask\r
- \details Returns the current value of the Fault Mask register.\r
- \return Fault Mask register value\r
- */\r
-__STATIC_INLINE uint32_t __get_FAULTMASK(void)\r
-{\r
- register uint32_t __regFaultMask __ASM("faultmask");\r
- return(__regFaultMask);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Fault Mask\r
- \details Assigns the given value to the Fault Mask register.\r
- \param [in] faultMask Fault Mask value to set\r
- */\r
-__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\r
-{\r
- register uint32_t __regFaultMask __ASM("faultmask");\r
- __regFaultMask = (faultMask & (uint32_t)1U);\r
-}\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */\r
-\r
-\r
-/**\r
- \brief Get FPSCR\r
- \details Returns the current value of the Floating Point Status/Control register.\r
- \return Floating Point Status/Control register value\r
- */\r
-__STATIC_INLINE uint32_t __get_FPSCR(void)\r
-{\r
-#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) )\r
- register uint32_t __regfpscr __ASM("fpscr");\r
- return(__regfpscr);\r
-#else\r
- return(0U);\r
-#endif\r
-}\r
-\r
-\r
-/**\r
- \brief Set FPSCR\r
- \details Assigns the given value to the Floating Point Status/Control register.\r
- \param [in] fpscr Floating Point Status/Control value to set\r
- */\r
-__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\r
-{\r
-#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) )\r
- register uint32_t __regfpscr __ASM("fpscr");\r
- __regfpscr = (fpscr);\r
-#else\r
- (void)fpscr;\r
-#endif\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_RegAccFunctions */\r
-\r
-\r
-/* ########################## Core Instruction Access ######################### */\r
-/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\r
- Access to dedicated instructions\r
- @{\r
-*/\r
-\r
-/**\r
- \brief No Operation\r
- \details No Operation does nothing. This instruction can be used for code alignment purposes.\r
- */\r
-#define __NOP __nop\r
-\r
-\r
-/**\r
- \brief Wait For Interrupt\r
- \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\r
- */\r
-#define __WFI __wfi\r
-\r
-\r
-/**\r
- \brief Wait For Event\r
- \details Wait For Event is a hint instruction that permits the processor to enter\r
- a low-power state until one of a number of events occurs.\r
- */\r
-#define __WFE __wfe\r
-\r
-\r
-/**\r
- \brief Send Event\r
- \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\r
- */\r
-#define __SEV __sev\r
-\r
-\r
-/**\r
- \brief Instruction Synchronization Barrier\r
- \details Instruction Synchronization Barrier flushes the pipeline in the processor,\r
- so that all instructions following the ISB are fetched from cache or memory,\r
- after the instruction has been completed.\r
- */\r
-#define __ISB() do {\\r
- __schedule_barrier();\\r
- __isb(0xF);\\r
- __schedule_barrier();\\r
- } while (0U)\r
-\r
-/**\r
- \brief Data Synchronization Barrier\r
- \details Acts as a special kind of Data Memory Barrier.\r
- It completes when all explicit memory accesses before this instruction complete.\r
- */\r
-#define __DSB() do {\\r
- __schedule_barrier();\\r
- __dsb(0xF);\\r
- __schedule_barrier();\\r
- } while (0U)\r
-\r
-/**\r
- \brief Data Memory Barrier\r
- \details Ensures the apparent order of the explicit memory operations before\r
- and after the instruction, without ensuring their completion.\r
- */\r
-#define __DMB() do {\\r
- __schedule_barrier();\\r
- __dmb(0xF);\\r
- __schedule_barrier();\\r
- } while (0U)\r
-\r
- \r
-/**\r
- \brief Reverse byte order (32 bit)\r
- \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#define __REV __rev\r
-\r
-\r
-/**\r
- \brief Reverse byte order (16 bit)\r
- \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#ifndef __NO_EMBEDDED_ASM\r
-__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\r
-{\r
- rev16 r0, r0\r
- bx lr\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Reverse byte order (16 bit)\r
- \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#ifndef __NO_EMBEDDED_ASM\r
-__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)\r
-{\r
- revsh r0, r0\r
- bx lr\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Rotate Right in unsigned value (32 bit)\r
- \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\r
- \param [in] op1 Value to rotate\r
- \param [in] op2 Number of Bits to rotate\r
- \return Rotated value\r
- */\r
-#define __ROR __ror\r
-\r
-\r
-/**\r
- \brief Breakpoint\r
- \details Causes the processor to enter Debug state.\r
- Debug tools can use this to investigate system state when the instruction at a particular address is reached.\r
- \param [in] value is ignored by the processor.\r
- If required, a debugger can use it to store additional information about the breakpoint.\r
- */\r
-#define __BKPT(value) __breakpoint(value)\r
-\r
-\r
-/**\r
- \brief Reverse bit order of value\r
- \details Reverses the bit order of the given value.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) )\r
- #define __RBIT __rbit\r
-#else\r
-__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)\r
-{\r
- uint32_t result;\r
- uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */\r
-\r
- result = value; /* r will be reversed bits of v; first get LSB of v */\r
- for (value >>= 1U; value != 0U; value >>= 1U)\r
- {\r
- result <<= 1U;\r
- result |= value & 1U;\r
- s--;\r
- }\r
- result <<= s; /* shift when v's highest bits are zero */\r
- return result;\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Count leading zeros\r
- \details Counts the number of leading zeros of a data value.\r
- \param [in] value Value to count the leading zeros\r
- \return number of leading zeros in value\r
- */\r
-#define __CLZ __clz\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) )\r
-\r
-/**\r
- \brief LDR Exclusive (8 bit)\r
- \details Executes a exclusive LDR instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\r
- #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr))\r
-#else\r
- #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop")\r
-#endif\r
-\r
-\r
-/**\r
- \brief LDR Exclusive (16 bit)\r
- \details Executes a exclusive LDR instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\r
- #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr))\r
-#else\r
- #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop")\r
-#endif\r
-\r
-\r
-/**\r
- \brief LDR Exclusive (32 bit)\r
- \details Executes a exclusive LDR instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\r
- #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr))\r
-#else\r
- #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop")\r
-#endif\r
-\r
-\r
-/**\r
- \brief STR Exclusive (8 bit)\r
- \details Executes a exclusive STR instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\r
- #define __STREXB(value, ptr) __strex(value, ptr)\r
-#else\r
- #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop")\r
-#endif\r
-\r
-\r
-/**\r
- \brief STR Exclusive (16 bit)\r
- \details Executes a exclusive STR instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\r
- #define __STREXH(value, ptr) __strex(value, ptr)\r
-#else\r
- #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop")\r
-#endif\r
-\r
-\r
-/**\r
- \brief STR Exclusive (32 bit)\r
- \details Executes a exclusive STR instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)\r
- #define __STREXW(value, ptr) __strex(value, ptr)\r
-#else\r
- #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop")\r
-#endif\r
-\r
-\r
-/**\r
- \brief Remove the exclusive lock\r
- \details Removes the exclusive lock which is created by LDREX.\r
- */\r
-#define __CLREX __clrex\r
-\r
-\r
-/**\r
- \brief Signed Saturate\r
- \details Saturates a signed value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (1..32)\r
- \return Saturated value\r
- */\r
-#define __SSAT __ssat\r
-\r
-\r
-/**\r
- \brief Unsigned Saturate\r
- \details Saturates an unsigned value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (0..31)\r
- \return Saturated value\r
- */\r
-#define __USAT __usat\r
-\r
-\r
-/**\r
- \brief Rotate Right with Extend (32 bit)\r
- \details Moves each bit of a bitstring right by one bit.\r
- The carry input is shifted in at the left end of the bitstring.\r
- \param [in] value Value to rotate\r
- \return Rotated value\r
- */\r
-#ifndef __NO_EMBEDDED_ASM\r
-__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)\r
-{\r
- rrx r0, r0\r
- bx lr\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (8 bit)\r
- \details Executes a Unprivileged LDRT instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr))\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (16 bit)\r
- \details Executes a Unprivileged LDRT instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr))\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (32 bit)\r
- \details Executes a Unprivileged LDRT instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr))\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (8 bit)\r
- \details Executes a Unprivileged STRT instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-#define __STRBT(value, ptr) __strt(value, ptr)\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (16 bit)\r
- \details Executes a Unprivileged STRT instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-#define __STRHT(value, ptr) __strt(value, ptr)\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (32 bit)\r
- \details Executes a Unprivileged STRT instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-#define __STRT(value, ptr) __strt(value, ptr)\r
-\r
-#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */\r
-\r
-/**\r
- \brief Signed Saturate\r
- \details Saturates a signed value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (1..32)\r
- \return Saturated value\r
- */\r
-__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)\r
-{\r
- if ((sat >= 1U) && (sat <= 32U))\r
- {\r
- const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\r
- const int32_t min = -1 - max ;\r
- if (val > max)\r
- {\r
- return max;\r
- }\r
- else if (val < min)\r
- {\r
- return min;\r
- }\r
- }\r
- return val;\r
-}\r
-\r
-/**\r
- \brief Unsigned Saturate\r
- \details Saturates an unsigned value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (0..31)\r
- \return Saturated value\r
- */\r
-__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)\r
-{\r
- if (sat <= 31U)\r
- {\r
- const uint32_t max = ((1U << sat) - 1U);\r
- if (val > (int32_t)max)\r
- {\r
- return max;\r
- }\r
- else if (val < 0)\r
- {\r
- return 0U;\r
- }\r
- }\r
- return (uint32_t)val;\r
-}\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */\r
-\r
-/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\r
-\r
-\r
-/* ################### Compiler specific Intrinsics ########################### */\r
-/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\r
- Access to dedicated SIMD instructions\r
- @{\r
-*/\r
-\r
-#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) )\r
-\r
-#define __SADD8 __sadd8\r
-#define __QADD8 __qadd8\r
-#define __SHADD8 __shadd8\r
-#define __UADD8 __uadd8\r
-#define __UQADD8 __uqadd8\r
-#define __UHADD8 __uhadd8\r
-#define __SSUB8 __ssub8\r
-#define __QSUB8 __qsub8\r
-#define __SHSUB8 __shsub8\r
-#define __USUB8 __usub8\r
-#define __UQSUB8 __uqsub8\r
-#define __UHSUB8 __uhsub8\r
-#define __SADD16 __sadd16\r
-#define __QADD16 __qadd16\r
-#define __SHADD16 __shadd16\r
-#define __UADD16 __uadd16\r
-#define __UQADD16 __uqadd16\r
-#define __UHADD16 __uhadd16\r
-#define __SSUB16 __ssub16\r
-#define __QSUB16 __qsub16\r
-#define __SHSUB16 __shsub16\r
-#define __USUB16 __usub16\r
-#define __UQSUB16 __uqsub16\r
-#define __UHSUB16 __uhsub16\r
-#define __SASX __sasx\r
-#define __QASX __qasx\r
-#define __SHASX __shasx\r
-#define __UASX __uasx\r
-#define __UQASX __uqasx\r
-#define __UHASX __uhasx\r
-#define __SSAX __ssax\r
-#define __QSAX __qsax\r
-#define __SHSAX __shsax\r
-#define __USAX __usax\r
-#define __UQSAX __uqsax\r
-#define __UHSAX __uhsax\r
-#define __USAD8 __usad8\r
-#define __USADA8 __usada8\r
-#define __SSAT16 __ssat16\r
-#define __USAT16 __usat16\r
-#define __UXTB16 __uxtb16\r
-#define __UXTAB16 __uxtab16\r
-#define __SXTB16 __sxtb16\r
-#define __SXTAB16 __sxtab16\r
-#define __SMUAD __smuad\r
-#define __SMUADX __smuadx\r
-#define __SMLAD __smlad\r
-#define __SMLADX __smladx\r
-#define __SMLALD __smlald\r
-#define __SMLALDX __smlaldx\r
-#define __SMUSD __smusd\r
-#define __SMUSDX __smusdx\r
-#define __SMLSD __smlsd\r
-#define __SMLSDX __smlsdx\r
-#define __SMLSLD __smlsld\r
-#define __SMLSLDX __smlsldx\r
-#define __SEL __sel\r
-#define __QADD __qadd\r
-#define __QSUB __qsub\r
-\r
-#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \\r
- ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) )\r
-\r
-#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \\r
- ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) )\r
-\r
-#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \\r
- ((int64_t)(ARG3) << 32U) ) >> 32U))\r
-\r
-#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */\r
-/*@} end of group CMSIS_SIMD_intrinsics */\r
-\r
-\r
-#endif /* __CMSIS_ARMCC_H */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file cmsis_armclang.h\r
- * @brief CMSIS compiler armclang (Arm Compiler 6) header file\r
- * @version V5.0.4\r
- * @date 10. January 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */\r
-\r
-#ifndef __CMSIS_ARMCLANG_H\r
-#define __CMSIS_ARMCLANG_H\r
-\r
-#pragma clang system_header /* treat file as system include file */\r
-\r
-#ifndef __ARM_COMPAT_H\r
-#include <arm_compat.h> /* Compatibility header for Arm Compiler 5 intrinsics */\r
-#endif\r
-\r
-/* CMSIS compiler specific defines */\r
-#ifndef __ASM\r
- #define __ASM __asm\r
-#endif\r
-#ifndef __INLINE\r
- #define __INLINE __inline\r
-#endif\r
-#ifndef __STATIC_INLINE\r
- #define __STATIC_INLINE static __inline\r
-#endif\r
-#ifndef __STATIC_FORCEINLINE \r
- #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline\r
-#endif \r
-#ifndef __NO_RETURN\r
- #define __NO_RETURN __attribute__((__noreturn__))\r
-#endif\r
-#ifndef __USED\r
- #define __USED __attribute__((used))\r
-#endif\r
-#ifndef __WEAK\r
- #define __WEAK __attribute__((weak))\r
-#endif\r
-#ifndef __PACKED\r
- #define __PACKED __attribute__((packed, aligned(1)))\r
-#endif\r
-#ifndef __PACKED_STRUCT\r
- #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))\r
-#endif\r
-#ifndef __PACKED_UNION\r
- #define __PACKED_UNION union __attribute__((packed, aligned(1)))\r
-#endif\r
-#ifndef __UNALIGNED_UINT32 /* deprecated */\r
- #pragma clang diagnostic push\r
- #pragma clang diagnostic ignored "-Wpacked"\r
-/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */\r
- struct __attribute__((packed)) T_UINT32 { uint32_t v; };\r
- #pragma clang diagnostic pop\r
- #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)\r
-#endif\r
-#ifndef __UNALIGNED_UINT16_WRITE\r
- #pragma clang diagnostic push\r
- #pragma clang diagnostic ignored "-Wpacked"\r
-/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */\r
- __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\r
- #pragma clang diagnostic pop\r
- #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\r
-#endif\r
-#ifndef __UNALIGNED_UINT16_READ\r
- #pragma clang diagnostic push\r
- #pragma clang diagnostic ignored "-Wpacked"\r
-/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */\r
- __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\r
- #pragma clang diagnostic pop\r
- #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v)\r
-#endif\r
-#ifndef __UNALIGNED_UINT32_WRITE\r
- #pragma clang diagnostic push\r
- #pragma clang diagnostic ignored "-Wpacked"\r
-/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */\r
- __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\r
- #pragma clang diagnostic pop\r
- #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\r
-#endif\r
-#ifndef __UNALIGNED_UINT32_READ\r
- #pragma clang diagnostic push\r
- #pragma clang diagnostic ignored "-Wpacked"\r
-/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */\r
- __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\r
- #pragma clang diagnostic pop\r
- #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v)\r
-#endif\r
-#ifndef __ALIGNED\r
- #define __ALIGNED(x) __attribute__((aligned(x)))\r
-#endif\r
-#ifndef __RESTRICT\r
- #define __RESTRICT __restrict\r
-#endif\r
-\r
-\r
-/* ########################### Core Function Access ########################### */\r
-/** \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\r
- @{\r
- */\r
-\r
-/**\r
- \brief Enable IRQ Interrupts\r
- \details Enables IRQ interrupts by clearing the I-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-/* intrinsic void __enable_irq(); see arm_compat.h */\r
-\r
-\r
-/**\r
- \brief Disable IRQ Interrupts\r
- \details Disables IRQ interrupts by setting the I-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-/* intrinsic void __disable_irq(); see arm_compat.h */\r
-\r
-\r
-/**\r
- \brief Get Control Register\r
- \details Returns the content of the Control Register.\r
- \return Control Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, control" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Control Register (non-secure)\r
- \details Returns the content of the non-secure Control Register when in secure mode.\r
- \return non-secure Control Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, control_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Control Register\r
- \details Writes the given value to the Control Register.\r
- \param [in] control Control Register value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\r
-{\r
- __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Control Register (non-secure)\r
- \details Writes the given value to the non-secure Control Register when in secure state.\r
- \param [in] control Control Register value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\r
-{\r
- __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get IPSR Register\r
- \details Returns the content of the IPSR Register.\r
- \return IPSR Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, ipsr" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Get APSR Register\r
- \details Returns the content of the APSR Register.\r
- \return APSR Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_APSR(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, apsr" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Get xPSR Register\r
- \details Returns the content of the xPSR Register.\r
- \return xPSR Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, xpsr" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Get Process Stack Pointer\r
- \details Returns the current value of the Process Stack Pointer (PSP).\r
- \return PSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_PSP(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, psp" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Process Stack Pointer (non-secure)\r
- \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\r
- \return PSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, psp_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Process Stack Pointer\r
- \details Assigns the given value to the Process Stack Pointer (PSP).\r
- \param [in] topOfProcStack Process Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\r
-{\r
- __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Process Stack Pointer (non-secure)\r
- \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\r
- \param [in] topOfProcStack Process Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\r
-{\r
- __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get Main Stack Pointer\r
- \details Returns the current value of the Main Stack Pointer (MSP).\r
- \return MSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_MSP(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, msp" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Main Stack Pointer (non-secure)\r
- \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\r
- \return MSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Main Stack Pointer\r
- \details Assigns the given value to the Main Stack Pointer (MSP).\r
- \param [in] topOfMainStack Main Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\r
-{\r
- __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Main Stack Pointer (non-secure)\r
- \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\r
- \param [in] topOfMainStack Main Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\r
-{\r
- __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );\r
-}\r
-#endif\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Stack Pointer (non-secure)\r
- \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\r
- \return SP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Stack Pointer (non-secure)\r
- \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\r
- \param [in] topOfStack Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\r
-{\r
- __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get Priority Mask\r
- \details Returns the current state of the priority mask bit from the Priority Mask Register.\r
- \return Priority Mask value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, primask" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Priority Mask (non-secure)\r
- \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\r
- \return Priority Mask value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, primask_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Priority Mask\r
- \details Assigns the given value to the Priority Mask Register.\r
- \param [in] priMask Priority Mask\r
- */\r
-__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\r
-{\r
- __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Priority Mask (non-secure)\r
- \details Assigns the given value to the non-secure Priority Mask Register when in secure state.\r
- \param [in] priMask Priority Mask\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\r
-{\r
- __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");\r
-}\r
-#endif\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )\r
-/**\r
- \brief Enable FIQ\r
- \details Enables FIQ interrupts by clearing the F-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-#define __enable_fault_irq __enable_fiq /* see arm_compat.h */\r
-\r
-\r
-/**\r
- \brief Disable FIQ\r
- \details Disables FIQ interrupts by setting the F-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-#define __disable_fault_irq __disable_fiq /* see arm_compat.h */\r
-\r
-\r
-/**\r
- \brief Get Base Priority\r
- \details Returns the current value of the Base Priority register.\r
- \return Base Priority register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, basepri" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Base Priority (non-secure)\r
- \details Returns the current value of the non-secure Base Priority register when in secure state.\r
- \return Base Priority register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Base Priority\r
- \details Assigns the given value to the Base Priority register.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\r
-{\r
- __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Base Priority (non-secure)\r
- \details Assigns the given value to the non-secure Base Priority register when in secure state.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\r
-{\r
- __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Base Priority with condition\r
- \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\r
- or the new value increases the BASEPRI priority level.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\r
-{\r
- __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Get Fault Mask\r
- \details Returns the current value of the Fault Mask register.\r
- \return Fault Mask register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, faultmask" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Fault Mask (non-secure)\r
- \details Returns the current value of the non-secure Fault Mask register when in secure state.\r
- \return Fault Mask register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Fault Mask\r
- \details Assigns the given value to the Fault Mask register.\r
- \param [in] faultMask Fault Mask value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\r
-{\r
- __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Fault Mask (non-secure)\r
- \details Assigns the given value to the non-secure Fault Mask register when in secure state.\r
- \param [in] faultMask Fault Mask value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\r
-{\r
- __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");\r
-}\r
-#endif\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */\r
-\r
-\r
-#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-\r
-/**\r
- \brief Get Process Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always in non-secure\r
- mode.\r
- \r
- \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\r
- \return PSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, psplim" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-\r
-#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Process Stack Pointer Limit (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always in non-secure\r
- mode.\r
-\r
- \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\r
- \return PSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Process Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored in non-secure\r
- mode.\r
- \r
- \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\r
- \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- (void)ProcStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));\r
-#endif\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Process Stack Pointer (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored in non-secure\r
- mode.\r
-\r
- \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\r
- \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- (void)ProcStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));\r
-#endif\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get Main Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always.\r
-\r
- \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\r
- \return MSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, msplim" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Main Stack Pointer Limit (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always.\r
-\r
- \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\r
- \return MSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Main Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored.\r
-\r
- \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\r
- \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- (void)MainStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));\r
-#endif\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Main Stack Pointer Limit (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored.\r
-\r
- \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\r
- \param [in] MainStackPtrLimit Main Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- (void)MainStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));\r
-#endif\r
-}\r
-#endif\r
-\r
-#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */\r
-\r
-/**\r
- \brief Get FPSCR\r
- \details Returns the current value of the Floating Point Status/Control register.\r
- \return Floating Point Status/Control register value\r
- */\r
-#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) )\r
-#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr\r
-#else\r
-#define __get_FPSCR() ((uint32_t)0U)\r
-#endif\r
-\r
-/**\r
- \brief Set FPSCR\r
- \details Assigns the given value to the Floating Point Status/Control register.\r
- \param [in] fpscr Floating Point Status/Control value to set\r
- */\r
-#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) )\r
-#define __set_FPSCR __builtin_arm_set_fpscr\r
-#else\r
-#define __set_FPSCR(x) ((void)(x))\r
-#endif\r
-\r
-\r
-/*@} end of CMSIS_Core_RegAccFunctions */\r
-\r
-\r
-/* ########################## Core Instruction Access ######################### */\r
-/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\r
- Access to dedicated instructions\r
- @{\r
-*/\r
-\r
-/* Define macros for porting to both thumb1 and thumb2.\r
- * For thumb1, use low register (r0-r7), specified by constraint "l"\r
- * Otherwise, use general registers, specified by constraint "r" */\r
-#if defined (__thumb__) && !defined (__thumb2__)\r
-#define __CMSIS_GCC_OUT_REG(r) "=l" (r)\r
-#define __CMSIS_GCC_USE_REG(r) "l" (r)\r
-#else\r
-#define __CMSIS_GCC_OUT_REG(r) "=r" (r)\r
-#define __CMSIS_GCC_USE_REG(r) "r" (r)\r
-#endif\r
-\r
-/**\r
- \brief No Operation\r
- \details No Operation does nothing. This instruction can be used for code alignment purposes.\r
- */\r
-#define __NOP __builtin_arm_nop\r
-\r
-/**\r
- \brief Wait For Interrupt\r
- \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\r
- */\r
-#define __WFI __builtin_arm_wfi\r
-\r
-\r
-/**\r
- \brief Wait For Event\r
- \details Wait For Event is a hint instruction that permits the processor to enter\r
- a low-power state until one of a number of events occurs.\r
- */\r
-#define __WFE __builtin_arm_wfe\r
-\r
-\r
-/**\r
- \brief Send Event\r
- \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\r
- */\r
-#define __SEV __builtin_arm_sev\r
-\r
-\r
-/**\r
- \brief Instruction Synchronization Barrier\r
- \details Instruction Synchronization Barrier flushes the pipeline in the processor,\r
- so that all instructions following the ISB are fetched from cache or memory,\r
- after the instruction has been completed.\r
- */\r
-#define __ISB() __builtin_arm_isb(0xF);\r
-\r
-/**\r
- \brief Data Synchronization Barrier\r
- \details Acts as a special kind of Data Memory Barrier.\r
- It completes when all explicit memory accesses before this instruction complete.\r
- */\r
-#define __DSB() __builtin_arm_dsb(0xF);\r
-\r
-\r
-/**\r
- \brief Data Memory Barrier\r
- \details Ensures the apparent order of the explicit memory operations before\r
- and after the instruction, without ensuring their completion.\r
- */\r
-#define __DMB() __builtin_arm_dmb(0xF);\r
-\r
-\r
-/**\r
- \brief Reverse byte order (32 bit)\r
- \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#define __REV(value) __builtin_bswap32(value)\r
-\r
-\r
-/**\r
- \brief Reverse byte order (16 bit)\r
- \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#define __REV16(value) __ROR(__REV(value), 16)\r
-\r
-\r
-/**\r
- \brief Reverse byte order (16 bit)\r
- \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#define __REVSH(value) (int16_t)__builtin_bswap16(value)\r
-\r
-\r
-/**\r
- \brief Rotate Right in unsigned value (32 bit)\r
- \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\r
- \param [in] op1 Value to rotate\r
- \param [in] op2 Number of Bits to rotate\r
- \return Rotated value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\r
-{\r
- op2 %= 32U;\r
- if (op2 == 0U)\r
- {\r
- return op1;\r
- }\r
- return (op1 >> op2) | (op1 << (32U - op2));\r
-}\r
-\r
-\r
-/**\r
- \brief Breakpoint\r
- \details Causes the processor to enter Debug state.\r
- Debug tools can use this to investigate system state when the instruction at a particular address is reached.\r
- \param [in] value is ignored by the processor.\r
- If required, a debugger can use it to store additional information about the breakpoint.\r
- */\r
-#define __BKPT(value) __ASM volatile ("bkpt "#value)\r
-\r
-\r
-/**\r
- \brief Reverse bit order of value\r
- \details Reverses the bit order of the given value.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-#define __RBIT __builtin_arm_rbit\r
-\r
-/**\r
- \brief Count leading zeros\r
- \details Counts the number of leading zeros of a data value.\r
- \param [in] value Value to count the leading zeros\r
- \return number of leading zeros in value\r
- */\r
-#define __CLZ (uint8_t)__builtin_clz\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-/**\r
- \brief LDR Exclusive (8 bit)\r
- \details Executes a exclusive LDR instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-#define __LDREXB (uint8_t)__builtin_arm_ldrex\r
-\r
-\r
-/**\r
- \brief LDR Exclusive (16 bit)\r
- \details Executes a exclusive LDR instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-#define __LDREXH (uint16_t)__builtin_arm_ldrex\r
-\r
-\r
-/**\r
- \brief LDR Exclusive (32 bit)\r
- \details Executes a exclusive LDR instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-#define __LDREXW (uint32_t)__builtin_arm_ldrex\r
-\r
-\r
-/**\r
- \brief STR Exclusive (8 bit)\r
- \details Executes a exclusive STR instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#define __STREXB (uint32_t)__builtin_arm_strex\r
-\r
-\r
-/**\r
- \brief STR Exclusive (16 bit)\r
- \details Executes a exclusive STR instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#define __STREXH (uint32_t)__builtin_arm_strex\r
-\r
-\r
-/**\r
- \brief STR Exclusive (32 bit)\r
- \details Executes a exclusive STR instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#define __STREXW (uint32_t)__builtin_arm_strex\r
-\r
-\r
-/**\r
- \brief Remove the exclusive lock\r
- \details Removes the exclusive lock which is created by LDREX.\r
- */\r
-#define __CLREX __builtin_arm_clrex\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )\r
-\r
-/**\r
- \brief Signed Saturate\r
- \details Saturates a signed value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (1..32)\r
- \return Saturated value\r
- */\r
-#define __SSAT __builtin_arm_ssat\r
-\r
-\r
-/**\r
- \brief Unsigned Saturate\r
- \details Saturates an unsigned value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (0..31)\r
- \return Saturated value\r
- */\r
-#define __USAT __builtin_arm_usat\r
-\r
-\r
-/**\r
- \brief Rotate Right with Extend (32 bit)\r
- \details Moves each bit of a bitstring right by one bit.\r
- The carry input is shifted in at the left end of the bitstring.\r
- \param [in] value Value to rotate\r
- \return Rotated value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (8 bit)\r
- \details Executes a Unprivileged LDRT instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint8_t) result); /* Add explicit type cast here */\r
-}\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (16 bit)\r
- \details Executes a Unprivileged LDRT instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint16_t) result); /* Add explicit type cast here */\r
-}\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (32 bit)\r
- \details Executes a Unprivileged LDRT instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (8 bit)\r
- \details Executes a Unprivileged STRT instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\r
-{\r
- __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (16 bit)\r
- \details Executes a Unprivileged STRT instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\r
-{\r
- __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (32 bit)\r
- \details Executes a Unprivileged STRT instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\r
-{\r
- __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) );\r
-}\r
-\r
-#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */\r
-\r
-/**\r
- \brief Signed Saturate\r
- \details Saturates a signed value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (1..32)\r
- \return Saturated value\r
- */\r
-__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\r
-{\r
- if ((sat >= 1U) && (sat <= 32U))\r
- {\r
- const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\r
- const int32_t min = -1 - max ;\r
- if (val > max)\r
- {\r
- return max;\r
- }\r
- else if (val < min)\r
- {\r
- return min;\r
- }\r
- }\r
- return val;\r
-}\r
-\r
-/**\r
- \brief Unsigned Saturate\r
- \details Saturates an unsigned value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (0..31)\r
- \return Saturated value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\r
-{\r
- if (sat <= 31U)\r
- {\r
- const uint32_t max = ((1U << sat) - 1U);\r
- if (val > (int32_t)max)\r
- {\r
- return max;\r
- }\r
- else if (val < 0)\r
- {\r
- return 0U;\r
- }\r
- }\r
- return (uint32_t)val;\r
-}\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */\r
-\r
-\r
-#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-/**\r
- \brief Load-Acquire (8 bit)\r
- \details Executes a LDAB instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint8_t) result);\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire (16 bit)\r
- \details Executes a LDAH instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint16_t) result);\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire (32 bit)\r
- \details Executes a LDA instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release (8 bit)\r
- \details Executes a STLB instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\r
-{\r
- __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release (16 bit)\r
- \details Executes a STLH instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\r
-{\r
- __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release (32 bit)\r
- \details Executes a STL instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\r
-{\r
- __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire Exclusive (8 bit)\r
- \details Executes a LDAB exclusive instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-#define __LDAEXB (uint8_t)__builtin_arm_ldaex\r
-\r
-\r
-/**\r
- \brief Load-Acquire Exclusive (16 bit)\r
- \details Executes a LDAH exclusive instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-#define __LDAEXH (uint16_t)__builtin_arm_ldaex\r
-\r
-\r
-/**\r
- \brief Load-Acquire Exclusive (32 bit)\r
- \details Executes a LDA exclusive instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-#define __LDAEX (uint32_t)__builtin_arm_ldaex\r
-\r
-\r
-/**\r
- \brief Store-Release Exclusive (8 bit)\r
- \details Executes a STLB exclusive instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#define __STLEXB (uint32_t)__builtin_arm_stlex\r
-\r
-\r
-/**\r
- \brief Store-Release Exclusive (16 bit)\r
- \details Executes a STLH exclusive instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#define __STLEXH (uint32_t)__builtin_arm_stlex\r
-\r
-\r
-/**\r
- \brief Store-Release Exclusive (32 bit)\r
- \details Executes a STL exclusive instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-#define __STLEX (uint32_t)__builtin_arm_stlex\r
-\r
-#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */\r
-\r
-/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\r
-\r
-\r
-/* ################### Compiler specific Intrinsics ########################### */\r
-/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\r
- Access to dedicated SIMD instructions\r
- @{\r
-*/\r
-\r
-#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\r
-\r
-__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-\r
-__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-\r
-__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-#define __SSAT16(ARG1,ARG2) \\r
-({ \\r
- int32_t __RES, __ARG1 = (ARG1); \\r
- __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \\r
- __RES; \\r
- })\r
-\r
-#define __USAT16(ARG1,ARG2) \\r
-({ \\r
- uint32_t __RES, __ARG1 = (ARG1); \\r
- __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \\r
- __RES; \\r
- })\r
-\r
-__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2)\r
-{\r
- int32_t result;\r
-\r
- __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2)\r
-{\r
- int32_t result;\r
-\r
- __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-#if 0\r
-#define __PKHBT(ARG1,ARG2,ARG3) \\r
-({ \\r
- uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\r
- __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \\r
- __RES; \\r
- })\r
-\r
-#define __PKHTB(ARG1,ARG2,ARG3) \\r
-({ \\r
- uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\r
- if (ARG3 == 0) \\r
- __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \\r
- else \\r
- __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \\r
- __RES; \\r
- })\r
-#endif\r
-\r
-#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \\r
- ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) )\r
-\r
-#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \\r
- ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) )\r
-\r
-__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\r
-{\r
- int32_t result;\r
-\r
- __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-#endif /* (__ARM_FEATURE_DSP == 1) */\r
-/*@} end of group CMSIS_SIMD_intrinsics */\r
-\r
-\r
-#endif /* __CMSIS_ARMCLANG_H */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file cmsis_compiler.h\r
- * @brief CMSIS compiler generic header file\r
- * @version V5.0.4\r
- * @date 10. January 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#ifndef __CMSIS_COMPILER_H\r
-#define __CMSIS_COMPILER_H\r
-\r
-#include <stdint.h>\r
-\r
-/*\r
- * Arm Compiler 4/5\r
- */\r
-#if defined ( __CC_ARM )\r
- #include "cmsis_armcc.h"\r
-\r
-\r
-/*\r
- * Arm Compiler 6 (armclang)\r
- */\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #include "cmsis_armclang.h"\r
-\r
-\r
-/*\r
- * GNU Compiler\r
- */\r
-#elif defined ( __GNUC__ )\r
- #include "cmsis_gcc.h"\r
-\r
-\r
-/*\r
- * IAR Compiler\r
- */\r
-#elif defined ( __ICCARM__ )\r
- #include <cmsis_iccarm.h>\r
-\r
-\r
-/*\r
- * TI Arm Compiler\r
- */\r
-#elif defined ( __TI_ARM__ )\r
- #include <cmsis_ccs.h>\r
-\r
- #ifndef __ASM\r
- #define __ASM __asm\r
- #endif\r
- #ifndef __INLINE\r
- #define __INLINE inline\r
- #endif\r
- #ifndef __STATIC_INLINE\r
- #define __STATIC_INLINE static inline\r
- #endif\r
- #ifndef __STATIC_FORCEINLINE\r
- #define __STATIC_FORCEINLINE __STATIC_INLINE\r
- #endif\r
- #ifndef __NO_RETURN\r
- #define __NO_RETURN __attribute__((noreturn))\r
- #endif\r
- #ifndef __USED\r
- #define __USED __attribute__((used))\r
- #endif\r
- #ifndef __WEAK\r
- #define __WEAK __attribute__((weak))\r
- #endif\r
- #ifndef __PACKED\r
- #define __PACKED __attribute__((packed))\r
- #endif\r
- #ifndef __PACKED_STRUCT\r
- #define __PACKED_STRUCT struct __attribute__((packed))\r
- #endif\r
- #ifndef __PACKED_UNION\r
- #define __PACKED_UNION union __attribute__((packed))\r
- #endif\r
- #ifndef __UNALIGNED_UINT32 /* deprecated */\r
- struct __attribute__((packed)) T_UINT32 { uint32_t v; };\r
- #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)\r
- #endif\r
- #ifndef __UNALIGNED_UINT16_WRITE\r
- __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\r
- #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val))\r
- #endif\r
- #ifndef __UNALIGNED_UINT16_READ\r
- __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\r
- #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v)\r
- #endif\r
- #ifndef __UNALIGNED_UINT32_WRITE\r
- __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\r
- #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\r
- #endif\r
- #ifndef __UNALIGNED_UINT32_READ\r
- __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\r
- #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v)\r
- #endif\r
- #ifndef __ALIGNED\r
- #define __ALIGNED(x) __attribute__((aligned(x)))\r
- #endif\r
- #ifndef __RESTRICT\r
- #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.\r
- #define __RESTRICT\r
- #endif\r
-\r
-\r
-/*\r
- * TASKING Compiler\r
- */\r
-#elif defined ( __TASKING__ )\r
- /*\r
- * The CMSIS functions have been implemented as intrinsics in the compiler.\r
- * Please use "carm -?i" to get an up to date list of all intrinsics,\r
- * Including the CMSIS ones.\r
- */\r
-\r
- #ifndef __ASM\r
- #define __ASM __asm\r
- #endif\r
- #ifndef __INLINE\r
- #define __INLINE inline\r
- #endif\r
- #ifndef __STATIC_INLINE\r
- #define __STATIC_INLINE static inline\r
- #endif\r
- #ifndef __STATIC_FORCEINLINE\r
- #define __STATIC_FORCEINLINE __STATIC_INLINE\r
- #endif\r
- #ifndef __NO_RETURN\r
- #define __NO_RETURN __attribute__((noreturn))\r
- #endif\r
- #ifndef __USED\r
- #define __USED __attribute__((used))\r
- #endif\r
- #ifndef __WEAK\r
- #define __WEAK __attribute__((weak))\r
- #endif\r
- #ifndef __PACKED\r
- #define __PACKED __packed__\r
- #endif\r
- #ifndef __PACKED_STRUCT\r
- #define __PACKED_STRUCT struct __packed__\r
- #endif\r
- #ifndef __PACKED_UNION\r
- #define __PACKED_UNION union __packed__\r
- #endif\r
- #ifndef __UNALIGNED_UINT32 /* deprecated */\r
- struct __packed__ T_UINT32 { uint32_t v; };\r
- #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)\r
- #endif\r
- #ifndef __UNALIGNED_UINT16_WRITE\r
- __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\r
- #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\r
- #endif\r
- #ifndef __UNALIGNED_UINT16_READ\r
- __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\r
- #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v)\r
- #endif\r
- #ifndef __UNALIGNED_UINT32_WRITE\r
- __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\r
- #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\r
- #endif\r
- #ifndef __UNALIGNED_UINT32_READ\r
- __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\r
- #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v)\r
- #endif\r
- #ifndef __ALIGNED\r
- #define __ALIGNED(x) __align(x)\r
- #endif\r
- #ifndef __RESTRICT\r
- #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.\r
- #define __RESTRICT\r
- #endif\r
-\r
-\r
-/*\r
- * COSMIC Compiler\r
- */\r
-#elif defined ( __CSMC__ )\r
- #include <cmsis_csm.h>\r
-\r
- #ifndef __ASM\r
- #define __ASM _asm\r
- #endif\r
- #ifndef __INLINE\r
- #define __INLINE inline\r
- #endif\r
- #ifndef __STATIC_INLINE\r
- #define __STATIC_INLINE static inline\r
- #endif\r
- #ifndef __STATIC_FORCEINLINE\r
- #define __STATIC_FORCEINLINE __STATIC_INLINE\r
- #endif\r
- #ifndef __NO_RETURN\r
- // NO RETURN is automatically detected hence no warning here\r
- #define __NO_RETURN\r
- #endif\r
- #ifndef __USED\r
- #warning No compiler specific solution for __USED. __USED is ignored.\r
- #define __USED\r
- #endif\r
- #ifndef __WEAK\r
- #define __WEAK __weak\r
- #endif\r
- #ifndef __PACKED\r
- #define __PACKED @packed\r
- #endif\r
- #ifndef __PACKED_STRUCT\r
- #define __PACKED_STRUCT @packed struct\r
- #endif\r
- #ifndef __PACKED_UNION\r
- #define __PACKED_UNION @packed union\r
- #endif\r
- #ifndef __UNALIGNED_UINT32 /* deprecated */\r
- @packed struct T_UINT32 { uint32_t v; };\r
- #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)\r
- #endif\r
- #ifndef __UNALIGNED_UINT16_WRITE\r
- __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\r
- #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\r
- #endif\r
- #ifndef __UNALIGNED_UINT16_READ\r
- __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\r
- #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v)\r
- #endif\r
- #ifndef __UNALIGNED_UINT32_WRITE\r
- __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\r
- #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\r
- #endif\r
- #ifndef __UNALIGNED_UINT32_READ\r
- __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\r
- #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v)\r
- #endif\r
- #ifndef __ALIGNED\r
- #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.\r
- #define __ALIGNED(x)\r
- #endif\r
- #ifndef __RESTRICT\r
- #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.\r
- #define __RESTRICT\r
- #endif\r
-\r
-\r
-#else\r
- #error Unknown compiler.\r
-#endif\r
-\r
-\r
-#endif /* __CMSIS_COMPILER_H */\r
-\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file cmsis_gcc.h\r
- * @brief CMSIS compiler GCC header file\r
- * @version V5.0.4\r
- * @date 09. April 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#ifndef __CMSIS_GCC_H\r
-#define __CMSIS_GCC_H\r
-\r
-/* ignore some GCC warnings */\r
-#pragma GCC diagnostic push\r
-#pragma GCC diagnostic ignored "-Wsign-conversion"\r
-#pragma GCC diagnostic ignored "-Wconversion"\r
-#pragma GCC diagnostic ignored "-Wunused-parameter"\r
-\r
-/* Fallback for __has_builtin */\r
-#ifndef __has_builtin\r
- #define __has_builtin(x) (0)\r
-#endif\r
-\r
-/* CMSIS compiler specific defines */\r
-#ifndef __ASM\r
- #define __ASM __asm\r
-#endif\r
-#ifndef __INLINE\r
- #define __INLINE inline\r
-#endif\r
-#ifndef __STATIC_INLINE\r
- #define __STATIC_INLINE static inline\r
-#endif\r
-#ifndef __STATIC_FORCEINLINE \r
- #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline\r
-#endif \r
-#ifndef __NO_RETURN\r
- #define __NO_RETURN __attribute__((__noreturn__))\r
-#endif\r
-#ifndef __USED\r
- #define __USED __attribute__((used))\r
-#endif\r
-#ifndef __WEAK\r
- #define __WEAK __attribute__((weak))\r
-#endif\r
-#ifndef __PACKED\r
- #define __PACKED __attribute__((packed, aligned(1)))\r
-#endif\r
-#ifndef __PACKED_STRUCT\r
- #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))\r
-#endif\r
-#ifndef __PACKED_UNION\r
- #define __PACKED_UNION union __attribute__((packed, aligned(1)))\r
-#endif\r
-#ifndef __UNALIGNED_UINT32 /* deprecated */\r
- #pragma GCC diagnostic push\r
- #pragma GCC diagnostic ignored "-Wpacked"\r
- #pragma GCC diagnostic ignored "-Wattributes"\r
- struct __attribute__((packed)) T_UINT32 { uint32_t v; };\r
- #pragma GCC diagnostic pop\r
- #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)\r
-#endif\r
-#ifndef __UNALIGNED_UINT16_WRITE\r
- #pragma GCC diagnostic push\r
- #pragma GCC diagnostic ignored "-Wpacked"\r
- #pragma GCC diagnostic ignored "-Wattributes"\r
- __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };\r
- #pragma GCC diagnostic pop\r
- #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))\r
-#endif\r
-#ifndef __UNALIGNED_UINT16_READ\r
- #pragma GCC diagnostic push\r
- #pragma GCC diagnostic ignored "-Wpacked"\r
- #pragma GCC diagnostic ignored "-Wattributes"\r
- __PACKED_STRUCT T_UINT16_READ { uint16_t v; };\r
- #pragma GCC diagnostic pop\r
- #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v)\r
-#endif\r
-#ifndef __UNALIGNED_UINT32_WRITE\r
- #pragma GCC diagnostic push\r
- #pragma GCC diagnostic ignored "-Wpacked"\r
- #pragma GCC diagnostic ignored "-Wattributes"\r
- __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };\r
- #pragma GCC diagnostic pop\r
- #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))\r
-#endif\r
-#ifndef __UNALIGNED_UINT32_READ\r
- #pragma GCC diagnostic push\r
- #pragma GCC diagnostic ignored "-Wpacked"\r
- #pragma GCC diagnostic ignored "-Wattributes"\r
- __PACKED_STRUCT T_UINT32_READ { uint32_t v; };\r
- #pragma GCC diagnostic pop\r
- #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v)\r
-#endif\r
-#ifndef __ALIGNED\r
- #define __ALIGNED(x) __attribute__((aligned(x)))\r
-#endif\r
-#ifndef __RESTRICT\r
- #define __RESTRICT __restrict\r
-#endif\r
-\r
-\r
-/* ########################### Core Function Access ########################### */\r
-/** \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\r
- @{\r
- */\r
-\r
-/**\r
- \brief Enable IRQ Interrupts\r
- \details Enables IRQ interrupts by clearing the I-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-__STATIC_FORCEINLINE void __enable_irq(void)\r
-{\r
- __ASM volatile ("cpsie i" : : : "memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Disable IRQ Interrupts\r
- \details Disables IRQ interrupts by setting the I-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-__STATIC_FORCEINLINE void __disable_irq(void)\r
-{\r
- __ASM volatile ("cpsid i" : : : "memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Get Control Register\r
- \details Returns the content of the Control Register.\r
- \return Control Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, control" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Control Register (non-secure)\r
- \details Returns the content of the non-secure Control Register when in secure mode.\r
- \return non-secure Control Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, control_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Control Register\r
- \details Writes the given value to the Control Register.\r
- \param [in] control Control Register value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)\r
-{\r
- __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Control Register (non-secure)\r
- \details Writes the given value to the non-secure Control Register when in secure state.\r
- \param [in] control Control Register value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)\r
-{\r
- __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get IPSR Register\r
- \details Returns the content of the IPSR Register.\r
- \return IPSR Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_IPSR(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, ipsr" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Get APSR Register\r
- \details Returns the content of the APSR Register.\r
- \return APSR Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_APSR(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, apsr" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Get xPSR Register\r
- \details Returns the content of the xPSR Register.\r
- \return xPSR Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_xPSR(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, xpsr" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Get Process Stack Pointer\r
- \details Returns the current value of the Process Stack Pointer (PSP).\r
- \return PSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_PSP(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, psp" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Process Stack Pointer (non-secure)\r
- \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.\r
- \return PSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, psp_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Process Stack Pointer\r
- \details Assigns the given value to the Process Stack Pointer (PSP).\r
- \param [in] topOfProcStack Process Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)\r
-{\r
- __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Process Stack Pointer (non-secure)\r
- \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.\r
- \param [in] topOfProcStack Process Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)\r
-{\r
- __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get Main Stack Pointer\r
- \details Returns the current value of the Main Stack Pointer (MSP).\r
- \return MSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_MSP(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, msp" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Main Stack Pointer (non-secure)\r
- \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.\r
- \return MSP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Main Stack Pointer\r
- \details Assigns the given value to the Main Stack Pointer (MSP).\r
- \param [in] topOfMainStack Main Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)\r
-{\r
- __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Main Stack Pointer (non-secure)\r
- \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.\r
- \param [in] topOfMainStack Main Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)\r
-{\r
- __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );\r
-}\r
-#endif\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Stack Pointer (non-secure)\r
- \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.\r
- \return SP Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Stack Pointer (non-secure)\r
- \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.\r
- \param [in] topOfStack Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)\r
-{\r
- __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get Priority Mask\r
- \details Returns the current state of the priority mask bit from the Priority Mask Register.\r
- \return Priority Mask value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Priority Mask (non-secure)\r
- \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.\r
- \return Priority Mask value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory");\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Priority Mask\r
- \details Assigns the given value to the Priority Mask Register.\r
- \param [in] priMask Priority Mask\r
- */\r
-__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)\r
-{\r
- __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Priority Mask (non-secure)\r
- \details Assigns the given value to the non-secure Priority Mask Register when in secure state.\r
- \param [in] priMask Priority Mask\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)\r
-{\r
- __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");\r
-}\r
-#endif\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )\r
-/**\r
- \brief Enable FIQ\r
- \details Enables FIQ interrupts by clearing the F-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-__STATIC_FORCEINLINE void __enable_fault_irq(void)\r
-{\r
- __ASM volatile ("cpsie f" : : : "memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Disable FIQ\r
- \details Disables FIQ interrupts by setting the F-bit in the CPSR.\r
- Can only be executed in Privileged modes.\r
- */\r
-__STATIC_FORCEINLINE void __disable_fault_irq(void)\r
-{\r
- __ASM volatile ("cpsid f" : : : "memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Get Base Priority\r
- \details Returns the current value of the Base Priority register.\r
- \return Base Priority register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, basepri" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Base Priority (non-secure)\r
- \details Returns the current value of the non-secure Base Priority register when in secure state.\r
- \return Base Priority register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Base Priority\r
- \details Assigns the given value to the Base Priority register.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)\r
-{\r
- __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Base Priority (non-secure)\r
- \details Assigns the given value to the non-secure Base Priority register when in secure state.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)\r
-{\r
- __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Base Priority with condition\r
- \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,\r
- or the new value increases the BASEPRI priority level.\r
- \param [in] basePri Base Priority value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)\r
-{\r
- __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Get Fault Mask\r
- \details Returns the current value of the Fault Mask register.\r
- \return Fault Mask register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, faultmask" : "=r" (result) );\r
- return(result);\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Fault Mask (non-secure)\r
- \details Returns the current value of the non-secure Fault Mask register when in secure state.\r
- \return Fault Mask register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );\r
- return(result);\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Fault Mask\r
- \details Assigns the given value to the Fault Mask register.\r
- \param [in] faultMask Fault Mask value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)\r
-{\r
- __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Fault Mask (non-secure)\r
- \details Assigns the given value to the non-secure Fault Mask register when in secure state.\r
- \param [in] faultMask Fault Mask value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)\r
-{\r
- __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");\r
-}\r
-#endif\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */\r
-\r
-\r
-#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-\r
-/**\r
- \brief Get Process Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always in non-secure\r
- mode.\r
- \r
- \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).\r
- \return PSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, psplim" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-\r
-#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Process Stack Pointer Limit (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always.\r
-\r
- \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\r
- \return PSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Process Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored in non-secure\r
- mode.\r
- \r
- \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).\r
- \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- (void)ProcStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));\r
-#endif\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Process Stack Pointer (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored.\r
-\r
- \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.\r
- \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- (void)ProcStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));\r
-#endif\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Get Main Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always in non-secure\r
- mode.\r
-\r
- \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).\r
- \return MSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, msplim" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Get Main Stack Pointer Limit (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence zero is returned always.\r
-\r
- \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.\r
- \return MSPLIM Register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- return 0U;\r
-#else\r
- uint32_t result;\r
- __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );\r
- return result;\r
-#endif\r
-}\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Main Stack Pointer Limit\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored in non-secure\r
- mode.\r
-\r
- \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).\r
- \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- (void)MainStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));\r
-#endif\r
-}\r
-\r
-\r
-#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))\r
-/**\r
- \brief Set Main Stack Pointer Limit (non-secure)\r
- Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure\r
- Stack Pointer Limit register hence the write is silently ignored.\r
-\r
- \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.\r
- \param [in] MainStackPtrLimit Main Stack Pointer value to set\r
- */\r
-__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)\r
-{\r
-#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- (void)MainStackPtrLimit;\r
-#else\r
- __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));\r
-#endif\r
-}\r
-#endif\r
-\r
-#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */\r
-\r
-\r
-/**\r
- \brief Get FPSCR\r
- \details Returns the current value of the Floating Point Status/Control register.\r
- \return Floating Point Status/Control register value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __get_FPSCR(void)\r
-{\r
-#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) )\r
-#if __has_builtin(__builtin_arm_get_fpscr) \r
-// Re-enable using built-in when GCC has been fixed\r
-// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\r
- /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\r
- return __builtin_arm_get_fpscr();\r
-#else\r
- uint32_t result;\r
-\r
- __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );\r
- return(result);\r
-#endif\r
-#else\r
- return(0U);\r
-#endif\r
-}\r
-\r
-\r
-/**\r
- \brief Set FPSCR\r
- \details Assigns the given value to the Floating Point Status/Control register.\r
- \param [in] fpscr Floating Point Status/Control value to set\r
- */\r
-__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)\r
-{\r
-#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) )\r
-#if __has_builtin(__builtin_arm_set_fpscr)\r
-// Re-enable using built-in when GCC has been fixed\r
-// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)\r
- /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */\r
- __builtin_arm_set_fpscr(fpscr);\r
-#else\r
- __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory");\r
-#endif\r
-#else\r
- (void)fpscr;\r
-#endif\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_RegAccFunctions */\r
-\r
-\r
-/* ########################## Core Instruction Access ######################### */\r
-/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\r
- Access to dedicated instructions\r
- @{\r
-*/\r
-\r
-/* Define macros for porting to both thumb1 and thumb2.\r
- * For thumb1, use low register (r0-r7), specified by constraint "l"\r
- * Otherwise, use general registers, specified by constraint "r" */\r
-#if defined (__thumb__) && !defined (__thumb2__)\r
-#define __CMSIS_GCC_OUT_REG(r) "=l" (r)\r
-#define __CMSIS_GCC_RW_REG(r) "+l" (r)\r
-#define __CMSIS_GCC_USE_REG(r) "l" (r)\r
-#else\r
-#define __CMSIS_GCC_OUT_REG(r) "=r" (r)\r
-#define __CMSIS_GCC_RW_REG(r) "+r" (r)\r
-#define __CMSIS_GCC_USE_REG(r) "r" (r)\r
-#endif\r
-\r
-/**\r
- \brief No Operation\r
- \details No Operation does nothing. This instruction can be used for code alignment purposes.\r
- */\r
-#define __NOP() __ASM volatile ("nop")\r
-\r
-/**\r
- \brief Wait For Interrupt\r
- \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.\r
- */\r
-#define __WFI() __ASM volatile ("wfi")\r
-\r
-\r
-/**\r
- \brief Wait For Event\r
- \details Wait For Event is a hint instruction that permits the processor to enter\r
- a low-power state until one of a number of events occurs.\r
- */\r
-#define __WFE() __ASM volatile ("wfe")\r
-\r
-\r
-/**\r
- \brief Send Event\r
- \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.\r
- */\r
-#define __SEV() __ASM volatile ("sev")\r
-\r
-\r
-/**\r
- \brief Instruction Synchronization Barrier\r
- \details Instruction Synchronization Barrier flushes the pipeline in the processor,\r
- so that all instructions following the ISB are fetched from cache or memory,\r
- after the instruction has been completed.\r
- */\r
-__STATIC_FORCEINLINE void __ISB(void)\r
-{\r
- __ASM volatile ("isb 0xF":::"memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Data Synchronization Barrier\r
- \details Acts as a special kind of Data Memory Barrier.\r
- It completes when all explicit memory accesses before this instruction complete.\r
- */\r
-__STATIC_FORCEINLINE void __DSB(void)\r
-{\r
- __ASM volatile ("dsb 0xF":::"memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Data Memory Barrier\r
- \details Ensures the apparent order of the explicit memory operations before\r
- and after the instruction, without ensuring their completion.\r
- */\r
-__STATIC_FORCEINLINE void __DMB(void)\r
-{\r
- __ASM volatile ("dmb 0xF":::"memory");\r
-}\r
-\r
-\r
-/**\r
- \brief Reverse byte order (32 bit)\r
- \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __REV(uint32_t value)\r
-{\r
-#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)\r
- return __builtin_bswap32(value);\r
-#else\r
- uint32_t result;\r
-\r
- __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\r
- return result;\r
-#endif\r
-}\r
-\r
-\r
-/**\r
- \brief Reverse byte order (16 bit)\r
- \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\r
- return result;\r
-}\r
-\r
-\r
-/**\r
- \brief Reverse byte order (16 bit)\r
- \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-__STATIC_FORCEINLINE int16_t __REVSH(int16_t value)\r
-{\r
-#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\r
- return (int16_t)__builtin_bswap16(value);\r
-#else\r
- int16_t result;\r
-\r
- __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\r
- return result;\r
-#endif\r
-}\r
-\r
-\r
-/**\r
- \brief Rotate Right in unsigned value (32 bit)\r
- \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\r
- \param [in] op1 Value to rotate\r
- \param [in] op2 Number of Bits to rotate\r
- \return Rotated value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\r
-{\r
- op2 %= 32U;\r
- if (op2 == 0U)\r
- {\r
- return op1;\r
- }\r
- return (op1 >> op2) | (op1 << (32U - op2));\r
-}\r
-\r
-\r
-/**\r
- \brief Breakpoint\r
- \details Causes the processor to enter Debug state.\r
- Debug tools can use this to investigate system state when the instruction at a particular address is reached.\r
- \param [in] value is ignored by the processor.\r
- If required, a debugger can use it to store additional information about the breakpoint.\r
- */\r
-#define __BKPT(value) __ASM volatile ("bkpt "#value)\r
-\r
-\r
-/**\r
- \brief Reverse bit order of value\r
- \details Reverses the bit order of the given value.\r
- \param [in] value Value to reverse\r
- \return Reversed value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value)\r
-{\r
- uint32_t result;\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )\r
- __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );\r
-#else\r
- uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */\r
-\r
- result = value; /* r will be reversed bits of v; first get LSB of v */\r
- for (value >>= 1U; value != 0U; value >>= 1U)\r
- {\r
- result <<= 1U;\r
- result |= value & 1U;\r
- s--;\r
- }\r
- result <<= s; /* shift when v's highest bits are zero */\r
-#endif\r
- return result;\r
-}\r
-\r
-\r
-/**\r
- \brief Count leading zeros\r
- \details Counts the number of leading zeros of a data value.\r
- \param [in] value Value to count the leading zeros\r
- \return number of leading zeros in value\r
- */\r
-#define __CLZ (uint8_t)__builtin_clz\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-/**\r
- \brief LDR Exclusive (8 bit)\r
- \details Executes a exclusive LDR instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr)\r
-{\r
- uint32_t result;\r
-\r
-#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\r
- __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) );\r
-#else\r
- /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not\r
- accepted by assembler. So has to use following less efficient pattern.\r
- */\r
- __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );\r
-#endif\r
- return ((uint8_t) result); /* Add explicit type cast here */\r
-}\r
-\r
-\r
-/**\r
- \brief LDR Exclusive (16 bit)\r
- \details Executes a exclusive LDR instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr)\r
-{\r
- uint32_t result;\r
-\r
-#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\r
- __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) );\r
-#else\r
- /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not\r
- accepted by assembler. So has to use following less efficient pattern.\r
- */\r
- __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );\r
-#endif\r
- return ((uint16_t) result); /* Add explicit type cast here */\r
-}\r
-\r
-\r
-/**\r
- \brief LDR Exclusive (32 bit)\r
- \details Executes a exclusive LDR instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief STR Exclusive (8 bit)\r
- \details Executes a exclusive STR instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief STR Exclusive (16 bit)\r
- \details Executes a exclusive STR instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief STR Exclusive (32 bit)\r
- \details Executes a exclusive STR instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Remove the exclusive lock\r
- \details Removes the exclusive lock which is created by LDREX.\r
- */\r
-__STATIC_FORCEINLINE void __CLREX(void)\r
-{\r
- __ASM volatile ("clrex" ::: "memory");\r
-}\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */\r
-\r
-\r
-#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )\r
-/**\r
- \brief Signed Saturate\r
- \details Saturates a signed value.\r
- \param [in] ARG1 Value to be saturated\r
- \param [in] ARG2 Bit position to saturate to (1..32)\r
- \return Saturated value\r
- */\r
-#define __SSAT(ARG1,ARG2) \\r
-__extension__ \\r
-({ \\r
- int32_t __RES, __ARG1 = (ARG1); \\r
- __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \\r
- __RES; \\r
- })\r
-\r
-\r
-/**\r
- \brief Unsigned Saturate\r
- \details Saturates an unsigned value.\r
- \param [in] ARG1 Value to be saturated\r
- \param [in] ARG2 Bit position to saturate to (0..31)\r
- \return Saturated value\r
- */\r
-#define __USAT(ARG1,ARG2) \\r
- __extension__ \\r
-({ \\r
- uint32_t __RES, __ARG1 = (ARG1); \\r
- __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \\r
- __RES; \\r
- })\r
-\r
-\r
-/**\r
- \brief Rotate Right with Extend (32 bit)\r
- \details Moves each bit of a bitstring right by one bit.\r
- The carry input is shifted in at the left end of the bitstring.\r
- \param [in] value Value to rotate\r
- \return Rotated value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (8 bit)\r
- \details Executes a Unprivileged LDRT instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
-#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\r
- __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) );\r
-#else\r
- /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not\r
- accepted by assembler. So has to use following less efficient pattern.\r
- */\r
- __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" );\r
-#endif\r
- return ((uint8_t) result); /* Add explicit type cast here */\r
-}\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (16 bit)\r
- \details Executes a Unprivileged LDRT instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
-#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\r
- __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) );\r
-#else\r
- /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not\r
- accepted by assembler. So has to use following less efficient pattern.\r
- */\r
- __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" );\r
-#endif\r
- return ((uint16_t) result); /* Add explicit type cast here */\r
-}\r
-\r
-\r
-/**\r
- \brief LDRT Unprivileged (32 bit)\r
- \details Executes a Unprivileged LDRT instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (8 bit)\r
- \details Executes a Unprivileged STRT instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)\r
-{\r
- __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (16 bit)\r
- \details Executes a Unprivileged STRT instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)\r
-{\r
- __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief STRT Unprivileged (32 bit)\r
- \details Executes a Unprivileged STRT instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)\r
-{\r
- __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) );\r
-}\r
-\r
-#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */\r
-\r
-/**\r
- \brief Signed Saturate\r
- \details Saturates a signed value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (1..32)\r
- \return Saturated value\r
- */\r
-__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)\r
-{\r
- if ((sat >= 1U) && (sat <= 32U))\r
- {\r
- const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\r
- const int32_t min = -1 - max ;\r
- if (val > max)\r
- {\r
- return max;\r
- }\r
- else if (val < min)\r
- {\r
- return min;\r
- }\r
- }\r
- return val;\r
-}\r
-\r
-/**\r
- \brief Unsigned Saturate\r
- \details Saturates an unsigned value.\r
- \param [in] value Value to be saturated\r
- \param [in] sat Bit position to saturate to (0..31)\r
- \return Saturated value\r
- */\r
-__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)\r
-{\r
- if (sat <= 31U)\r
- {\r
- const uint32_t max = ((1U << sat) - 1U);\r
- if (val > (int32_t)max)\r
- {\r
- return max;\r
- }\r
- else if (val < 0)\r
- {\r
- return 0U;\r
- }\r
- }\r
- return (uint32_t)val;\r
-}\r
-\r
-#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \\r
- (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */\r
-\r
-\r
-#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-/**\r
- \brief Load-Acquire (8 bit)\r
- \details Executes a LDAB instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint8_t) result);\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire (16 bit)\r
- \details Executes a LDAH instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint16_t) result);\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire (32 bit)\r
- \details Executes a LDA instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release (8 bit)\r
- \details Executes a STLB instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)\r
-{\r
- __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release (16 bit)\r
- \details Executes a STLH instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)\r
-{\r
- __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release (32 bit)\r
- \details Executes a STL instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- */\r
-__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)\r
-{\r
- __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire Exclusive (8 bit)\r
- \details Executes a LDAB exclusive instruction for 8 bit value.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint8_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint8_t) result);\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire Exclusive (16 bit)\r
- \details Executes a LDAH exclusive instruction for 16 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint16_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return ((uint16_t) result);\r
-}\r
-\r
-\r
-/**\r
- \brief Load-Acquire Exclusive (32 bit)\r
- \details Executes a LDA exclusive instruction for 32 bit values.\r
- \param [in] ptr Pointer to data\r
- \return value of type uint32_t at (*ptr)\r
- */\r
-__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release Exclusive (8 bit)\r
- \details Executes a STLB exclusive instruction for 8 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release Exclusive (16 bit)\r
- \details Executes a STLH exclusive instruction for 16 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) );\r
- return(result);\r
-}\r
-\r
-\r
-/**\r
- \brief Store-Release Exclusive (32 bit)\r
- \details Executes a STL exclusive instruction for 32 bit values.\r
- \param [in] value Value to store\r
- \param [in] ptr Pointer to location\r
- \return 0 Function succeeded\r
- \return 1 Function failed\r
- */\r
-__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) );\r
- return(result);\r
-}\r
-\r
-#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */\r
-\r
-/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\r
-\r
-\r
-/* ################### Compiler specific Intrinsics ########################### */\r
-/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\r
- Access to dedicated SIMD instructions\r
- @{\r
-*/\r
-\r
-#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))\r
-\r
-__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-\r
-__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-\r
-__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-#define __SSAT16(ARG1,ARG2) \\r
-({ \\r
- int32_t __RES, __ARG1 = (ARG1); \\r
- __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \\r
- __RES; \\r
- })\r
-\r
-#define __USAT16(ARG1,ARG2) \\r
-({ \\r
- uint32_t __RES, __ARG1 = (ARG1); \\r
- __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \\r
- __RES; \\r
- })\r
-\r
-__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)\r
-{\r
- union llreg_u{\r
- uint32_t w32[2];\r
- uint64_t w64;\r
- } llr;\r
- llr.w64 = acc;\r
-\r
-#ifndef __ARMEB__ /* Little endian */\r
- __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );\r
-#else /* Big endian */\r
- __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );\r
-#endif\r
-\r
- return(llr.w64);\r
-}\r
-\r
-__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2)\r
-{\r
- uint32_t result;\r
-\r
- __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2)\r
-{\r
- int32_t result;\r
-\r
- __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2)\r
-{\r
- int32_t result;\r
-\r
- __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );\r
- return(result);\r
-}\r
-\r
-#if 0\r
-#define __PKHBT(ARG1,ARG2,ARG3) \\r
-({ \\r
- uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\r
- __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \\r
- __RES; \\r
- })\r
-\r
-#define __PKHTB(ARG1,ARG2,ARG3) \\r
-({ \\r
- uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\r
- if (ARG3 == 0) \\r
- __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \\r
- else \\r
- __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \\r
- __RES; \\r
- })\r
-#endif\r
-\r
-#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \\r
- ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) )\r
-\r
-#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \\r
- ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) )\r
-\r
-__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\r
-{\r
- int32_t result;\r
-\r
- __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) );\r
- return(result);\r
-}\r
-\r
-#endif /* (__ARM_FEATURE_DSP == 1) */\r
-/*@} end of group CMSIS_SIMD_intrinsics */\r
-\r
-\r
-#pragma GCC diagnostic pop\r
-\r
-#endif /* __CMSIS_GCC_H */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file cmsis_iccarm.h\r
- * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file\r
- * @version V5.0.7\r
- * @date 19. June 2018\r
- ******************************************************************************/\r
-\r
-//------------------------------------------------------------------------------\r
-//\r
-// Copyright (c) 2017-2018 IAR Systems\r
-//\r
-// Licensed under the Apache License, Version 2.0 (the "License")\r
-// you may not use this file except in compliance with the License.\r
-// You may obtain a copy of the License at\r
-// http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-// Unless required by applicable law or agreed to in writing, software\r
-// distributed under the License is distributed on an "AS IS" BASIS,\r
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-// See the License for the specific language governing permissions and\r
-// limitations under the License.\r
-//\r
-//------------------------------------------------------------------------------\r
-\r
-\r
-#ifndef __CMSIS_ICCARM_H__\r
-#define __CMSIS_ICCARM_H__\r
-\r
-#ifndef __ICCARM__\r
- #error This file should only be compiled by ICCARM\r
-#endif\r
-\r
-#pragma system_include\r
-\r
-#define __IAR_FT _Pragma("inline=forced") __intrinsic\r
-\r
-#if (__VER__ >= 8000000)\r
- #define __ICCARM_V8 1\r
-#else\r
- #define __ICCARM_V8 0\r
-#endif\r
-\r
-#ifndef __ALIGNED\r
- #if __ICCARM_V8\r
- #define __ALIGNED(x) __attribute__((aligned(x)))\r
- #elif (__VER__ >= 7080000)\r
- /* Needs IAR language extensions */\r
- #define __ALIGNED(x) __attribute__((aligned(x)))\r
- #else\r
- #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored.\r
- #define __ALIGNED(x)\r
- #endif\r
-#endif\r
-\r
-\r
-/* Define compiler macros for CPU architecture, used in CMSIS 5.\r
- */\r
-#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__\r
-/* Macros already defined */\r
-#else\r
- #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__)\r
- #define __ARM_ARCH_8M_MAIN__ 1\r
- #elif defined(__ARM8M_BASELINE__)\r
- #define __ARM_ARCH_8M_BASE__ 1\r
- #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M'\r
- #if __ARM_ARCH == 6\r
- #define __ARM_ARCH_6M__ 1\r
- #elif __ARM_ARCH == 7\r
- #if __ARM_FEATURE_DSP\r
- #define __ARM_ARCH_7EM__ 1\r
- #else\r
- #define __ARM_ARCH_7M__ 1\r
- #endif\r
- #endif /* __ARM_ARCH */\r
- #endif /* __ARM_ARCH_PROFILE == 'M' */\r
-#endif\r
-\r
-/* Alternativ core deduction for older ICCARM's */\r
-#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \\r
- !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__)\r
- #if defined(__ARM6M__) && (__CORE__ == __ARM6M__)\r
- #define __ARM_ARCH_6M__ 1\r
- #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__)\r
- #define __ARM_ARCH_7M__ 1\r
- #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__)\r
- #define __ARM_ARCH_7EM__ 1\r
- #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__)\r
- #define __ARM_ARCH_8M_BASE__ 1\r
- #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__)\r
- #define __ARM_ARCH_8M_MAIN__ 1\r
- #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__)\r
- #define __ARM_ARCH_8M_MAIN__ 1\r
- #else\r
- #error "Unknown target."\r
- #endif\r
-#endif\r
-\r
-\r
-\r
-#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1\r
- #define __IAR_M0_FAMILY 1\r
-#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1\r
- #define __IAR_M0_FAMILY 1\r
-#else\r
- #define __IAR_M0_FAMILY 0\r
-#endif\r
-\r
-\r
-#ifndef __ASM\r
- #define __ASM __asm\r
-#endif\r
-\r
-#ifndef __INLINE\r
- #define __INLINE inline\r
-#endif\r
-\r
-#ifndef __NO_RETURN\r
- #if __ICCARM_V8\r
- #define __NO_RETURN __attribute__((__noreturn__))\r
- #else\r
- #define __NO_RETURN _Pragma("object_attribute=__noreturn")\r
- #endif\r
-#endif\r
-\r
-#ifndef __PACKED\r
- #if __ICCARM_V8\r
- #define __PACKED __attribute__((packed, aligned(1)))\r
- #else\r
- /* Needs IAR language extensions */\r
- #define __PACKED __packed\r
- #endif\r
-#endif\r
-\r
-#ifndef __PACKED_STRUCT\r
- #if __ICCARM_V8\r
- #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))\r
- #else\r
- /* Needs IAR language extensions */\r
- #define __PACKED_STRUCT __packed struct\r
- #endif\r
-#endif\r
-\r
-#ifndef __PACKED_UNION\r
- #if __ICCARM_V8\r
- #define __PACKED_UNION union __attribute__((packed, aligned(1)))\r
- #else\r
- /* Needs IAR language extensions */\r
- #define __PACKED_UNION __packed union\r
- #endif\r
-#endif\r
-\r
-#ifndef __RESTRICT\r
- #define __RESTRICT __restrict\r
-#endif\r
-\r
-#ifndef __STATIC_INLINE\r
- #define __STATIC_INLINE static inline\r
-#endif\r
-\r
-#ifndef __FORCEINLINE\r
- #define __FORCEINLINE _Pragma("inline=forced")\r
-#endif\r
-\r
-#ifndef __STATIC_FORCEINLINE\r
- #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE\r
-#endif\r
-\r
-#ifndef __UNALIGNED_UINT16_READ\r
-#pragma language=save\r
-#pragma language=extended\r
-__IAR_FT uint16_t __iar_uint16_read(void const *ptr)\r
-{\r
- return *(__packed uint16_t*)(ptr);\r
-}\r
-#pragma language=restore\r
-#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR)\r
-#endif\r
-\r
-\r
-#ifndef __UNALIGNED_UINT16_WRITE\r
-#pragma language=save\r
-#pragma language=extended\r
-__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val)\r
-{\r
- *(__packed uint16_t*)(ptr) = val;;\r
-}\r
-#pragma language=restore\r
-#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL)\r
-#endif\r
-\r
-#ifndef __UNALIGNED_UINT32_READ\r
-#pragma language=save\r
-#pragma language=extended\r
-__IAR_FT uint32_t __iar_uint32_read(void const *ptr)\r
-{\r
- return *(__packed uint32_t*)(ptr);\r
-}\r
-#pragma language=restore\r
-#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR)\r
-#endif\r
-\r
-#ifndef __UNALIGNED_UINT32_WRITE\r
-#pragma language=save\r
-#pragma language=extended\r
-__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val)\r
-{\r
- *(__packed uint32_t*)(ptr) = val;;\r
-}\r
-#pragma language=restore\r
-#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL)\r
-#endif\r
-\r
-#ifndef __UNALIGNED_UINT32 /* deprecated */\r
-#pragma language=save\r
-#pragma language=extended\r
-__packed struct __iar_u32 { uint32_t v; };\r
-#pragma language=restore\r
-#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v)\r
-#endif\r
-\r
-#ifndef __USED\r
- #if __ICCARM_V8\r
- #define __USED __attribute__((used))\r
- #else\r
- #define __USED _Pragma("__root")\r
- #endif\r
-#endif\r
-\r
-#ifndef __WEAK\r
- #if __ICCARM_V8\r
- #define __WEAK __attribute__((weak))\r
- #else\r
- #define __WEAK _Pragma("__weak")\r
- #endif\r
-#endif\r
-\r
-\r
-#ifndef __ICCARM_INTRINSICS_VERSION__\r
- #define __ICCARM_INTRINSICS_VERSION__ 0\r
-#endif\r
-\r
-#if __ICCARM_INTRINSICS_VERSION__ == 2\r
-\r
- #if defined(__CLZ)\r
- #undef __CLZ\r
- #endif\r
- #if defined(__REVSH)\r
- #undef __REVSH\r
- #endif\r
- #if defined(__RBIT)\r
- #undef __RBIT\r
- #endif\r
- #if defined(__SSAT)\r
- #undef __SSAT\r
- #endif\r
- #if defined(__USAT)\r
- #undef __USAT\r
- #endif\r
-\r
- #include "iccarm_builtin.h"\r
-\r
- #define __disable_fault_irq __iar_builtin_disable_fiq\r
- #define __disable_irq __iar_builtin_disable_interrupt\r
- #define __enable_fault_irq __iar_builtin_enable_fiq\r
- #define __enable_irq __iar_builtin_enable_interrupt\r
- #define __arm_rsr __iar_builtin_rsr\r
- #define __arm_wsr __iar_builtin_wsr\r
-\r
-\r
- #define __get_APSR() (__arm_rsr("APSR"))\r
- #define __get_BASEPRI() (__arm_rsr("BASEPRI"))\r
- #define __get_CONTROL() (__arm_rsr("CONTROL"))\r
- #define __get_FAULTMASK() (__arm_rsr("FAULTMASK"))\r
-\r
- #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) )\r
- #define __get_FPSCR() (__arm_rsr("FPSCR"))\r
- #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE)))\r
- #else\r
- #define __get_FPSCR() ( 0 )\r
- #define __set_FPSCR(VALUE) ((void)VALUE)\r
- #endif\r
-\r
- #define __get_IPSR() (__arm_rsr("IPSR"))\r
- #define __get_MSP() (__arm_rsr("MSP"))\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- #define __get_MSPLIM() (0U)\r
- #else\r
- #define __get_MSPLIM() (__arm_rsr("MSPLIM"))\r
- #endif\r
- #define __get_PRIMASK() (__arm_rsr("PRIMASK"))\r
- #define __get_PSP() (__arm_rsr("PSP"))\r
-\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- #define __get_PSPLIM() (0U)\r
- #else\r
- #define __get_PSPLIM() (__arm_rsr("PSPLIM"))\r
- #endif\r
-\r
- #define __get_xPSR() (__arm_rsr("xPSR"))\r
-\r
- #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE)))\r
- #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE)))\r
- #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE)))\r
- #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE)))\r
- #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE)))\r
-\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- #define __set_MSPLIM(VALUE) ((void)(VALUE))\r
- #else\r
- #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE)))\r
- #endif\r
- #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE)))\r
- #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE)))\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- #define __set_PSPLIM(VALUE) ((void)(VALUE))\r
- #else\r
- #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE)))\r
- #endif\r
-\r
- #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS"))\r
- #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE)))\r
- #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS"))\r
- #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE)))\r
- #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS"))\r
- #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE)))\r
- #define __TZ_get_SP_NS() (__arm_rsr("SP_NS"))\r
- #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE)))\r
- #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS"))\r
- #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE)))\r
- #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS"))\r
- #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE)))\r
- #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS"))\r
- #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE)))\r
-\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- #define __TZ_get_PSPLIM_NS() (0U)\r
- #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE))\r
- #else\r
- #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS"))\r
- #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE)))\r
- #endif\r
-\r
- #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS"))\r
- #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE)))\r
-\r
- #define __NOP __iar_builtin_no_operation\r
-\r
- #define __CLZ __iar_builtin_CLZ\r
- #define __CLREX __iar_builtin_CLREX\r
-\r
- #define __DMB __iar_builtin_DMB\r
- #define __DSB __iar_builtin_DSB\r
- #define __ISB __iar_builtin_ISB\r
-\r
- #define __LDREXB __iar_builtin_LDREXB\r
- #define __LDREXH __iar_builtin_LDREXH\r
- #define __LDREXW __iar_builtin_LDREX\r
-\r
- #define __RBIT __iar_builtin_RBIT\r
- #define __REV __iar_builtin_REV\r
- #define __REV16 __iar_builtin_REV16\r
-\r
- __IAR_FT int16_t __REVSH(int16_t val)\r
- {\r
- return (int16_t) __iar_builtin_REVSH(val);\r
- }\r
-\r
- #define __ROR __iar_builtin_ROR\r
- #define __RRX __iar_builtin_RRX\r
-\r
- #define __SEV __iar_builtin_SEV\r
-\r
- #if !__IAR_M0_FAMILY\r
- #define __SSAT __iar_builtin_SSAT\r
- #endif\r
-\r
- #define __STREXB __iar_builtin_STREXB\r
- #define __STREXH __iar_builtin_STREXH\r
- #define __STREXW __iar_builtin_STREX\r
-\r
- #if !__IAR_M0_FAMILY\r
- #define __USAT __iar_builtin_USAT\r
- #endif\r
-\r
- #define __WFE __iar_builtin_WFE\r
- #define __WFI __iar_builtin_WFI\r
-\r
- #if __ARM_MEDIA__\r
- #define __SADD8 __iar_builtin_SADD8\r
- #define __QADD8 __iar_builtin_QADD8\r
- #define __SHADD8 __iar_builtin_SHADD8\r
- #define __UADD8 __iar_builtin_UADD8\r
- #define __UQADD8 __iar_builtin_UQADD8\r
- #define __UHADD8 __iar_builtin_UHADD8\r
- #define __SSUB8 __iar_builtin_SSUB8\r
- #define __QSUB8 __iar_builtin_QSUB8\r
- #define __SHSUB8 __iar_builtin_SHSUB8\r
- #define __USUB8 __iar_builtin_USUB8\r
- #define __UQSUB8 __iar_builtin_UQSUB8\r
- #define __UHSUB8 __iar_builtin_UHSUB8\r
- #define __SADD16 __iar_builtin_SADD16\r
- #define __QADD16 __iar_builtin_QADD16\r
- #define __SHADD16 __iar_builtin_SHADD16\r
- #define __UADD16 __iar_builtin_UADD16\r
- #define __UQADD16 __iar_builtin_UQADD16\r
- #define __UHADD16 __iar_builtin_UHADD16\r
- #define __SSUB16 __iar_builtin_SSUB16\r
- #define __QSUB16 __iar_builtin_QSUB16\r
- #define __SHSUB16 __iar_builtin_SHSUB16\r
- #define __USUB16 __iar_builtin_USUB16\r
- #define __UQSUB16 __iar_builtin_UQSUB16\r
- #define __UHSUB16 __iar_builtin_UHSUB16\r
- #define __SASX __iar_builtin_SASX\r
- #define __QASX __iar_builtin_QASX\r
- #define __SHASX __iar_builtin_SHASX\r
- #define __UASX __iar_builtin_UASX\r
- #define __UQASX __iar_builtin_UQASX\r
- #define __UHASX __iar_builtin_UHASX\r
- #define __SSAX __iar_builtin_SSAX\r
- #define __QSAX __iar_builtin_QSAX\r
- #define __SHSAX __iar_builtin_SHSAX\r
- #define __USAX __iar_builtin_USAX\r
- #define __UQSAX __iar_builtin_UQSAX\r
- #define __UHSAX __iar_builtin_UHSAX\r
- #define __USAD8 __iar_builtin_USAD8\r
- #define __USADA8 __iar_builtin_USADA8\r
- #define __SSAT16 __iar_builtin_SSAT16\r
- #define __USAT16 __iar_builtin_USAT16\r
- #define __UXTB16 __iar_builtin_UXTB16\r
- #define __UXTAB16 __iar_builtin_UXTAB16\r
- #define __SXTB16 __iar_builtin_SXTB16\r
- #define __SXTAB16 __iar_builtin_SXTAB16\r
- #define __SMUAD __iar_builtin_SMUAD\r
- #define __SMUADX __iar_builtin_SMUADX\r
- #define __SMMLA __iar_builtin_SMMLA\r
- #define __SMLAD __iar_builtin_SMLAD\r
- #define __SMLADX __iar_builtin_SMLADX\r
- #define __SMLALD __iar_builtin_SMLALD\r
- #define __SMLALDX __iar_builtin_SMLALDX\r
- #define __SMUSD __iar_builtin_SMUSD\r
- #define __SMUSDX __iar_builtin_SMUSDX\r
- #define __SMLSD __iar_builtin_SMLSD\r
- #define __SMLSDX __iar_builtin_SMLSDX\r
- #define __SMLSLD __iar_builtin_SMLSLD\r
- #define __SMLSLDX __iar_builtin_SMLSLDX\r
- #define __SEL __iar_builtin_SEL\r
- #define __QADD __iar_builtin_QADD\r
- #define __QSUB __iar_builtin_QSUB\r
- #define __PKHBT __iar_builtin_PKHBT\r
- #define __PKHTB __iar_builtin_PKHTB\r
- #endif\r
-\r
-#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */\r
-\r
- #if __IAR_M0_FAMILY\r
- /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */\r
- #define __CLZ __cmsis_iar_clz_not_active\r
- #define __SSAT __cmsis_iar_ssat_not_active\r
- #define __USAT __cmsis_iar_usat_not_active\r
- #define __RBIT __cmsis_iar_rbit_not_active\r
- #define __get_APSR __cmsis_iar_get_APSR_not_active\r
- #endif\r
-\r
-\r
- #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) ))\r
- #define __get_FPSCR __cmsis_iar_get_FPSR_not_active\r
- #define __set_FPSCR __cmsis_iar_set_FPSR_not_active\r
- #endif\r
-\r
- #ifdef __INTRINSICS_INCLUDED\r
- #error intrinsics.h is already included previously!\r
- #endif\r
-\r
- #include <intrinsics.h>\r
-\r
- #if __IAR_M0_FAMILY\r
- /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */\r
- #undef __CLZ\r
- #undef __SSAT\r
- #undef __USAT\r
- #undef __RBIT\r
- #undef __get_APSR\r
-\r
- __STATIC_INLINE uint8_t __CLZ(uint32_t data)\r
- {\r
- if (data == 0U) { return 32U; }\r
-\r
- uint32_t count = 0U;\r
- uint32_t mask = 0x80000000U;\r
-\r
- while ((data & mask) == 0U)\r
- {\r
- count += 1U;\r
- mask = mask >> 1U;\r
- }\r
- return count;\r
- }\r
-\r
- __STATIC_INLINE uint32_t __RBIT(uint32_t v)\r
- {\r
- uint8_t sc = 31U;\r
- uint32_t r = v;\r
- for (v >>= 1U; v; v >>= 1U)\r
- {\r
- r <<= 1U;\r
- r |= v & 1U;\r
- sc--;\r
- }\r
- return (r << sc);\r
- }\r
-\r
- __STATIC_INLINE uint32_t __get_APSR(void)\r
- {\r
- uint32_t res;\r
- __asm("MRS %0,APSR" : "=r" (res));\r
- return res;\r
- }\r
-\r
- #endif\r
-\r
- #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \\r
- (defined (__FPU_USED ) && (__FPU_USED == 1U)) ))\r
- #undef __get_FPSCR\r
- #undef __set_FPSCR\r
- #define __get_FPSCR() (0)\r
- #define __set_FPSCR(VALUE) ((void)VALUE)\r
- #endif\r
-\r
- #pragma diag_suppress=Pe940\r
- #pragma diag_suppress=Pe177\r
-\r
- #define __enable_irq __enable_interrupt\r
- #define __disable_irq __disable_interrupt\r
- #define __NOP __no_operation\r
-\r
- #define __get_xPSR __get_PSR\r
-\r
- #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0)\r
-\r
- __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr)\r
- {\r
- return __LDREX((unsigned long *)ptr);\r
- }\r
-\r
- __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr)\r
- {\r
- return __STREX(value, (unsigned long *)ptr);\r
- }\r
- #endif\r
-\r
-\r
- /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */\r
- #if (__CORTEX_M >= 0x03)\r
-\r
- __IAR_FT uint32_t __RRX(uint32_t value)\r
- {\r
- uint32_t result;\r
- __ASM("RRX %0, %1" : "=r"(result) : "r" (value) : "cc");\r
- return(result);\r
- }\r
-\r
- __IAR_FT void __set_BASEPRI_MAX(uint32_t value)\r
- {\r
- __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value));\r
- }\r
-\r
-\r
- #define __enable_fault_irq __enable_fiq\r
- #define __disable_fault_irq __disable_fiq\r
-\r
-\r
- #endif /* (__CORTEX_M >= 0x03) */\r
-\r
- __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2)\r
- {\r
- return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2));\r
- }\r
-\r
- #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-\r
- __IAR_FT uint32_t __get_MSPLIM(void)\r
- {\r
- uint32_t res;\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- res = 0U;\r
- #else\r
- __asm volatile("MRS %0,MSPLIM" : "=r" (res));\r
- #endif\r
- return res;\r
- }\r
-\r
- __IAR_FT void __set_MSPLIM(uint32_t value)\r
- {\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure MSPLIM is RAZ/WI\r
- (void)value;\r
- #else\r
- __asm volatile("MSR MSPLIM,%0" :: "r" (value));\r
- #endif\r
- }\r
-\r
- __IAR_FT uint32_t __get_PSPLIM(void)\r
- {\r
- uint32_t res;\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- res = 0U;\r
- #else\r
- __asm volatile("MRS %0,PSPLIM" : "=r" (res));\r
- #endif\r
- return res;\r
- }\r
-\r
- __IAR_FT void __set_PSPLIM(uint32_t value)\r
- {\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- (void)value;\r
- #else\r
- __asm volatile("MSR PSPLIM,%0" :: "r" (value));\r
- #endif\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_CONTROL_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,CONTROL_NS" : "=r" (res));\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR CONTROL_NS,%0" :: "r" (value));\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_PSP_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,PSP_NS" : "=r" (res));\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_PSP_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR PSP_NS,%0" :: "r" (value));\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_MSP_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,MSP_NS" : "=r" (res));\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_MSP_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR MSP_NS,%0" :: "r" (value));\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_SP_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,SP_NS" : "=r" (res));\r
- return res;\r
- }\r
- __IAR_FT void __TZ_set_SP_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR SP_NS,%0" :: "r" (value));\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res));\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value));\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res));\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value));\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res));\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value));\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void)\r
- {\r
- uint32_t res;\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- res = 0U;\r
- #else\r
- __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res));\r
- #endif\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value)\r
- {\r
- #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \\r
- (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3)))\r
- // without main extensions, the non-secure PSPLIM is RAZ/WI\r
- (void)value;\r
- #else\r
- __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value));\r
- #endif\r
- }\r
-\r
- __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void)\r
- {\r
- uint32_t res;\r
- __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res));\r
- return res;\r
- }\r
-\r
- __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value)\r
- {\r
- __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value));\r
- }\r
-\r
- #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */\r
-\r
-#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */\r
-\r
-#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value))\r
-\r
-#if __IAR_M0_FAMILY\r
- __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)\r
- {\r
- if ((sat >= 1U) && (sat <= 32U))\r
- {\r
- const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);\r
- const int32_t min = -1 - max ;\r
- if (val > max)\r
- {\r
- return max;\r
- }\r
- else if (val < min)\r
- {\r
- return min;\r
- }\r
- }\r
- return val;\r
- }\r
-\r
- __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)\r
- {\r
- if (sat <= 31U)\r
- {\r
- const uint32_t max = ((1U << sat) - 1U);\r
- if (val > (int32_t)max)\r
- {\r
- return max;\r
- }\r
- else if (val < 0)\r
- {\r
- return 0U;\r
- }\r
- }\r
- return (uint32_t)val;\r
- }\r
-#endif\r
-\r
-#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */\r
-\r
- __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr)\r
- {\r
- uint32_t res;\r
- __ASM("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory");\r
- return ((uint8_t)res);\r
- }\r
-\r
- __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr)\r
- {\r
- uint32_t res;\r
- __ASM("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory");\r
- return ((uint16_t)res);\r
- }\r
-\r
- __IAR_FT uint32_t __LDRT(volatile uint32_t *addr)\r
- {\r
- uint32_t res;\r
- __ASM("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory");\r
- return res;\r
- }\r
-\r
- __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr)\r
- {\r
- __ASM("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory");\r
- }\r
-\r
- __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr)\r
- {\r
- __ASM("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory");\r
- }\r
-\r
- __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr)\r
- {\r
- __ASM("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory");\r
- }\r
-\r
-#endif /* (__CORTEX_M >= 0x03) */\r
-\r
-#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \\r
- (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )\r
-\r
-\r
- __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");\r
- return ((uint8_t)res);\r
- }\r
-\r
- __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");\r
- return ((uint16_t)res);\r
- }\r
-\r
- __IAR_FT uint32_t __LDA(volatile uint32_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");\r
- return res;\r
- }\r
-\r
- __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr)\r
- {\r
- __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory");\r
- }\r
-\r
- __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr)\r
- {\r
- __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory");\r
- }\r
-\r
- __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr)\r
- {\r
- __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory");\r
- }\r
-\r
- __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");\r
- return ((uint8_t)res);\r
- }\r
-\r
- __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");\r
- return ((uint16_t)res);\r
- }\r
-\r
- __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");\r
- return res;\r
- }\r
-\r
- __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory");\r
- return res;\r
- }\r
-\r
- __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory");\r
- return res;\r
- }\r
-\r
- __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)\r
- {\r
- uint32_t res;\r
- __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory");\r
- return res;\r
- }\r
-\r
-#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */\r
-\r
-#undef __IAR_FT\r
-#undef __IAR_M0_FAMILY\r
-#undef __ICCARM_V8\r
-\r
-#pragma diag_default=Pe940\r
-#pragma diag_default=Pe177\r
-\r
-#endif /* __CMSIS_ICCARM_H__ */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file cmsis_version.h\r
- * @brief CMSIS Core(M) Version definitions\r
- * @version V5.0.2\r
- * @date 19. April 2017\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2017 ARM Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CMSIS_VERSION_H\r
-#define __CMSIS_VERSION_H\r
-\r
-/* CMSIS Version definitions */\r
-#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */\r
-#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */\r
-#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */\r
-#endif\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_armv8mbl.h\r
- * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File\r
- * @version V5.0.7\r
- * @date 22. June 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_ARMV8MBL_H_GENERIC\r
-#define __CORE_ARMV8MBL_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_ARMv8MBL\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS definitions */\r
-#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \\r
- __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M ( 2U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_ARMV8MBL_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_ARMV8MBL_H_DEPENDANT\r
-#define __CORE_ARMV8MBL_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __ARMv8MBL_REV\r
- #define __ARMv8MBL_REV 0x0000U\r
- #warning "__ARMv8MBL_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __FPU_PRESENT\r
- #define __FPU_PRESENT 0U\r
- #warning "__FPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __SAUREGION_PRESENT\r
- #define __SAUREGION_PRESENT 0U\r
- #warning "__SAUREGION_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __VTOR_PRESENT\r
- #define __VTOR_PRESENT 0U\r
- #warning "__VTOR_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 2U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __ETM_PRESENT\r
- #define __ETM_PRESENT 0U\r
- #warning "__ETM_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MTB_PRESENT\r
- #define __MTB_PRESENT 0U\r
- #warning "__MTB_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group ARMv8MBL */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- - Core SAU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[16U];\r
- __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[16U];\r
- __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[16U];\r
- __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[16U];\r
- __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[16U];\r
- __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */\r
- uint32_t RESERVED5[16U];\r
- __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */\r
-} NVIC_Type;\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
-#else\r
- uint32_t RESERVED0;\r
-#endif\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- uint32_t RESERVED1;\r
- __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */\r
-#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */\r
-\r
-#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\r
-#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\r
-\r
-#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */\r
-#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */\r
-#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
-/* SCB Vector Table Offset Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-#endif\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */\r
-#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */\r
-\r
-#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */\r
-#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */\r
-#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */\r
-#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */\r
-#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */\r
-\r
-#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */\r
-#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */\r
-\r
-#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */\r
-#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */\r
-\r
-#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */\r
-#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */\r
-#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */\r
-\r
-#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */\r
-#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- uint32_t RESERVED0[6U];\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- uint32_t RESERVED3[1U];\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- uint32_t RESERVED5[1U];\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED6[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- uint32_t RESERVED7[1U];\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
- uint32_t RESERVED8[1U];\r
- __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */\r
- uint32_t RESERVED9[1U];\r
- __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */\r
- uint32_t RESERVED10[1U];\r
- __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */\r
- uint32_t RESERVED11[1U];\r
- __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */\r
- uint32_t RESERVED12[1U];\r
- __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */\r
- uint32_t RESERVED13[1U];\r
- __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */\r
- uint32_t RESERVED14[1U];\r
- __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */\r
- uint32_t RESERVED15[1U];\r
- __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */\r
- uint32_t RESERVED16[1U];\r
- __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */\r
- uint32_t RESERVED17[1U];\r
- __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */\r
- uint32_t RESERVED18[1U];\r
- __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */\r
- uint32_t RESERVED19[1U];\r
- __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */\r
- uint32_t RESERVED20[1U];\r
- __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */\r
- uint32_t RESERVED21[1U];\r
- __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */\r
- uint32_t RESERVED22[1U];\r
- __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */\r
- uint32_t RESERVED23[1U];\r
- __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */\r
- uint32_t RESERVED24[1U];\r
- __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */\r
- uint32_t RESERVED25[1U];\r
- __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */\r
- uint32_t RESERVED26[1U];\r
- __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */\r
- uint32_t RESERVED27[1U];\r
- __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */\r
- uint32_t RESERVED28[1U];\r
- __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */\r
- uint32_t RESERVED29[1U];\r
- __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */\r
- uint32_t RESERVED30[1U];\r
- __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */\r
- uint32_t RESERVED31[1U];\r
- __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */\r
-#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */\r
-\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */\r
-#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */\r
-\r
-#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */\r
-#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */\r
- uint32_t RESERVED3[809U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */\r
- uint32_t RESERVED4[4U];\r
- __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */\r
-#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */\r
-#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI Periodic Synchronization Control Register Definitions */\r
-#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */\r
-#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */\r
-\r
-/* TPI Software Lock Status Register Definitions */\r
-#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */\r
-#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */\r
-\r
-#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */\r
-#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */\r
-\r
-#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */\r
-#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */\r
-#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */\r
- uint32_t RESERVED0[7U];\r
- union {\r
- __IOM uint32_t MAIR[2];\r
- struct {\r
- __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */\r
- __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */\r
- };\r
- };\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 1U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */\r
-#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */\r
-\r
-#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */\r
-#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */\r
-\r
-#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */\r
-#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */\r
-\r
-#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */\r
-#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */\r
-\r
-/* MPU Region Limit Address Register Definitions */\r
-#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */\r
-#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */\r
-\r
-#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */\r
-#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */\r
-\r
-#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */\r
-#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 0 Definitions */\r
-#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */\r
-#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */\r
-\r
-#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */\r
-#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */\r
-\r
-#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */\r
-#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */\r
-\r
-#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */\r
-#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 1 Definitions */\r
-#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */\r
-#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */\r
-\r
-#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */\r
-#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */\r
-\r
-#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */\r
-#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */\r
-\r
-#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */\r
-#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SAU Security Attribution Unit (SAU)\r
- \brief Type definitions for the Security Attribution Unit (SAU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Security Attribution Unit (SAU).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */\r
- __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */\r
-#endif\r
-} SAU_Type;\r
-\r
-/* SAU Control Register Definitions */\r
-#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */\r
-#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */\r
-\r
-#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */\r
-#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */\r
-\r
-/* SAU Type Register Definitions */\r
-#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */\r
-#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */\r
-\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
-/* SAU Region Number Register Definitions */\r
-#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */\r
-#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */\r
-\r
-/* SAU Region Base Address Register Definitions */\r
-#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */\r
-#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */\r
-\r
-/* SAU Region Limit Address Register Definitions */\r
-#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */\r
-#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */\r
-\r
-#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */\r
-#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */\r
-\r
-#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */\r
-#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */\r
-\r
-#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\r
-\r
-/*@} end of group CMSIS_SAU */\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */\r
- __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register */\r
-#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */\r
-#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/* Debug Authentication Control Register Definitions */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\r
-\r
-/* Debug Security Control and Status Register Definitions */\r
-#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */\r
-#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */\r
-#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */\r
-#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
- #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
- #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
- #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
- #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
- #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
- #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
- #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-\r
- #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
- #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
- #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
- #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
- #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
- #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */\r
- #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */\r
- #endif\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */\r
- #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */\r
- #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */\r
- #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */\r
- #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */\r
-\r
- #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */\r
- #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */\r
- #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */\r
- #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */\r
- #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */\r
- #endif\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* Special LR values for Secure/Non-Secure call handling and exception handling */\r
-\r
-/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */\r
-#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */\r
-\r
-/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\r
-#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */\r
-#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */\r
-#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */\r
-#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */\r
-#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */\r
-#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */\r
-#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\r
-\r
-/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */\r
-#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */\r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */\r
-#else\r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */\r
-#endif\r
-\r
-\r
-/* Interrupt Priorities are WORD accessible only under Armv6-M */\r
-/* The following MACROS handle generation of the register offset and byte masks */\r
-#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)\r
-#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )\r
-#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )\r
-\r
-#define __NVIC_SetPriorityGrouping(X) (void)(X)\r
-#define __NVIC_GetPriorityGrouping() (0U)\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Get Interrupt Target State\r
- \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- \return 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Target State\r
- \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Interrupt Target State\r
- \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- If VTOR is not present address 0 must be mapped to SRAM.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
-#else\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
-#endif\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
-#else\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
-#endif\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- SCB_AIRCR_SYSRESETREQ_Msk);\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Enable Interrupt (non-secure)\r
- \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status (non-secure)\r
- \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt (non-secure)\r
- \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt (non-secure)\r
- \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt (non-secure)\r
- \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt (non-secure)\r
- \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt (non-secure)\r
- \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority (non-secure)\r
- \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every non-secure processor exception.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority (non-secure)\r
- \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv8.h"\r
-\r
-#endif\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ########################## SAU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SAUFunctions SAU Functions\r
- \brief Functions that configure the SAU.\r
- @{\r
- */\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-\r
-/**\r
- \brief Enable SAU\r
- \details Enables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Enable(void)\r
-{\r
- SAU->CTRL |= (SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-\r
-\r
-/**\r
- \brief Disable SAU\r
- \details Disables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Disable(void)\r
-{\r
- SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_SAUFunctions */\r
-\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief System Tick Configuration (non-secure)\r
- \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
-\r
- */\r
-__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_ARMV8MBL_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_armv8mml.h\r
- * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File\r
- * @version V5.0.7\r
- * @date 06. July 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_ARMV8MML_H_GENERIC\r
-#define __CORE_ARMV8MML_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_ARMv8MML\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS Armv8MML definitions */\r
-#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \\r
- __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (81U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\r
-*/\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined(__ARM_FEATURE_DSP)\r
- #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined(__ARM_FEATURE_DSP)\r
- #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined(__ARM_FEATURE_DSP)\r
- #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined(__ARM_FEATURE_DSP)\r
- #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_ARMV8MML_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_ARMV8MML_H_DEPENDANT\r
-#define __CORE_ARMV8MML_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __ARMv8MML_REV\r
- #define __ARMv8MML_REV 0x0000U\r
- #warning "__ARMv8MML_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __FPU_PRESENT\r
- #define __FPU_PRESENT 0U\r
- #warning "__FPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __SAUREGION_PRESENT\r
- #define __SAUREGION_PRESENT 0U\r
- #warning "__SAUREGION_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __DSP_PRESENT\r
- #define __DSP_PRESENT 0U\r
- #warning "__DSP_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 3U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group ARMv8MML */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- - Core SAU Register\r
- - Core FPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-#define APSR_Q_Pos 27U /*!< APSR: Q Position */\r
-#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */\r
-\r
-#define APSR_GE_Pos 16U /*!< APSR: GE Position */\r
-#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */\r
-#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */\r
-\r
-#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */\r
-#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */\r
-#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */\r
- uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */\r
- uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */\r
- uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */\r
-#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */\r
-\r
-#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */\r
-#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */\r
-\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[16U];\r
- __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[16U];\r
- __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[16U];\r
- __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[16U];\r
- __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[16U];\r
- __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */\r
- uint32_t RESERVED5[16U];\r
- __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */\r
- uint32_t RESERVED6[580U];\r
- __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */\r
-} NVIC_Type;\r
-\r
-/* Software Triggered Interrupt Register Definitions */\r
-#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */\r
-#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
- __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */\r
- __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */\r
- __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */\r
- __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */\r
- __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */\r
- __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */\r
- __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */\r
- __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */\r
- __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */\r
- __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */\r
- __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */\r
- __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */\r
- __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */\r
- __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */\r
- __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */\r
- __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */\r
- __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */\r
- uint32_t RESERVED3[92U];\r
- __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */\r
- uint32_t RESERVED4[15U];\r
- __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */\r
- __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */\r
- __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */\r
- uint32_t RESERVED5[1U];\r
- __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */\r
- uint32_t RESERVED6[1U];\r
- __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */\r
- __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */\r
- __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */\r
- __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */\r
- __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */\r
- __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */\r
- __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */\r
- __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */\r
- uint32_t RESERVED7[6U];\r
- __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */\r
- __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */\r
- __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */\r
- __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */\r
- __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */\r
- uint32_t RESERVED8[1U];\r
- __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */\r
-#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */\r
-\r
-#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\r
-#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\r
-\r
-#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */\r
-#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */\r
-#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Vector Table Offset Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */\r
-#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */\r
-\r
-#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */\r
-#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */\r
-\r
-#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */\r
-#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */\r
-#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */\r
-#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */\r
-#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */\r
-\r
-#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */\r
-#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */\r
-\r
-#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */\r
-#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */\r
-\r
-#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */\r
-#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */\r
-#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */\r
-#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */\r
-#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */\r
-#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */\r
-#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */\r
-#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */\r
-#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */\r
-#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */\r
-#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */\r
-#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */\r
-\r
-#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */\r
-#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */\r
-#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */\r
-#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */\r
-#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */\r
-#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */\r
-\r
-/* SCB Configurable Fault Status Register Definitions */\r
-#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */\r
-#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */\r
-#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */\r
-#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\r
-\r
-/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */\r
-#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */\r
-\r
-#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */\r
-#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */\r
-\r
-#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */\r
-#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */\r
-\r
-#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\r
-#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\r
-\r
-#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */\r
-#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\r
-\r
-#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */\r
-#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\r
-\r
-/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */\r
-#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */\r
-\r
-#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */\r
-#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */\r
-\r
-#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */\r
-#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */\r
-\r
-#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */\r
-#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */\r
-\r
-#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */\r
-#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\r
-\r
-#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */\r
-#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */\r
-\r
-#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */\r
-#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */\r
-\r
-/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */\r
-#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\r
-\r
-#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */\r
-#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */\r
-\r
-#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */\r
-#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */\r
-\r
-#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */\r
-#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */\r
-\r
-#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */\r
-#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */\r
-\r
-#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */\r
-#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */\r
-\r
-#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\r
-#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\r
-\r
-/* SCB Hard Fault Status Register Definitions */\r
-#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */\r
-#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */\r
-\r
-#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */\r
-#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */\r
-\r
-#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */\r
-#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */\r
-\r
-/* SCB Debug Fault Status Register Definitions */\r
-#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */\r
-#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */\r
-\r
-#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */\r
-#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */\r
-\r
-#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */\r
-#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */\r
-\r
-#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */\r
-#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */\r
-\r
-#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */\r
-#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */\r
-\r
-/* SCB Non-Secure Access Control Register Definitions */\r
-#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */\r
-#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */\r
-\r
-#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */\r
-#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */\r
-\r
-#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */\r
-#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */\r
-\r
-/* SCB Cache Level ID Register Definitions */\r
-#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */\r
-#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */\r
-\r
-#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */\r
-#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */\r
-\r
-/* SCB Cache Type Register Definitions */\r
-#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */\r
-#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */\r
-\r
-#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */\r
-#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */\r
-\r
-#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */\r
-#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */\r
-\r
-#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */\r
-#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */\r
-\r
-#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */\r
-#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */\r
-\r
-/* SCB Cache Size ID Register Definitions */\r
-#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */\r
-#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */\r
-\r
-#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */\r
-#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */\r
-\r
-#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */\r
-#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */\r
-\r
-#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */\r
-#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */\r
-\r
-#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */\r
-#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */\r
-\r
-#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */\r
-#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */\r
-\r
-#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */\r
-#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */\r
-\r
-/* SCB Cache Size Selection Register Definitions */\r
-#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */\r
-#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */\r
-\r
-#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */\r
-#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */\r
-\r
-/* SCB Software Triggered Interrupt Register Definitions */\r
-#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */\r
-#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */\r
-\r
-/* SCB D-Cache Invalidate by Set-way Register Definitions */\r
-#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */\r
-#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */\r
-\r
-#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */\r
-#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */\r
-\r
-/* SCB D-Cache Clean by Set-way Register Definitions */\r
-#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */\r
-#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */\r
-\r
-#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */\r
-#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */\r
-\r
-/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\r
-#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */\r
-#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */\r
-\r
-#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */\r
-#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */\r
-\r
-/* Instruction Tightly-Coupled Memory Control Register Definitions */\r
-#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */\r
-#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */\r
-\r
-#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */\r
-#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */\r
-\r
-#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */\r
-#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */\r
-\r
-#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */\r
-#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */\r
-\r
-/* Data Tightly-Coupled Memory Control Register Definitions */\r
-#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */\r
-#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */\r
-\r
-#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */\r
-#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */\r
-\r
-#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */\r
-#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */\r
-\r
-#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */\r
-#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */\r
-\r
-/* AHBP Control Register Definitions */\r
-#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */\r
-#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */\r
-\r
-#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */\r
-#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */\r
-\r
-/* L1 Cache Control Register Definitions */\r
-#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */\r
-#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */\r
-\r
-#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */\r
-#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */\r
-\r
-#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */\r
-#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */\r
-\r
-/* AHBS Control Register Definitions */\r
-#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */\r
-#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */\r
-\r
-#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */\r
-#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */\r
-\r
-#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/\r
-#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */\r
-\r
-/* Auxiliary Bus Fault Status Register Definitions */\r
-#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/\r
-#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */\r
-\r
-#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/\r
-#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */\r
-\r
-#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/\r
-#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */\r
-\r
-#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/\r
-#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */\r
-\r
-#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/\r
-#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */\r
-\r
-#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/\r
-#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */\r
- __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */\r
- __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */\r
-} SCnSCB_Type;\r
-\r
-/* Interrupt Controller Type Register Definitions */\r
-#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */\r
-#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM)\r
- \brief Type definitions for the Instrumentation Trace Macrocell (ITM)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
- */\r
-typedef struct\r
-{\r
- __OM union\r
- {\r
- __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */\r
- __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */\r
- __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */\r
- } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */\r
- uint32_t RESERVED0[864U];\r
- __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */\r
- uint32_t RESERVED1[15U];\r
- __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */\r
- uint32_t RESERVED2[15U];\r
- __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */\r
- uint32_t RESERVED3[29U];\r
- __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */\r
- __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */\r
- __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */\r
- uint32_t RESERVED4[43U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */\r
- uint32_t RESERVED5[1U];\r
- __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */\r
- uint32_t RESERVED6[4U];\r
- __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */\r
- __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */\r
- __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */\r
- __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */\r
- __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */\r
- __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */\r
- __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */\r
- __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */\r
- __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */\r
- __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */\r
- __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */\r
- __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */\r
-} ITM_Type;\r
-\r
-/* ITM Stimulus Port Register Definitions */\r
-#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */\r
-#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */\r
-\r
-#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */\r
-#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */\r
-\r
-/* ITM Trace Privilege Register Definitions */\r
-#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */\r
-#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */\r
-\r
-/* ITM Trace Control Register Definitions */\r
-#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */\r
-#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */\r
-\r
-#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */\r
-#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */\r
-\r
-#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */\r
-#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */\r
-\r
-#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */\r
-#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */\r
-\r
-#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */\r
-#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */\r
-\r
-#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */\r
-#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */\r
-\r
-#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */\r
-#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */\r
-\r
-#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */\r
-#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */\r
-\r
-#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */\r
-#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */\r
-\r
-#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */\r
-#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */\r
-\r
-/* ITM Integration Write Register Definitions */\r
-#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */\r
-#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */\r
-\r
-/* ITM Integration Read Register Definitions */\r
-#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */\r
-#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */\r
-\r
-/* ITM Integration Mode Control Register Definitions */\r
-#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */\r
-#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */\r
-\r
-/* ITM Lock Status Register Definitions */\r
-#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */\r
-#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */\r
-\r
-#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */\r
-#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */\r
-\r
-#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */\r
-#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_ITM */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */\r
- __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */\r
- __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */\r
- __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */\r
- __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */\r
- __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- uint32_t RESERVED3[1U];\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- uint32_t RESERVED5[1U];\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED6[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- uint32_t RESERVED7[1U];\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
- uint32_t RESERVED8[1U];\r
- __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */\r
- uint32_t RESERVED9[1U];\r
- __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */\r
- uint32_t RESERVED10[1U];\r
- __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */\r
- uint32_t RESERVED11[1U];\r
- __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */\r
- uint32_t RESERVED12[1U];\r
- __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */\r
- uint32_t RESERVED13[1U];\r
- __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */\r
- uint32_t RESERVED14[1U];\r
- __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */\r
- uint32_t RESERVED15[1U];\r
- __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */\r
- uint32_t RESERVED16[1U];\r
- __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */\r
- uint32_t RESERVED17[1U];\r
- __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */\r
- uint32_t RESERVED18[1U];\r
- __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */\r
- uint32_t RESERVED19[1U];\r
- __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */\r
- uint32_t RESERVED20[1U];\r
- __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */\r
- uint32_t RESERVED21[1U];\r
- __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */\r
- uint32_t RESERVED22[1U];\r
- __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */\r
- uint32_t RESERVED23[1U];\r
- __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */\r
- uint32_t RESERVED24[1U];\r
- __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */\r
- uint32_t RESERVED25[1U];\r
- __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */\r
- uint32_t RESERVED26[1U];\r
- __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */\r
- uint32_t RESERVED27[1U];\r
- __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */\r
- uint32_t RESERVED28[1U];\r
- __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */\r
- uint32_t RESERVED29[1U];\r
- __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */\r
- uint32_t RESERVED30[1U];\r
- __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */\r
- uint32_t RESERVED31[1U];\r
- __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */\r
- uint32_t RESERVED32[934U];\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */\r
- uint32_t RESERVED33[1U];\r
- __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */\r
-#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */\r
-\r
-#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */\r
-#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */\r
-\r
-#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */\r
-#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */\r
-\r
-#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */\r
-#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */\r
-\r
-#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */\r
-#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */\r
-#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */\r
-\r
-#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */\r
-#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */\r
-#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */\r
-\r
-#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */\r
-#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */\r
-\r
-#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */\r
-#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */\r
-\r
-#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */\r
-#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */\r
-\r
-#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */\r
-#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */\r
-\r
-#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */\r
-#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */\r
-\r
-#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */\r
-#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */\r
-\r
-/* DWT CPI Count Register Definitions */\r
-#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */\r
-#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */\r
-\r
-/* DWT Exception Overhead Count Register Definitions */\r
-#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */\r
-#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */\r
-\r
-/* DWT Sleep Count Register Definitions */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */\r
-\r
-/* DWT LSU Count Register Definitions */\r
-#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */\r
-#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */\r
-\r
-/* DWT Folded-instruction Count Register Definitions */\r
-#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */\r
-#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */\r
-#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */\r
-\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */\r
-#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */\r
-\r
-#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */\r
-#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */\r
- uint32_t RESERVED3[809U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */\r
- uint32_t RESERVED4[4U];\r
- __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */\r
-#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */\r
-#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI Periodic Synchronization Control Register Definitions */\r
-#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */\r
-#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */\r
-\r
-/* TPI Software Lock Status Register Definitions */\r
-#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */\r
-#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */\r
-\r
-#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */\r
-#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */\r
-\r
-#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */\r
-#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */\r
-#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */\r
- __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */\r
- __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */\r
- __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */\r
- __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */\r
- __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */\r
- __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */\r
- uint32_t RESERVED0[1];\r
- union {\r
- __IOM uint32_t MAIR[2];\r
- struct {\r
- __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */\r
- __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */\r
- };\r
- };\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 4U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */\r
-#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */\r
-\r
-#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */\r
-#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */\r
-\r
-#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */\r
-#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */\r
-\r
-#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */\r
-#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */\r
-\r
-/* MPU Region Limit Address Register Definitions */\r
-#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */\r
-#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */\r
-\r
-#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */\r
-#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */\r
-\r
-#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */\r
-#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 0 Definitions */\r
-#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */\r
-#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */\r
-\r
-#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */\r
-#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */\r
-\r
-#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */\r
-#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */\r
-\r
-#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */\r
-#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 1 Definitions */\r
-#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */\r
-#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */\r
-\r
-#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */\r
-#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */\r
-\r
-#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */\r
-#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */\r
-\r
-#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */\r
-#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SAU Security Attribution Unit (SAU)\r
- \brief Type definitions for the Security Attribution Unit (SAU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Security Attribution Unit (SAU).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */\r
- __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */\r
-#else\r
- uint32_t RESERVED0[3];\r
-#endif\r
- __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */\r
- __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */\r
-} SAU_Type;\r
-\r
-/* SAU Control Register Definitions */\r
-#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */\r
-#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */\r
-\r
-#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */\r
-#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */\r
-\r
-/* SAU Type Register Definitions */\r
-#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */\r
-#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */\r
-\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
-/* SAU Region Number Register Definitions */\r
-#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */\r
-#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */\r
-\r
-/* SAU Region Base Address Register Definitions */\r
-#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */\r
-#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */\r
-\r
-/* SAU Region Limit Address Register Definitions */\r
-#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */\r
-#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */\r
-\r
-#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */\r
-#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */\r
-\r
-#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */\r
-#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */\r
-\r
-#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\r
-\r
-/* Secure Fault Status Register Definitions */\r
-#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */\r
-#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */\r
-\r
-#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */\r
-#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */\r
-\r
-#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */\r
-#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */\r
-\r
-#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */\r
-#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */\r
-\r
-#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */\r
-#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */\r
-\r
-#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */\r
-#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */\r
-\r
-#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */\r
-#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */\r
-\r
-#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */\r
-#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */\r
-\r
-/*@} end of group CMSIS_SAU */\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_FPU Floating Point Unit (FPU)\r
- \brief Type definitions for the Floating Point Unit (FPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Floating Point Unit (FPU).\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */\r
- __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */\r
- __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */\r
- __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */\r
- __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */\r
-} FPU_Type;\r
-\r
-/* Floating-Point Context Control Register Definitions */\r
-#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */\r
-#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */\r
-\r
-#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */\r
-#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */\r
-\r
-#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */\r
-#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */\r
-\r
-#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */\r
-#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */\r
-\r
-#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */\r
-#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */\r
-\r
-#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */\r
-#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */\r
-\r
-#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */\r
-#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */\r
-#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */\r
-\r
-#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */\r
-#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */\r
-\r
-#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */\r
-#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */\r
-#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */\r
-#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */\r
-\r
-#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */\r
-#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */\r
-#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */\r
-\r
-#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */\r
-#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */\r
-\r
-#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */\r
-#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */\r
-\r
-#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */\r
-#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */\r
-\r
-/* Floating-Point Context Address Register Definitions */\r
-#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */\r
-#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */\r
-\r
-/* Floating-Point Default Status Control Register Definitions */\r
-#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */\r
-#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */\r
-\r
-#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */\r
-#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */\r
-\r
-#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */\r
-#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */\r
-\r
-#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */\r
-#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */\r
-\r
-/* Media and FP Feature Register 0 Definitions */\r
-#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */\r
-#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */\r
-\r
-#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */\r
-#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */\r
-\r
-#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */\r
-#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */\r
-\r
-#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */\r
-#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */\r
-\r
-#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */\r
-#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */\r
-\r
-#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */\r
-#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */\r
-\r
-#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */\r
-#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */\r
-\r
-#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */\r
-#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */\r
-\r
-/* Media and FP Feature Register 1 Definitions */\r
-#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */\r
-#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */\r
-\r
-#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */\r
-#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */\r
-\r
-#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */\r
-#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */\r
-\r
-#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */\r
-#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */\r
-\r
-/*@} end of group CMSIS_FPU */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */\r
- __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register Definitions */\r
-#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */\r
-#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */\r
-#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */\r
-#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */\r
-#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */\r
-#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */\r
-#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */\r
-#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */\r
-#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */\r
-#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */\r
-#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/* Debug Authentication Control Register Definitions */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\r
-\r
-/* Debug Security Control and Status Register Definitions */\r
-#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */\r
-#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */\r
-#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */\r
-#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
- #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
- #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */\r
- #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
- #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
- #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
- #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
- #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
- #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
- #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
- #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
- #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
- #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
- #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */\r
- #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
- #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
- #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */\r
- #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */\r
- #endif\r
-\r
- #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */\r
- #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */\r
- #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */\r
- #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */\r
- #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */\r
- #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */\r
-\r
- #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */\r
- #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */\r
- #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */\r
- #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */\r
- #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */\r
- #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */\r
- #endif\r
-\r
- #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */\r
- #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Debug Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* Special LR values for Secure/Non-Secure call handling and exception handling */\r
-\r
-/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */\r
-#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */\r
-\r
-/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\r
-#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */\r
-#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */\r
-#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */\r
-#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */\r
-#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */\r
-#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */\r
-#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\r
-\r
-/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */\r
-#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */\r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */\r
-#else\r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Priority Grouping\r
- \details Sets the priority grouping field using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */\r
- SCB->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping\r
- \details Reads the priority grouping field from the NVIC Interrupt Controller.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\r
-{\r
- return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Get Interrupt Target State\r
- \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- \return 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Target State\r
- \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Interrupt Target State\r
- \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\r
- SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Set Priority Grouping (non-secure)\r
- \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB_NS->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */\r
- SCB_NS->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping (non-secure)\r
- \details Reads the priority grouping field from the non-secure NVIC when in secure state.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\r
-{\r
- return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt (non-secure)\r
- \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status (non-secure)\r
- \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt (non-secure)\r
- \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt (non-secure)\r
- \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt (non-secure)\r
- \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt (non-secure)\r
- \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt (non-secure)\r
- \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority (non-secure)\r
- \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every non-secure processor exception.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority (non-secure)\r
- \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv8.h"\r
-\r
-#endif\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- uint32_t mvfr0;\r
-\r
- mvfr0 = FPU->MVFR0;\r
- if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\r
- {\r
- return 2U; /* Double + Single precision FPU */\r
- }\r
- else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\r
- {\r
- return 1U; /* Single precision FPU */\r
- }\r
- else\r
- {\r
- return 0U; /* No FPU */\r
- }\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ########################## SAU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SAUFunctions SAU Functions\r
- \brief Functions that configure the SAU.\r
- @{\r
- */\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-\r
-/**\r
- \brief Enable SAU\r
- \details Enables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Enable(void)\r
-{\r
- SAU->CTRL |= (SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-\r
-\r
-/**\r
- \brief Disable SAU\r
- \details Disables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Disable(void)\r
-{\r
- SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_SAUFunctions */\r
-\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief System Tick Configuration (non-secure)\r
- \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
-\r
- */\r
-__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-/* ##################################### Debug In/Output function ########################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_core_DebugFunctions ITM Functions\r
- \brief Functions that access the ITM debug interface.\r
- @{\r
- */\r
-\r
-extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */\r
-#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */\r
-\r
-\r
-/**\r
- \brief ITM Send Character\r
- \details Transmits a character via the ITM channel 0, and\r
- \li Just returns when no debugger is connected that has booked the output.\r
- \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\r
- \param [in] ch Character to transmit.\r
- \returns Character to transmit.\r
- */\r
-__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\r
-{\r
- if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */\r
- ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */\r
- {\r
- while (ITM->PORT[0U].u32 == 0UL)\r
- {\r
- __NOP();\r
- }\r
- ITM->PORT[0U].u8 = (uint8_t)ch;\r
- }\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Receive Character\r
- \details Inputs a character via the external variable \ref ITM_RxBuffer.\r
- \return Received character.\r
- \return -1 No character pending.\r
- */\r
-__STATIC_INLINE int32_t ITM_ReceiveChar (void)\r
-{\r
- int32_t ch = -1; /* no character available */\r
-\r
- if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\r
- {\r
- ch = ITM_RxBuffer;\r
- ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */\r
- }\r
-\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Check Character\r
- \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.\r
- \return 0 No character available.\r
- \return 1 Character available.\r
- */\r
-__STATIC_INLINE int32_t ITM_CheckChar (void)\r
-{\r
-\r
- if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\r
- {\r
- return (0); /* no character available */\r
- }\r
- else\r
- {\r
- return (1); /* character available */\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_core_DebugFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_ARMV8MML_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm0.h\r
- * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File\r
- * @version V5.0.5\r
- * @date 28. May 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM0_H_GENERIC\r
-#define __CORE_CM0_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_M0\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
- \r
-/* CMSIS CM0 definitions */\r
-#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (0U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM0_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM0_H_DEPENDANT\r
-#define __CORE_CM0_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM0_REV\r
- #define __CM0_REV 0x0000U\r
- #warning "__CM0_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 2U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex_M0 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:1; /*!< bit: 0 Reserved */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[31U];\r
- __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[31U];\r
- __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[31U];\r
- __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[31U];\r
- uint32_t RESERVED4[64U];\r
- __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */\r
-} NVIC_Type;\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- uint32_t RESERVED0;\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- uint32_t RESERVED1;\r
- __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\r
- Therefore they are not covered by the Cortex-M0 header file.\r
- @{\r
- */\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
-/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-\r
-\r
-/* Interrupt Priorities are WORD accessible only under Armv6-M */\r
-/* The following MACROS handle generation of the register offset and byte masks */\r
-#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)\r
-#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )\r
-#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )\r
-\r
-#define __NVIC_SetPriorityGrouping(X) (void)(X)\r
-#define __NVIC_GetPriorityGrouping() (0U)\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- Address 0 must be mapped to SRAM.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- SCB_AIRCR_SYSRESETREQ_Msk);\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM0_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm0plus.h\r
- * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File\r
- * @version V5.0.6\r
- * @date 28. May 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM0PLUS_H_GENERIC\r
-#define __CORE_CM0PLUS_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex-M0+\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
- \r
-/* CMSIS CM0+ definitions */\r
-#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (0U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM0PLUS_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM0PLUS_H_DEPENDANT\r
-#define __CORE_CM0PLUS_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM0PLUS_REV\r
- #define __CM0PLUS_REV 0x0000U\r
- #warning "__CM0PLUS_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __VTOR_PRESENT\r
- #define __VTOR_PRESENT 0U\r
- #warning "__VTOR_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 2U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex-M0+ */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core MPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[31U];\r
- __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[31U];\r
- __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[31U];\r
- __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[31U];\r
- uint32_t RESERVED4[64U];\r
- __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */\r
-} NVIC_Type;\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
-#else\r
- uint32_t RESERVED0;\r
-#endif\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- uint32_t RESERVED1;\r
- __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-#endif\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 1U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */\r
-#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */\r
-\r
-#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */\r
-#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */\r
-\r
-#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */\r
-#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */\r
-\r
-/* MPU Region Attribute and Size Register Definitions */\r
-#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */\r
-#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */\r
-\r
-#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */\r
-#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */\r
-\r
-#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */\r
-#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */\r
-\r
-#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */\r
-#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */\r
-\r
-#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */\r
-#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */\r
-\r
-#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */\r
-#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */\r
-\r
-#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */\r
-#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */\r
-\r
-#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */\r
-#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */\r
-\r
-#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */\r
-#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */\r
-\r
-#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */\r
-#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\r
- Therefore they are not covered by the Cortex-M0+ header file.\r
- @{\r
- */\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
-#endif\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
-/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-\r
-\r
-/* Interrupt Priorities are WORD accessible only under Armv6-M */\r
-/* The following MACROS handle generation of the register offset and byte masks */\r
-#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)\r
-#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )\r
-#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )\r
-\r
-#define __NVIC_SetPriorityGrouping(X) (void)(X)\r
-#define __NVIC_GetPriorityGrouping() (0U)\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- If VTOR is not present address 0 must be mapped to SRAM.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
-#else\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
-#endif\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
-#else\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
-#endif\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- SCB_AIRCR_SYSRESETREQ_Msk);\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv7.h"\r
-\r
-#endif\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM0PLUS_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm1.h\r
- * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File\r
- * @version V1.0.0\r
- * @date 23. July 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM1_H_GENERIC\r
-#define __CORE_CM1_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_M1\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
- \r
-/* CMSIS CM1 definitions */\r
-#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (1U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM1_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM1_H_DEPENDANT\r
-#define __CORE_CM1_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM1_REV\r
- #define __CM1_REV 0x0100U\r
- #warning "__CM1_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 2U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex_M1 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:1; /*!< bit: 0 Reserved */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[31U];\r
- __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[31U];\r
- __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[31U];\r
- __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[31U];\r
- uint32_t RESERVED4[64U];\r
- __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */\r
-} NVIC_Type;\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- uint32_t RESERVED0;\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- uint32_t RESERVED1;\r
- __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */\r
-} SCnSCB_Type;\r
-\r
-/* Auxiliary Control Register Definitions */\r
-#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */\r
-#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */\r
-\r
-#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */\r
-#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\r
- Therefore they are not covered by the Cortex-M1 header file.\r
- @{\r
- */\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
-/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-\r
-\r
-/* Interrupt Priorities are WORD accessible only under Armv6-M */\r
-/* The following MACROS handle generation of the register offset and byte masks */\r
-#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)\r
-#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )\r
-#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )\r
-\r
-#define __NVIC_SetPriorityGrouping(X) (void)(X)\r
-#define __NVIC_GetPriorityGrouping() (0U)\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- Address 0 must be mapped to SRAM.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- SCB_AIRCR_SYSRESETREQ_Msk);\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM1_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm23.h\r
- * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File\r
- * @version V5.0.7\r
- * @date 22. June 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM23_H_GENERIC\r
-#define __CORE_CM23_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_M23\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS definitions */\r
-#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (23U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM23_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM23_H_DEPENDANT\r
-#define __CORE_CM23_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM23_REV\r
- #define __CM23_REV 0x0000U\r
- #warning "__CM23_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __FPU_PRESENT\r
- #define __FPU_PRESENT 0U\r
- #warning "__FPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __SAUREGION_PRESENT\r
- #define __SAUREGION_PRESENT 0U\r
- #warning "__SAUREGION_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __VTOR_PRESENT\r
- #define __VTOR_PRESENT 0U\r
- #warning "__VTOR_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 2U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __ETM_PRESENT\r
- #define __ETM_PRESENT 0U\r
- #warning "__ETM_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MTB_PRESENT\r
- #define __MTB_PRESENT 0U\r
- #warning "__MTB_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex_M23 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- - Core SAU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[16U];\r
- __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[16U];\r
- __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[16U];\r
- __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[16U];\r
- __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[16U];\r
- __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */\r
- uint32_t RESERVED5[16U];\r
- __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */\r
-} NVIC_Type;\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
-#else\r
- uint32_t RESERVED0;\r
-#endif\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- uint32_t RESERVED1;\r
- __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */\r
-#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */\r
-\r
-#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\r
-#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\r
-\r
-#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */\r
-#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */\r
-#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
-/* SCB Vector Table Offset Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-#endif\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */\r
-#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */\r
-\r
-#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */\r
-#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */\r
-#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */\r
-#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */\r
-#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */\r
-\r
-#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */\r
-#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */\r
-\r
-#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */\r
-#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */\r
-\r
-#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */\r
-#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */\r
-#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */\r
-\r
-#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */\r
-#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- uint32_t RESERVED0[6U];\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- uint32_t RESERVED3[1U];\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- uint32_t RESERVED5[1U];\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED6[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- uint32_t RESERVED7[1U];\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
- uint32_t RESERVED8[1U];\r
- __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */\r
- uint32_t RESERVED9[1U];\r
- __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */\r
- uint32_t RESERVED10[1U];\r
- __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */\r
- uint32_t RESERVED11[1U];\r
- __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */\r
- uint32_t RESERVED12[1U];\r
- __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */\r
- uint32_t RESERVED13[1U];\r
- __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */\r
- uint32_t RESERVED14[1U];\r
- __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */\r
- uint32_t RESERVED15[1U];\r
- __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */\r
- uint32_t RESERVED16[1U];\r
- __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */\r
- uint32_t RESERVED17[1U];\r
- __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */\r
- uint32_t RESERVED18[1U];\r
- __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */\r
- uint32_t RESERVED19[1U];\r
- __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */\r
- uint32_t RESERVED20[1U];\r
- __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */\r
- uint32_t RESERVED21[1U];\r
- __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */\r
- uint32_t RESERVED22[1U];\r
- __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */\r
- uint32_t RESERVED23[1U];\r
- __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */\r
- uint32_t RESERVED24[1U];\r
- __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */\r
- uint32_t RESERVED25[1U];\r
- __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */\r
- uint32_t RESERVED26[1U];\r
- __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */\r
- uint32_t RESERVED27[1U];\r
- __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */\r
- uint32_t RESERVED28[1U];\r
- __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */\r
- uint32_t RESERVED29[1U];\r
- __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */\r
- uint32_t RESERVED30[1U];\r
- __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */\r
- uint32_t RESERVED31[1U];\r
- __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */\r
-#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */\r
-\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */\r
-#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */\r
-\r
-#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */\r
-#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */\r
- uint32_t RESERVED3[759U];\r
- __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */\r
- __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */\r
- __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */\r
- uint32_t RESERVED4[1U];\r
- __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */\r
- __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */\r
- __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */\r
- uint32_t RESERVED5[39U];\r
- __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */\r
- __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */\r
- uint32_t RESERVED7[8U];\r
- __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */\r
-#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */\r
-#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI TRIGGER Register Definitions */\r
-#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */\r
-#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */\r
-\r
-/* TPI Integration Test FIFO Test Data 0 Register Definitions */\r
-#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\r
-#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\r
-#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\r
-#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\r
-#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\r
-#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\r
-#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\r
-#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\r
-\r
-/* TPI Integration Test ATB Control Register 2 Register Definitions */\r
-#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */\r
-#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */\r
-\r
-#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */\r
-#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */\r
-#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */\r
-#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */\r
-\r
-/* TPI Integration Test FIFO Test Data 1 Register Definitions */\r
-#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\r
-#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\r
-#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\r
-#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\r
-#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\r
-#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\r
-#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\r
-#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\r
-\r
-/* TPI Integration Test ATB Control Register 0 Definitions */\r
-#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */\r
-#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */\r
-\r
-#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */\r
-#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */\r
-#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */\r
-#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */\r
-\r
-/* TPI Integration Mode Control Register Definitions */\r
-#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */\r
-#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */\r
-#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */\r
-\r
-#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */\r
-#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */\r
- uint32_t RESERVED0[7U];\r
- union {\r
- __IOM uint32_t MAIR[2];\r
- struct {\r
- __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */\r
- __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */\r
- };\r
- };\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 1U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */\r
-#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */\r
-\r
-#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */\r
-#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */\r
-\r
-#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */\r
-#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */\r
-\r
-#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */\r
-#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */\r
-\r
-/* MPU Region Limit Address Register Definitions */\r
-#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */\r
-#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */\r
-\r
-#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */\r
-#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */\r
-\r
-#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */\r
-#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 0 Definitions */\r
-#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */\r
-#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */\r
-\r
-#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */\r
-#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */\r
-\r
-#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */\r
-#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */\r
-\r
-#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */\r
-#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 1 Definitions */\r
-#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */\r
-#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */\r
-\r
-#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */\r
-#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */\r
-\r
-#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */\r
-#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */\r
-\r
-#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */\r
-#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SAU Security Attribution Unit (SAU)\r
- \brief Type definitions for the Security Attribution Unit (SAU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Security Attribution Unit (SAU).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */\r
- __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */\r
-#endif\r
-} SAU_Type;\r
-\r
-/* SAU Control Register Definitions */\r
-#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */\r
-#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */\r
-\r
-#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */\r
-#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */\r
-\r
-/* SAU Type Register Definitions */\r
-#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */\r
-#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */\r
-\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
-/* SAU Region Number Register Definitions */\r
-#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */\r
-#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */\r
-\r
-/* SAU Region Base Address Register Definitions */\r
-#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */\r
-#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */\r
-\r
-/* SAU Region Limit Address Register Definitions */\r
-#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */\r
-#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */\r
-\r
-#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */\r
-#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */\r
-\r
-#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */\r
-#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */\r
-\r
-#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\r
-\r
-/*@} end of group CMSIS_SAU */\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */\r
- __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register */\r
-#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */\r
-#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/* Debug Authentication Control Register Definitions */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\r
-\r
-/* Debug Security Control and Status Register Definitions */\r
-#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */\r
-#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */\r
-#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */\r
-#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
- #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
- #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
- #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
- #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
- #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
- #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
- #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-\r
- #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
- #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
- #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
- #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
- #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
- #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */\r
- #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */\r
- #endif\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */\r
- #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */\r
- #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */\r
- #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */\r
- #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */\r
-\r
- #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */\r
- #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */\r
- #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */\r
- #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */\r
- #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */\r
- #endif\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
-/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */\r
-/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* Special LR values for Secure/Non-Secure call handling and exception handling */\r
-\r
-/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ \r
-#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */\r
-\r
-/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\r
-#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */\r
-#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */\r
-#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */\r
-#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */\r
-#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */\r
-#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */\r
-#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\r
-\r
-/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */\r
-#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */\r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */\r
-#else \r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */\r
-#endif\r
-\r
- \r
-/* Interrupt Priorities are WORD accessible only under Armv6-M */\r
-/* The following MACROS handle generation of the register offset and byte masks */\r
-#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)\r
-#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )\r
-#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )\r
-\r
-#define __NVIC_SetPriorityGrouping(X) (void)(X)\r
-#define __NVIC_GetPriorityGrouping() (0U)\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Get Interrupt Target State\r
- \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- \return 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Target State\r
- \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Interrupt Target State\r
- \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- If VTOR is not present address 0 must be mapped to SRAM.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
-#else\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
-#endif\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
-#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
-#else\r
- uint32_t *vectors = (uint32_t *)0x0U;\r
-#endif\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- SCB_AIRCR_SYSRESETREQ_Msk);\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Enable Interrupt (non-secure)\r
- \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status (non-secure)\r
- \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt (non-secure)\r
- \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt (non-secure)\r
- \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt (non-secure)\r
- \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt (non-secure)\r
- \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt (non-secure)\r
- \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority (non-secure)\r
- \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every non-secure processor exception.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority (non-secure)\r
- \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv8.h"\r
-\r
-#endif\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ########################## SAU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SAUFunctions SAU Functions\r
- \brief Functions that configure the SAU.\r
- @{\r
- */\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-\r
-/**\r
- \brief Enable SAU\r
- \details Enables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Enable(void)\r
-{\r
- SAU->CTRL |= (SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-\r
-\r
-/**\r
- \brief Disable SAU\r
- \details Disables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Disable(void)\r
-{\r
- SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_SAUFunctions */\r
-\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief System Tick Configuration (non-secure)\r
- \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
-\r
- */\r
-__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM23_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm3.h\r
- * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File\r
- * @version V5.0.8\r
- * @date 04. June 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM3_H_GENERIC\r
-#define __CORE_CM3_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_M3\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS CM3 definitions */\r
-#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (3U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM3_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM3_H_DEPENDANT\r
-#define __CORE_CM3_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM3_REV\r
- #define __CM3_REV 0x0200U\r
- #warning "__CM3_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 3U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex_M3 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-#define APSR_Q_Pos 27U /*!< APSR: Q Position */\r
-#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:1; /*!< bit: 9 Reserved */\r
- uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */\r
- uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit */\r
- uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */\r
-#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */\r
-\r
-#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */\r
-#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */\r
-#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[24U];\r
- __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[24U];\r
- __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[24U];\r
- __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[24U];\r
- __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[56U];\r
- __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */\r
- uint32_t RESERVED5[644U];\r
- __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */\r
-} NVIC_Type;\r
-\r
-/* Software Triggered Interrupt Register Definitions */\r
-#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */\r
-#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
- __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */\r
- __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */\r
- __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */\r
- __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */\r
- __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */\r
- __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */\r
- __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */\r
- __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */\r
- __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */\r
- __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */\r
- __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */\r
- uint32_t RESERVED0[5U];\r
- __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Vector Table Offset Register Definitions */\r
-#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */\r
-#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */\r
-#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */\r
-\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-#else\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-#endif\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */\r
-#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */\r
-#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */\r
-#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */\r
-#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */\r
-#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */\r
-#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */\r
-#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */\r
-#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */\r
-#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */\r
-#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */\r
-#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */\r
-#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */\r
-#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */\r
-\r
-/* SCB Configurable Fault Status Register Definitions */\r
-#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */\r
-#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */\r
-#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */\r
-#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\r
-\r
-/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */\r
-#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */\r
-\r
-#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */\r
-#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */\r
-\r
-#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\r
-#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\r
-\r
-#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */\r
-#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\r
-\r
-#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */\r
-#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\r
-\r
-/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */\r
-#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */\r
-\r
-#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */\r
-#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */\r
-\r
-#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */\r
-#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */\r
-\r
-#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */\r
-#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\r
-\r
-#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */\r
-#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */\r
-\r
-#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */\r
-#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */\r
-\r
-/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */\r
-#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\r
-\r
-#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */\r
-#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */\r
-\r
-#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */\r
-#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */\r
-\r
-#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */\r
-#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */\r
-\r
-#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */\r
-#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */\r
-\r
-#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\r
-#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\r
-\r
-/* SCB Hard Fault Status Register Definitions */\r
-#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */\r
-#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */\r
-\r
-#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */\r
-#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */\r
-\r
-#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */\r
-#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */\r
-\r
-/* SCB Debug Fault Status Register Definitions */\r
-#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */\r
-#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */\r
-\r
-#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */\r
-#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */\r
-\r
-#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */\r
-#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */\r
-\r
-#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */\r
-#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */\r
-\r
-#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */\r
-#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */\r
-#if defined (__CM3_REV) && (__CM3_REV >= 0x200U)\r
- __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */\r
-#else\r
- uint32_t RESERVED1[1U];\r
-#endif\r
-} SCnSCB_Type;\r
-\r
-/* Interrupt Controller Type Register Definitions */\r
-#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */\r
-#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */\r
-\r
-/* Auxiliary Control Register Definitions */\r
-\r
-#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */\r
-#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */\r
-\r
-#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */\r
-#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */\r
-\r
-#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */\r
-#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM)\r
- \brief Type definitions for the Instrumentation Trace Macrocell (ITM)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
- */\r
-typedef struct\r
-{\r
- __OM union\r
- {\r
- __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */\r
- __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */\r
- __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */\r
- } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */\r
- uint32_t RESERVED0[864U];\r
- __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */\r
- uint32_t RESERVED1[15U];\r
- __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */\r
- uint32_t RESERVED2[15U];\r
- __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */\r
- uint32_t RESERVED3[29U];\r
- __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */\r
- __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */\r
- __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */\r
- uint32_t RESERVED4[43U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */\r
- uint32_t RESERVED5[6U];\r
- __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */\r
- __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */\r
- __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */\r
- __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */\r
- __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */\r
- __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */\r
- __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */\r
- __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */\r
- __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */\r
- __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */\r
- __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */\r
- __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */\r
-} ITM_Type;\r
-\r
-/* ITM Trace Privilege Register Definitions */\r
-#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */\r
-#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */\r
-\r
-/* ITM Trace Control Register Definitions */\r
-#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */\r
-#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */\r
-\r
-#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */\r
-#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */\r
-\r
-#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */\r
-#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */\r
-\r
-#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */\r
-#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */\r
-\r
-#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */\r
-#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */\r
-\r
-#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */\r
-#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */\r
-\r
-#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */\r
-#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */\r
-\r
-#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */\r
-#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */\r
-\r
-#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */\r
-#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */\r
-\r
-/* ITM Integration Write Register Definitions */\r
-#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */\r
-#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */\r
-\r
-/* ITM Integration Read Register Definitions */\r
-#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */\r
-#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */\r
-\r
-/* ITM Integration Mode Control Register Definitions */\r
-#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */\r
-#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */\r
-\r
-/* ITM Lock Status Register Definitions */\r
-#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */\r
-#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */\r
-\r
-#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */\r
-#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */\r
-\r
-#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */\r
-#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_ITM */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */\r
- __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */\r
- __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */\r
- __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */\r
- __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */\r
- __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */\r
-#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */\r
-\r
-#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */\r
-#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */\r
-\r
-#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */\r
-#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */\r
-\r
-#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */\r
-#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */\r
-#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */\r
-\r
-#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */\r
-#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */\r
-#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */\r
-\r
-#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */\r
-#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */\r
-\r
-#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */\r
-#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */\r
-\r
-#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */\r
-#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */\r
-\r
-#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */\r
-#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */\r
-\r
-#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */\r
-#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */\r
-\r
-#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */\r
-#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */\r
-\r
-/* DWT CPI Count Register Definitions */\r
-#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */\r
-#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */\r
-\r
-/* DWT Exception Overhead Count Register Definitions */\r
-#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */\r
-#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */\r
-\r
-/* DWT Sleep Count Register Definitions */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */\r
-\r
-/* DWT LSU Count Register Definitions */\r
-#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */\r
-#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */\r
-\r
-/* DWT Folded-instruction Count Register Definitions */\r
-#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */\r
-#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */\r
-\r
-/* DWT Comparator Mask Register Definitions */\r
-#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */\r
-#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */\r
-#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */\r
-#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */\r
-#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */\r
-\r
-#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */\r
-#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */\r
-\r
-#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */\r
-#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */\r
-\r
-#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */\r
-#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */\r
-\r
-#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */\r
-#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */\r
- uint32_t RESERVED3[759U];\r
- __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */\r
- __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */\r
- __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */\r
- uint32_t RESERVED4[1U];\r
- __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */\r
- __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */\r
- __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */\r
- uint32_t RESERVED5[39U];\r
- __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */\r
- __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */\r
- uint32_t RESERVED7[8U];\r
- __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */\r
-#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI TRIGGER Register Definitions */\r
-#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */\r
-#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */\r
-\r
-/* TPI Integration ETM Data Register Definitions (FIFO0) */\r
-#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */\r
-#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */\r
-#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */\r
-#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */\r
-#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */\r
-#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */\r
-\r
-#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */\r
-#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */\r
-\r
-#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */\r
-#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */\r
-\r
-/* TPI ITATBCTR2 Register Definitions */\r
-#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */\r
-#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */\r
-#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */\r
-\r
-/* TPI Integration ITM Data Register Definitions (FIFO1) */\r
-#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */\r
-#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */\r
-#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */\r
-#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */\r
-#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */\r
-#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */\r
-\r
-#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */\r
-#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */\r
-\r
-#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */\r
-#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */\r
-\r
-/* TPI ITATBCTR0 Register Definitions */\r
-#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */\r
-#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */\r
-#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */\r
-\r
-/* TPI Integration Mode Control Register Definitions */\r
-#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */\r
-#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */\r
-#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */\r
-\r
-#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */\r
-#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */\r
-\r
-#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */\r
-#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */\r
- __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */\r
- __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */\r
- __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 4U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */\r
-#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */\r
-\r
-#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */\r
-#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */\r
-\r
-#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */\r
-#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */\r
-\r
-/* MPU Region Attribute and Size Register Definitions */\r
-#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */\r
-#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */\r
-\r
-#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */\r
-#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */\r
-\r
-#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */\r
-#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */\r
-\r
-#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */\r
-#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */\r
-\r
-#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */\r
-#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */\r
-\r
-#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */\r
-#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */\r
-\r
-#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */\r
-#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */\r
-\r
-#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */\r
-#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */\r
-\r
-#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */\r
-#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */\r
-\r
-#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */\r
-#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register Definitions */\r
-#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */\r
-#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */\r
-#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */\r
-#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */\r
-#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */\r
-#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */\r
-#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */\r
-#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */\r
-#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */\r
-#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */\r
-#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */\r
-#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
-#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
-#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */\r
-#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
-#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
-#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
-#endif\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Debug Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-\r
-\r
-/**\r
- \brief Set Priority Grouping\r
- \details Sets the priority grouping field using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */\r
- SCB->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping\r
- \details Reads the priority grouping field from the NVIC Interrupt Controller.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\r
-{\r
- return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\r
- SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv7.h"\r
-\r
-#endif\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-/* ##################################### Debug In/Output function ########################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_core_DebugFunctions ITM Functions\r
- \brief Functions that access the ITM debug interface.\r
- @{\r
- */\r
-\r
-extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */\r
-#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */\r
-\r
-\r
-/**\r
- \brief ITM Send Character\r
- \details Transmits a character via the ITM channel 0, and\r
- \li Just returns when no debugger is connected that has booked the output.\r
- \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\r
- \param [in] ch Character to transmit.\r
- \returns Character to transmit.\r
- */\r
-__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\r
-{\r
- if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */\r
- ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */\r
- {\r
- while (ITM->PORT[0U].u32 == 0UL)\r
- {\r
- __NOP();\r
- }\r
- ITM->PORT[0U].u8 = (uint8_t)ch;\r
- }\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Receive Character\r
- \details Inputs a character via the external variable \ref ITM_RxBuffer.\r
- \return Received character.\r
- \return -1 No character pending.\r
- */\r
-__STATIC_INLINE int32_t ITM_ReceiveChar (void)\r
-{\r
- int32_t ch = -1; /* no character available */\r
-\r
- if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\r
- {\r
- ch = ITM_RxBuffer;\r
- ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */\r
- }\r
-\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Check Character\r
- \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.\r
- \return 0 No character available.\r
- \return 1 Character available.\r
- */\r
-__STATIC_INLINE int32_t ITM_CheckChar (void)\r
-{\r
-\r
- if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\r
- {\r
- return (0); /* no character available */\r
- }\r
- else\r
- {\r
- return (1); /* character available */\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_core_DebugFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM3_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm33.h\r
- * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File\r
- * @version V5.0.9\r
- * @date 06. July 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM33_H_GENERIC\r
-#define __CORE_CM33_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_M33\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS CM33 definitions */\r
-#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (33U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\r
-*/\r
-#if defined ( __CC_ARM )\r
- #if defined (__TARGET_FPU_VFP)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\r
- #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined (__ARM_PCS_VFP)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\r
- #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\r
- #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined (__ARMVFP__)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)\r
- #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)\r
- #define __DSP_USED 1U\r
- #else\r
- #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"\r
- #define __DSP_USED 0U\r
- #endif\r
- #else\r
- #define __DSP_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined (__TI_VFP_SUPPORT__)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined (__FPU_VFP__)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM33_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM33_H_DEPENDANT\r
-#define __CORE_CM33_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM33_REV\r
- #define __CM33_REV 0x0000U\r
- #warning "__CM33_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __FPU_PRESENT\r
- #define __FPU_PRESENT 0U\r
- #warning "__FPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __SAUREGION_PRESENT\r
- #define __SAUREGION_PRESENT 0U\r
- #warning "__SAUREGION_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __DSP_PRESENT\r
- #define __DSP_PRESENT 0U\r
- #warning "__DSP_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 3U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex_M33 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- - Core SAU Register\r
- - Core FPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-#define APSR_Q_Pos 27U /*!< APSR: Q Position */\r
-#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */\r
-\r
-#define APSR_GE_Pos 16U /*!< APSR: GE Position */\r
-#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */\r
-#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */\r
-\r
-#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */\r
-#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */\r
-#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */\r
- uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */\r
- uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */\r
- uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */\r
-#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */\r
-\r
-#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */\r
-#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */\r
-\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[16U];\r
- __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[16U];\r
- __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[16U];\r
- __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[16U];\r
- __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[16U];\r
- __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */\r
- uint32_t RESERVED5[16U];\r
- __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */\r
- uint32_t RESERVED6[580U];\r
- __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */\r
-} NVIC_Type;\r
-\r
-/* Software Triggered Interrupt Register Definitions */\r
-#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */\r
-#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
- __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */\r
- __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */\r
- __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */\r
- __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */\r
- __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */\r
- __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */\r
- __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */\r
- __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */\r
- __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */\r
- __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */\r
- __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */\r
- __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */\r
- __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */\r
- __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */\r
- __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */\r
- __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */\r
- __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */\r
- uint32_t RESERVED3[92U];\r
- __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */\r
- uint32_t RESERVED4[15U];\r
- __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */\r
- __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */\r
- __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */\r
- uint32_t RESERVED5[1U];\r
- __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */\r
- uint32_t RESERVED6[1U];\r
- __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */\r
- __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */\r
- __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */\r
- __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */\r
- __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */\r
- __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */\r
- __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */\r
- __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */\r
- uint32_t RESERVED7[6U];\r
- __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */\r
- __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */\r
- __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */\r
- __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */\r
- __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */\r
- uint32_t RESERVED8[1U];\r
- __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */\r
-#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */\r
-\r
-#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */\r
-#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */\r
-\r
-#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */\r
-#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */\r
-#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Vector Table Offset Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */\r
-#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */\r
-\r
-#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */\r
-#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */\r
-\r
-#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */\r
-#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */\r
-#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */\r
-#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */\r
-#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */\r
-\r
-#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */\r
-#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */\r
-\r
-#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */\r
-#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */\r
-\r
-#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */\r
-#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */\r
-#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */\r
-#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */\r
-#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */\r
-#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */\r
-#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */\r
-#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */\r
-#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */\r
-#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */\r
-#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */\r
-#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */\r
-#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */\r
-\r
-#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */\r
-#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */\r
-#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */\r
-#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */\r
-#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */\r
-#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */\r
-\r
-/* SCB Configurable Fault Status Register Definitions */\r
-#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */\r
-#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */\r
-#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */\r
-#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\r
-\r
-/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */\r
-#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */\r
-\r
-#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */\r
-#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */\r
-\r
-#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */\r
-#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */\r
-\r
-#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\r
-#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\r
-\r
-#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */\r
-#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\r
-\r
-#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */\r
-#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\r
-\r
-/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */\r
-#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */\r
-\r
-#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */\r
-#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */\r
-\r
-#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */\r
-#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */\r
-\r
-#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */\r
-#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */\r
-\r
-#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */\r
-#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\r
-\r
-#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */\r
-#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */\r
-\r
-#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */\r
-#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */\r
-\r
-/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */\r
-#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\r
-\r
-#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */\r
-#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */\r
-\r
-#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */\r
-#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */\r
-\r
-#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */\r
-#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */\r
-\r
-#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */\r
-#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */\r
-\r
-#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */\r
-#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */\r
-\r
-#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\r
-#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\r
-\r
-/* SCB Hard Fault Status Register Definitions */\r
-#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */\r
-#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */\r
-\r
-#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */\r
-#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */\r
-\r
-#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */\r
-#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */\r
-\r
-/* SCB Debug Fault Status Register Definitions */\r
-#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */\r
-#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */\r
-\r
-#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */\r
-#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */\r
-\r
-#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */\r
-#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */\r
-\r
-#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */\r
-#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */\r
-\r
-#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */\r
-#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */\r
-\r
-/* SCB Non-Secure Access Control Register Definitions */\r
-#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */\r
-#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */\r
-\r
-#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */\r
-#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */\r
-\r
-#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */\r
-#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */\r
-\r
-/* SCB Cache Level ID Register Definitions */\r
-#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */\r
-#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */\r
-\r
-#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */\r
-#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */\r
-\r
-/* SCB Cache Type Register Definitions */\r
-#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */\r
-#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */\r
-\r
-#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */\r
-#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */\r
-\r
-#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */\r
-#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */\r
-\r
-#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */\r
-#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */\r
-\r
-#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */\r
-#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */\r
-\r
-/* SCB Cache Size ID Register Definitions */\r
-#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */\r
-#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */\r
-\r
-#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */\r
-#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */\r
-\r
-#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */\r
-#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */\r
-\r
-#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */\r
-#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */\r
-\r
-#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */\r
-#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */\r
-\r
-#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */\r
-#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */\r
-\r
-#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */\r
-#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */\r
-\r
-/* SCB Cache Size Selection Register Definitions */\r
-#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */\r
-#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */\r
-\r
-#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */\r
-#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */\r
-\r
-/* SCB Software Triggered Interrupt Register Definitions */\r
-#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */\r
-#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */\r
-\r
-/* SCB D-Cache Invalidate by Set-way Register Definitions */\r
-#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */\r
-#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */\r
-\r
-#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */\r
-#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */\r
-\r
-/* SCB D-Cache Clean by Set-way Register Definitions */\r
-#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */\r
-#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */\r
-\r
-#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */\r
-#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */\r
-\r
-/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\r
-#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */\r
-#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */\r
-\r
-#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */\r
-#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */\r
-\r
-/* Instruction Tightly-Coupled Memory Control Register Definitions */\r
-#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */\r
-#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */\r
-\r
-#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */\r
-#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */\r
-\r
-#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */\r
-#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */\r
-\r
-#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */\r
-#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */\r
-\r
-/* Data Tightly-Coupled Memory Control Register Definitions */\r
-#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */\r
-#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */\r
-\r
-#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */\r
-#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */\r
-\r
-#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */\r
-#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */\r
-\r
-#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */\r
-#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */\r
-\r
-/* AHBP Control Register Definitions */\r
-#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */\r
-#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */\r
-\r
-#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */\r
-#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */\r
-\r
-/* L1 Cache Control Register Definitions */\r
-#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */\r
-#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */\r
-\r
-#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */\r
-#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */\r
-\r
-#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */\r
-#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */\r
-\r
-/* AHBS Control Register Definitions */\r
-#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */\r
-#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */\r
-\r
-#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */\r
-#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */\r
-\r
-#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/\r
-#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */\r
-\r
-/* Auxiliary Bus Fault Status Register Definitions */\r
-#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/\r
-#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */\r
-\r
-#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/\r
-#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */\r
-\r
-#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/\r
-#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */\r
-\r
-#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/\r
-#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */\r
-\r
-#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/\r
-#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */\r
-\r
-#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/\r
-#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */\r
- __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */\r
- __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */\r
-} SCnSCB_Type;\r
-\r
-/* Interrupt Controller Type Register Definitions */\r
-#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */\r
-#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM)\r
- \brief Type definitions for the Instrumentation Trace Macrocell (ITM)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
- */\r
-typedef struct\r
-{\r
- __OM union\r
- {\r
- __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */\r
- __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */\r
- __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */\r
- } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */\r
- uint32_t RESERVED0[864U];\r
- __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */\r
- uint32_t RESERVED1[15U];\r
- __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */\r
- uint32_t RESERVED2[15U];\r
- __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */\r
- uint32_t RESERVED3[29U];\r
- __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */\r
- __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */\r
- __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */\r
- uint32_t RESERVED4[43U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */\r
- uint32_t RESERVED5[1U];\r
- __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */\r
- uint32_t RESERVED6[4U];\r
- __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */\r
- __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */\r
- __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */\r
- __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */\r
- __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */\r
- __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */\r
- __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */\r
- __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */\r
- __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */\r
- __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */\r
- __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */\r
- __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */\r
-} ITM_Type;\r
-\r
-/* ITM Stimulus Port Register Definitions */\r
-#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */\r
-#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */\r
-\r
-#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */\r
-#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */\r
-\r
-/* ITM Trace Privilege Register Definitions */\r
-#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */\r
-#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */\r
-\r
-/* ITM Trace Control Register Definitions */\r
-#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */\r
-#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */\r
-\r
-#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */\r
-#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */\r
-\r
-#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */\r
-#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */\r
-\r
-#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */\r
-#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */\r
-\r
-#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */\r
-#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */\r
-\r
-#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */\r
-#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */\r
-\r
-#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */\r
-#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */\r
-\r
-#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */\r
-#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */\r
-\r
-#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */\r
-#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */\r
-\r
-#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */\r
-#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */\r
-\r
-/* ITM Integration Write Register Definitions */\r
-#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */\r
-#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */\r
-\r
-/* ITM Integration Read Register Definitions */\r
-#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */\r
-#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */\r
-\r
-/* ITM Integration Mode Control Register Definitions */\r
-#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */\r
-#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */\r
-\r
-/* ITM Lock Status Register Definitions */\r
-#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */\r
-#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */\r
-\r
-#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */\r
-#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */\r
-\r
-#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */\r
-#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_ITM */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */\r
- __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */\r
- __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */\r
- __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */\r
- __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */\r
- __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- uint32_t RESERVED3[1U];\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- uint32_t RESERVED5[1U];\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED6[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- uint32_t RESERVED7[1U];\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
- uint32_t RESERVED8[1U];\r
- __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */\r
- uint32_t RESERVED9[1U];\r
- __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */\r
- uint32_t RESERVED10[1U];\r
- __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */\r
- uint32_t RESERVED11[1U];\r
- __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */\r
- uint32_t RESERVED12[1U];\r
- __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */\r
- uint32_t RESERVED13[1U];\r
- __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */\r
- uint32_t RESERVED14[1U];\r
- __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */\r
- uint32_t RESERVED15[1U];\r
- __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */\r
- uint32_t RESERVED16[1U];\r
- __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */\r
- uint32_t RESERVED17[1U];\r
- __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */\r
- uint32_t RESERVED18[1U];\r
- __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */\r
- uint32_t RESERVED19[1U];\r
- __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */\r
- uint32_t RESERVED20[1U];\r
- __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */\r
- uint32_t RESERVED21[1U];\r
- __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */\r
- uint32_t RESERVED22[1U];\r
- __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */\r
- uint32_t RESERVED23[1U];\r
- __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */\r
- uint32_t RESERVED24[1U];\r
- __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */\r
- uint32_t RESERVED25[1U];\r
- __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */\r
- uint32_t RESERVED26[1U];\r
- __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */\r
- uint32_t RESERVED27[1U];\r
- __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */\r
- uint32_t RESERVED28[1U];\r
- __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */\r
- uint32_t RESERVED29[1U];\r
- __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */\r
- uint32_t RESERVED30[1U];\r
- __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */\r
- uint32_t RESERVED31[1U];\r
- __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */\r
- uint32_t RESERVED32[934U];\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */\r
- uint32_t RESERVED33[1U];\r
- __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */\r
-#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */\r
-\r
-#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */\r
-#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */\r
-\r
-#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */\r
-#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */\r
-\r
-#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */\r
-#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */\r
-\r
-#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */\r
-#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */\r
-#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */\r
-\r
-#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */\r
-#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */\r
-#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */\r
-\r
-#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */\r
-#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */\r
-\r
-#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */\r
-#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */\r
-\r
-#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */\r
-#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */\r
-\r
-#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */\r
-#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */\r
-\r
-#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */\r
-#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */\r
-\r
-#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */\r
-#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */\r
-\r
-/* DWT CPI Count Register Definitions */\r
-#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */\r
-#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */\r
-\r
-/* DWT Exception Overhead Count Register Definitions */\r
-#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */\r
-#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */\r
-\r
-/* DWT Sleep Count Register Definitions */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */\r
-\r
-/* DWT LSU Count Register Definitions */\r
-#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */\r
-#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */\r
-\r
-/* DWT Folded-instruction Count Register Definitions */\r
-#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */\r
-#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */\r
-#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */\r
-\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */\r
-#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */\r
-\r
-#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */\r
-#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */\r
- uint32_t RESERVED3[759U];\r
- __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */\r
- __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */\r
- __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */\r
- uint32_t RESERVED4[1U];\r
- __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */\r
- __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */\r
- __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */\r
- uint32_t RESERVED5[39U];\r
- __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */\r
- __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */\r
- uint32_t RESERVED7[8U];\r
- __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */\r
-#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */\r
-#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI TRIGGER Register Definitions */\r
-#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */\r
-#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */\r
-\r
-/* TPI Integration Test FIFO Test Data 0 Register Definitions */\r
-#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */\r
-#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */\r
-#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */\r
-#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */\r
-#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */\r
-#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */\r
-#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */\r
-\r
-#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */\r
-#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */\r
-\r
-/* TPI Integration Test ATB Control Register 2 Register Definitions */\r
-#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */\r
-#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */\r
-\r
-#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */\r
-#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */\r
-#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */\r
-#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */\r
-\r
-/* TPI Integration Test FIFO Test Data 1 Register Definitions */\r
-#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */\r
-#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */\r
-#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */\r
-#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */\r
-#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */\r
-#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */\r
-#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */\r
-\r
-#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */\r
-#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */\r
-\r
-/* TPI Integration Test ATB Control Register 0 Definitions */\r
-#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */\r
-#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */\r
-\r
-#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */\r
-#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */\r
-#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */\r
-#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */\r
-\r
-/* TPI Integration Mode Control Register Definitions */\r
-#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */\r
-#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */\r
-#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */\r
-\r
-#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */\r
-#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */\r
- __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */\r
- __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */\r
- __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */\r
- __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */\r
- __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */\r
- __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */\r
- uint32_t RESERVED0[1];\r
- union {\r
- __IOM uint32_t MAIR[2];\r
- struct {\r
- __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */\r
- __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */\r
- };\r
- };\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 4U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */\r
-#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */\r
-\r
-#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */\r
-#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */\r
-\r
-#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */\r
-#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */\r
-\r
-#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */\r
-#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */\r
-\r
-/* MPU Region Limit Address Register Definitions */\r
-#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */\r
-#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */\r
-\r
-#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */\r
-#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */\r
-\r
-#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */\r
-#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 0 Definitions */\r
-#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */\r
-#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */\r
-\r
-#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */\r
-#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */\r
-\r
-#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */\r
-#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */\r
-\r
-#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */\r
-#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */\r
-\r
-/* MPU Memory Attribute Indirection Register 1 Definitions */\r
-#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */\r
-#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */\r
-\r
-#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */\r
-#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */\r
-\r
-#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */\r
-#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */\r
-\r
-#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */\r
-#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SAU Security Attribution Unit (SAU)\r
- \brief Type definitions for the Security Attribution Unit (SAU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Security Attribution Unit (SAU).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */\r
- __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */\r
- __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */\r
-#else\r
- uint32_t RESERVED0[3];\r
-#endif\r
- __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */\r
- __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */\r
-} SAU_Type;\r
-\r
-/* SAU Control Register Definitions */\r
-#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */\r
-#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */\r
-\r
-#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */\r
-#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */\r
-\r
-/* SAU Type Register Definitions */\r
-#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */\r
-#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */\r
-\r
-#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)\r
-/* SAU Region Number Register Definitions */\r
-#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */\r
-#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */\r
-\r
-/* SAU Region Base Address Register Definitions */\r
-#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */\r
-#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */\r
-\r
-/* SAU Region Limit Address Register Definitions */\r
-#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */\r
-#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */\r
-\r
-#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */\r
-#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */\r
-\r
-#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */\r
-#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */\r
-\r
-#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */\r
-\r
-/* Secure Fault Status Register Definitions */\r
-#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */\r
-#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */\r
-\r
-#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */\r
-#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */\r
-\r
-#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */\r
-#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */\r
-\r
-#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */\r
-#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */\r
-\r
-#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */\r
-#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */\r
-\r
-#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */\r
-#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */\r
-\r
-#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */\r
-#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */\r
-\r
-#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */\r
-#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */\r
-\r
-/*@} end of group CMSIS_SAU */\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_FPU Floating Point Unit (FPU)\r
- \brief Type definitions for the Floating Point Unit (FPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Floating Point Unit (FPU).\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */\r
- __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */\r
- __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */\r
- __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */\r
- __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */\r
-} FPU_Type;\r
-\r
-/* Floating-Point Context Control Register Definitions */\r
-#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */\r
-#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */\r
-\r
-#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */\r
-#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */\r
-\r
-#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */\r
-#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */\r
-\r
-#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */\r
-#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */\r
-\r
-#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */\r
-#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */\r
-\r
-#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */\r
-#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */\r
-\r
-#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */\r
-#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */\r
-#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */\r
-\r
-#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */\r
-#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */\r
-\r
-#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */\r
-#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */\r
-#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */\r
-#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */\r
-\r
-#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */\r
-#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */\r
-#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */\r
-\r
-#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */\r
-#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */\r
-\r
-#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */\r
-#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */\r
-\r
-#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */\r
-#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */\r
-\r
-/* Floating-Point Context Address Register Definitions */\r
-#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */\r
-#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */\r
-\r
-/* Floating-Point Default Status Control Register Definitions */\r
-#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */\r
-#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */\r
-\r
-#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */\r
-#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */\r
-\r
-#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */\r
-#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */\r
-\r
-#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */\r
-#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */\r
-\r
-/* Media and FP Feature Register 0 Definitions */\r
-#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */\r
-#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */\r
-\r
-#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */\r
-#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */\r
-\r
-#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */\r
-#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */\r
-\r
-#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */\r
-#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */\r
-\r
-#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */\r
-#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */\r
-\r
-#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */\r
-#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */\r
-\r
-#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */\r
-#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */\r
-\r
-#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */\r
-#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */\r
-\r
-/* Media and FP Feature Register 1 Definitions */\r
-#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */\r
-#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */\r
-\r
-#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */\r
-#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */\r
-\r
-#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */\r
-#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */\r
-\r
-#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */\r
-#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */\r
-\r
-/*@} end of group CMSIS_FPU */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
- uint32_t RESERVED4[1U];\r
- __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */\r
- __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */\r
-#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register Definitions */\r
-#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */\r
-#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */\r
-#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */\r
-#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */\r
-#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */\r
-#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */\r
-#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */\r
-#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */\r
-#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */\r
-#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */\r
-#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/* Debug Authentication Control Register Definitions */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */\r
-#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */\r
-\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */\r
-#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */\r
-\r
-/* Debug Security Control and Status Register Definitions */\r
-#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */\r
-#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */\r
-#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */\r
-\r
-#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */\r
-#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
- #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
- #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */\r
- #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
- #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
- #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
- #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
- #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
- #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
- #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
- #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
- #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
- #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
- #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */\r
- #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
- #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
- #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
- #endif\r
-\r
- #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */\r
- #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */\r
- #endif\r
-\r
- #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */\r
- #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
- #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */\r
- #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */\r
- #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */\r
- #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */\r
- #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */\r
-\r
- #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */\r
- #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */\r
- #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */\r
- #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */\r
- #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */\r
-\r
- #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */\r
- #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */\r
- #endif\r
-\r
- #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */\r
- #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Debug Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* Special LR values for Secure/Non-Secure call handling and exception handling */\r
-\r
-/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ \r
-#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */\r
-\r
-/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */\r
-#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */\r
-#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */\r
-#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */\r
-#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */\r
-#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */\r
-#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */\r
-#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */\r
-\r
-/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */\r
-#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */\r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */\r
-#else \r
-#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */\r
-#endif\r
-\r
-\r
-/**\r
- \brief Set Priority Grouping\r
- \details Sets the priority grouping field using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << 8U) ); /* Insert write key and priority group */\r
- SCB->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping\r
- \details Reads the priority grouping field from the NVIC Interrupt Controller.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\r
-{\r
- return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Get Interrupt Target State\r
- \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- \return 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Target State\r
- \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Interrupt Target State\r
- \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 if interrupt is assigned to Secure\r
- 1 if interrupt is assigned to Non Secure\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));\r
- return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\r
- SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief Set Priority Grouping (non-secure)\r
- \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB_NS->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */\r
- SCB_NS->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping (non-secure)\r
- \details Reads the priority grouping field from the non-secure NVIC when in secure state.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)\r
-{\r
- return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt (non-secure)\r
- \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status (non-secure)\r
- \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt (non-secure)\r
- \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt (non-secure)\r
- \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt (non-secure)\r
- \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt (non-secure)\r
- \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt (non-secure)\r
- \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority (non-secure)\r
- \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every non-secure processor exception.\r
- */\r
-__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority (non-secure)\r
- \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv8.h"\r
-\r
-#endif\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- uint32_t mvfr0;\r
-\r
- mvfr0 = FPU->MVFR0;\r
- if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\r
- {\r
- return 2U; /* Double + Single precision FPU */\r
- }\r
- else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\r
- {\r
- return 1U; /* Single precision FPU */\r
- }\r
- else\r
- {\r
- return 0U; /* No FPU */\r
- }\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ########################## SAU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SAUFunctions SAU Functions\r
- \brief Functions that configure the SAU.\r
- @{\r
- */\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-\r
-/**\r
- \brief Enable SAU\r
- \details Enables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Enable(void)\r
-{\r
- SAU->CTRL |= (SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-\r
-\r
-/**\r
- \brief Disable SAU\r
- \details Disables the Security Attribution Unit (SAU).\r
- */\r
-__STATIC_INLINE void TZ_SAU_Disable(void)\r
-{\r
- SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);\r
-}\r
-\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-/*@} end of CMSIS_Core_SAUFunctions */\r
-\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
-/**\r
- \brief System Tick Configuration (non-secure)\r
- \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
-\r
- */\r
-__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-/* ##################################### Debug In/Output function ########################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_core_DebugFunctions ITM Functions\r
- \brief Functions that access the ITM debug interface.\r
- @{\r
- */\r
-\r
-extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */\r
-#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */\r
-\r
-\r
-/**\r
- \brief ITM Send Character\r
- \details Transmits a character via the ITM channel 0, and\r
- \li Just returns when no debugger is connected that has booked the output.\r
- \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\r
- \param [in] ch Character to transmit.\r
- \returns Character to transmit.\r
- */\r
-__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\r
-{\r
- if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */\r
- ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */\r
- {\r
- while (ITM->PORT[0U].u32 == 0UL)\r
- {\r
- __NOP();\r
- }\r
- ITM->PORT[0U].u8 = (uint8_t)ch;\r
- }\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Receive Character\r
- \details Inputs a character via the external variable \ref ITM_RxBuffer.\r
- \return Received character.\r
- \return -1 No character pending.\r
- */\r
-__STATIC_INLINE int32_t ITM_ReceiveChar (void)\r
-{\r
- int32_t ch = -1; /* no character available */\r
-\r
- if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\r
- {\r
- ch = ITM_RxBuffer;\r
- ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */\r
- }\r
-\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Check Character\r
- \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.\r
- \return 0 No character available.\r
- \return 1 Character available.\r
- */\r
-__STATIC_INLINE int32_t ITM_CheckChar (void)\r
-{\r
-\r
- if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\r
- {\r
- return (0); /* no character available */\r
- }\r
- else\r
- {\r
- return (1); /* character available */\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_core_DebugFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM33_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm4.h\r
- * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File\r
- * @version V5.0.8\r
- * @date 04. June 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM4_H_GENERIC\r
-#define __CORE_CM4_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_M4\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS CM4 definitions */\r
-#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (4U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\r
-*/\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM4_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM4_H_DEPENDANT\r
-#define __CORE_CM4_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM4_REV\r
- #define __CM4_REV 0x0000U\r
- #warning "__CM4_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __FPU_PRESENT\r
- #define __FPU_PRESENT 0U\r
- #warning "__FPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 3U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex_M4 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- - Core FPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-#define APSR_Q_Pos 27U /*!< APSR: Q Position */\r
-#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */\r
-\r
-#define APSR_GE_Pos 16U /*!< APSR: GE Position */\r
-#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:1; /*!< bit: 9 Reserved */\r
- uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit */\r
- uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */\r
-#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */\r
-\r
-#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */\r
-#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */\r
-#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */\r
-\r
-#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */\r
-#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */\r
- uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */\r
-#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */\r
-\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[24U];\r
- __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[24U];\r
- __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[24U];\r
- __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[24U];\r
- __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[56U];\r
- __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */\r
- uint32_t RESERVED5[644U];\r
- __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */\r
-} NVIC_Type;\r
-\r
-/* Software Triggered Interrupt Register Definitions */\r
-#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */\r
-#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
- __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */\r
- __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */\r
- __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */\r
- __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */\r
- __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */\r
- __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */\r
- __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */\r
- __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */\r
- __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */\r
- __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */\r
- __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */\r
- uint32_t RESERVED0[5U];\r
- __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Vector Table Offset Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */\r
-#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */\r
-#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */\r
-#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */\r
-#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */\r
-#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */\r
-#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */\r
-#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */\r
-#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */\r
-#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */\r
-#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */\r
-#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */\r
-#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */\r
-#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */\r
-\r
-/* SCB Configurable Fault Status Register Definitions */\r
-#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */\r
-#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */\r
-#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */\r
-#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\r
-\r
-/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */\r
-#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */\r
-\r
-#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */\r
-#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */\r
-\r
-#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */\r
-#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */\r
-\r
-#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\r
-#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\r
-\r
-#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */\r
-#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\r
-\r
-#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */\r
-#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\r
-\r
-/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */\r
-#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */\r
-\r
-#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */\r
-#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */\r
-\r
-#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */\r
-#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */\r
-\r
-#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */\r
-#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */\r
-\r
-#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */\r
-#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\r
-\r
-#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */\r
-#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */\r
-\r
-#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */\r
-#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */\r
-\r
-/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */\r
-#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\r
-\r
-#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */\r
-#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */\r
-\r
-#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */\r
-#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */\r
-\r
-#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */\r
-#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */\r
-\r
-#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */\r
-#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */\r
-\r
-#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\r
-#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\r
-\r
-/* SCB Hard Fault Status Register Definitions */\r
-#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */\r
-#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */\r
-\r
-#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */\r
-#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */\r
-\r
-#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */\r
-#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */\r
-\r
-/* SCB Debug Fault Status Register Definitions */\r
-#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */\r
-#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */\r
-\r
-#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */\r
-#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */\r
-\r
-#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */\r
-#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */\r
-\r
-#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */\r
-#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */\r
-\r
-#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */\r
-#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */\r
- __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */\r
-} SCnSCB_Type;\r
-\r
-/* Interrupt Controller Type Register Definitions */\r
-#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */\r
-#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */\r
-\r
-/* Auxiliary Control Register Definitions */\r
-#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */\r
-#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */\r
-\r
-#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */\r
-#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */\r
-\r
-#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */\r
-#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */\r
-\r
-#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */\r
-#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */\r
-\r
-#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */\r
-#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM)\r
- \brief Type definitions for the Instrumentation Trace Macrocell (ITM)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
- */\r
-typedef struct\r
-{\r
- __OM union\r
- {\r
- __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */\r
- __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */\r
- __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */\r
- } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */\r
- uint32_t RESERVED0[864U];\r
- __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */\r
- uint32_t RESERVED1[15U];\r
- __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */\r
- uint32_t RESERVED2[15U];\r
- __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */\r
- uint32_t RESERVED3[29U];\r
- __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */\r
- __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */\r
- __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */\r
- uint32_t RESERVED4[43U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */\r
- uint32_t RESERVED5[6U];\r
- __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */\r
- __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */\r
- __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */\r
- __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */\r
- __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */\r
- __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */\r
- __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */\r
- __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */\r
- __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */\r
- __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */\r
- __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */\r
- __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */\r
-} ITM_Type;\r
-\r
-/* ITM Trace Privilege Register Definitions */\r
-#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */\r
-#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */\r
-\r
-/* ITM Trace Control Register Definitions */\r
-#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */\r
-#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */\r
-\r
-#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */\r
-#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */\r
-\r
-#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */\r
-#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */\r
-\r
-#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */\r
-#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */\r
-\r
-#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */\r
-#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */\r
-\r
-#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */\r
-#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */\r
-\r
-#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */\r
-#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */\r
-\r
-#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */\r
-#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */\r
-\r
-#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */\r
-#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */\r
-\r
-/* ITM Integration Write Register Definitions */\r
-#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */\r
-#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */\r
-\r
-/* ITM Integration Read Register Definitions */\r
-#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */\r
-#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */\r
-\r
-/* ITM Integration Mode Control Register Definitions */\r
-#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */\r
-#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */\r
-\r
-/* ITM Lock Status Register Definitions */\r
-#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */\r
-#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */\r
-\r
-#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */\r
-#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */\r
-\r
-#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */\r
-#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_ITM */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */\r
- __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */\r
- __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */\r
- __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */\r
- __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */\r
- __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */\r
-#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */\r
-\r
-#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */\r
-#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */\r
-\r
-#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */\r
-#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */\r
-\r
-#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */\r
-#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */\r
-#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */\r
-\r
-#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */\r
-#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */\r
-#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */\r
-\r
-#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */\r
-#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */\r
-\r
-#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */\r
-#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */\r
-\r
-#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */\r
-#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */\r
-\r
-#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */\r
-#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */\r
-\r
-#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */\r
-#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */\r
-\r
-#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */\r
-#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */\r
-\r
-/* DWT CPI Count Register Definitions */\r
-#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */\r
-#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */\r
-\r
-/* DWT Exception Overhead Count Register Definitions */\r
-#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */\r
-#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */\r
-\r
-/* DWT Sleep Count Register Definitions */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */\r
-\r
-/* DWT LSU Count Register Definitions */\r
-#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */\r
-#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */\r
-\r
-/* DWT Folded-instruction Count Register Definitions */\r
-#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */\r
-#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */\r
-\r
-/* DWT Comparator Mask Register Definitions */\r
-#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */\r
-#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */\r
-#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */\r
-#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */\r
-#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */\r
-\r
-#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */\r
-#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */\r
-\r
-#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */\r
-#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */\r
-\r
-#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */\r
-#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */\r
-\r
-#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */\r
-#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */\r
- uint32_t RESERVED3[759U];\r
- __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */\r
- __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */\r
- __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */\r
- uint32_t RESERVED4[1U];\r
- __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */\r
- __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */\r
- __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */\r
- uint32_t RESERVED5[39U];\r
- __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */\r
- __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */\r
- uint32_t RESERVED7[8U];\r
- __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */\r
-#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI TRIGGER Register Definitions */\r
-#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */\r
-#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */\r
-\r
-/* TPI Integration ETM Data Register Definitions (FIFO0) */\r
-#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */\r
-#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */\r
-#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */\r
-#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */\r
-#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */\r
-#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */\r
-\r
-#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */\r
-#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */\r
-\r
-#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */\r
-#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */\r
-\r
-/* TPI ITATBCTR2 Register Definitions */\r
-#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */\r
-#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */\r
-#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */\r
-\r
-/* TPI Integration ITM Data Register Definitions (FIFO1) */\r
-#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */\r
-#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */\r
-#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */\r
-#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */\r
-#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */\r
-#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */\r
-\r
-#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */\r
-#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */\r
-\r
-#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */\r
-#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */\r
-\r
-/* TPI ITATBCTR0 Register Definitions */\r
-#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */\r
-#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */\r
-#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */\r
-\r
-/* TPI Integration Mode Control Register Definitions */\r
-#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */\r
-#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */\r
-#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */\r
-\r
-#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */\r
-#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */\r
-\r
-#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */\r
-#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */\r
- __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */\r
- __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */\r
- __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 4U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */\r
-#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */\r
-\r
-#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */\r
-#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */\r
-\r
-#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */\r
-#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */\r
-\r
-/* MPU Region Attribute and Size Register Definitions */\r
-#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */\r
-#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */\r
-\r
-#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */\r
-#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */\r
-\r
-#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */\r
-#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */\r
-\r
-#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */\r
-#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */\r
-\r
-#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */\r
-#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */\r
-\r
-#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */\r
-#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */\r
-\r
-#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */\r
-#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */\r
-\r
-#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */\r
-#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */\r
-\r
-#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */\r
-#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */\r
-\r
-#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */\r
-#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_FPU Floating Point Unit (FPU)\r
- \brief Type definitions for the Floating Point Unit (FPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Floating Point Unit (FPU).\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */\r
- __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */\r
- __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */\r
- __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */\r
- __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */\r
-} FPU_Type;\r
-\r
-/* Floating-Point Context Control Register Definitions */\r
-#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */\r
-#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */\r
-\r
-#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */\r
-#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */\r
-\r
-#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */\r
-#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */\r
-\r
-#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */\r
-#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */\r
-#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */\r
-\r
-#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */\r
-#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */\r
-#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */\r
-\r
-#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */\r
-#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */\r
-\r
-#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */\r
-#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */\r
-\r
-/* Floating-Point Context Address Register Definitions */\r
-#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */\r
-#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */\r
-\r
-/* Floating-Point Default Status Control Register Definitions */\r
-#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */\r
-#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */\r
-\r
-#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */\r
-#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */\r
-\r
-#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */\r
-#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */\r
-\r
-#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */\r
-#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */\r
-\r
-/* Media and FP Feature Register 0 Definitions */\r
-#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */\r
-#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */\r
-\r
-#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */\r
-#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */\r
-\r
-#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */\r
-#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */\r
-\r
-#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */\r
-#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */\r
-\r
-#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */\r
-#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */\r
-\r
-#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */\r
-#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */\r
-\r
-#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */\r
-#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */\r
-\r
-#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */\r
-#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */\r
-\r
-/* Media and FP Feature Register 1 Definitions */\r
-#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */\r
-#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */\r
-\r
-#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */\r
-#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */\r
-\r
-#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */\r
-#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */\r
-\r
-#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */\r
-#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */\r
-\r
-/*@} end of group CMSIS_FPU */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register Definitions */\r
-#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */\r
-#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */\r
-#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */\r
-#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */\r
-#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */\r
-#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */\r
-#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */\r
-#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */\r
-#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */\r
-#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */\r
-#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */\r
-#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
-#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
-#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */\r
-#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
-#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
-#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
-#endif\r
-\r
-#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */\r
-#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Debug Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */\r
-#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */\r
-#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */\r
-\r
-\r
-/**\r
- \brief Set Priority Grouping\r
- \details Sets the priority grouping field using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */\r
- SCB->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping\r
- \details Reads the priority grouping field from the NVIC Interrupt Controller.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\r
-{\r
- return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\r
- SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv7.h"\r
-\r
-#endif\r
-\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- uint32_t mvfr0;\r
-\r
- mvfr0 = FPU->MVFR0;\r
- if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\r
- {\r
- return 1U; /* Single precision FPU */\r
- }\r
- else\r
- {\r
- return 0U; /* No FPU */\r
- }\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-/* ##################################### Debug In/Output function ########################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_core_DebugFunctions ITM Functions\r
- \brief Functions that access the ITM debug interface.\r
- @{\r
- */\r
-\r
-extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */\r
-#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */\r
-\r
-\r
-/**\r
- \brief ITM Send Character\r
- \details Transmits a character via the ITM channel 0, and\r
- \li Just returns when no debugger is connected that has booked the output.\r
- \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\r
- \param [in] ch Character to transmit.\r
- \returns Character to transmit.\r
- */\r
-__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\r
-{\r
- if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */\r
- ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */\r
- {\r
- while (ITM->PORT[0U].u32 == 0UL)\r
- {\r
- __NOP();\r
- }\r
- ITM->PORT[0U].u8 = (uint8_t)ch;\r
- }\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Receive Character\r
- \details Inputs a character via the external variable \ref ITM_RxBuffer.\r
- \return Received character.\r
- \return -1 No character pending.\r
- */\r
-__STATIC_INLINE int32_t ITM_ReceiveChar (void)\r
-{\r
- int32_t ch = -1; /* no character available */\r
-\r
- if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\r
- {\r
- ch = ITM_RxBuffer;\r
- ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */\r
- }\r
-\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Check Character\r
- \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.\r
- \return 0 No character available.\r
- \return 1 Character available.\r
- */\r
-__STATIC_INLINE int32_t ITM_CheckChar (void)\r
-{\r
-\r
- if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\r
- {\r
- return (0); /* no character available */\r
- }\r
- else\r
- {\r
- return (1); /* character available */\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_core_DebugFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM4_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_cm7.h\r
- * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File\r
- * @version V5.0.8\r
- * @date 04. June 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_CM7_H_GENERIC\r
-#define __CORE_CM7_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup Cortex_M7\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS CM7 definitions */\r
-#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \\r
- __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_M (7U) /*!< Cortex-M Core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\r
-*/\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)\r
- #define __FPU_USED 1U\r
- #else\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #define __FPU_USED 0U\r
- #endif\r
- #else\r
- #define __FPU_USED 0U\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM7_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_CM7_H_DEPENDANT\r
-#define __CORE_CM7_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __CM7_REV\r
- #define __CM7_REV 0x0000U\r
- #warning "__CM7_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __FPU_PRESENT\r
- #define __FPU_PRESENT 0U\r
- #warning "__FPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __ICACHE_PRESENT\r
- #define __ICACHE_PRESENT 0U\r
- #warning "__ICACHE_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __DCACHE_PRESENT\r
- #define __DCACHE_PRESENT 0U\r
- #warning "__DCACHE_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __DTCM_PRESENT\r
- #define __DTCM_PRESENT 0U\r
- #warning "__DTCM_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 3U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group Cortex_M7 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- - Core FPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-#define APSR_Q_Pos 27U /*!< APSR: Q Position */\r
-#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */\r
-\r
-#define APSR_GE_Pos 16U /*!< APSR: GE Position */\r
-#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:1; /*!< bit: 9 Reserved */\r
- uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */\r
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */\r
- uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit */\r
- uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */\r
-#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */\r
-\r
-#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */\r
-#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */\r
-#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */\r
-\r
-#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */\r
-#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */\r
- uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */\r
-#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */\r
-\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[24U];\r
- __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[24U];\r
- __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[24U];\r
- __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[24U];\r
- __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[56U];\r
- __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */\r
- uint32_t RESERVED5[644U];\r
- __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */\r
-} NVIC_Type;\r
-\r
-/* Software Triggered Interrupt Register Definitions */\r
-#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */\r
-#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
- __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */\r
- __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */\r
- __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */\r
- __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */\r
- __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */\r
- __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */\r
- __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */\r
- __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */\r
- __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */\r
- __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */\r
- __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */\r
- uint32_t RESERVED0[1U];\r
- __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */\r
- __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */\r
- __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */\r
- __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */\r
- __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */\r
- uint32_t RESERVED3[93U];\r
- __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */\r
- uint32_t RESERVED4[15U];\r
- __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */\r
- __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */\r
- __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */\r
- uint32_t RESERVED5[1U];\r
- __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */\r
- uint32_t RESERVED6[1U];\r
- __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */\r
- __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */\r
- __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */\r
- __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */\r
- __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */\r
- __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */\r
- __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */\r
- __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */\r
- uint32_t RESERVED7[6U];\r
- __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */\r
- __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */\r
- __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */\r
- __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */\r
- __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */\r
- uint32_t RESERVED8[1U];\r
- __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Vector Table Offset Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */\r
-#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */\r
-#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */\r
-#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */\r
-\r
-#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */\r
-#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */\r
-\r
-#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */\r
-#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */\r
-\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */\r
-#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */\r
-#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */\r
-#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */\r
-#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */\r
-#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */\r
-#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */\r
-#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */\r
-#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */\r
-#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */\r
-#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */\r
-#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */\r
-\r
-/* SCB Configurable Fault Status Register Definitions */\r
-#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */\r
-#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */\r
-#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */\r
-#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\r
-\r
-/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */\r
-#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */\r
-\r
-#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */\r
-#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */\r
-\r
-#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */\r
-#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */\r
-\r
-#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\r
-#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\r
-\r
-#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */\r
-#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\r
-\r
-#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */\r
-#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\r
-\r
-/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */\r
-#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */\r
-\r
-#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */\r
-#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */\r
-\r
-#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */\r
-#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */\r
-\r
-#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */\r
-#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */\r
-\r
-#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */\r
-#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\r
-\r
-#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */\r
-#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */\r
-\r
-#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */\r
-#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */\r
-\r
-/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */\r
-#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\r
-\r
-#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */\r
-#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */\r
-\r
-#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */\r
-#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */\r
-\r
-#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */\r
-#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */\r
-\r
-#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */\r
-#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */\r
-\r
-#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\r
-#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\r
-\r
-/* SCB Hard Fault Status Register Definitions */\r
-#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */\r
-#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */\r
-\r
-#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */\r
-#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */\r
-\r
-#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */\r
-#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */\r
-\r
-/* SCB Debug Fault Status Register Definitions */\r
-#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */\r
-#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */\r
-\r
-#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */\r
-#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */\r
-\r
-#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */\r
-#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */\r
-\r
-#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */\r
-#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */\r
-\r
-#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */\r
-#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */\r
-\r
-/* SCB Cache Level ID Register Definitions */\r
-#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */\r
-#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */\r
-\r
-#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */\r
-#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */\r
-\r
-/* SCB Cache Type Register Definitions */\r
-#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */\r
-#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */\r
-\r
-#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */\r
-#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */\r
-\r
-#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */\r
-#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */\r
-\r
-#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */\r
-#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */\r
-\r
-#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */\r
-#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */\r
-\r
-/* SCB Cache Size ID Register Definitions */\r
-#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */\r
-#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */\r
-\r
-#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */\r
-#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */\r
-\r
-#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */\r
-#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */\r
-\r
-#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */\r
-#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */\r
-\r
-#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */\r
-#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */\r
-\r
-#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */\r
-#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */\r
-\r
-#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */\r
-#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */\r
-\r
-/* SCB Cache Size Selection Register Definitions */\r
-#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */\r
-#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */\r
-\r
-#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */\r
-#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */\r
-\r
-/* SCB Software Triggered Interrupt Register Definitions */\r
-#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */\r
-#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */\r
-\r
-/* SCB D-Cache Invalidate by Set-way Register Definitions */\r
-#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */\r
-#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */\r
-\r
-#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */\r
-#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */\r
-\r
-/* SCB D-Cache Clean by Set-way Register Definitions */\r
-#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */\r
-#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */\r
-\r
-#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */\r
-#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */\r
-\r
-/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */\r
-#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */\r
-#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */\r
-\r
-#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */\r
-#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */\r
-\r
-/* Instruction Tightly-Coupled Memory Control Register Definitions */\r
-#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */\r
-#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */\r
-\r
-#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */\r
-#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */\r
-\r
-#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */\r
-#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */\r
-\r
-#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */\r
-#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */\r
-\r
-/* Data Tightly-Coupled Memory Control Register Definitions */\r
-#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */\r
-#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */\r
-\r
-#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */\r
-#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */\r
-\r
-#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */\r
-#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */\r
-\r
-#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */\r
-#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */\r
-\r
-/* AHBP Control Register Definitions */\r
-#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */\r
-#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */\r
-\r
-#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */\r
-#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */\r
-\r
-/* L1 Cache Control Register Definitions */\r
-#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */\r
-#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */\r
-\r
-#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */\r
-#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */\r
-\r
-#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */\r
-#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */\r
-\r
-/* AHBS Control Register Definitions */\r
-#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */\r
-#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */\r
-\r
-#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */\r
-#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */\r
-\r
-#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/\r
-#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */\r
-\r
-/* Auxiliary Bus Fault Status Register Definitions */\r
-#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/\r
-#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */\r
-\r
-#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/\r
-#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */\r
-\r
-#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/\r
-#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */\r
-\r
-#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/\r
-#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */\r
-\r
-#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/\r
-#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */\r
-\r
-#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/\r
-#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */\r
- __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */\r
-} SCnSCB_Type;\r
-\r
-/* Interrupt Controller Type Register Definitions */\r
-#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */\r
-#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */\r
-\r
-/* Auxiliary Control Register Definitions */\r
-#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */\r
-#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */\r
-\r
-#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */\r
-#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */\r
-\r
-#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */\r
-#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */\r
-\r
-#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */\r
-#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */\r
-\r
-#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */\r
-#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM)\r
- \brief Type definitions for the Instrumentation Trace Macrocell (ITM)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
- */\r
-typedef struct\r
-{\r
- __OM union\r
- {\r
- __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */\r
- __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */\r
- __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */\r
- } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */\r
- uint32_t RESERVED0[864U];\r
- __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */\r
- uint32_t RESERVED1[15U];\r
- __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */\r
- uint32_t RESERVED2[15U];\r
- __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */\r
- uint32_t RESERVED3[29U];\r
- __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */\r
- __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */\r
- __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */\r
- uint32_t RESERVED4[43U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */\r
- uint32_t RESERVED5[6U];\r
- __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */\r
- __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */\r
- __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */\r
- __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */\r
- __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */\r
- __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */\r
- __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */\r
- __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */\r
- __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */\r
- __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */\r
- __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */\r
- __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */\r
-} ITM_Type;\r
-\r
-/* ITM Trace Privilege Register Definitions */\r
-#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */\r
-#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */\r
-\r
-/* ITM Trace Control Register Definitions */\r
-#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */\r
-#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */\r
-\r
-#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */\r
-#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */\r
-\r
-#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */\r
-#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */\r
-\r
-#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */\r
-#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */\r
-\r
-#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */\r
-#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */\r
-\r
-#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */\r
-#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */\r
-\r
-#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */\r
-#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */\r
-\r
-#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */\r
-#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */\r
-\r
-#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */\r
-#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */\r
-\r
-/* ITM Integration Write Register Definitions */\r
-#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */\r
-#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */\r
-\r
-/* ITM Integration Read Register Definitions */\r
-#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */\r
-#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */\r
-\r
-/* ITM Integration Mode Control Register Definitions */\r
-#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */\r
-#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */\r
-\r
-/* ITM Lock Status Register Definitions */\r
-#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */\r
-#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */\r
-\r
-#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */\r
-#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */\r
-\r
-#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */\r
-#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_ITM */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */\r
- __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */\r
- __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */\r
- __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */\r
- __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */\r
- __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
- uint32_t RESERVED3[981U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */\r
-#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */\r
-\r
-#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */\r
-#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */\r
-\r
-#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */\r
-#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */\r
-\r
-#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */\r
-#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */\r
-#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */\r
-\r
-#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */\r
-#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */\r
-#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */\r
-\r
-#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */\r
-#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */\r
-\r
-#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */\r
-#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */\r
-\r
-#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */\r
-#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */\r
-\r
-#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */\r
-#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */\r
-\r
-#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */\r
-#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */\r
-\r
-#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */\r
-#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */\r
-\r
-/* DWT CPI Count Register Definitions */\r
-#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */\r
-#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */\r
-\r
-/* DWT Exception Overhead Count Register Definitions */\r
-#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */\r
-#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */\r
-\r
-/* DWT Sleep Count Register Definitions */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */\r
-\r
-/* DWT LSU Count Register Definitions */\r
-#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */\r
-#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */\r
-\r
-/* DWT Folded-instruction Count Register Definitions */\r
-#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */\r
-#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */\r
-\r
-/* DWT Comparator Mask Register Definitions */\r
-#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */\r
-#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */\r
-#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */\r
-#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */\r
-#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */\r
-\r
-#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */\r
-#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */\r
-\r
-#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */\r
-#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */\r
-\r
-#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */\r
-#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */\r
-\r
-#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */\r
-#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */\r
- uint32_t RESERVED3[759U];\r
- __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */\r
- __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */\r
- __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */\r
- uint32_t RESERVED4[1U];\r
- __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */\r
- __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */\r
- __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */\r
- uint32_t RESERVED5[39U];\r
- __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */\r
- __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */\r
- uint32_t RESERVED7[8U];\r
- __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */\r
-#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI TRIGGER Register Definitions */\r
-#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */\r
-#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */\r
-\r
-/* TPI Integration ETM Data Register Definitions (FIFO0) */\r
-#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */\r
-#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */\r
-#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */\r
-#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */\r
-#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */\r
-#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */\r
-\r
-#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */\r
-#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */\r
-\r
-#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */\r
-#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */\r
-\r
-/* TPI ITATBCTR2 Register Definitions */\r
-#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */\r
-#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */\r
-#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */\r
-\r
-/* TPI Integration ITM Data Register Definitions (FIFO1) */\r
-#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */\r
-#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */\r
-#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */\r
-#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */\r
-#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */\r
-#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */\r
-\r
-#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */\r
-#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */\r
-\r
-#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */\r
-#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */\r
-\r
-/* TPI ITATBCTR0 Register Definitions */\r
-#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */\r
-#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */\r
-#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */\r
-\r
-/* TPI Integration Mode Control Register Definitions */\r
-#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */\r
-#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */\r
-#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */\r
-\r
-#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */\r
-#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */\r
-\r
-#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */\r
-#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */\r
- __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */\r
- __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */\r
- __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */\r
-} MPU_Type;\r
-\r
-#define MPU_TYPE_RALIASES 4U\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */\r
-#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */\r
-\r
-#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */\r
-#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */\r
-\r
-#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */\r
-#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */\r
-\r
-/* MPU Region Attribute and Size Register Definitions */\r
-#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */\r
-#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */\r
-\r
-#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */\r
-#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */\r
-\r
-#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */\r
-#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */\r
-\r
-#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */\r
-#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */\r
-\r
-#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */\r
-#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */\r
-\r
-#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */\r
-#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */\r
-\r
-#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */\r
-#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */\r
-\r
-#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */\r
-#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */\r
-\r
-#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */\r
-#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */\r
-\r
-#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */\r
-#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_FPU Floating Point Unit (FPU)\r
- \brief Type definitions for the Floating Point Unit (FPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Floating Point Unit (FPU).\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */\r
- __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */\r
- __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */\r
- __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */\r
- __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */\r
- __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */\r
-} FPU_Type;\r
-\r
-/* Floating-Point Context Control Register Definitions */\r
-#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */\r
-#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */\r
-\r
-#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */\r
-#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */\r
-\r
-#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */\r
-#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */\r
-\r
-#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */\r
-#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */\r
-#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */\r
-\r
-#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */\r
-#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */\r
-\r
-#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */\r
-#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */\r
-\r
-#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */\r
-#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */\r
-\r
-#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */\r
-#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */\r
-\r
-/* Floating-Point Context Address Register Definitions */\r
-#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */\r
-#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */\r
-\r
-/* Floating-Point Default Status Control Register Definitions */\r
-#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */\r
-#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */\r
-\r
-#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */\r
-#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */\r
-\r
-#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */\r
-#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */\r
-\r
-#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */\r
-#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */\r
-\r
-/* Media and FP Feature Register 0 Definitions */\r
-#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */\r
-#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */\r
-\r
-#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */\r
-#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */\r
-\r
-#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */\r
-#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */\r
-\r
-#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */\r
-#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */\r
-\r
-#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */\r
-#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */\r
-\r
-#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */\r
-#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */\r
-\r
-#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */\r
-#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */\r
-\r
-#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */\r
-#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */\r
-\r
-/* Media and FP Feature Register 1 Definitions */\r
-#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */\r
-#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */\r
-\r
-#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */\r
-#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */\r
-\r
-#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */\r
-#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */\r
-\r
-#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */\r
-#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */\r
-\r
-/* Media and FP Feature Register 2 Definitions */\r
-\r
-/*@} end of group CMSIS_FPU */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register Definitions */\r
-#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */\r
-#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */\r
-#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */\r
-#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */\r
-#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */\r
-#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */\r
-#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */\r
-#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */\r
-#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */\r
-#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */\r
-#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */\r
-#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
-#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
-#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */\r
-#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
-#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
-#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
-#endif\r
-\r
-#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */\r
-#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Debug Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */\r
-#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */\r
-#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */\r
-\r
-\r
-/**\r
- \brief Set Priority Grouping\r
- \details Sets the priority grouping field using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */\r
- SCB->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping\r
- \details Reads the priority grouping field from the NVIC Interrupt Controller.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\r
-{\r
- return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\r
- SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-/* ########################## MPU functions #################################### */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-\r
-#include "mpu_armv7.h"\r
-\r
-#endif\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- uint32_t mvfr0;\r
-\r
- mvfr0 = SCB->MVFR0;\r
- if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)\r
- {\r
- return 2U; /* Double + Single precision FPU */\r
- }\r
- else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)\r
- {\r
- return 1U; /* Single precision FPU */\r
- }\r
- else\r
- {\r
- return 0U; /* No FPU */\r
- }\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ########################## Cache functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_CacheFunctions Cache Functions\r
- \brief Functions that configure Instruction and Data cache.\r
- @{\r
- */\r
-\r
-/* Cache Size ID Register Macros */\r
-#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos)\r
-#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos )\r
-\r
-\r
-/**\r
- \brief Enable I-Cache\r
- \details Turns on I-Cache\r
- */\r
-__STATIC_INLINE void SCB_EnableICache (void)\r
-{\r
- #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\r
- __DSB();\r
- __ISB();\r
- SCB->ICIALLU = 0UL; /* invalidate I-Cache */\r
- __DSB();\r
- __ISB();\r
- SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief Disable I-Cache\r
- \details Turns off I-Cache\r
- */\r
-__STATIC_INLINE void SCB_DisableICache (void)\r
-{\r
- #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\r
- __DSB();\r
- __ISB();\r
- SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */\r
- SCB->ICIALLU = 0UL; /* invalidate I-Cache */\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief Invalidate I-Cache\r
- \details Invalidates I-Cache\r
- */\r
-__STATIC_INLINE void SCB_InvalidateICache (void)\r
-{\r
- #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)\r
- __DSB();\r
- __ISB();\r
- SCB->ICIALLU = 0UL;\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief Enable D-Cache\r
- \details Turns on D-Cache\r
- */\r
-__STATIC_INLINE void SCB_EnableDCache (void)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- uint32_t ccsidr;\r
- uint32_t sets;\r
- uint32_t ways;\r
-\r
- SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */\r
- __DSB();\r
-\r
- ccsidr = SCB->CCSIDR;\r
-\r
- /* invalidate D-Cache */\r
- sets = (uint32_t)(CCSIDR_SETS(ccsidr));\r
- do {\r
- ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\r
- do {\r
- SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |\r
- ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) );\r
- #if defined ( __CC_ARM )\r
- __schedule_barrier();\r
- #endif\r
- } while (ways-- != 0U);\r
- } while(sets-- != 0U);\r
- __DSB();\r
-\r
- SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief Disable D-Cache\r
- \details Turns off D-Cache\r
- */\r
-__STATIC_INLINE void SCB_DisableDCache (void)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- uint32_t ccsidr;\r
- uint32_t sets;\r
- uint32_t ways;\r
-\r
- SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */\r
- __DSB();\r
-\r
- SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */\r
- __DSB();\r
-\r
- ccsidr = SCB->CCSIDR;\r
-\r
- /* clean & invalidate D-Cache */\r
- sets = (uint32_t)(CCSIDR_SETS(ccsidr));\r
- do {\r
- ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\r
- do {\r
- SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |\r
- ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) );\r
- #if defined ( __CC_ARM )\r
- __schedule_barrier();\r
- #endif\r
- } while (ways-- != 0U);\r
- } while(sets-- != 0U);\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief Invalidate D-Cache\r
- \details Invalidates D-Cache\r
- */\r
-__STATIC_INLINE void SCB_InvalidateDCache (void)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- uint32_t ccsidr;\r
- uint32_t sets;\r
- uint32_t ways;\r
-\r
- SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */\r
- __DSB();\r
-\r
- ccsidr = SCB->CCSIDR;\r
-\r
- /* invalidate D-Cache */\r
- sets = (uint32_t)(CCSIDR_SETS(ccsidr));\r
- do {\r
- ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\r
- do {\r
- SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |\r
- ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) );\r
- #if defined ( __CC_ARM )\r
- __schedule_barrier();\r
- #endif\r
- } while (ways-- != 0U);\r
- } while(sets-- != 0U);\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief Clean D-Cache\r
- \details Cleans D-Cache\r
- */\r
-__STATIC_INLINE void SCB_CleanDCache (void)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- uint32_t ccsidr;\r
- uint32_t sets;\r
- uint32_t ways;\r
-\r
- SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */\r
- __DSB();\r
-\r
- ccsidr = SCB->CCSIDR;\r
-\r
- /* clean D-Cache */\r
- sets = (uint32_t)(CCSIDR_SETS(ccsidr));\r
- do {\r
- ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\r
- do {\r
- SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) |\r
- ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) );\r
- #if defined ( __CC_ARM )\r
- __schedule_barrier();\r
- #endif\r
- } while (ways-- != 0U);\r
- } while(sets-- != 0U);\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief Clean & Invalidate D-Cache\r
- \details Cleans and Invalidates D-Cache\r
- */\r
-__STATIC_INLINE void SCB_CleanInvalidateDCache (void)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- uint32_t ccsidr;\r
- uint32_t sets;\r
- uint32_t ways;\r
-\r
- SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */\r
- __DSB();\r
-\r
- ccsidr = SCB->CCSIDR;\r
-\r
- /* clean & invalidate D-Cache */\r
- sets = (uint32_t)(CCSIDR_SETS(ccsidr));\r
- do {\r
- ways = (uint32_t)(CCSIDR_WAYS(ccsidr));\r
- do {\r
- SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |\r
- ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) );\r
- #if defined ( __CC_ARM )\r
- __schedule_barrier();\r
- #endif\r
- } while (ways-- != 0U);\r
- } while(sets-- != 0U);\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief D-Cache Invalidate by address\r
- \details Invalidates D-Cache for the given address\r
- \param[in] addr address (aligned to 32-byte boundary)\r
- \param[in] dsize size of memory block (in number of bytes)\r
-*/\r
-__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- int32_t op_size = dsize;\r
- uint32_t op_addr = (uint32_t)addr;\r
- int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */\r
-\r
- __DSB();\r
-\r
- while (op_size > 0) {\r
- SCB->DCIMVAC = op_addr;\r
- op_addr += (uint32_t)linesize;\r
- op_size -= linesize;\r
- }\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief D-Cache Clean by address\r
- \details Cleans D-Cache for the given address\r
- \param[in] addr address (aligned to 32-byte boundary)\r
- \param[in] dsize size of memory block (in number of bytes)\r
-*/\r
-__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- int32_t op_size = dsize;\r
- uint32_t op_addr = (uint32_t) addr;\r
- int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */\r
-\r
- __DSB();\r
-\r
- while (op_size > 0) {\r
- SCB->DCCMVAC = op_addr;\r
- op_addr += (uint32_t)linesize;\r
- op_size -= linesize;\r
- }\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/**\r
- \brief D-Cache Clean and Invalidate by address\r
- \details Cleans and invalidates D_Cache for the given address\r
- \param[in] addr address (aligned to 32-byte boundary)\r
- \param[in] dsize size of memory block (in number of bytes)\r
-*/\r
-__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)\r
-{\r
- #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)\r
- int32_t op_size = dsize;\r
- uint32_t op_addr = (uint32_t) addr;\r
- int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */\r
-\r
- __DSB();\r
-\r
- while (op_size > 0) {\r
- SCB->DCCIMVAC = op_addr;\r
- op_addr += (uint32_t)linesize;\r
- op_size -= linesize;\r
- }\r
-\r
- __DSB();\r
- __ISB();\r
- #endif\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_CacheFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-/* ##################################### Debug In/Output function ########################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_core_DebugFunctions ITM Functions\r
- \brief Functions that access the ITM debug interface.\r
- @{\r
- */\r
-\r
-extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */\r
-#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */\r
-\r
-\r
-/**\r
- \brief ITM Send Character\r
- \details Transmits a character via the ITM channel 0, and\r
- \li Just returns when no debugger is connected that has booked the output.\r
- \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\r
- \param [in] ch Character to transmit.\r
- \returns Character to transmit.\r
- */\r
-__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\r
-{\r
- if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */\r
- ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */\r
- {\r
- while (ITM->PORT[0U].u32 == 0UL)\r
- {\r
- __NOP();\r
- }\r
- ITM->PORT[0U].u8 = (uint8_t)ch;\r
- }\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Receive Character\r
- \details Inputs a character via the external variable \ref ITM_RxBuffer.\r
- \return Received character.\r
- \return -1 No character pending.\r
- */\r
-__STATIC_INLINE int32_t ITM_ReceiveChar (void)\r
-{\r
- int32_t ch = -1; /* no character available */\r
-\r
- if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\r
- {\r
- ch = ITM_RxBuffer;\r
- ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */\r
- }\r
-\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Check Character\r
- \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.\r
- \return 0 No character available.\r
- \return 1 Character available.\r
- */\r
-__STATIC_INLINE int32_t ITM_CheckChar (void)\r
-{\r
-\r
- if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\r
- {\r
- return (0); /* no character available */\r
- }\r
- else\r
- {\r
- return (1); /* character available */\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_core_DebugFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_CM7_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_sc000.h\r
- * @brief CMSIS SC000 Core Peripheral Access Layer Header File\r
- * @version V5.0.5\r
- * @date 28. May 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_SC000_H_GENERIC\r
-#define __CORE_SC000_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup SC000\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS SC000 definitions */\r
-#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \\r
- __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_SC (000U) /*!< Cortex secure core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_SC000_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_SC000_H_DEPENDANT\r
-#define __CORE_SC000_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __SC000_REV\r
- #define __SC000_REV 0x0000U\r
- #warning "__SC000_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 2U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group SC000 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core MPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */\r
- uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:1; /*!< bit: 0 Reserved */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[31U];\r
- __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[31U];\r
- __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[31U];\r
- __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[31U];\r
- uint32_t RESERVED4[64U];\r
- __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */\r
-} NVIC_Type;\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
- uint32_t RESERVED1[154U];\r
- __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */\r
-} SCnSCB_Type;\r
-\r
-/* Auxiliary Control Register Definitions */\r
-#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */\r
-#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */\r
-} MPU_Type;\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */\r
-#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */\r
-\r
-#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */\r
-#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */\r
-\r
-#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */\r
-#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */\r
-\r
-/* MPU Region Attribute and Size Register Definitions */\r
-#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */\r
-#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */\r
-\r
-#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */\r
-#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */\r
-\r
-#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */\r
-#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */\r
-\r
-#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */\r
-#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */\r
-\r
-#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */\r
-#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */\r
-\r
-#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */\r
-#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */\r
-\r
-#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */\r
-#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */\r
-\r
-#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */\r
-#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */\r
-\r
-#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */\r
-#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */\r
-\r
-#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */\r
-#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.\r
- Therefore they are not covered by the SC000 header file.\r
- @{\r
- */\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
-#endif\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
-/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */\r
-/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
-/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-\r
-\r
-/* Interrupt Priorities are WORD accessible only under Armv6-M */\r
-/* The following MACROS handle generation of the register offset and byte masks */\r
-#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)\r
-#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )\r
-#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )\r
-\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
- else\r
- {\r
- SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |\r
- (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- SCB_AIRCR_SYSRESETREQ_Msk);\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_SC000_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/**************************************************************************//**\r
- * @file core_sc300.h\r
- * @brief CMSIS SC300 Core Peripheral Access Layer Header File\r
- * @version V5.0.6\r
- * @date 04. June 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2009-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef __CORE_SC300_H_GENERIC\r
-#define __CORE_SC300_H_GENERIC\r
-\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/**\r
- \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions\r
- CMSIS violates the following MISRA-C:2004 rules:\r
-\r
- \li Required Rule 8.5, object/function definition in header file.<br>\r
- Function definitions in header files are used to allow 'inlining'.\r
-\r
- \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
- Unions are used for effective representation of core registers.\r
-\r
- \li Advisory Rule 19.7, Function-like macro defined.<br>\r
- Function-like macros are used to allow more efficient code.\r
- */\r
-\r
-\r
-/*******************************************************************************\r
- * CMSIS definitions\r
- ******************************************************************************/\r
-/**\r
- \ingroup SC3000\r
- @{\r
- */\r
-\r
-#include "cmsis_version.h"\r
-\r
-/* CMSIS SC300 definitions */\r
-#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */\r
-#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */\r
-#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \\r
- __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */\r
-\r
-#define __CORTEX_SC (300U) /*!< Cortex secure core */\r
-\r
-/** __FPU_USED indicates whether an FPU is used or not.\r
- This core does not support an FPU at all\r
-*/\r
-#define __FPU_USED 0U\r
-\r
-#if defined ( __CC_ARM )\r
- #if defined __TARGET_FPU_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)\r
- #if defined __ARM_PCS_VFP\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __GNUC__ )\r
- #if defined (__VFP_FP__) && !defined(__SOFTFP__)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __ICCARM__ )\r
- #if defined __ARMVFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TI_ARM__ )\r
- #if defined __TI_VFP_SUPPORT__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __TASKING__ )\r
- #if defined __FPU_VFP__\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#elif defined ( __CSMC__ )\r
- #if ( __CSMC__ & 0x400U)\r
- #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"\r
- #endif\r
-\r
-#endif\r
-\r
-#include "cmsis_compiler.h" /* CMSIS compiler specific defines */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_SC300_H_GENERIC */\r
-\r
-#ifndef __CMSIS_GENERIC\r
-\r
-#ifndef __CORE_SC300_H_DEPENDANT\r
-#define __CORE_SC300_H_DEPENDANT\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* check device defines and use defaults */\r
-#if defined __CHECK_DEVICE_DEFINES\r
- #ifndef __SC300_REV\r
- #define __SC300_REV 0x0000U\r
- #warning "__SC300_REV not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __MPU_PRESENT\r
- #define __MPU_PRESENT 0U\r
- #warning "__MPU_PRESENT not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __NVIC_PRIO_BITS\r
- #define __NVIC_PRIO_BITS 3U\r
- #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"\r
- #endif\r
-\r
- #ifndef __Vendor_SysTickConfig\r
- #define __Vendor_SysTickConfig 0U\r
- #warning "__Vendor_SysTickConfig not defined in device header file; using default!"\r
- #endif\r
-#endif\r
-\r
-/* IO definitions (access restrictions to peripheral registers) */\r
-/**\r
- \defgroup CMSIS_glob_defs CMSIS Global Defines\r
-\r
- <strong>IO Type Qualifiers</strong> are used\r
- \li to specify the access to peripheral variables.\r
- \li for automatic generation of peripheral register debug information.\r
-*/\r
-#ifdef __cplusplus\r
- #define __I volatile /*!< Defines 'read only' permissions */\r
-#else\r
- #define __I volatile const /*!< Defines 'read only' permissions */\r
-#endif\r
-#define __O volatile /*!< Defines 'write only' permissions */\r
-#define __IO volatile /*!< Defines 'read / write' permissions */\r
-\r
-/* following defines should be used for structure members */\r
-#define __IM volatile const /*! Defines 'read only' structure member permissions */\r
-#define __OM volatile /*! Defines 'write only' structure member permissions */\r
-#define __IOM volatile /*! Defines 'read / write' structure member permissions */\r
-\r
-/*@} end of group SC300 */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Register Abstraction\r
- Core Register contain:\r
- - Core Register\r
- - Core NVIC Register\r
- - Core SCB Register\r
- - Core SysTick Register\r
- - Core Debug Register\r
- - Core MPU Register\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_core_register Defines and Type Definitions\r
- \brief Type definitions and defines for Cortex-M processor based devices.\r
-*/\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CORE Status and Control Registers\r
- \brief Core Register type definitions.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Union type to access the Application Program Status Register (APSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} APSR_Type;\r
-\r
-/* APSR Register Definitions */\r
-#define APSR_N_Pos 31U /*!< APSR: N Position */\r
-#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */\r
-\r
-#define APSR_Z_Pos 30U /*!< APSR: Z Position */\r
-#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */\r
-\r
-#define APSR_C_Pos 29U /*!< APSR: C Position */\r
-#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */\r
-\r
-#define APSR_V_Pos 28U /*!< APSR: V Position */\r
-#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */\r
-\r
-#define APSR_Q_Pos 27U /*!< APSR: Q Position */\r
-#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Interrupt Program Status Register (IPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} IPSR_Type;\r
-\r
-/* IPSR Register Definitions */\r
-#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */\r
-#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Special-Purpose Program Status Registers (xPSR).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */\r
- uint32_t _reserved0:1; /*!< bit: 9 Reserved */\r
- uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */\r
- uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */\r
- uint32_t T:1; /*!< bit: 24 Thumb bit */\r
- uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */\r
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */\r
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */\r
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */\r
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */\r
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} xPSR_Type;\r
-\r
-/* xPSR Register Definitions */\r
-#define xPSR_N_Pos 31U /*!< xPSR: N Position */\r
-#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */\r
-\r
-#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */\r
-#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */\r
-\r
-#define xPSR_C_Pos 29U /*!< xPSR: C Position */\r
-#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */\r
-\r
-#define xPSR_V_Pos 28U /*!< xPSR: V Position */\r
-#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */\r
-\r
-#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */\r
-#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */\r
-\r
-#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */\r
-#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */\r
-\r
-#define xPSR_T_Pos 24U /*!< xPSR: T Position */\r
-#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */\r
-\r
-#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */\r
-#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */\r
-\r
-#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */\r
-#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */\r
-\r
-\r
-/**\r
- \brief Union type to access the Control Registers (CONTROL).\r
- */\r
-typedef union\r
-{\r
- struct\r
- {\r
- uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */\r
- uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */\r
- uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */\r
- } b; /*!< Structure used for bit access */\r
- uint32_t w; /*!< Type used for word access */\r
-} CONTROL_Type;\r
-\r
-/* CONTROL Register Definitions */\r
-#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */\r
-#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */\r
-\r
-#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */\r
-#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */\r
-\r
-/*@} end of group CMSIS_CORE */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC)\r
- \brief Type definitions for the NVIC Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */\r
- uint32_t RESERVED0[24U];\r
- __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */\r
- uint32_t RSERVED1[24U];\r
- __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */\r
- uint32_t RESERVED2[24U];\r
- __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */\r
- uint32_t RESERVED3[24U];\r
- __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */\r
- uint32_t RESERVED4[56U];\r
- __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */\r
- uint32_t RESERVED5[644U];\r
- __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */\r
-} NVIC_Type;\r
-\r
-/* Software Triggered Interrupt Register Definitions */\r
-#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */\r
-#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_NVIC */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCB System Control Block (SCB)\r
- \brief Type definitions for the System Control Block Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control Block (SCB).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */\r
- __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */\r
- __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */\r
- __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */\r
- __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */\r
- __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */\r
- __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */\r
- __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */\r
- __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */\r
- __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */\r
- __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */\r
- __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */\r
- __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */\r
- __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */\r
- __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */\r
- __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */\r
- __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */\r
- __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */\r
- __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */\r
- uint32_t RESERVED0[5U];\r
- __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */\r
- uint32_t RESERVED1[129U];\r
- __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */\r
-} SCB_Type;\r
-\r
-/* SCB CPUID Register Definitions */\r
-#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */\r
-#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */\r
-\r
-#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */\r
-#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */\r
-\r
-#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */\r
-#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */\r
-\r
-#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */\r
-#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */\r
-\r
-#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */\r
-#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */\r
-\r
-/* SCB Interrupt Control State Register Definitions */\r
-#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */\r
-#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */\r
-#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */\r
-\r
-#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */\r
-#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */\r
-\r
-#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */\r
-#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */\r
-\r
-#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */\r
-#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */\r
-\r
-#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */\r
-#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */\r
-\r
-#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */\r
-#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */\r
-\r
-#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */\r
-#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */\r
-\r
-#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */\r
-#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */\r
-\r
-#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */\r
-#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */\r
-\r
-/* SCB Vector Table Offset Register Definitions */\r
-#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */\r
-#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */\r
-\r
-#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */\r
-#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */\r
-\r
-/* SCB Application Interrupt and Reset Control Register Definitions */\r
-#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */\r
-#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */\r
-\r
-#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */\r
-#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */\r
-\r
-#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */\r
-#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */\r
-\r
-#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */\r
-#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */\r
-\r
-#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */\r
-#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */\r
-\r
-#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */\r
-#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */\r
-\r
-#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */\r
-#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */\r
-\r
-/* SCB System Control Register Definitions */\r
-#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */\r
-#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */\r
-\r
-#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */\r
-#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */\r
-\r
-#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */\r
-#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */\r
-\r
-/* SCB Configuration Control Register Definitions */\r
-#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */\r
-#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */\r
-\r
-#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */\r
-#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */\r
-\r
-#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */\r
-#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */\r
-\r
-#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */\r
-#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */\r
-\r
-#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */\r
-#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */\r
-\r
-#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */\r
-#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */\r
-\r
-/* SCB System Handler Control and State Register Definitions */\r
-#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */\r
-#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */\r
-#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */\r
-#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */\r
-\r
-#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */\r
-#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */\r
-#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */\r
-#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */\r
-#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */\r
-\r
-#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */\r
-#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */\r
-\r
-#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */\r
-#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */\r
-\r
-#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */\r
-#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */\r
-\r
-#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */\r
-#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */\r
-\r
-#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */\r
-#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */\r
-#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */\r
-\r
-#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */\r
-#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */\r
-\r
-/* SCB Configurable Fault Status Register Definitions */\r
-#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */\r
-#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */\r
-#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */\r
-\r
-#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */\r
-#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\r
-\r
-/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */\r
-#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */\r
-\r
-#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */\r
-#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */\r
-\r
-#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */\r
-#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */\r
-\r
-#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */\r
-#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */\r
-\r
-#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */\r
-#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */\r
-\r
-/* BusFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */\r
-#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */\r
-\r
-#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */\r
-#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */\r
-\r
-#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */\r
-#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */\r
-\r
-#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */\r
-#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */\r
-\r
-#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */\r
-#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */\r
-\r
-#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */\r
-#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */\r
-\r
-/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */\r
-#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */\r
-#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */\r
-\r
-#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */\r
-#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */\r
-\r
-#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */\r
-#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */\r
-\r
-#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */\r
-#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */\r
-\r
-#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */\r
-#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */\r
-\r
-#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */\r
-#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */\r
-\r
-/* SCB Hard Fault Status Register Definitions */\r
-#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */\r
-#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */\r
-\r
-#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */\r
-#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */\r
-\r
-#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */\r
-#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */\r
-\r
-/* SCB Debug Fault Status Register Definitions */\r
-#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */\r
-#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */\r
-\r
-#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */\r
-#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */\r
-\r
-#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */\r
-#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */\r
-\r
-#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */\r
-#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */\r
-\r
-#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */\r
-#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */\r
-\r
-/*@} end of group CMSIS_SCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\r
- \brief Type definitions for the System Control and ID Register not in the SCB\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Control and ID Register not in the SCB.\r
- */\r
-typedef struct\r
-{\r
- uint32_t RESERVED0[1U];\r
- __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */\r
- uint32_t RESERVED1[1U];\r
-} SCnSCB_Type;\r
-\r
-/* Interrupt Controller Type Register Definitions */\r
-#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */\r
-#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */\r
-\r
-/*@} end of group CMSIS_SCnotSCB */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_SysTick System Tick Timer (SysTick)\r
- \brief Type definitions for the System Timer Registers.\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the System Timer (SysTick).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */\r
- __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */\r
- __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */\r
- __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */\r
-} SysTick_Type;\r
-\r
-/* SysTick Control / Status Register Definitions */\r
-#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */\r
-#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */\r
-\r
-#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */\r
-#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */\r
-\r
-#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */\r
-#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */\r
-\r
-#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */\r
-#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */\r
-\r
-/* SysTick Reload Register Definitions */\r
-#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */\r
-#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */\r
-\r
-/* SysTick Current Register Definitions */\r
-#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */\r
-#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */\r
-\r
-/* SysTick Calibration Register Definitions */\r
-#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */\r
-#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */\r
-\r
-#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */\r
-#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */\r
-\r
-#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */\r
-#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */\r
-\r
-/*@} end of group CMSIS_SysTick */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM)\r
- \brief Type definitions for the Instrumentation Trace Macrocell (ITM)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM).\r
- */\r
-typedef struct\r
-{\r
- __OM union\r
- {\r
- __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */\r
- __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */\r
- __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */\r
- } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */\r
- uint32_t RESERVED0[864U];\r
- __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */\r
- uint32_t RESERVED1[15U];\r
- __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */\r
- uint32_t RESERVED2[15U];\r
- __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */\r
- uint32_t RESERVED3[29U];\r
- __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */\r
- __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */\r
- __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */\r
- uint32_t RESERVED4[43U];\r
- __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */\r
- __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */\r
- uint32_t RESERVED5[6U];\r
- __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */\r
- __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */\r
- __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */\r
- __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */\r
- __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */\r
- __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */\r
- __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */\r
- __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */\r
- __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */\r
- __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */\r
- __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */\r
- __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */\r
-} ITM_Type;\r
-\r
-/* ITM Trace Privilege Register Definitions */\r
-#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */\r
-#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */\r
-\r
-/* ITM Trace Control Register Definitions */\r
-#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */\r
-#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */\r
-\r
-#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */\r
-#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */\r
-\r
-#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */\r
-#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */\r
-\r
-#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */\r
-#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */\r
-\r
-#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */\r
-#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */\r
-\r
-#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */\r
-#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */\r
-\r
-#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */\r
-#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */\r
-\r
-#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */\r
-#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */\r
-\r
-#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */\r
-#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */\r
-\r
-/* ITM Integration Write Register Definitions */\r
-#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */\r
-#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */\r
-\r
-/* ITM Integration Read Register Definitions */\r
-#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */\r
-#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */\r
-\r
-/* ITM Integration Mode Control Register Definitions */\r
-#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */\r
-#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */\r
-\r
-/* ITM Lock Status Register Definitions */\r
-#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */\r
-#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */\r
-\r
-#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */\r
-#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */\r
-\r
-#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */\r
-#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_ITM */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT)\r
- \brief Type definitions for the Data Watchpoint and Trace (DWT)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Data Watchpoint and Trace Register (DWT).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */\r
- __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */\r
- __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */\r
- __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */\r
- __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */\r
- __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */\r
- __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */\r
- __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */\r
- __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */\r
- __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */\r
- __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */\r
- uint32_t RESERVED0[1U];\r
- __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */\r
- __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */\r
- __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */\r
- uint32_t RESERVED1[1U];\r
- __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */\r
- __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */\r
- __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */\r
- uint32_t RESERVED2[1U];\r
- __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */\r
- __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */\r
- __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */\r
-} DWT_Type;\r
-\r
-/* DWT Control Register Definitions */\r
-#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */\r
-#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */\r
-\r
-#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */\r
-#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */\r
-\r
-#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */\r
-#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */\r
-\r
-#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */\r
-#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */\r
-\r
-#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */\r
-#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */\r
-\r
-#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */\r
-#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */\r
-\r
-#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */\r
-#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */\r
-\r
-#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */\r
-#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */\r
-\r
-#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */\r
-#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */\r
-#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */\r
-\r
-#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */\r
-#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */\r
-\r
-#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */\r
-#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */\r
-\r
-#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */\r
-#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */\r
-\r
-#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */\r
-#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */\r
-\r
-#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */\r
-#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */\r
-\r
-#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */\r
-#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */\r
-\r
-#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */\r
-#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */\r
-\r
-#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */\r
-#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */\r
-\r
-/* DWT CPI Count Register Definitions */\r
-#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */\r
-#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */\r
-\r
-/* DWT Exception Overhead Count Register Definitions */\r
-#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */\r
-#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */\r
-\r
-/* DWT Sleep Count Register Definitions */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */\r
-#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */\r
-\r
-/* DWT LSU Count Register Definitions */\r
-#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */\r
-#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */\r
-\r
-/* DWT Folded-instruction Count Register Definitions */\r
-#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */\r
-#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */\r
-\r
-/* DWT Comparator Mask Register Definitions */\r
-#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */\r
-#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */\r
-\r
-/* DWT Comparator Function Register Definitions */\r
-#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */\r
-#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */\r
-#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */\r
-#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */\r
-\r
-#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */\r
-#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */\r
-\r
-#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */\r
-#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */\r
-\r
-#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */\r
-#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */\r
-\r
-#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */\r
-#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */\r
-\r
-#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */\r
-#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */\r
-\r
-#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */\r
-#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_DWT */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_TPI Trace Port Interface (TPI)\r
- \brief Type definitions for the Trace Port Interface (TPI)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Trace Port Interface Register (TPI).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */\r
- __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */\r
- uint32_t RESERVED0[2U];\r
- __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */\r
- uint32_t RESERVED1[55U];\r
- __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */\r
- uint32_t RESERVED2[131U];\r
- __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */\r
- __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */\r
- __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */\r
- uint32_t RESERVED3[759U];\r
- __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */\r
- __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */\r
- __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */\r
- uint32_t RESERVED4[1U];\r
- __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */\r
- __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */\r
- __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */\r
- uint32_t RESERVED5[39U];\r
- __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */\r
- __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */\r
- uint32_t RESERVED7[8U];\r
- __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */\r
- __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */\r
-} TPI_Type;\r
-\r
-/* TPI Asynchronous Clock Prescaler Register Definitions */\r
-#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */\r
-#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */\r
-\r
-/* TPI Selected Pin Protocol Register Definitions */\r
-#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */\r
-#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */\r
-\r
-/* TPI Formatter and Flush Status Register Definitions */\r
-#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */\r
-#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */\r
-\r
-#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */\r
-#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */\r
-\r
-#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */\r
-#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */\r
-\r
-#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */\r
-#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */\r
-\r
-/* TPI Formatter and Flush Control Register Definitions */\r
-#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */\r
-#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */\r
-\r
-#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */\r
-#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */\r
-\r
-/* TPI TRIGGER Register Definitions */\r
-#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */\r
-#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */\r
-\r
-/* TPI Integration ETM Data Register Definitions (FIFO0) */\r
-#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */\r
-#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */\r
-#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */\r
-#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */\r
-#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */\r
-#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */\r
-\r
-#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */\r
-#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */\r
-\r
-#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */\r
-#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */\r
-\r
-/* TPI ITATBCTR2 Register Definitions */\r
-#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */\r
-#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */\r
-#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */\r
-\r
-/* TPI Integration ITM Data Register Definitions (FIFO1) */\r
-#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */\r
-#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */\r
-#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */\r
-#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */\r
-\r
-#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */\r
-#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */\r
-\r
-#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */\r
-#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */\r
-\r
-#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */\r
-#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */\r
-\r
-#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */\r
-#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */\r
-\r
-/* TPI ITATBCTR0 Register Definitions */\r
-#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */\r
-#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */\r
-\r
-#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */\r
-#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */\r
-\r
-/* TPI Integration Mode Control Register Definitions */\r
-#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */\r
-#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */\r
-\r
-/* TPI DEVID Register Definitions */\r
-#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */\r
-#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */\r
-\r
-#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */\r
-#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */\r
-\r
-#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */\r
-#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */\r
-\r
-#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */\r
-#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */\r
-\r
-#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */\r
-#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */\r
-\r
-#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */\r
-#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */\r
-\r
-/* TPI DEVTYPE Register Definitions */\r
-#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */\r
-#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */\r
-\r
-#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */\r
-#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */\r
-\r
-/*@}*/ /* end of group CMSIS_TPI */\r
-\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_MPU Memory Protection Unit (MPU)\r
- \brief Type definitions for the Memory Protection Unit (MPU)\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Memory Protection Unit (MPU).\r
- */\r
-typedef struct\r
-{\r
- __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */\r
- __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */\r
- __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */\r
- __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */\r
- __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */\r
- __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */\r
- __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */\r
- __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */\r
- __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */\r
-} MPU_Type;\r
-\r
-/* MPU Type Register Definitions */\r
-#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */\r
-#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */\r
-\r
-#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */\r
-#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */\r
-\r
-#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */\r
-#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */\r
-\r
-/* MPU Control Register Definitions */\r
-#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */\r
-#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */\r
-\r
-#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */\r
-#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */\r
-\r
-#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */\r
-#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */\r
-\r
-/* MPU Region Number Register Definitions */\r
-#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */\r
-#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */\r
-\r
-/* MPU Region Base Address Register Definitions */\r
-#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */\r
-#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */\r
-\r
-#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */\r
-#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */\r
-\r
-#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */\r
-#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */\r
-\r
-/* MPU Region Attribute and Size Register Definitions */\r
-#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */\r
-#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */\r
-\r
-#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */\r
-#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */\r
-\r
-#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */\r
-#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */\r
-\r
-#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */\r
-#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */\r
-\r
-#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */\r
-#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */\r
-\r
-#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */\r
-#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */\r
-\r
-#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */\r
-#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */\r
-\r
-#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */\r
-#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */\r
-\r
-#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */\r
-#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */\r
-\r
-#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */\r
-#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */\r
-\r
-/*@} end of group CMSIS_MPU */\r
-#endif\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug)\r
- \brief Type definitions for the Core Debug Registers\r
- @{\r
- */\r
-\r
-/**\r
- \brief Structure type to access the Core Debug Register (CoreDebug).\r
- */\r
-typedef struct\r
-{\r
- __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */\r
- __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */\r
- __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */\r
- __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */\r
-} CoreDebug_Type;\r
-\r
-/* Debug Halting Control and Status Register Definitions */\r
-#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */\r
-#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */\r
-#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\r
-#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\r
-\r
-#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */\r
-#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */\r
-#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */\r
-\r
-#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */\r
-#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */\r
-#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */\r
-\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\r
-#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\r
-\r
-#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */\r
-#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */\r
-\r
-#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */\r
-#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */\r
-\r
-#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */\r
-#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */\r
-\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */\r
-#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\r
-\r
-/* Debug Core Register Selector Register Definitions */\r
-#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */\r
-#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */\r
-\r
-#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */\r
-#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */\r
-\r
-/* Debug Exception and Monitor Control Register Definitions */\r
-#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */\r
-#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */\r
-#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */\r
-#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */\r
-#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */\r
-\r
-#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */\r
-#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */\r
-#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */\r
-#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */\r
-#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */\r
-#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */\r
-#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */\r
-#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */\r
-#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */\r
-\r
-#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */\r
-#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */\r
-\r
-/*@} end of group CMSIS_CoreDebug */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_bitfield Core register bit field macros\r
- \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk).\r
- @{\r
- */\r
-\r
-/**\r
- \brief Mask and shift a bit field value for use in a register bit range.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted value.\r
-*/\r
-#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk)\r
-\r
-/**\r
- \brief Mask and shift a register value to extract a bit filed value.\r
- \param[in] field Name of the register bit field.\r
- \param[in] value Value of register. This parameter is interpreted as an uint32_t type.\r
- \return Masked and shifted bit field value.\r
-*/\r
-#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)\r
-\r
-/*@} end of group CMSIS_core_bitfield */\r
-\r
-\r
-/**\r
- \ingroup CMSIS_core_register\r
- \defgroup CMSIS_core_base Core Definitions\r
- \brief Definitions for base addresses, unions, and structures.\r
- @{\r
- */\r
-\r
-/* Memory mapping of Core Hardware */\r
-#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */\r
-#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */\r
-#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */\r
-#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */\r
-#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */\r
-#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */\r
-#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */\r
-#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */\r
-\r
-#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */\r
-#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */\r
-#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */\r
-#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */\r
-#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */\r
-#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */\r
-#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */\r
-#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */\r
-\r
-#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)\r
- #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */\r
- #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */\r
-#endif\r
-\r
-/*@} */\r
-\r
-\r
-\r
-/*******************************************************************************\r
- * Hardware Abstraction Layer\r
- Core Function Interface contains:\r
- - Core NVIC Functions\r
- - Core SysTick Functions\r
- - Core Debug Functions\r
- - Core Register Access Functions\r
- ******************************************************************************/\r
-/**\r
- \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\r
-*/\r
-\r
-\r
-\r
-/* ########################## NVIC functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_NVICFunctions NVIC Functions\r
- \brief Functions that manage interrupts and exceptions via the NVIC.\r
- @{\r
- */\r
-\r
-#ifdef CMSIS_NVIC_VIRTUAL\r
- #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
- #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"\r
- #endif\r
- #include CMSIS_NVIC_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping\r
- #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping\r
- #define NVIC_EnableIRQ __NVIC_EnableIRQ\r
- #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ\r
- #define NVIC_DisableIRQ __NVIC_DisableIRQ\r
- #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ\r
- #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ\r
- #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ\r
- #define NVIC_GetActive __NVIC_GetActive\r
- #define NVIC_SetPriority __NVIC_SetPriority\r
- #define NVIC_GetPriority __NVIC_GetPriority\r
- #define NVIC_SystemReset __NVIC_SystemReset\r
-#endif /* CMSIS_NVIC_VIRTUAL */\r
-\r
-#ifdef CMSIS_VECTAB_VIRTUAL\r
- #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
- #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"\r
- #endif\r
- #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE\r
-#else\r
- #define NVIC_SetVector __NVIC_SetVector\r
- #define NVIC_GetVector __NVIC_GetVector\r
-#endif /* (CMSIS_VECTAB_VIRTUAL) */\r
-\r
-#define NVIC_USER_IRQ_OFFSET 16\r
-\r
-\r
-/* The following EXC_RETURN values are saved the LR on exception entry */\r
-#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */\r
-#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */\r
-\r
-\r
-\r
-/**\r
- \brief Set Priority Grouping\r
- \details Sets the priority grouping field using the required unlock sequence.\r
- The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\r
- Only values from 0..7 are used.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Priority grouping field.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
-{\r
- uint32_t reg_value;\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
-\r
- reg_value = SCB->AIRCR; /* read old register configuration */\r
- reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */\r
- reg_value = (reg_value |\r
- ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */\r
- SCB->AIRCR = reg_value;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Priority Grouping\r
- \details Reads the priority grouping field from the NVIC Interrupt Controller.\r
- \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)\r
-{\r
- return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));\r
-}\r
-\r
-\r
-/**\r
- \brief Enable Interrupt\r
- \details Enables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Enable status\r
- \details Returns a device specific interrupt enable status from the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt is not enabled.\r
- \return 1 Interrupt is enabled.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Disable Interrupt\r
- \details Disables a device specific interrupt in the NVIC interrupt controller.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- __DSB();\r
- __ISB();\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Pending Interrupt\r
- \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not pending.\r
- \return 1 Interrupt status is pending.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Pending Interrupt\r
- \details Sets the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Clear Pending Interrupt\r
- \details Clears the pending bit of a device specific interrupt in the NVIC pending register.\r
- \param [in] IRQn Device specific interrupt number.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Active Interrupt\r
- \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.\r
- \param [in] IRQn Device specific interrupt number.\r
- \return 0 Interrupt status is not active.\r
- \return 1 Interrupt status is active.\r
- \note IRQn must not be negative.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));\r
- }\r
- else\r
- {\r
- return(0U);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Priority\r
- \details Sets the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \param [in] priority Priority to set.\r
- \note The priority cannot be set for every processor exception.\r
- */\r
-__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\r
-{\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
- else\r
- {\r
- SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Priority\r
- \details Reads the priority of a device specific interrupt or a processor exception.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Interrupt Priority.\r
- Value is aligned automatically to the implemented priority bits of the microcontroller.\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)\r
-{\r
-\r
- if ((int32_t)(IRQn) >= 0)\r
- {\r
- return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
- else\r
- {\r
- return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));\r
- }\r
-}\r
-\r
-\r
-/**\r
- \brief Encode Priority\r
- \details Encodes the priority for an interrupt with the given priority group,\r
- preemptive priority value, and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\r
- \param [in] PriorityGroup Used priority group.\r
- \param [in] PreemptPriority Preemptive priority value (starting from 0).\r
- \param [in] SubPriority Subpriority value (starting from 0).\r
- \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().\r
- */\r
-__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- return (\r
- ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |\r
- ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))\r
- );\r
-}\r
-\r
-\r
-/**\r
- \brief Decode Priority\r
- \details Decodes an interrupt priority value with a given priority group to\r
- preemptive priority value and subpriority value.\r
- In case of a conflict between priority grouping and available\r
- priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.\r
- \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority().\r
- \param [in] PriorityGroup Used priority group.\r
- \param [out] pPreemptPriority Preemptive priority value (starting from 0).\r
- \param [out] pSubPriority Subpriority value (starting from 0).\r
- */\r
-__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)\r
-{\r
- uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */\r
- uint32_t PreemptPriorityBits;\r
- uint32_t SubPriorityBits;\r
-\r
- PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);\r
- SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));\r
-\r
- *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);\r
- *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL);\r
-}\r
-\r
-\r
-/**\r
- \brief Set Interrupt Vector\r
- \details Sets an interrupt vector in SRAM based interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- VTOR must been relocated to SRAM before.\r
- \param [in] IRQn Interrupt number\r
- \param [in] vector Address of interrupt handler function\r
- */\r
-__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;\r
-}\r
-\r
-\r
-/**\r
- \brief Get Interrupt Vector\r
- \details Reads an interrupt vector from interrupt vector table.\r
- The interrupt number can be positive to specify a device specific interrupt,\r
- or negative to specify a processor exception.\r
- \param [in] IRQn Interrupt number.\r
- \return Address of interrupt handler function\r
- */\r
-__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)\r
-{\r
- uint32_t *vectors = (uint32_t *)SCB->VTOR;\r
- return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];\r
-}\r
-\r
-\r
-/**\r
- \brief System Reset\r
- \details Initiates a system reset request to reset the MCU.\r
- */\r
-__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)\r
-{\r
- __DSB(); /* Ensure all outstanding memory accesses included\r
- buffered write are completed before reset */\r
- SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |\r
- (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\r
- SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */\r
- __DSB(); /* Ensure completion of memory access */\r
-\r
- for(;;) /* wait until reset */\r
- {\r
- __NOP();\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_Core_NVICFunctions */\r
-\r
-\r
-/* ########################## FPU functions #################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_FpuFunctions FPU Functions\r
- \brief Function that provides FPU type.\r
- @{\r
- */\r
-\r
-/**\r
- \brief get FPU type\r
- \details returns the FPU type\r
- \returns\r
- - \b 0: No FPU\r
- - \b 1: Single precision FPU\r
- - \b 2: Double + Single precision FPU\r
- */\r
-__STATIC_INLINE uint32_t SCB_GetFPUType(void)\r
-{\r
- return 0U; /* No FPU */\r
-}\r
-\r
-\r
-/*@} end of CMSIS_Core_FpuFunctions */\r
-\r
-\r
-\r
-/* ################################## SysTick function ############################################ */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_Core_SysTickFunctions SysTick Functions\r
- \brief Functions that configure the System.\r
- @{\r
- */\r
-\r
-#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)\r
-\r
-/**\r
- \brief System Tick Configuration\r
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- Counter is in free running mode to generate periodic interrupts.\r
- \param [in] ticks Number of ticks between two interrupts.\r
- \return 0 Function succeeded.\r
- \return 1 Function failed.\r
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\r
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\r
- must contain a vendor-specific implementation of this function.\r
- */\r
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\r
-{\r
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)\r
- {\r
- return (1UL); /* Reload value impossible */\r
- }\r
-\r
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */\r
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */\r
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */\r
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |\r
- SysTick_CTRL_TICKINT_Msk |\r
- SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */\r
- return (0UL); /* Function successful */\r
-}\r
-\r
-#endif\r
-\r
-/*@} end of CMSIS_Core_SysTickFunctions */\r
-\r
-\r
-\r
-/* ##################################### Debug In/Output function ########################################### */\r
-/**\r
- \ingroup CMSIS_Core_FunctionInterface\r
- \defgroup CMSIS_core_DebugFunctions ITM Functions\r
- \brief Functions that access the ITM debug interface.\r
- @{\r
- */\r
-\r
-extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */\r
-#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */\r
-\r
-\r
-/**\r
- \brief ITM Send Character\r
- \details Transmits a character via the ITM channel 0, and\r
- \li Just returns when no debugger is connected that has booked the output.\r
- \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\r
- \param [in] ch Character to transmit.\r
- \returns Character to transmit.\r
- */\r
-__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\r
-{\r
- if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */\r
- ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */\r
- {\r
- while (ITM->PORT[0U].u32 == 0UL)\r
- {\r
- __NOP();\r
- }\r
- ITM->PORT[0U].u8 = (uint8_t)ch;\r
- }\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Receive Character\r
- \details Inputs a character via the external variable \ref ITM_RxBuffer.\r
- \return Received character.\r
- \return -1 No character pending.\r
- */\r
-__STATIC_INLINE int32_t ITM_ReceiveChar (void)\r
-{\r
- int32_t ch = -1; /* no character available */\r
-\r
- if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)\r
- {\r
- ch = ITM_RxBuffer;\r
- ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */\r
- }\r
-\r
- return (ch);\r
-}\r
-\r
-\r
-/**\r
- \brief ITM Check Character\r
- \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.\r
- \return 0 No character available.\r
- \return 1 Character available.\r
- */\r
-__STATIC_INLINE int32_t ITM_CheckChar (void)\r
-{\r
-\r
- if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)\r
- {\r
- return (0); /* no character available */\r
- }\r
- else\r
- {\r
- return (1); /* character available */\r
- }\r
-}\r
-\r
-/*@} end of CMSIS_core_DebugFunctions */\r
-\r
-\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __CORE_SC300_H_DEPENDANT */\r
-\r
-#endif /* __CMSIS_GENERIC */\r
+++ /dev/null
-/******************************************************************************\r
- * @file mpu_armv7.h\r
- * @brief CMSIS MPU API for Armv7-M MPU\r
- * @version V5.0.4\r
- * @date 10. January 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2017-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
- \r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
- \r
-#ifndef ARM_MPU_ARMV7_H\r
-#define ARM_MPU_ARMV7_H\r
-\r
-#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes\r
-#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes\r
-#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes\r
-#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes\r
-#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes\r
-#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte\r
-#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes\r
-#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes\r
-#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes\r
-#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes\r
-#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes\r
-#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes\r
-#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes\r
-#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes\r
-#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes\r
-#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte\r
-#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes\r
-#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes\r
-#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes\r
-#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes\r
-#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes\r
-#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes\r
-#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes\r
-#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes\r
-#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes\r
-#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte\r
-#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes\r
-#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes\r
-\r
-#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access\r
-#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only\r
-#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only\r
-#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access\r
-#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only\r
-#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access\r
-\r
-/** MPU Region Base Address Register Value\r
-*\r
-* \param Region The region to be configured, number 0 to 15.\r
-* \param BaseAddress The base address for the region.\r
-*/\r
-#define ARM_MPU_RBAR(Region, BaseAddress) \\r
- (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \\r
- ((Region) & MPU_RBAR_REGION_Msk) | \\r
- (MPU_RBAR_VALID_Msk))\r
-\r
-/**\r
-* MPU Memory Access Attributes\r
-* \r
-* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral.\r
-* \param IsShareable Region is shareable between multiple bus masters.\r
-* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache.\r
-* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy.\r
-*/ \r
-#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \\r
- ((((TypeExtField ) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \\r
- (((IsShareable ) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \\r
- (((IsCacheable ) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \\r
- (((IsBufferable ) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk))\r
-\r
-/**\r
-* MPU Region Attribute and Size Register Value\r
-* \r
-* \param DisableExec Instruction access disable bit, 1= disable instruction fetches.\r
-* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode.\r
-* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_.\r
-* \param SubRegionDisable Sub-region disable field.\r
-* \param Size Region size of the region to be configured, for example 4K, 8K.\r
-*/\r
-#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \\r
- ((((DisableExec ) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \\r
- (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \\r
- (((AccessAttributes) ) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk)))\r
- \r
-/**\r
-* MPU Region Attribute and Size Register Value\r
-* \r
-* \param DisableExec Instruction access disable bit, 1= disable instruction fetches.\r
-* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode.\r
-* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral.\r
-* \param IsShareable Region is shareable between multiple bus masters.\r
-* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache.\r
-* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy.\r
-* \param SubRegionDisable Sub-region disable field.\r
-* \param Size Region size of the region to be configured, for example 4K, 8K.\r
-*/ \r
-#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \\r
- ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size)\r
-\r
-/**\r
-* MPU Memory Access Attribute for strongly ordered memory.\r
-* - TEX: 000b\r
-* - Shareable\r
-* - Non-cacheable\r
-* - Non-bufferable\r
-*/ \r
-#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U)\r
-\r
-/**\r
-* MPU Memory Access Attribute for device memory.\r
-* - TEX: 000b (if non-shareable) or 010b (if shareable)\r
-* - Shareable or non-shareable\r
-* - Non-cacheable\r
-* - Bufferable (if shareable) or non-bufferable (if non-shareable)\r
-*\r
-* \param IsShareable Configures the device memory as shareable or non-shareable.\r
-*/ \r
-#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U))\r
-\r
-/**\r
-* MPU Memory Access Attribute for normal memory.\r
-* - TEX: 1BBb (reflecting outer cacheability rules)\r
-* - Shareable or non-shareable\r
-* - Cacheable or non-cacheable (reflecting inner cacheability rules)\r
-* - Bufferable or non-bufferable (reflecting inner cacheability rules)\r
-*\r
-* \param OuterCp Configures the outer cache policy.\r
-* \param InnerCp Configures the inner cache policy.\r
-* \param IsShareable Configures the memory as shareable or non-shareable.\r
-*/ \r
-#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U))\r
-\r
-/**\r
-* MPU Memory Access Attribute non-cacheable policy.\r
-*/\r
-#define ARM_MPU_CACHEP_NOCACHE 0U\r
-\r
-/**\r
-* MPU Memory Access Attribute write-back, write and read allocate policy.\r
-*/\r
-#define ARM_MPU_CACHEP_WB_WRA 1U\r
-\r
-/**\r
-* MPU Memory Access Attribute write-through, no write allocate policy.\r
-*/\r
-#define ARM_MPU_CACHEP_WT_NWA 2U\r
-\r
-/**\r
-* MPU Memory Access Attribute write-back, no write allocate policy.\r
-*/\r
-#define ARM_MPU_CACHEP_WB_NWA 3U\r
-\r
-\r
-/**\r
-* Struct for a single MPU Region\r
-*/\r
-typedef struct {\r
- uint32_t RBAR; //!< The region base address register value (RBAR)\r
- uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR\r
-} ARM_MPU_Region_t;\r
- \r
-/** Enable the MPU.\r
-* \param MPU_Control Default access permissions for unconfigured regions.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)\r
-{\r
- __DSB();\r
- __ISB();\r
- MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\r
-#ifdef SCB_SHCSR_MEMFAULTENA_Msk\r
- SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\r
-#endif\r
-}\r
-\r
-/** Disable the MPU.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Disable(void)\r
-{\r
- __DSB();\r
- __ISB();\r
-#ifdef SCB_SHCSR_MEMFAULTENA_Msk\r
- SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\r
-#endif\r
- MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk;\r
-}\r
-\r
-/** Clear and disable the given MPU region.\r
-* \param rnr Region number to be cleared.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)\r
-{\r
- MPU->RNR = rnr;\r
- MPU->RASR = 0U;\r
-}\r
-\r
-/** Configure an MPU region.\r
-* \param rbar Value for RBAR register.\r
-* \param rsar Value for RSAR register.\r
-*/ \r
-__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr)\r
-{\r
- MPU->RBAR = rbar;\r
- MPU->RASR = rasr;\r
-}\r
-\r
-/** Configure the given MPU region.\r
-* \param rnr Region number to be configured.\r
-* \param rbar Value for RBAR register.\r
-* \param rsar Value for RSAR register.\r
-*/ \r
-__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr)\r
-{\r
- MPU->RNR = rnr;\r
- MPU->RBAR = rbar;\r
- MPU->RASR = rasr;\r
-}\r
-\r
-/** Memcopy with strictly ordered memory access, e.g. for register targets.\r
-* \param dst Destination data is copied to.\r
-* \param src Source data is copied from.\r
-* \param len Amount of data words to be copied.\r
-*/\r
-__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len)\r
-{\r
- uint32_t i;\r
- for (i = 0U; i < len; ++i) \r
- {\r
- dst[i] = src[i];\r
- }\r
-}\r
-\r
-/** Load the given number of MPU regions from a table.\r
-* \param table Pointer to the MPU configuration table.\r
-* \param cnt Amount of regions to be configured.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) \r
-{\r
- const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U;\r
- while (cnt > MPU_TYPE_RALIASES) {\r
- orderedCpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize);\r
- table += MPU_TYPE_RALIASES;\r
- cnt -= MPU_TYPE_RALIASES;\r
- }\r
- orderedCpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize);\r
-}\r
-\r
-#endif\r
+++ /dev/null
-/******************************************************************************\r
- * @file mpu_armv8.h\r
- * @brief CMSIS MPU API for Armv8-M MPU\r
- * @version V5.0.4\r
- * @date 10. January 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2017-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef ARM_MPU_ARMV8_H\r
-#define ARM_MPU_ARMV8_H\r
-\r
-/** \brief Attribute for device memory (outer only) */\r
-#define ARM_MPU_ATTR_DEVICE ( 0U )\r
-\r
-/** \brief Attribute for non-cacheable, normal memory */\r
-#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U )\r
-\r
-/** \brief Attribute for normal memory (outer and inner)\r
-* \param NT Non-Transient: Set to 1 for non-transient data.\r
-* \param WB Write-Back: Set to 1 to use write-back update policy.\r
-* \param RA Read Allocation: Set to 1 to use cache allocation on read miss.\r
-* \param WA Write Allocation: Set to 1 to use cache allocation on write miss.\r
-*/\r
-#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \\r
- (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U))\r
-\r
-/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */\r
-#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U)\r
-\r
-/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */\r
-#define ARM_MPU_ATTR_DEVICE_nGnRE (1U)\r
-\r
-/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */\r
-#define ARM_MPU_ATTR_DEVICE_nGRE (2U)\r
-\r
-/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */\r
-#define ARM_MPU_ATTR_DEVICE_GRE (3U)\r
-\r
-/** \brief Memory Attribute\r
-* \param O Outer memory attributes\r
-* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes\r
-*/\r
-#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U)))\r
-\r
-/** \brief Normal memory non-shareable */\r
-#define ARM_MPU_SH_NON (0U)\r
-\r
-/** \brief Normal memory outer shareable */\r
-#define ARM_MPU_SH_OUTER (2U)\r
-\r
-/** \brief Normal memory inner shareable */\r
-#define ARM_MPU_SH_INNER (3U)\r
-\r
-/** \brief Memory access permissions\r
-* \param RO Read-Only: Set to 1 for read-only memory.\r
-* \param NP Non-Privileged: Set to 1 for non-privileged memory.\r
-*/\r
-#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U))\r
-\r
-/** \brief Region Base Address Register value\r
-* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned.\r
-* \param SH Defines the Shareability domain for this memory region.\r
-* \param RO Read-Only: Set to 1 for a read-only memory region.\r
-* \param NP Non-Privileged: Set to 1 for a non-privileged memory region.\r
-* \oaram XN eXecute Never: Set to 1 for a non-executable memory region.\r
-*/\r
-#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \\r
- ((BASE & MPU_RBAR_BASE_Msk) | \\r
- ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \\r
- ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \\r
- ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk))\r
-\r
-/** \brief Region Limit Address Register value\r
-* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended.\r
-* \param IDX The attribute index to be associated with this memory region.\r
-*/\r
-#define ARM_MPU_RLAR(LIMIT, IDX) \\r
- ((LIMIT & MPU_RLAR_LIMIT_Msk) | \\r
- ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \\r
- (MPU_RLAR_EN_Msk))\r
-\r
-/**\r
-* Struct for a single MPU Region\r
-*/\r
-typedef struct {\r
- uint32_t RBAR; /*!< Region Base Address Register value */\r
- uint32_t RLAR; /*!< Region Limit Address Register value */\r
-} ARM_MPU_Region_t;\r
- \r
-/** Enable the MPU.\r
-* \param MPU_Control Default access permissions for unconfigured regions.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)\r
-{\r
- __DSB();\r
- __ISB();\r
- MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\r
-#ifdef SCB_SHCSR_MEMFAULTENA_Msk\r
- SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\r
-#endif\r
-}\r
-\r
-/** Disable the MPU.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Disable(void)\r
-{\r
- __DSB();\r
- __ISB();\r
-#ifdef SCB_SHCSR_MEMFAULTENA_Msk\r
- SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\r
-#endif\r
- MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk;\r
-}\r
-\r
-#ifdef MPU_NS\r
-/** Enable the Non-secure MPU.\r
-* \param MPU_Control Default access permissions for unconfigured regions.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control)\r
-{\r
- __DSB();\r
- __ISB();\r
- MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\r
-#ifdef SCB_SHCSR_MEMFAULTENA_Msk\r
- SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\r
-#endif\r
-}\r
-\r
-/** Disable the Non-secure MPU.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Disable_NS(void)\r
-{\r
- __DSB();\r
- __ISB();\r
-#ifdef SCB_SHCSR_MEMFAULTENA_Msk\r
- SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\r
-#endif\r
- MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk;\r
-}\r
-#endif\r
-\r
-/** Set the memory attribute encoding to the given MPU.\r
-* \param mpu Pointer to the MPU to be configured.\r
-* \param idx The attribute index to be set [0-7]\r
-* \param attr The attribute value to be set.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr)\r
-{\r
- const uint8_t reg = idx / 4U;\r
- const uint32_t pos = ((idx % 4U) * 8U);\r
- const uint32_t mask = 0xFFU << pos;\r
- \r
- if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) {\r
- return; // invalid index\r
- }\r
- \r
- mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask));\r
-}\r
-\r
-/** Set the memory attribute encoding.\r
-* \param idx The attribute index to be set [0-7]\r
-* \param attr The attribute value to be set.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr)\r
-{\r
- ARM_MPU_SetMemAttrEx(MPU, idx, attr);\r
-}\r
-\r
-#ifdef MPU_NS\r
-/** Set the memory attribute encoding to the Non-secure MPU.\r
-* \param idx The attribute index to be set [0-7]\r
-* \param attr The attribute value to be set.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr)\r
-{\r
- ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr);\r
-}\r
-#endif\r
-\r
-/** Clear and disable the given MPU region of the given MPU.\r
-* \param mpu Pointer to MPU to be used.\r
-* \param rnr Region number to be cleared.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr)\r
-{\r
- mpu->RNR = rnr;\r
- mpu->RLAR = 0U;\r
-}\r
-\r
-/** Clear and disable the given MPU region.\r
-* \param rnr Region number to be cleared.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)\r
-{\r
- ARM_MPU_ClrRegionEx(MPU, rnr);\r
-}\r
-\r
-#ifdef MPU_NS\r
-/** Clear and disable the given Non-secure MPU region.\r
-* \param rnr Region number to be cleared.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr)\r
-{ \r
- ARM_MPU_ClrRegionEx(MPU_NS, rnr);\r
-}\r
-#endif\r
-\r
-/** Configure the given MPU region of the given MPU.\r
-* \param mpu Pointer to MPU to be used.\r
-* \param rnr Region number to be configured.\r
-* \param rbar Value for RBAR register.\r
-* \param rlar Value for RLAR register.\r
-*/ \r
-__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar)\r
-{\r
- mpu->RNR = rnr;\r
- mpu->RBAR = rbar;\r
- mpu->RLAR = rlar;\r
-}\r
-\r
-/** Configure the given MPU region.\r
-* \param rnr Region number to be configured.\r
-* \param rbar Value for RBAR register.\r
-* \param rlar Value for RLAR register.\r
-*/ \r
-__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar)\r
-{\r
- ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar);\r
-}\r
-\r
-#ifdef MPU_NS\r
-/** Configure the given Non-secure MPU region.\r
-* \param rnr Region number to be configured.\r
-* \param rbar Value for RBAR register.\r
-* \param rlar Value for RLAR register.\r
-*/ \r
-__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar)\r
-{\r
- ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); \r
-}\r
-#endif\r
-\r
-/** Memcopy with strictly ordered memory access, e.g. for register targets.\r
-* \param dst Destination data is copied to.\r
-* \param src Source data is copied from.\r
-* \param len Amount of data words to be copied.\r
-*/\r
-__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len)\r
-{\r
- uint32_t i;\r
- for (i = 0U; i < len; ++i) \r
- {\r
- dst[i] = src[i];\r
- }\r
-}\r
-\r
-/** Load the given number of MPU regions from a table to the given MPU.\r
-* \param mpu Pointer to the MPU registers to be used.\r
-* \param rnr First region number to be configured.\r
-* \param table Pointer to the MPU configuration table.\r
-* \param cnt Amount of regions to be configured.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \r
-{\r
- const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U;\r
- if (cnt == 1U) {\r
- mpu->RNR = rnr;\r
- orderedCpy(&(mpu->RBAR), &(table->RBAR), rowWordSize);\r
- } else {\r
- uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U);\r
- uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES;\r
- \r
- mpu->RNR = rnrBase;\r
- while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) {\r
- uint32_t c = MPU_TYPE_RALIASES - rnrOffset;\r
- orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize);\r
- table += c;\r
- cnt -= c;\r
- rnrOffset = 0U;\r
- rnrBase += MPU_TYPE_RALIASES;\r
- mpu->RNR = rnrBase;\r
- }\r
- \r
- orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize);\r
- }\r
-}\r
-\r
-/** Load the given number of MPU regions from a table.\r
-* \param rnr First region number to be configured.\r
-* \param table Pointer to the MPU configuration table.\r
-* \param cnt Amount of regions to be configured.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \r
-{\r
- ARM_MPU_LoadEx(MPU, rnr, table, cnt);\r
-}\r
-\r
-#ifdef MPU_NS\r
-/** Load the given number of MPU regions from a table to the Non-secure MPU.\r
-* \param rnr First region number to be configured.\r
-* \param table Pointer to the MPU configuration table.\r
-* \param cnt Amount of regions to be configured.\r
-*/\r
-__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) \r
-{\r
- ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt);\r
-}\r
-#endif\r
-\r
-#endif\r
-\r
+++ /dev/null
-/******************************************************************************\r
- * @file tz_context.h\r
- * @brief Context Management for Armv8-M TrustZone\r
- * @version V1.0.1\r
- * @date 10. January 2018\r
- ******************************************************************************/\r
-/*\r
- * Copyright (c) 2017-2018 Arm Limited. All rights reserved.\r
- *\r
- * SPDX-License-Identifier: Apache-2.0\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the License); you may\r
- * not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#if defined ( __ICCARM__ )\r
- #pragma system_include /* treat file as system include file for MISRA check */\r
-#elif defined (__clang__)\r
- #pragma clang system_header /* treat file as system include file */\r
-#endif\r
-\r
-#ifndef TZ_CONTEXT_H\r
-#define TZ_CONTEXT_H\r
- \r
-#include <stdint.h>\r
- \r
-#ifndef TZ_MODULEID_T\r
-#define TZ_MODULEID_T\r
-/// \details Data type that identifies secure software modules called by a process.\r
-typedef uint32_t TZ_ModuleId_t;\r
-#endif\r
- \r
-/// \details TZ Memory ID identifies an allocated memory slot.\r
-typedef uint32_t TZ_MemoryId_t;\r
- \r
-/// Initialize secure context memory system\r
-/// \return execution status (1: success, 0: error)\r
-uint32_t TZ_InitContextSystem_S (void);\r
- \r
-/// Allocate context memory for calling secure software modules in TrustZone\r
-/// \param[in] module identifies software modules called from non-secure mode\r
-/// \return value != 0 id TrustZone memory slot identifier\r
-/// \return value 0 no memory available or internal error\r
-TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module);\r
- \r
-/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S\r
-/// \param[in] id TrustZone memory slot identifier\r
-/// \return execution status (1: success, 0: error)\r
-uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id);\r
- \r
-/// Load secure context (called on RTOS thread context switch)\r
-/// \param[in] id TrustZone memory slot identifier\r
-/// \return execution status (1: success, 0: error)\r
-uint32_t TZ_LoadContext_S (TZ_MemoryId_t id);\r
- \r
-/// Store secure context (called on RTOS thread context switch)\r
-/// \param[in] id TrustZone memory slot identifier\r
-/// \return execution status (1: success, 0: error)\r
-uint32_t TZ_StoreContext_S (TZ_MemoryId_t id);\r
- \r
-#endif // TZ_CONTEXT_H\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32_hal_legacy.h\r
- * @author MCD Application Team\r
- * @brief This file contains aliases definition for the STM32Cube HAL constants\r
- * macros and functions maintained for legacy purpose.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2018 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef STM32_HAL_LEGACY\r
-#define STM32_HAL_LEGACY\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-/* Exported types ------------------------------------------------------------*/\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup HAL_AES_Aliased_Defines HAL CRYP Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define AES_FLAG_RDERR CRYP_FLAG_RDERR\r
-#define AES_FLAG_WRERR CRYP_FLAG_WRERR\r
-#define AES_CLEARFLAG_CCF CRYP_CLEARFLAG_CCF\r
-#define AES_CLEARFLAG_RDERR CRYP_CLEARFLAG_RDERR\r
-#define AES_CLEARFLAG_WRERR CRYP_CLEARFLAG_WRERR\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_ADC_Aliased_Defines HAL ADC Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define ADC_RESOLUTION12b ADC_RESOLUTION_12B\r
-#define ADC_RESOLUTION10b ADC_RESOLUTION_10B\r
-#define ADC_RESOLUTION8b ADC_RESOLUTION_8B\r
-#define ADC_RESOLUTION6b ADC_RESOLUTION_6B\r
-#define OVR_DATA_OVERWRITTEN ADC_OVR_DATA_OVERWRITTEN\r
-#define OVR_DATA_PRESERVED ADC_OVR_DATA_PRESERVED\r
-#define EOC_SINGLE_CONV ADC_EOC_SINGLE_CONV\r
-#define EOC_SEQ_CONV ADC_EOC_SEQ_CONV\r
-#define EOC_SINGLE_SEQ_CONV ADC_EOC_SINGLE_SEQ_CONV\r
-#define REGULAR_GROUP ADC_REGULAR_GROUP\r
-#define INJECTED_GROUP ADC_INJECTED_GROUP\r
-#define REGULAR_INJECTED_GROUP ADC_REGULAR_INJECTED_GROUP\r
-#define AWD_EVENT ADC_AWD_EVENT\r
-#define AWD1_EVENT ADC_AWD1_EVENT\r
-#define AWD2_EVENT ADC_AWD2_EVENT\r
-#define AWD3_EVENT ADC_AWD3_EVENT\r
-#define OVR_EVENT ADC_OVR_EVENT\r
-#define JQOVF_EVENT ADC_JQOVF_EVENT\r
-#define ALL_CHANNELS ADC_ALL_CHANNELS\r
-#define REGULAR_CHANNELS ADC_REGULAR_CHANNELS\r
-#define INJECTED_CHANNELS ADC_INJECTED_CHANNELS\r
-#define SYSCFG_FLAG_SENSOR_ADC ADC_FLAG_SENSOR\r
-#define SYSCFG_FLAG_VREF_ADC ADC_FLAG_VREFINT\r
-#define ADC_CLOCKPRESCALER_PCLK_DIV1 ADC_CLOCK_SYNC_PCLK_DIV1\r
-#define ADC_CLOCKPRESCALER_PCLK_DIV2 ADC_CLOCK_SYNC_PCLK_DIV2\r
-#define ADC_CLOCKPRESCALER_PCLK_DIV4 ADC_CLOCK_SYNC_PCLK_DIV4\r
-#define ADC_CLOCKPRESCALER_PCLK_DIV6 ADC_CLOCK_SYNC_PCLK_DIV6\r
-#define ADC_CLOCKPRESCALER_PCLK_DIV8 ADC_CLOCK_SYNC_PCLK_DIV8\r
-#define ADC_EXTERNALTRIG0_T6_TRGO ADC_EXTERNALTRIGCONV_T6_TRGO\r
-#define ADC_EXTERNALTRIG1_T21_CC2 ADC_EXTERNALTRIGCONV_T21_CC2\r
-#define ADC_EXTERNALTRIG2_T2_TRGO ADC_EXTERNALTRIGCONV_T2_TRGO\r
-#define ADC_EXTERNALTRIG3_T2_CC4 ADC_EXTERNALTRIGCONV_T2_CC4\r
-#define ADC_EXTERNALTRIG4_T22_TRGO ADC_EXTERNALTRIGCONV_T22_TRGO\r
-#define ADC_EXTERNALTRIG7_EXT_IT11 ADC_EXTERNALTRIGCONV_EXT_IT11\r
-#define ADC_CLOCK_ASYNC ADC_CLOCK_ASYNC_DIV1\r
-#define ADC_EXTERNALTRIG_EDGE_NONE ADC_EXTERNALTRIGCONVEDGE_NONE\r
-#define ADC_EXTERNALTRIG_EDGE_RISING ADC_EXTERNALTRIGCONVEDGE_RISING\r
-#define ADC_EXTERNALTRIG_EDGE_FALLING ADC_EXTERNALTRIGCONVEDGE_FALLING\r
-#define ADC_EXTERNALTRIG_EDGE_RISINGFALLING ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING\r
-#define ADC_SAMPLETIME_2CYCLE_5 ADC_SAMPLETIME_2CYCLES_5\r
-\r
-#define HAL_ADC_STATE_BUSY_REG HAL_ADC_STATE_REG_BUSY\r
-#define HAL_ADC_STATE_BUSY_INJ HAL_ADC_STATE_INJ_BUSY\r
-#define HAL_ADC_STATE_EOC_REG HAL_ADC_STATE_REG_EOC\r
-#define HAL_ADC_STATE_EOC_INJ HAL_ADC_STATE_INJ_EOC\r
-#define HAL_ADC_STATE_ERROR HAL_ADC_STATE_ERROR_INTERNAL\r
-#define HAL_ADC_STATE_BUSY HAL_ADC_STATE_BUSY_INTERNAL\r
-#define HAL_ADC_STATE_AWD HAL_ADC_STATE_AWD1\r
-\r
-#if defined(STM32H7)\r
-#define ADC_CHANNEL_VBAT_DIV4 ADC_CHANNEL_VBAT\r
-#endif /* STM32H7 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_CEC_Aliased_Defines HAL CEC Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __HAL_CEC_GET_IT __HAL_CEC_GET_FLAG\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_COMP_Aliased_Defines HAL COMP Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define COMP_WINDOWMODE_DISABLED COMP_WINDOWMODE_DISABLE\r
-#define COMP_WINDOWMODE_ENABLED COMP_WINDOWMODE_ENABLE\r
-#define COMP_EXTI_LINE_COMP1_EVENT COMP_EXTI_LINE_COMP1\r
-#define COMP_EXTI_LINE_COMP2_EVENT COMP_EXTI_LINE_COMP2\r
-#define COMP_EXTI_LINE_COMP3_EVENT COMP_EXTI_LINE_COMP3\r
-#define COMP_EXTI_LINE_COMP4_EVENT COMP_EXTI_LINE_COMP4\r
-#define COMP_EXTI_LINE_COMP5_EVENT COMP_EXTI_LINE_COMP5\r
-#define COMP_EXTI_LINE_COMP6_EVENT COMP_EXTI_LINE_COMP6\r
-#define COMP_EXTI_LINE_COMP7_EVENT COMP_EXTI_LINE_COMP7\r
-#if defined(STM32L0)\r
-#define COMP_LPTIMCONNECTION_ENABLED ((uint32_t)0x00000003U) /*!< COMPX output generic naming: connected to LPTIM input 1 for COMP1, LPTIM input 2 for COMP2 */\r
-#endif\r
-#define COMP_OUTPUT_COMP6TIM2OCREFCLR COMP_OUTPUT_COMP6_TIM2OCREFCLR\r
-#if defined(STM32F373xC) || defined(STM32F378xx)\r
-#define COMP_OUTPUT_TIM3IC1 COMP_OUTPUT_COMP1_TIM3IC1\r
-#define COMP_OUTPUT_TIM3OCREFCLR COMP_OUTPUT_COMP1_TIM3OCREFCLR\r
-#endif /* STM32F373xC || STM32F378xx */\r
-\r
-#if defined(STM32L0) || defined(STM32L4)\r
-#define COMP_WINDOWMODE_ENABLE COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON\r
-\r
-#define COMP_NONINVERTINGINPUT_IO1 COMP_INPUT_PLUS_IO1\r
-#define COMP_NONINVERTINGINPUT_IO2 COMP_INPUT_PLUS_IO2\r
-#define COMP_NONINVERTINGINPUT_IO3 COMP_INPUT_PLUS_IO3\r
-#define COMP_NONINVERTINGINPUT_IO4 COMP_INPUT_PLUS_IO4\r
-#define COMP_NONINVERTINGINPUT_IO5 COMP_INPUT_PLUS_IO5\r
-#define COMP_NONINVERTINGINPUT_IO6 COMP_INPUT_PLUS_IO6\r
-\r
-#define COMP_INVERTINGINPUT_1_4VREFINT COMP_INPUT_MINUS_1_4VREFINT\r
-#define COMP_INVERTINGINPUT_1_2VREFINT COMP_INPUT_MINUS_1_2VREFINT\r
-#define COMP_INVERTINGINPUT_3_4VREFINT COMP_INPUT_MINUS_3_4VREFINT\r
-#define COMP_INVERTINGINPUT_VREFINT COMP_INPUT_MINUS_VREFINT\r
-#define COMP_INVERTINGINPUT_DAC1_CH1 COMP_INPUT_MINUS_DAC1_CH1\r
-#define COMP_INVERTINGINPUT_DAC1_CH2 COMP_INPUT_MINUS_DAC1_CH2\r
-#define COMP_INVERTINGINPUT_DAC1 COMP_INPUT_MINUS_DAC1_CH1\r
-#define COMP_INVERTINGINPUT_DAC2 COMP_INPUT_MINUS_DAC1_CH2\r
-#define COMP_INVERTINGINPUT_IO1 COMP_INPUT_MINUS_IO1\r
-#if defined(STM32L0)\r
-/* Issue fixed on STM32L0 COMP driver: only 2 dedicated IO (IO1 and IO2), */\r
-/* IO2 was wrongly assigned to IO shared with DAC and IO3 was corresponding */\r
-/* to the second dedicated IO (only for COMP2). */\r
-#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_DAC1_CH2\r
-#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO2\r
-#else\r
-#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_IO2\r
-#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO3\r
-#endif\r
-#define COMP_INVERTINGINPUT_IO4 COMP_INPUT_MINUS_IO4\r
-#define COMP_INVERTINGINPUT_IO5 COMP_INPUT_MINUS_IO5\r
-\r
-#define COMP_OUTPUTLEVEL_LOW COMP_OUTPUT_LEVEL_LOW\r
-#define COMP_OUTPUTLEVEL_HIGH COMP_OUTPUT_LEVEL_HIGH\r
-\r
-/* Note: Literal "COMP_FLAG_LOCK" kept for legacy purpose. */\r
-/* To check COMP lock state, use macro "__HAL_COMP_IS_LOCKED()". */\r
-#if defined(COMP_CSR_LOCK)\r
-#define COMP_FLAG_LOCK COMP_CSR_LOCK\r
-#elif defined(COMP_CSR_COMP1LOCK)\r
-#define COMP_FLAG_LOCK COMP_CSR_COMP1LOCK\r
-#elif defined(COMP_CSR_COMPxLOCK)\r
-#define COMP_FLAG_LOCK COMP_CSR_COMPxLOCK\r
-#endif\r
-\r
-#if defined(STM32L4)\r
-#define COMP_BLANKINGSRCE_TIM1OC5 COMP_BLANKINGSRC_TIM1_OC5_COMP1\r
-#define COMP_BLANKINGSRCE_TIM2OC3 COMP_BLANKINGSRC_TIM2_OC3_COMP1\r
-#define COMP_BLANKINGSRCE_TIM3OC3 COMP_BLANKINGSRC_TIM3_OC3_COMP1\r
-#define COMP_BLANKINGSRCE_TIM3OC4 COMP_BLANKINGSRC_TIM3_OC4_COMP2\r
-#define COMP_BLANKINGSRCE_TIM8OC5 COMP_BLANKINGSRC_TIM8_OC5_COMP2\r
-#define COMP_BLANKINGSRCE_TIM15OC1 COMP_BLANKINGSRC_TIM15_OC1_COMP2\r
-#define COMP_BLANKINGSRCE_NONE COMP_BLANKINGSRC_NONE\r
-#endif\r
-\r
-#if defined(STM32L0)\r
-#define COMP_MODE_HIGHSPEED COMP_POWERMODE_MEDIUMSPEED\r
-#define COMP_MODE_LOWSPEED COMP_POWERMODE_ULTRALOWPOWER\r
-#else\r
-#define COMP_MODE_HIGHSPEED COMP_POWERMODE_HIGHSPEED\r
-#define COMP_MODE_MEDIUMSPEED COMP_POWERMODE_MEDIUMSPEED\r
-#define COMP_MODE_LOWPOWER COMP_POWERMODE_LOWPOWER\r
-#define COMP_MODE_ULTRALOWPOWER COMP_POWERMODE_ULTRALOWPOWER\r
-#endif\r
-\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_CORTEX_Aliased_Defines HAL CORTEX Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_CRC_Aliased_Defines HAL CRC Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define CRC_OUTPUTDATA_INVERSION_DISABLED CRC_OUTPUTDATA_INVERSION_DISABLE\r
-#define CRC_OUTPUTDATA_INVERSION_ENABLED CRC_OUTPUTDATA_INVERSION_ENABLE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_DAC_Aliased_Defines HAL DAC Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define DAC1_CHANNEL_1 DAC_CHANNEL_1\r
-#define DAC1_CHANNEL_2 DAC_CHANNEL_2\r
-#define DAC2_CHANNEL_1 DAC_CHANNEL_1\r
-#define DAC_WAVE_NONE 0x00000000U\r
-#define DAC_WAVE_NOISE DAC_CR_WAVE1_0\r
-#define DAC_WAVE_TRIANGLE DAC_CR_WAVE1_1\r
-#define DAC_WAVEGENERATION_NONE DAC_WAVE_NONE\r
-#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE\r
-#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_DMA_Aliased_Defines HAL DMA Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_REMAPDMA_ADC_DMA_CH2 DMA_REMAP_ADC_DMA_CH2\r
-#define HAL_REMAPDMA_USART1_TX_DMA_CH4 DMA_REMAP_USART1_TX_DMA_CH4\r
-#define HAL_REMAPDMA_USART1_RX_DMA_CH5 DMA_REMAP_USART1_RX_DMA_CH5\r
-#define HAL_REMAPDMA_TIM16_DMA_CH4 DMA_REMAP_TIM16_DMA_CH4\r
-#define HAL_REMAPDMA_TIM17_DMA_CH2 DMA_REMAP_TIM17_DMA_CH2\r
-#define HAL_REMAPDMA_USART3_DMA_CH32 DMA_REMAP_USART3_DMA_CH32\r
-#define HAL_REMAPDMA_TIM16_DMA_CH6 DMA_REMAP_TIM16_DMA_CH6\r
-#define HAL_REMAPDMA_TIM17_DMA_CH7 DMA_REMAP_TIM17_DMA_CH7\r
-#define HAL_REMAPDMA_SPI2_DMA_CH67 DMA_REMAP_SPI2_DMA_CH67\r
-#define HAL_REMAPDMA_USART2_DMA_CH67 DMA_REMAP_USART2_DMA_CH67\r
-#define HAL_REMAPDMA_I2C1_DMA_CH76 DMA_REMAP_I2C1_DMA_CH76\r
-#define HAL_REMAPDMA_TIM1_DMA_CH6 DMA_REMAP_TIM1_DMA_CH6\r
-#define HAL_REMAPDMA_TIM2_DMA_CH7 DMA_REMAP_TIM2_DMA_CH7\r
-#define HAL_REMAPDMA_TIM3_DMA_CH6 DMA_REMAP_TIM3_DMA_CH6\r
-\r
-#define IS_HAL_REMAPDMA IS_DMA_REMAP\r
-#define __HAL_REMAPDMA_CHANNEL_ENABLE __HAL_DMA_REMAP_CHANNEL_ENABLE\r
-#define __HAL_REMAPDMA_CHANNEL_DISABLE __HAL_DMA_REMAP_CHANNEL_DISABLE\r
-\r
-#if defined(STM32L4)\r
-\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI1 HAL_DMAMUX1_REQ_GEN_EXTI1\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI2 HAL_DMAMUX1_REQ_GEN_EXTI2\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI3 HAL_DMAMUX1_REQ_GEN_EXTI3\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI4 HAL_DMAMUX1_REQ_GEN_EXTI4\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI5 HAL_DMAMUX1_REQ_GEN_EXTI5\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI6 HAL_DMAMUX1_REQ_GEN_EXTI6\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI7 HAL_DMAMUX1_REQ_GEN_EXTI7\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI8 HAL_DMAMUX1_REQ_GEN_EXTI8\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI9 HAL_DMAMUX1_REQ_GEN_EXTI9\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI10 HAL_DMAMUX1_REQ_GEN_EXTI10\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI11 HAL_DMAMUX1_REQ_GEN_EXTI11\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI12 HAL_DMAMUX1_REQ_GEN_EXTI12\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI13 HAL_DMAMUX1_REQ_GEN_EXTI13\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI14 HAL_DMAMUX1_REQ_GEN_EXTI14\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI15 HAL_DMAMUX1_REQ_GEN_EXTI15\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH3_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH3_EVT\r
-#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT\r
-#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT\r
-#define HAL_DMAMUX1_REQUEST_GEN_DSI_TE HAL_DMAMUX1_REQ_GEN_DSI_TE\r
-#define HAL_DMAMUX1_REQUEST_GEN_DSI_EOT HAL_DMAMUX1_REQ_GEN_DSI_EOT\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMA2D_EOT HAL_DMAMUX1_REQ_GEN_DMA2D_EOT\r
-#define HAL_DMAMUX1_REQUEST_GEN_LTDC_IT HAL_DMAMUX1_REQ_GEN_LTDC_IT\r
-\r
-#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT\r
-#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING\r
-#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING\r
-#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING\r
-\r
-#endif /* STM32L4 */\r
-\r
-#if defined(STM32H7)\r
-\r
-#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1\r
-#define DMA_REQUEST_DAC2 DMA_REQUEST_DAC1_CH2\r
-\r
-#define BDMA_REQUEST_LP_UART1_RX BDMA_REQUEST_LPUART1_RX\r
-#define BDMA_REQUEST_LP_UART1_TX BDMA_REQUEST_LPUART1_TX\r
-\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT\r
-#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT\r
-#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT\r
-#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT\r
-#define HAL_DMAMUX1_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX1_REQ_GEN_LPTIM3_OUT\r
-#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0\r
-#define HAL_DMAMUX1_REQUEST_GEN_TIM12_TRGO HAL_DMAMUX1_REQ_GEN_TIM12_TRGO\r
-\r
-#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH0_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH0_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH1_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH1_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH2_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH2_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH3_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH3_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH4_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH4_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH5_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH5_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH6_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH6_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_RX_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_TX_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM2_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX2_REQ_GEN_LPTIM2_OUT\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM3_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX2_REQ_GEN_LPTIM3_OUT\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPTIM4_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM4_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPTIM5_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM5_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_I2C4_WKUP HAL_DMAMUX2_REQ_GEN_I2C4_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_SPI6_WKUP HAL_DMAMUX2_REQ_GEN_SPI6_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_COMP1_OUT HAL_DMAMUX2_REQ_GEN_COMP1_OUT\r
-#define HAL_DMAMUX2_REQUEST_GEN_COMP2_OUT HAL_DMAMUX2_REQ_GEN_COMP2_OUT\r
-#define HAL_DMAMUX2_REQUEST_GEN_RTC_WKUP HAL_DMAMUX2_REQ_GEN_RTC_WKUP\r
-#define HAL_DMAMUX2_REQUEST_GEN_EXTI0 HAL_DMAMUX2_REQ_GEN_EXTI0\r
-#define HAL_DMAMUX2_REQUEST_GEN_EXTI2 HAL_DMAMUX2_REQ_GEN_EXTI2\r
-#define HAL_DMAMUX2_REQUEST_GEN_I2C4_IT_EVT HAL_DMAMUX2_REQ_GEN_I2C4_IT_EVT\r
-#define HAL_DMAMUX2_REQUEST_GEN_SPI6_IT HAL_DMAMUX2_REQ_GEN_SPI6_IT\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_TX_IT\r
-#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_RX_IT\r
-#define HAL_DMAMUX2_REQUEST_GEN_ADC3_IT HAL_DMAMUX2_REQ_GEN_ADC3_IT\r
-#define HAL_DMAMUX2_REQUEST_GEN_ADC3_AWD1_OUT HAL_DMAMUX2_REQ_GEN_ADC3_AWD1_OUT\r
-#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH0_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH0_IT\r
-#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH1_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT\r
-\r
-#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT\r
-#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING\r
-#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING\r
-#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING\r
-\r
-#define DFSDM_FILTER_EXT_TRIG_LPTIM1 DFSDM_FILTER_EXT_TRIG_LPTIM1_OUT\r
-#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT\r
-#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT\r
-\r
-#endif /* STM32H7 */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_FLASH_Aliased_Defines HAL FLASH Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define TYPEPROGRAM_BYTE FLASH_TYPEPROGRAM_BYTE\r
-#define TYPEPROGRAM_HALFWORD FLASH_TYPEPROGRAM_HALFWORD\r
-#define TYPEPROGRAM_WORD FLASH_TYPEPROGRAM_WORD\r
-#define TYPEPROGRAM_DOUBLEWORD FLASH_TYPEPROGRAM_DOUBLEWORD\r
-#define TYPEERASE_SECTORS FLASH_TYPEERASE_SECTORS\r
-#define TYPEERASE_PAGES FLASH_TYPEERASE_PAGES\r
-#define TYPEERASE_PAGEERASE FLASH_TYPEERASE_PAGES\r
-#define TYPEERASE_MASSERASE FLASH_TYPEERASE_MASSERASE\r
-#define WRPSTATE_DISABLE OB_WRPSTATE_DISABLE\r
-#define WRPSTATE_ENABLE OB_WRPSTATE_ENABLE\r
-#define HAL_FLASH_TIMEOUT_VALUE FLASH_TIMEOUT_VALUE\r
-#define OBEX_PCROP OPTIONBYTE_PCROP\r
-#define OBEX_BOOTCONFIG OPTIONBYTE_BOOTCONFIG\r
-#define PCROPSTATE_DISABLE OB_PCROP_STATE_DISABLE\r
-#define PCROPSTATE_ENABLE OB_PCROP_STATE_ENABLE\r
-#define TYPEERASEDATA_BYTE FLASH_TYPEERASEDATA_BYTE\r
-#define TYPEERASEDATA_HALFWORD FLASH_TYPEERASEDATA_HALFWORD\r
-#define TYPEERASEDATA_WORD FLASH_TYPEERASEDATA_WORD\r
-#define TYPEPROGRAMDATA_BYTE FLASH_TYPEPROGRAMDATA_BYTE\r
-#define TYPEPROGRAMDATA_HALFWORD FLASH_TYPEPROGRAMDATA_HALFWORD\r
-#define TYPEPROGRAMDATA_WORD FLASH_TYPEPROGRAMDATA_WORD\r
-#define TYPEPROGRAMDATA_FASTBYTE FLASH_TYPEPROGRAMDATA_FASTBYTE\r
-#define TYPEPROGRAMDATA_FASTHALFWORD FLASH_TYPEPROGRAMDATA_FASTHALFWORD\r
-#define TYPEPROGRAMDATA_FASTWORD FLASH_TYPEPROGRAMDATA_FASTWORD\r
-#define PAGESIZE FLASH_PAGE_SIZE\r
-#define TYPEPROGRAM_FASTBYTE FLASH_TYPEPROGRAM_BYTE\r
-#define TYPEPROGRAM_FASTHALFWORD FLASH_TYPEPROGRAM_HALFWORD\r
-#define TYPEPROGRAM_FASTWORD FLASH_TYPEPROGRAM_WORD\r
-#define VOLTAGE_RANGE_1 FLASH_VOLTAGE_RANGE_1\r
-#define VOLTAGE_RANGE_2 FLASH_VOLTAGE_RANGE_2\r
-#define VOLTAGE_RANGE_3 FLASH_VOLTAGE_RANGE_3\r
-#define VOLTAGE_RANGE_4 FLASH_VOLTAGE_RANGE_4\r
-#define TYPEPROGRAM_FAST FLASH_TYPEPROGRAM_FAST\r
-#define TYPEPROGRAM_FAST_AND_LAST FLASH_TYPEPROGRAM_FAST_AND_LAST\r
-#define WRPAREA_BANK1_AREAA OB_WRPAREA_BANK1_AREAA\r
-#define WRPAREA_BANK1_AREAB OB_WRPAREA_BANK1_AREAB\r
-#define WRPAREA_BANK2_AREAA OB_WRPAREA_BANK2_AREAA\r
-#define WRPAREA_BANK2_AREAB OB_WRPAREA_BANK2_AREAB\r
-#define IWDG_STDBY_FREEZE OB_IWDG_STDBY_FREEZE\r
-#define IWDG_STDBY_ACTIVE OB_IWDG_STDBY_RUN\r
-#define IWDG_STOP_FREEZE OB_IWDG_STOP_FREEZE\r
-#define IWDG_STOP_ACTIVE OB_IWDG_STOP_RUN\r
-#define FLASH_ERROR_NONE HAL_FLASH_ERROR_NONE\r
-#define FLASH_ERROR_RD HAL_FLASH_ERROR_RD\r
-#define FLASH_ERROR_PG HAL_FLASH_ERROR_PROG\r
-#define FLASH_ERROR_PGP HAL_FLASH_ERROR_PGS\r
-#define FLASH_ERROR_WRP HAL_FLASH_ERROR_WRP\r
-#define FLASH_ERROR_OPTV HAL_FLASH_ERROR_OPTV\r
-#define FLASH_ERROR_OPTVUSR HAL_FLASH_ERROR_OPTVUSR\r
-#define FLASH_ERROR_PROG HAL_FLASH_ERROR_PROG\r
-#define FLASH_ERROR_OP HAL_FLASH_ERROR_OPERATION\r
-#define FLASH_ERROR_PGA HAL_FLASH_ERROR_PGA\r
-#define FLASH_ERROR_SIZE HAL_FLASH_ERROR_SIZE\r
-#define FLASH_ERROR_SIZ HAL_FLASH_ERROR_SIZE\r
-#define FLASH_ERROR_PGS HAL_FLASH_ERROR_PGS\r
-#define FLASH_ERROR_MIS HAL_FLASH_ERROR_MIS\r
-#define FLASH_ERROR_FAST HAL_FLASH_ERROR_FAST\r
-#define FLASH_ERROR_FWWERR HAL_FLASH_ERROR_FWWERR\r
-#define FLASH_ERROR_NOTZERO HAL_FLASH_ERROR_NOTZERO\r
-#define FLASH_ERROR_OPERATION HAL_FLASH_ERROR_OPERATION\r
-#define FLASH_ERROR_ERS HAL_FLASH_ERROR_ERS\r
-#define OB_WDG_SW OB_IWDG_SW\r
-#define OB_WDG_HW OB_IWDG_HW\r
-#define OB_SDADC12_VDD_MONITOR_SET OB_SDACD_VDD_MONITOR_SET\r
-#define OB_SDADC12_VDD_MONITOR_RESET OB_SDACD_VDD_MONITOR_RESET\r
-#define OB_RAM_PARITY_CHECK_SET OB_SRAM_PARITY_SET\r
-#define OB_RAM_PARITY_CHECK_RESET OB_SRAM_PARITY_RESET\r
-#define IS_OB_SDADC12_VDD_MONITOR IS_OB_SDACD_VDD_MONITOR\r
-#define OB_RDP_LEVEL0 OB_RDP_LEVEL_0\r
-#define OB_RDP_LEVEL1 OB_RDP_LEVEL_1\r
-#define OB_RDP_LEVEL2 OB_RDP_LEVEL_2\r
-#if defined(STM32G0)\r
-#define OB_BOOT_LOCK_DISABLE OB_BOOT_ENTRY_FORCED_NONE\r
-#define OB_BOOT_LOCK_ENABLE OB_BOOT_ENTRY_FORCED_FLASH\r
-#else\r
-#define OB_BOOT_ENTRY_FORCED_NONE OB_BOOT_LOCK_DISABLE\r
-#define OB_BOOT_ENTRY_FORCED_FLASH OB_BOOT_LOCK_ENABLE\r
-#endif\r
-#if defined(STM32H7)\r
-#define FLASH_FLAG_SNECCE_BANK1RR FLASH_FLAG_SNECCERR_BANK1\r
-#define FLASH_FLAG_DBECCE_BANK1RR FLASH_FLAG_DBECCERR_BANK1\r
-#define FLASH_FLAG_STRBER_BANK1R FLASH_FLAG_STRBERR_BANK1\r
-#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2\r
-#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2\r
-#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2\r
-#endif\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_JPEG_Aliased_Macros HAL JPEG Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#if defined(STM32H7)\r
-#define __HAL_RCC_JPEG_CLK_ENABLE __HAL_RCC_JPGDECEN_CLK_ENABLE\r
-#define __HAL_RCC_JPEG_CLK_DISABLE __HAL_RCC_JPGDECEN_CLK_DISABLE\r
-#define __HAL_RCC_JPEG_FORCE_RESET __HAL_RCC_JPGDECRST_FORCE_RESET\r
-#define __HAL_RCC_JPEG_RELEASE_RESET __HAL_RCC_JPGDECRST_RELEASE_RESET\r
-#define __HAL_RCC_JPEG_CLK_SLEEP_ENABLE __HAL_RCC_JPGDEC_CLK_SLEEP_ENABLE\r
-#define __HAL_RCC_JPEG_CLK_SLEEP_DISABLE __HAL_RCC_JPGDEC_CLK_SLEEP_DISABLE\r
-#endif /* STM32H7 */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SYSCFG_Aliased_Defines HAL SYSCFG Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA9 I2C_FASTMODEPLUS_PA9\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA10 I2C_FASTMODEPLUS_PA10\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB6 I2C_FASTMODEPLUS_PB6\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB7 I2C_FASTMODEPLUS_PB7\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB8 I2C_FASTMODEPLUS_PB8\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB9 I2C_FASTMODEPLUS_PB9\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2\r
-#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose\r
- * @{\r
- */\r
-#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7)\r
-#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE\r
-#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE\r
-#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8\r
-#define FMC_NAND_PCC_MEM_BUS_WIDTH_16 FMC_NAND_MEM_BUS_WIDTH_16\r
-#elif defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4)\r
-#define FMC_NAND_WAIT_FEATURE_DISABLE FMC_NAND_PCC_WAIT_FEATURE_DISABLE\r
-#define FMC_NAND_WAIT_FEATURE_ENABLE FMC_NAND_PCC_WAIT_FEATURE_ENABLE\r
-#define FMC_NAND_MEM_BUS_WIDTH_8 FMC_NAND_PCC_MEM_BUS_WIDTH_8\r
-#define FMC_NAND_MEM_BUS_WIDTH_16 FMC_NAND_PCC_MEM_BUS_WIDTH_16\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup LL_FSMC_Aliased_Defines LL FSMC Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define FSMC_NORSRAM_TYPEDEF FSMC_NORSRAM_TypeDef\r
-#define FSMC_NORSRAM_EXTENDED_TYPEDEF FSMC_NORSRAM_EXTENDED_TypeDef\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_GPIO_Aliased_Macros HAL GPIO Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define GET_GPIO_SOURCE GPIO_GET_INDEX\r
-#define GET_GPIO_INDEX GPIO_GET_INDEX\r
-\r
-#if defined(STM32F4)\r
-#define GPIO_AF12_SDMMC GPIO_AF12_SDIO\r
-#define GPIO_AF12_SDMMC1 GPIO_AF12_SDIO\r
-#endif\r
-\r
-#if defined(STM32F7)\r
-#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1\r
-#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1\r
-#endif\r
-\r
-#if defined(STM32L4)\r
-#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1\r
-#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1\r
-#endif\r
-\r
-#if defined(STM32H7)\r
-#define GPIO_AF7_SDIO1 GPIO_AF7_SDMMC1\r
-#define GPIO_AF8_SDIO1 GPIO_AF8_SDMMC1\r
-#define GPIO_AF12_SDIO1 GPIO_AF12_SDMMC1\r
-#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2\r
-#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2\r
-#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2\r
-#endif\r
-\r
-#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1\r
-#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1\r
-#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1\r
-\r
-#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32H7)\r
-#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW\r
-#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM\r
-#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH\r
-#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH\r
-#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32H7*/\r
-\r
-#if defined(STM32L1)\r
- #define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW\r
- #define GPIO_SPEED_LOW GPIO_SPEED_FREQ_MEDIUM\r
- #define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_HIGH\r
- #define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH\r
-#endif /* STM32L1 */\r
-\r
-#if defined(STM32F0) || defined(STM32F3) || defined(STM32F1)\r
- #define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW\r
- #define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM\r
- #define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_HIGH\r
-#endif /* STM32F0 || STM32F3 || STM32F1 */\r
-\r
-#define GPIO_AF6_DFSDM GPIO_AF6_DFSDM1\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_HRTIM_Aliased_Macros HAL HRTIM Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define HRTIM_TIMDELAYEDPROTECTION_DISABLED HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED\r
-#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6\r
-#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6\r
-#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6\r
-#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6\r
-#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7\r
-#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7\r
-#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7\r
-#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7\r
-\r
-#define __HAL_HRTIM_SetCounter __HAL_HRTIM_SETCOUNTER\r
-#define __HAL_HRTIM_GetCounter __HAL_HRTIM_GETCOUNTER\r
-#define __HAL_HRTIM_SetPeriod __HAL_HRTIM_SETPERIOD\r
-#define __HAL_HRTIM_GetPeriod __HAL_HRTIM_GETPERIOD\r
-#define __HAL_HRTIM_SetClockPrescaler __HAL_HRTIM_SETCLOCKPRESCALER\r
-#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER\r
-#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE\r
-#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_I2C_Aliased_Defines HAL I2C Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define I2C_DUALADDRESS_DISABLED I2C_DUALADDRESS_DISABLE\r
-#define I2C_DUALADDRESS_ENABLED I2C_DUALADDRESS_ENABLE\r
-#define I2C_GENERALCALL_DISABLED I2C_GENERALCALL_DISABLE\r
-#define I2C_GENERALCALL_ENABLED I2C_GENERALCALL_ENABLE\r
-#define I2C_NOSTRETCH_DISABLED I2C_NOSTRETCH_DISABLE\r
-#define I2C_NOSTRETCH_ENABLED I2C_NOSTRETCH_ENABLE\r
-#define I2C_ANALOGFILTER_ENABLED I2C_ANALOGFILTER_ENABLE\r
-#define I2C_ANALOGFILTER_DISABLED I2C_ANALOGFILTER_DISABLE\r
-#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || defined(STM32L1) || defined(STM32F7)\r
-#define HAL_I2C_STATE_MEM_BUSY_TX HAL_I2C_STATE_BUSY_TX\r
-#define HAL_I2C_STATE_MEM_BUSY_RX HAL_I2C_STATE_BUSY_RX\r
-#define HAL_I2C_STATE_MASTER_BUSY_TX HAL_I2C_STATE_BUSY_TX\r
-#define HAL_I2C_STATE_MASTER_BUSY_RX HAL_I2C_STATE_BUSY_RX\r
-#define HAL_I2C_STATE_SLAVE_BUSY_TX HAL_I2C_STATE_BUSY_TX\r
-#define HAL_I2C_STATE_SLAVE_BUSY_RX HAL_I2C_STATE_BUSY_RX\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_IRDA_Aliased_Defines HAL IRDA Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define IRDA_ONE_BIT_SAMPLE_DISABLED IRDA_ONE_BIT_SAMPLE_DISABLE\r
-#define IRDA_ONE_BIT_SAMPLE_ENABLED IRDA_ONE_BIT_SAMPLE_ENABLE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_IWDG_Aliased_Defines HAL IWDG Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define KR_KEY_RELOAD IWDG_KEY_RELOAD\r
-#define KR_KEY_ENABLE IWDG_KEY_ENABLE\r
-#define KR_KEY_EWA IWDG_KEY_WRITE_ACCESS_ENABLE\r
-#define KR_KEY_DWA IWDG_KEY_WRITE_ACCESS_DISABLE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSISTION LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION\r
-#define LPTIM_CLOCKSAMPLETIME_2TRANSISTIONS LPTIM_CLOCKSAMPLETIME_2TRANSITIONS\r
-#define LPTIM_CLOCKSAMPLETIME_4TRANSISTIONS LPTIM_CLOCKSAMPLETIME_4TRANSITIONS\r
-#define LPTIM_CLOCKSAMPLETIME_8TRANSISTIONS LPTIM_CLOCKSAMPLETIME_8TRANSITIONS\r
-\r
-#define LPTIM_CLOCKPOLARITY_RISINGEDGE LPTIM_CLOCKPOLARITY_RISING\r
-#define LPTIM_CLOCKPOLARITY_FALLINGEDGE LPTIM_CLOCKPOLARITY_FALLING\r
-#define LPTIM_CLOCKPOLARITY_BOTHEDGES LPTIM_CLOCKPOLARITY_RISING_FALLING\r
-\r
-#define LPTIM_TRIGSAMPLETIME_DIRECTTRANSISTION LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION\r
-#define LPTIM_TRIGSAMPLETIME_2TRANSISTIONS LPTIM_TRIGSAMPLETIME_2TRANSITIONS\r
-#define LPTIM_TRIGSAMPLETIME_4TRANSISTIONS LPTIM_TRIGSAMPLETIME_4TRANSITIONS\r
-#define LPTIM_TRIGSAMPLETIME_8TRANSISTIONS LPTIM_TRIGSAMPLETIME_8TRANSITIONS\r
-\r
-/* The following 3 definition have also been present in a temporary version of lptim.h */\r
-/* They need to be renamed also to the right name, just in case */\r
-#define LPTIM_TRIGSAMPLETIME_2TRANSITION LPTIM_TRIGSAMPLETIME_2TRANSITIONS\r
-#define LPTIM_TRIGSAMPLETIME_4TRANSITION LPTIM_TRIGSAMPLETIME_4TRANSITIONS\r
-#define LPTIM_TRIGSAMPLETIME_8TRANSITION LPTIM_TRIGSAMPLETIME_8TRANSITIONS\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_NAND_Aliased_Defines HAL NAND Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_NAND_Read_Page HAL_NAND_Read_Page_8b\r
-#define HAL_NAND_Write_Page HAL_NAND_Write_Page_8b\r
-#define HAL_NAND_Read_SpareArea HAL_NAND_Read_SpareArea_8b\r
-#define HAL_NAND_Write_SpareArea HAL_NAND_Write_SpareArea_8b\r
-\r
-#define NAND_AddressTypedef NAND_AddressTypeDef\r
-\r
-#define __ARRAY_ADDRESS ARRAY_ADDRESS\r
-#define __ADDR_1st_CYCLE ADDR_1ST_CYCLE\r
-#define __ADDR_2nd_CYCLE ADDR_2ND_CYCLE\r
-#define __ADDR_3rd_CYCLE ADDR_3RD_CYCLE\r
-#define __ADDR_4th_CYCLE ADDR_4TH_CYCLE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_NOR_Aliased_Defines HAL NOR Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define NOR_StatusTypedef HAL_NOR_StatusTypeDef\r
-#define NOR_SUCCESS HAL_NOR_STATUS_SUCCESS\r
-#define NOR_ONGOING HAL_NOR_STATUS_ONGOING\r
-#define NOR_ERROR HAL_NOR_STATUS_ERROR\r
-#define NOR_TIMEOUT HAL_NOR_STATUS_TIMEOUT\r
-\r
-#define __NOR_WRITE NOR_WRITE\r
-#define __NOR_ADDR_SHIFT NOR_ADDR_SHIFT\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_OPAMP_Aliased_Defines HAL OPAMP Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define OPAMP_NONINVERTINGINPUT_VP0 OPAMP_NONINVERTINGINPUT_IO0\r
-#define OPAMP_NONINVERTINGINPUT_VP1 OPAMP_NONINVERTINGINPUT_IO1\r
-#define OPAMP_NONINVERTINGINPUT_VP2 OPAMP_NONINVERTINGINPUT_IO2\r
-#define OPAMP_NONINVERTINGINPUT_VP3 OPAMP_NONINVERTINGINPUT_IO3\r
-\r
-#define OPAMP_SEC_NONINVERTINGINPUT_VP0 OPAMP_SEC_NONINVERTINGINPUT_IO0\r
-#define OPAMP_SEC_NONINVERTINGINPUT_VP1 OPAMP_SEC_NONINVERTINGINPUT_IO1\r
-#define OPAMP_SEC_NONINVERTINGINPUT_VP2 OPAMP_SEC_NONINVERTINGINPUT_IO2\r
-#define OPAMP_SEC_NONINVERTINGINPUT_VP3 OPAMP_SEC_NONINVERTINGINPUT_IO3\r
-\r
-#define OPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0\r
-#define OPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1\r
-\r
-#define IOPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0\r
-#define IOPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1\r
-\r
-#define OPAMP_SEC_INVERTINGINPUT_VM0 OPAMP_SEC_INVERTINGINPUT_IO0\r
-#define OPAMP_SEC_INVERTINGINPUT_VM1 OPAMP_SEC_INVERTINGINPUT_IO1\r
-\r
-#define OPAMP_INVERTINGINPUT_VINM OPAMP_SEC_INVERTINGINPUT_IO1\r
-\r
-#define OPAMP_PGACONNECT_NO OPAMP_PGA_CONNECT_INVERTINGINPUT_NO\r
-#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0\r
-#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_I2S_Aliased_Defines HAL I2S Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define I2S_STANDARD_PHILLIPS I2S_STANDARD_PHILIPS\r
-\r
-#if defined(STM32H7)\r
- #define I2S_IT_TXE I2S_IT_TXP\r
- #define I2S_IT_RXNE I2S_IT_RXP\r
-\r
- #define I2S_FLAG_TXE I2S_FLAG_TXP\r
- #define I2S_FLAG_RXNE I2S_FLAG_RXP\r
- #define I2S_FLAG_FRE I2S_FLAG_TIFRE\r
-#endif\r
-\r
-#if defined(STM32F7)\r
- #define I2S_CLOCK_SYSCLK I2S_CLOCK_PLL\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_PCCARD_Aliased_Defines HAL PCCARD Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-/* Compact Flash-ATA registers description */\r
-#define CF_DATA ATA_DATA\r
-#define CF_SECTOR_COUNT ATA_SECTOR_COUNT\r
-#define CF_SECTOR_NUMBER ATA_SECTOR_NUMBER\r
-#define CF_CYLINDER_LOW ATA_CYLINDER_LOW\r
-#define CF_CYLINDER_HIGH ATA_CYLINDER_HIGH\r
-#define CF_CARD_HEAD ATA_CARD_HEAD\r
-#define CF_STATUS_CMD ATA_STATUS_CMD\r
-#define CF_STATUS_CMD_ALTERNATE ATA_STATUS_CMD_ALTERNATE\r
-#define CF_COMMON_DATA_AREA ATA_COMMON_DATA_AREA\r
-\r
-/* Compact Flash-ATA commands */\r
-#define CF_READ_SECTOR_CMD ATA_READ_SECTOR_CMD\r
-#define CF_WRITE_SECTOR_CMD ATA_WRITE_SECTOR_CMD\r
-#define CF_ERASE_SECTOR_CMD ATA_ERASE_SECTOR_CMD\r
-#define CF_IDENTIFY_CMD ATA_IDENTIFY_CMD\r
-\r
-#define PCCARD_StatusTypedef HAL_PCCARD_StatusTypeDef\r
-#define PCCARD_SUCCESS HAL_PCCARD_STATUS_SUCCESS\r
-#define PCCARD_ONGOING HAL_PCCARD_STATUS_ONGOING\r
-#define PCCARD_ERROR HAL_PCCARD_STATUS_ERROR\r
-#define PCCARD_TIMEOUT HAL_PCCARD_STATUS_TIMEOUT\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_RTC_Aliased_Defines HAL RTC Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define FORMAT_BIN RTC_FORMAT_BIN\r
-#define FORMAT_BCD RTC_FORMAT_BCD\r
-\r
-#define RTC_ALARMSUBSECONDMASK_None RTC_ALARMSUBSECONDMASK_NONE\r
-#define RTC_TAMPERERASEBACKUP_DISABLED RTC_TAMPER_ERASE_BACKUP_DISABLE\r
-#define RTC_TAMPERMASK_FLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE\r
-#define RTC_TAMPERMASK_FLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE\r
-\r
-#define RTC_MASKTAMPERFLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE\r
-#define RTC_MASKTAMPERFLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE\r
-#define RTC_TAMPERERASEBACKUP_ENABLED RTC_TAMPER_ERASE_BACKUP_ENABLE\r
-#define RTC_TAMPER1_2_INTERRUPT RTC_ALL_TAMPER_INTERRUPT\r
-#define RTC_TAMPER1_2_3_INTERRUPT RTC_ALL_TAMPER_INTERRUPT\r
-\r
-#define RTC_TIMESTAMPPIN_PC13 RTC_TIMESTAMPPIN_DEFAULT\r
-#define RTC_TIMESTAMPPIN_PA0 RTC_TIMESTAMPPIN_POS1\r
-#define RTC_TIMESTAMPPIN_PI8 RTC_TIMESTAMPPIN_POS1\r
-#define RTC_TIMESTAMPPIN_PC1 RTC_TIMESTAMPPIN_POS2\r
-\r
-#define RTC_OUTPUT_REMAP_PC13 RTC_OUTPUT_REMAP_NONE\r
-#define RTC_OUTPUT_REMAP_PB14 RTC_OUTPUT_REMAP_POS1\r
-#define RTC_OUTPUT_REMAP_PB2 RTC_OUTPUT_REMAP_POS1\r
-\r
-#define RTC_TAMPERPIN_PC13 RTC_TAMPERPIN_DEFAULT\r
-#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1\r
-#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_SMARTCARD_Aliased_Defines HAL SMARTCARD Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define SMARTCARD_NACK_ENABLED SMARTCARD_NACK_ENABLE\r
-#define SMARTCARD_NACK_DISABLED SMARTCARD_NACK_DISABLE\r
-\r
-#define SMARTCARD_ONEBIT_SAMPLING_DISABLED SMARTCARD_ONE_BIT_SAMPLE_DISABLE\r
-#define SMARTCARD_ONEBIT_SAMPLING_ENABLED SMARTCARD_ONE_BIT_SAMPLE_ENABLE\r
-#define SMARTCARD_ONEBIT_SAMPLING_DISABLE SMARTCARD_ONE_BIT_SAMPLE_DISABLE\r
-#define SMARTCARD_ONEBIT_SAMPLING_ENABLE SMARTCARD_ONE_BIT_SAMPLE_ENABLE\r
-\r
-#define SMARTCARD_TIMEOUT_DISABLED SMARTCARD_TIMEOUT_DISABLE\r
-#define SMARTCARD_TIMEOUT_ENABLED SMARTCARD_TIMEOUT_ENABLE\r
-\r
-#define SMARTCARD_LASTBIT_DISABLED SMARTCARD_LASTBIT_DISABLE\r
-#define SMARTCARD_LASTBIT_ENABLED SMARTCARD_LASTBIT_ENABLE\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_SMBUS_Aliased_Defines HAL SMBUS Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define SMBUS_DUALADDRESS_DISABLED SMBUS_DUALADDRESS_DISABLE\r
-#define SMBUS_DUALADDRESS_ENABLED SMBUS_DUALADDRESS_ENABLE\r
-#define SMBUS_GENERALCALL_DISABLED SMBUS_GENERALCALL_DISABLE\r
-#define SMBUS_GENERALCALL_ENABLED SMBUS_GENERALCALL_ENABLE\r
-#define SMBUS_NOSTRETCH_DISABLED SMBUS_NOSTRETCH_DISABLE\r
-#define SMBUS_NOSTRETCH_ENABLED SMBUS_NOSTRETCH_ENABLE\r
-#define SMBUS_ANALOGFILTER_ENABLED SMBUS_ANALOGFILTER_ENABLE\r
-#define SMBUS_ANALOGFILTER_DISABLED SMBUS_ANALOGFILTER_DISABLE\r
-#define SMBUS_PEC_DISABLED SMBUS_PEC_DISABLE\r
-#define SMBUS_PEC_ENABLED SMBUS_PEC_ENABLE\r
-#define HAL_SMBUS_STATE_SLAVE_LISTEN HAL_SMBUS_STATE_LISTEN\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SPI_Aliased_Defines HAL SPI Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define SPI_TIMODE_DISABLED SPI_TIMODE_DISABLE\r
-#define SPI_TIMODE_ENABLED SPI_TIMODE_ENABLE\r
-\r
-#define SPI_CRCCALCULATION_DISABLED SPI_CRCCALCULATION_DISABLE\r
-#define SPI_CRCCALCULATION_ENABLED SPI_CRCCALCULATION_ENABLE\r
-\r
-#define SPI_NSS_PULSE_DISABLED SPI_NSS_PULSE_DISABLE\r
-#define SPI_NSS_PULSE_ENABLED SPI_NSS_PULSE_ENABLE\r
-\r
-#if defined(STM32H7)\r
-\r
- #define SPI_FLAG_TXE SPI_FLAG_TXP\r
- #define SPI_FLAG_RXNE SPI_FLAG_RXP\r
-\r
- #define SPI_IT_TXE SPI_IT_TXP\r
- #define SPI_IT_RXNE SPI_IT_RXP\r
-\r
- #define SPI_FRLVL_EMPTY SPI_RX_FIFO_0PACKET\r
- #define SPI_FRLVL_QUARTER_FULL SPI_RX_FIFO_1PACKET\r
- #define SPI_FRLVL_HALF_FULL SPI_RX_FIFO_2PACKET\r
- #define SPI_FRLVL_FULL SPI_RX_FIFO_3PACKET\r
-\r
-#endif /* STM32H7 */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_TIM_Aliased_Defines HAL TIM Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define CCER_CCxE_MASK TIM_CCER_CCxE_MASK\r
-#define CCER_CCxNE_MASK TIM_CCER_CCxNE_MASK\r
-\r
-#define TIM_DMABase_CR1 TIM_DMABASE_CR1\r
-#define TIM_DMABase_CR2 TIM_DMABASE_CR2\r
-#define TIM_DMABase_SMCR TIM_DMABASE_SMCR\r
-#define TIM_DMABase_DIER TIM_DMABASE_DIER\r
-#define TIM_DMABase_SR TIM_DMABASE_SR\r
-#define TIM_DMABase_EGR TIM_DMABASE_EGR\r
-#define TIM_DMABase_CCMR1 TIM_DMABASE_CCMR1\r
-#define TIM_DMABase_CCMR2 TIM_DMABASE_CCMR2\r
-#define TIM_DMABase_CCER TIM_DMABASE_CCER\r
-#define TIM_DMABase_CNT TIM_DMABASE_CNT\r
-#define TIM_DMABase_PSC TIM_DMABASE_PSC\r
-#define TIM_DMABase_ARR TIM_DMABASE_ARR\r
-#define TIM_DMABase_RCR TIM_DMABASE_RCR\r
-#define TIM_DMABase_CCR1 TIM_DMABASE_CCR1\r
-#define TIM_DMABase_CCR2 TIM_DMABASE_CCR2\r
-#define TIM_DMABase_CCR3 TIM_DMABASE_CCR3\r
-#define TIM_DMABase_CCR4 TIM_DMABASE_CCR4\r
-#define TIM_DMABase_BDTR TIM_DMABASE_BDTR\r
-#define TIM_DMABase_DCR TIM_DMABASE_DCR\r
-#define TIM_DMABase_DMAR TIM_DMABASE_DMAR\r
-#define TIM_DMABase_OR1 TIM_DMABASE_OR1\r
-#define TIM_DMABase_CCMR3 TIM_DMABASE_CCMR3\r
-#define TIM_DMABase_CCR5 TIM_DMABASE_CCR5\r
-#define TIM_DMABase_CCR6 TIM_DMABASE_CCR6\r
-#define TIM_DMABase_OR2 TIM_DMABASE_OR2\r
-#define TIM_DMABase_OR3 TIM_DMABASE_OR3\r
-#define TIM_DMABase_OR TIM_DMABASE_OR\r
-\r
-#define TIM_EventSource_Update TIM_EVENTSOURCE_UPDATE\r
-#define TIM_EventSource_CC1 TIM_EVENTSOURCE_CC1\r
-#define TIM_EventSource_CC2 TIM_EVENTSOURCE_CC2\r
-#define TIM_EventSource_CC3 TIM_EVENTSOURCE_CC3\r
-#define TIM_EventSource_CC4 TIM_EVENTSOURCE_CC4\r
-#define TIM_EventSource_COM TIM_EVENTSOURCE_COM\r
-#define TIM_EventSource_Trigger TIM_EVENTSOURCE_TRIGGER\r
-#define TIM_EventSource_Break TIM_EVENTSOURCE_BREAK\r
-#define TIM_EventSource_Break2 TIM_EVENTSOURCE_BREAK2\r
-\r
-#define TIM_DMABurstLength_1Transfer TIM_DMABURSTLENGTH_1TRANSFER\r
-#define TIM_DMABurstLength_2Transfers TIM_DMABURSTLENGTH_2TRANSFERS\r
-#define TIM_DMABurstLength_3Transfers TIM_DMABURSTLENGTH_3TRANSFERS\r
-#define TIM_DMABurstLength_4Transfers TIM_DMABURSTLENGTH_4TRANSFERS\r
-#define TIM_DMABurstLength_5Transfers TIM_DMABURSTLENGTH_5TRANSFERS\r
-#define TIM_DMABurstLength_6Transfers TIM_DMABURSTLENGTH_6TRANSFERS\r
-#define TIM_DMABurstLength_7Transfers TIM_DMABURSTLENGTH_7TRANSFERS\r
-#define TIM_DMABurstLength_8Transfers TIM_DMABURSTLENGTH_8TRANSFERS\r
-#define TIM_DMABurstLength_9Transfers TIM_DMABURSTLENGTH_9TRANSFERS\r
-#define TIM_DMABurstLength_10Transfers TIM_DMABURSTLENGTH_10TRANSFERS\r
-#define TIM_DMABurstLength_11Transfers TIM_DMABURSTLENGTH_11TRANSFERS\r
-#define TIM_DMABurstLength_12Transfers TIM_DMABURSTLENGTH_12TRANSFERS\r
-#define TIM_DMABurstLength_13Transfers TIM_DMABURSTLENGTH_13TRANSFERS\r
-#define TIM_DMABurstLength_14Transfers TIM_DMABURSTLENGTH_14TRANSFERS\r
-#define TIM_DMABurstLength_15Transfers TIM_DMABURSTLENGTH_15TRANSFERS\r
-#define TIM_DMABurstLength_16Transfers TIM_DMABURSTLENGTH_16TRANSFERS\r
-#define TIM_DMABurstLength_17Transfers TIM_DMABURSTLENGTH_17TRANSFERS\r
-#define TIM_DMABurstLength_18Transfers TIM_DMABURSTLENGTH_18TRANSFERS\r
-\r
-#if defined(STM32L0)\r
-#define TIM22_TI1_GPIO1 TIM22_TI1_GPIO\r
-#define TIM22_TI1_GPIO2 TIM22_TI1_GPIO\r
-#endif\r
-\r
-#if defined(STM32F3)\r
-#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE\r
-#endif\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_TSC_Aliased_Defines HAL TSC Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define TSC_SYNC_POL_FALL TSC_SYNC_POLARITY_FALLING\r
-#define TSC_SYNC_POL_RISE_HIGH TSC_SYNC_POLARITY_RISING\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_UART_Aliased_Defines HAL UART Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define UART_ONEBIT_SAMPLING_DISABLED UART_ONE_BIT_SAMPLE_DISABLE\r
-#define UART_ONEBIT_SAMPLING_ENABLED UART_ONE_BIT_SAMPLE_ENABLE\r
-#define UART_ONE_BIT_SAMPLE_DISABLED UART_ONE_BIT_SAMPLE_DISABLE\r
-#define UART_ONE_BIT_SAMPLE_ENABLED UART_ONE_BIT_SAMPLE_ENABLE\r
-\r
-#define __HAL_UART_ONEBIT_ENABLE __HAL_UART_ONE_BIT_SAMPLE_ENABLE\r
-#define __HAL_UART_ONEBIT_DISABLE __HAL_UART_ONE_BIT_SAMPLE_DISABLE\r
-\r
-#define __DIV_SAMPLING16 UART_DIV_SAMPLING16\r
-#define __DIVMANT_SAMPLING16 UART_DIVMANT_SAMPLING16\r
-#define __DIVFRAQ_SAMPLING16 UART_DIVFRAQ_SAMPLING16\r
-#define __UART_BRR_SAMPLING16 UART_BRR_SAMPLING16\r
-\r
-#define __DIV_SAMPLING8 UART_DIV_SAMPLING8\r
-#define __DIVMANT_SAMPLING8 UART_DIVMANT_SAMPLING8\r
-#define __DIVFRAQ_SAMPLING8 UART_DIVFRAQ_SAMPLING8\r
-#define __UART_BRR_SAMPLING8 UART_BRR_SAMPLING8\r
-\r
-#define __DIV_LPUART UART_DIV_LPUART\r
-\r
-#define UART_WAKEUPMETHODE_IDLELINE UART_WAKEUPMETHOD_IDLELINE\r
-#define UART_WAKEUPMETHODE_ADDRESSMARK UART_WAKEUPMETHOD_ADDRESSMARK\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_USART_Aliased_Defines HAL USART Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define USART_CLOCK_DISABLED USART_CLOCK_DISABLE\r
-#define USART_CLOCK_ENABLED USART_CLOCK_ENABLE\r
-\r
-#define USARTNACK_ENABLED USART_NACK_ENABLE\r
-#define USARTNACK_DISABLED USART_NACK_DISABLE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_WWDG_Aliased_Defines HAL WWDG Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define CFR_BASE WWDG_CFR_BASE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_CAN_Aliased_Defines HAL CAN Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define CAN_FilterFIFO0 CAN_FILTER_FIFO0\r
-#define CAN_FilterFIFO1 CAN_FILTER_FIFO1\r
-#define CAN_IT_RQCP0 CAN_IT_TME\r
-#define CAN_IT_RQCP1 CAN_IT_TME\r
-#define CAN_IT_RQCP2 CAN_IT_TME\r
-#define INAK_TIMEOUT CAN_TIMEOUT_VALUE\r
-#define SLAK_TIMEOUT CAN_TIMEOUT_VALUE\r
-#define CAN_TXSTATUS_FAILED ((uint8_t)0x00U)\r
-#define CAN_TXSTATUS_OK ((uint8_t)0x01U)\r
-#define CAN_TXSTATUS_PENDING ((uint8_t)0x02U)\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_ETH_Aliased_Defines HAL ETH Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define VLAN_TAG ETH_VLAN_TAG\r
-#define MIN_ETH_PAYLOAD ETH_MIN_ETH_PAYLOAD\r
-#define MAX_ETH_PAYLOAD ETH_MAX_ETH_PAYLOAD\r
-#define JUMBO_FRAME_PAYLOAD ETH_JUMBO_FRAME_PAYLOAD\r
-#define MACMIIAR_CR_MASK ETH_MACMIIAR_CR_MASK\r
-#define MACCR_CLEAR_MASK ETH_MACCR_CLEAR_MASK\r
-#define MACFCR_CLEAR_MASK ETH_MACFCR_CLEAR_MASK\r
-#define DMAOMR_CLEAR_MASK ETH_DMAOMR_CLEAR_MASK\r
-\r
-#define ETH_MMCCR 0x00000100U\r
-#define ETH_MMCRIR 0x00000104U\r
-#define ETH_MMCTIR 0x00000108U\r
-#define ETH_MMCRIMR 0x0000010CU\r
-#define ETH_MMCTIMR 0x00000110U\r
-#define ETH_MMCTGFSCCR 0x0000014CU\r
-#define ETH_MMCTGFMSCCR 0x00000150U\r
-#define ETH_MMCTGFCR 0x00000168U\r
-#define ETH_MMCRFCECR 0x00000194U\r
-#define ETH_MMCRFAECR 0x00000198U\r
-#define ETH_MMCRGUFCR 0x000001C4U\r
-\r
-#define ETH_MAC_TXFIFO_FULL 0x02000000U /* Tx FIFO full */\r
-#define ETH_MAC_TXFIFONOT_EMPTY 0x01000000U /* Tx FIFO not empty */\r
-#define ETH_MAC_TXFIFO_WRITE_ACTIVE 0x00400000U /* Tx FIFO write active */\r
-#define ETH_MAC_TXFIFO_IDLE 0x00000000U /* Tx FIFO read status: Idle */\r
-#define ETH_MAC_TXFIFO_READ 0x00100000U /* Tx FIFO read status: Read (transferring data to the MAC transmitter) */\r
-#define ETH_MAC_TXFIFO_WAITING 0x00200000U /* Tx FIFO read status: Waiting for TxStatus from MAC transmitter */\r
-#define ETH_MAC_TXFIFO_WRITING 0x00300000U /* Tx FIFO read status: Writing the received TxStatus or flushing the TxFIFO */\r
-#define ETH_MAC_TRANSMISSION_PAUSE 0x00080000U /* MAC transmitter in pause */\r
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE 0x00000000U /* MAC transmit frame controller: Idle */\r
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING 0x00020000U /* MAC transmit frame controller: Waiting for Status of previous frame or IFG/backoff period to be over */\r
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF 0x00040000U /* MAC transmit frame controller: Generating and transmitting a Pause control frame (in full duplex mode) */\r
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING 0x00060000U /* MAC transmit frame controller: Transferring input frame for transmission */\r
-#define ETH_MAC_MII_TRANSMIT_ACTIVE 0x00010000U /* MAC MII transmit engine active */\r
-#define ETH_MAC_RXFIFO_EMPTY 0x00000000U /* Rx FIFO fill level: empty */\r
-#define ETH_MAC_RXFIFO_BELOW_THRESHOLD 0x00000100U /* Rx FIFO fill level: fill-level below flow-control de-activate threshold */\r
-#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD 0x00000200U /* Rx FIFO fill level: fill-level above flow-control activate threshold */\r
-#define ETH_MAC_RXFIFO_FULL 0x00000300U /* Rx FIFO fill level: full */\r
-#if defined(STM32F1)\r
-#else\r
-#define ETH_MAC_READCONTROLLER_IDLE 0x00000000U /* Rx FIFO read controller IDLE state */\r
-#define ETH_MAC_READCONTROLLER_READING_DATA 0x00000020U /* Rx FIFO read controller Reading frame data */\r
-#define ETH_MAC_READCONTROLLER_READING_STATUS 0x00000040U /* Rx FIFO read controller Reading frame status (or time-stamp) */\r
-#endif\r
-#define ETH_MAC_READCONTROLLER_FLUSHING 0x00000060U /* Rx FIFO read controller Flushing the frame data and status */\r
-#define ETH_MAC_RXFIFO_WRITE_ACTIVE 0x00000010U /* Rx FIFO write controller active */\r
-#define ETH_MAC_SMALL_FIFO_NOTACTIVE 0x00000000U /* MAC small FIFO read / write controllers not active */\r
-#define ETH_MAC_SMALL_FIFO_READ_ACTIVE 0x00000002U /* MAC small FIFO read controller active */\r
-#define ETH_MAC_SMALL_FIFO_WRITE_ACTIVE 0x00000004U /* MAC small FIFO write controller active */\r
-#define ETH_MAC_SMALL_FIFO_RW_ACTIVE 0x00000006U /* MAC small FIFO read / write controllers active */\r
-#define ETH_MAC_MII_RECEIVE_PROTOCOL_ACTIVE 0x00000001U /* MAC MII receive protocol engine active */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_DCMI_Aliased_Defines HAL DCMI Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_DCMI_ERROR_OVF HAL_DCMI_ERROR_OVR\r
-#define DCMI_IT_OVF DCMI_IT_OVR\r
-#define DCMI_FLAG_OVFRI DCMI_FLAG_OVRRI\r
-#define DCMI_FLAG_OVFMI DCMI_FLAG_OVRMI\r
-\r
-#define HAL_DCMI_ConfigCROP HAL_DCMI_ConfigCrop\r
-#define HAL_DCMI_EnableCROP HAL_DCMI_EnableCrop\r
-#define HAL_DCMI_DisableCROP HAL_DCMI_DisableCrop\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \\r
- || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \\r
- || defined(STM32H7)\r
-/** @defgroup HAL_DMA2D_Aliased_Defines HAL DMA2D Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-#define DMA2D_ARGB8888 DMA2D_OUTPUT_ARGB8888\r
-#define DMA2D_RGB888 DMA2D_OUTPUT_RGB888\r
-#define DMA2D_RGB565 DMA2D_OUTPUT_RGB565\r
-#define DMA2D_ARGB1555 DMA2D_OUTPUT_ARGB1555\r
-#define DMA2D_ARGB4444 DMA2D_OUTPUT_ARGB4444\r
-\r
-#define CM_ARGB8888 DMA2D_INPUT_ARGB8888\r
-#define CM_RGB888 DMA2D_INPUT_RGB888\r
-#define CM_RGB565 DMA2D_INPUT_RGB565\r
-#define CM_ARGB1555 DMA2D_INPUT_ARGB1555\r
-#define CM_ARGB4444 DMA2D_INPUT_ARGB4444\r
-#define CM_L8 DMA2D_INPUT_L8\r
-#define CM_AL44 DMA2D_INPUT_AL44\r
-#define CM_AL88 DMA2D_INPUT_AL88\r
-#define CM_L4 DMA2D_INPUT_L4\r
-#define CM_A8 DMA2D_INPUT_A8\r
-#define CM_A4 DMA2D_INPUT_A4\r
-/**\r
- * @}\r
- */\r
-#endif /* STM32L4 || STM32F7 || STM32F4 || STM32H7 */\r
-\r
-/** @defgroup HAL_PPP_Aliased_Defines HAL PPP Aliased Defines maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @defgroup HAL_CRYP_Aliased_Functions HAL CRYP Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_CRYP_ComputationCpltCallback HAL_CRYPEx_ComputationCpltCallback\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_HASH_Aliased_Functions HAL HASH Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_HASH_STATETypeDef HAL_HASH_StateTypeDef\r
-#define HAL_HASHPhaseTypeDef HAL_HASH_PhaseTypeDef\r
-#define HAL_HMAC_MD5_Finish HAL_HASH_MD5_Finish\r
-#define HAL_HMAC_SHA1_Finish HAL_HASH_SHA1_Finish\r
-#define HAL_HMAC_SHA224_Finish HAL_HASH_SHA224_Finish\r
-#define HAL_HMAC_SHA256_Finish HAL_HASH_SHA256_Finish\r
-\r
-/*HASH Algorithm Selection*/\r
-\r
-#define HASH_AlgoSelection_SHA1 HASH_ALGOSELECTION_SHA1\r
-#define HASH_AlgoSelection_SHA224 HASH_ALGOSELECTION_SHA224\r
-#define HASH_AlgoSelection_SHA256 HASH_ALGOSELECTION_SHA256\r
-#define HASH_AlgoSelection_MD5 HASH_ALGOSELECTION_MD5\r
-\r
-#define HASH_AlgoMode_HASH HASH_ALGOMODE_HASH\r
-#define HASH_AlgoMode_HMAC HASH_ALGOMODE_HMAC\r
-\r
-#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY\r
-#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_Aliased_Functions HAL Generic Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_EnableDBGSleepMode HAL_DBGMCU_EnableDBGSleepMode\r
-#define HAL_DisableDBGSleepMode HAL_DBGMCU_DisableDBGSleepMode\r
-#define HAL_EnableDBGStopMode HAL_DBGMCU_EnableDBGStopMode\r
-#define HAL_DisableDBGStopMode HAL_DBGMCU_DisableDBGStopMode\r
-#define HAL_EnableDBGStandbyMode HAL_DBGMCU_EnableDBGStandbyMode\r
-#define HAL_DisableDBGStandbyMode HAL_DBGMCU_DisableDBGStandbyMode\r
-#define HAL_DBG_LowPowerConfig(Periph, cmd) (((cmd)==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph))\r
-#define HAL_VREFINT_OutputSelect HAL_SYSCFG_VREFINT_OutputSelect\r
-#define HAL_Lock_Cmd(cmd) (((cmd)==ENABLE) ? HAL_SYSCFG_Enable_Lock_VREFINT() : HAL_SYSCFG_Disable_Lock_VREFINT())\r
-#if defined(STM32L0)\r
-#else\r
-#define HAL_VREFINT_Cmd(cmd) (((cmd)==ENABLE)? HAL_SYSCFG_EnableVREFINT() : HAL_SYSCFG_DisableVREFINT())\r
-#endif\r
-#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())\r
-#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_FLASH_Aliased_Functions HAL FLASH Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define FLASH_HalfPageProgram HAL_FLASHEx_HalfPageProgram\r
-#define FLASH_EnableRunPowerDown HAL_FLASHEx_EnableRunPowerDown\r
-#define FLASH_DisableRunPowerDown HAL_FLASHEx_DisableRunPowerDown\r
-#define HAL_DATA_EEPROMEx_Unlock HAL_FLASHEx_DATAEEPROM_Unlock\r
-#define HAL_DATA_EEPROMEx_Lock HAL_FLASHEx_DATAEEPROM_Lock\r
-#define HAL_DATA_EEPROMEx_Erase HAL_FLASHEx_DATAEEPROM_Erase\r
-#define HAL_DATA_EEPROMEx_Program HAL_FLASHEx_DATAEEPROM_Program\r
-\r
- /**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_I2C_Aliased_Functions HAL I2C Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_I2CEx_AnalogFilter_Config HAL_I2CEx_ConfigAnalogFilter\r
-#define HAL_I2CEx_DigitalFilter_Config HAL_I2CEx_ConfigDigitalFilter\r
-#define HAL_FMPI2CEx_AnalogFilter_Config HAL_FMPI2CEx_ConfigAnalogFilter\r
-#define HAL_FMPI2CEx_DigitalFilter_Config HAL_FMPI2CEx_ConfigDigitalFilter\r
-\r
-#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))\r
-\r
-#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7)\r
-#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT\r
-#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT\r
-#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT\r
-#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT\r
-#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA\r
-#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA\r
-#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA\r
-#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA\r
-#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 */\r
-\r
-#if defined(STM32F4)\r
-#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT\r
-#define HAL_FMPI2C_Master_Sequential_Receive_IT HAL_FMPI2C_Master_Seq_Receive_IT\r
-#define HAL_FMPI2C_Slave_Sequential_Transmit_IT HAL_FMPI2C_Slave_Seq_Transmit_IT\r
-#define HAL_FMPI2C_Slave_Sequential_Receive_IT HAL_FMPI2C_Slave_Seq_Receive_IT\r
-#define HAL_FMPI2C_Master_Sequential_Transmit_DMA HAL_FMPI2C_Master_Seq_Transmit_DMA\r
-#define HAL_FMPI2C_Master_Sequential_Receive_DMA HAL_FMPI2C_Master_Seq_Receive_DMA\r
-#define HAL_FMPI2C_Slave_Sequential_Transmit_DMA HAL_FMPI2C_Slave_Seq_Transmit_DMA\r
-#define HAL_FMPI2C_Slave_Sequential_Receive_DMA HAL_FMPI2C_Slave_Seq_Receive_DMA\r
-#endif /* STM32F4 */\r
- /**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD\r
-#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg\r
-#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown\r
-#define HAL_PWR_DisableVddio2Monitor HAL_PWREx_DisableVddio2Monitor\r
-#define HAL_PWR_EnableBkUpReg HAL_PWREx_EnableBkUpReg\r
-#define HAL_PWR_EnableFlashPowerDown HAL_PWREx_EnableFlashPowerDown\r
-#define HAL_PWR_EnableVddio2Monitor HAL_PWREx_EnableVddio2Monitor\r
-#define HAL_PWR_PVD_PVM_IRQHandler HAL_PWREx_PVD_PVM_IRQHandler\r
-#define HAL_PWR_PVDLevelConfig HAL_PWR_ConfigPVD\r
-#define HAL_PWR_Vddio2Monitor_IRQHandler HAL_PWREx_Vddio2Monitor_IRQHandler\r
-#define HAL_PWR_Vddio2MonitorCallback HAL_PWREx_Vddio2MonitorCallback\r
-#define HAL_PWREx_ActivateOverDrive HAL_PWREx_EnableOverDrive\r
-#define HAL_PWREx_DeactivateOverDrive HAL_PWREx_DisableOverDrive\r
-#define HAL_PWREx_DisableSDADCAnalog HAL_PWREx_DisableSDADC\r
-#define HAL_PWREx_EnableSDADCAnalog HAL_PWREx_EnableSDADC\r
-#define HAL_PWREx_PVMConfig HAL_PWREx_ConfigPVM\r
-\r
-#define PWR_MODE_NORMAL PWR_PVD_MODE_NORMAL\r
-#define PWR_MODE_IT_RISING PWR_PVD_MODE_IT_RISING\r
-#define PWR_MODE_IT_FALLING PWR_PVD_MODE_IT_FALLING\r
-#define PWR_MODE_IT_RISING_FALLING PWR_PVD_MODE_IT_RISING_FALLING\r
-#define PWR_MODE_EVENT_RISING PWR_PVD_MODE_EVENT_RISING\r
-#define PWR_MODE_EVENT_FALLING PWR_PVD_MODE_EVENT_FALLING\r
-#define PWR_MODE_EVENT_RISING_FALLING PWR_PVD_MODE_EVENT_RISING_FALLING\r
-\r
-#define CR_OFFSET_BB PWR_CR_OFFSET_BB\r
-#define CSR_OFFSET_BB PWR_CSR_OFFSET_BB\r
-#define PMODE_BIT_NUMBER VOS_BIT_NUMBER\r
-#define CR_PMODE_BB CR_VOS_BB\r
-\r
-#define DBP_BitNumber DBP_BIT_NUMBER\r
-#define PVDE_BitNumber PVDE_BIT_NUMBER\r
-#define PMODE_BitNumber PMODE_BIT_NUMBER\r
-#define EWUP_BitNumber EWUP_BIT_NUMBER\r
-#define FPDS_BitNumber FPDS_BIT_NUMBER\r
-#define ODEN_BitNumber ODEN_BIT_NUMBER\r
-#define ODSWEN_BitNumber ODSWEN_BIT_NUMBER\r
-#define MRLVDS_BitNumber MRLVDS_BIT_NUMBER\r
-#define LPLVDS_BitNumber LPLVDS_BIT_NUMBER\r
-#define BRE_BitNumber BRE_BIT_NUMBER\r
-\r
-#define PWR_MODE_EVT PWR_PVD_MODE_NORMAL\r
-\r
- /**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SMBUS_Aliased_Functions HAL SMBUS Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_SMBUS_Slave_Listen_IT HAL_SMBUS_EnableListen_IT\r
-#define HAL_SMBUS_SlaveAddrCallback HAL_SMBUS_AddrCallback\r
-#define HAL_SMBUS_SlaveListenCpltCallback HAL_SMBUS_ListenCpltCallback\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SPI_Aliased_Functions HAL SPI Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_SPI_FlushRxFifo HAL_SPIEx_FlushRxFifo\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_TIM_Aliased_Functions HAL TIM Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_TIM_DMADelayPulseCplt TIM_DMADelayPulseCplt\r
-#define HAL_TIM_DMAError TIM_DMAError\r
-#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt\r
-#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt\r
-#if defined(STM32H7) || defined(STM32G0) || defined(STM32F7) || defined(STM32F4) || defined(STM32L0)\r
-#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro\r
-#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT\r
-#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback\r
-#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent\r
-#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT\r
-#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA\r
-#endif /* STM32H7 || STM32G0 || STM32F7 || STM32F4 || STM32L0 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_UART_Aliased_Functions HAL UART Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_UART_WakeupCallback HAL_UARTEx_WakeupCallback\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_LTDC_Aliased_Functions HAL LTDC Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_LTDC_LineEvenCallback HAL_LTDC_LineEventCallback\r
-#define HAL_LTDC_Relaod HAL_LTDC_Reload\r
-#define HAL_LTDC_StructInitFromVideoConfig HAL_LTDCEx_StructInitFromVideoConfig\r
-#define HAL_LTDC_StructInitFromAdaptedCommandConfig HAL_LTDCEx_StructInitFromAdaptedCommandConfig\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_PPP_Aliased_Functions HAL PPP Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macros ------------------------------------------------------------*/\r
-\r
-/** @defgroup HAL_AES_Aliased_Macros HAL CRYP Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define AES_IT_CC CRYP_IT_CC\r
-#define AES_IT_ERR CRYP_IT_ERR\r
-#define AES_FLAG_CCF CRYP_FLAG_CCF\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_GET_BOOT_MODE __HAL_SYSCFG_GET_BOOT_MODE\r
-#define __HAL_REMAPMEMORY_FLASH __HAL_SYSCFG_REMAPMEMORY_FLASH\r
-#define __HAL_REMAPMEMORY_SYSTEMFLASH __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH\r
-#define __HAL_REMAPMEMORY_SRAM __HAL_SYSCFG_REMAPMEMORY_SRAM\r
-#define __HAL_REMAPMEMORY_FMC __HAL_SYSCFG_REMAPMEMORY_FMC\r
-#define __HAL_REMAPMEMORY_FMC_SDRAM __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM\r
-#define __HAL_REMAPMEMORY_FSMC __HAL_SYSCFG_REMAPMEMORY_FSMC\r
-#define __HAL_REMAPMEMORY_QUADSPI __HAL_SYSCFG_REMAPMEMORY_QUADSPI\r
-#define __HAL_FMC_BANK __HAL_SYSCFG_FMC_BANK\r
-#define __HAL_GET_FLAG __HAL_SYSCFG_GET_FLAG\r
-#define __HAL_CLEAR_FLAG __HAL_SYSCFG_CLEAR_FLAG\r
-#define __HAL_VREFINT_OUT_ENABLE __HAL_SYSCFG_VREFINT_OUT_ENABLE\r
-#define __HAL_VREFINT_OUT_DISABLE __HAL_SYSCFG_VREFINT_OUT_DISABLE\r
-#define __HAL_SYSCFG_SRAM2_WRP_ENABLE __HAL_SYSCFG_SRAM2_WRP_0_31_ENABLE\r
-\r
-#define SYSCFG_FLAG_VREF_READY SYSCFG_FLAG_VREFINT_READY\r
-#define SYSCFG_FLAG_RC48 RCC_FLAG_HSI48\r
-#define IS_SYSCFG_FASTMODEPLUS_CONFIG IS_I2C_FASTMODEPLUS\r
-#define UFB_MODE_BitNumber UFB_MODE_BIT_NUMBER\r
-#define CMP_PD_BitNumber CMP_PD_BIT_NUMBER\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_ADC_Aliased_Macros HAL ADC Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __ADC_ENABLE __HAL_ADC_ENABLE\r
-#define __ADC_DISABLE __HAL_ADC_DISABLE\r
-#define __HAL_ADC_ENABLING_CONDITIONS ADC_ENABLING_CONDITIONS\r
-#define __HAL_ADC_DISABLING_CONDITIONS ADC_DISABLING_CONDITIONS\r
-#define __HAL_ADC_IS_ENABLED ADC_IS_ENABLE\r
-#define __ADC_IS_ENABLED ADC_IS_ENABLE\r
-#define __HAL_ADC_IS_SOFTWARE_START_REGULAR ADC_IS_SOFTWARE_START_REGULAR\r
-#define __HAL_ADC_IS_SOFTWARE_START_INJECTED ADC_IS_SOFTWARE_START_INJECTED\r
-#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED\r
-#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR ADC_IS_CONVERSION_ONGOING_REGULAR\r
-#define __HAL_ADC_IS_CONVERSION_ONGOING_INJECTED ADC_IS_CONVERSION_ONGOING_INJECTED\r
-#define __HAL_ADC_IS_CONVERSION_ONGOING ADC_IS_CONVERSION_ONGOING\r
-#define __HAL_ADC_CLEAR_ERRORCODE ADC_CLEAR_ERRORCODE\r
-\r
-#define __HAL_ADC_GET_RESOLUTION ADC_GET_RESOLUTION\r
-#define __HAL_ADC_JSQR_RK ADC_JSQR_RK\r
-#define __HAL_ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_SHIFT\r
-#define __HAL_ADC_CFGR_AWD23CR ADC_CFGR_AWD23CR\r
-#define __HAL_ADC_CFGR_INJECT_AUTO_CONVERSION ADC_CFGR_INJECT_AUTO_CONVERSION\r
-#define __HAL_ADC_CFGR_INJECT_CONTEXT_QUEUE ADC_CFGR_INJECT_CONTEXT_QUEUE\r
-#define __HAL_ADC_CFGR_INJECT_DISCCONTINUOUS ADC_CFGR_INJECT_DISCCONTINUOUS\r
-#define __HAL_ADC_CFGR_REG_DISCCONTINUOUS ADC_CFGR_REG_DISCCONTINUOUS\r
-#define __HAL_ADC_CFGR_DISCONTINUOUS_NUM ADC_CFGR_DISCONTINUOUS_NUM\r
-#define __HAL_ADC_CFGR_AUTOWAIT ADC_CFGR_AUTOWAIT\r
-#define __HAL_ADC_CFGR_CONTINUOUS ADC_CFGR_CONTINUOUS\r
-#define __HAL_ADC_CFGR_OVERRUN ADC_CFGR_OVERRUN\r
-#define __HAL_ADC_CFGR_DMACONTREQ ADC_CFGR_DMACONTREQ\r
-#define __HAL_ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_SET\r
-#define __HAL_ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_SET\r
-#define __HAL_ADC_OFR_CHANNEL ADC_OFR_CHANNEL\r
-#define __HAL_ADC_DIFSEL_CHANNEL ADC_DIFSEL_CHANNEL\r
-#define __HAL_ADC_CALFACT_DIFF_SET ADC_CALFACT_DIFF_SET\r
-#define __HAL_ADC_CALFACT_DIFF_GET ADC_CALFACT_DIFF_GET\r
-#define __HAL_ADC_TRX_HIGHTHRESHOLD ADC_TRX_HIGHTHRESHOLD\r
-\r
-#define __HAL_ADC_OFFSET_SHIFT_RESOLUTION ADC_OFFSET_SHIFT_RESOLUTION\r
-#define __HAL_ADC_AWD1THRESHOLD_SHIFT_RESOLUTION ADC_AWD1THRESHOLD_SHIFT_RESOLUTION\r
-#define __HAL_ADC_AWD23THRESHOLD_SHIFT_RESOLUTION ADC_AWD23THRESHOLD_SHIFT_RESOLUTION\r
-#define __HAL_ADC_COMMON_REGISTER ADC_COMMON_REGISTER\r
-#define __HAL_ADC_COMMON_CCR_MULTI ADC_COMMON_CCR_MULTI\r
-#define __HAL_ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE\r
-#define __ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE\r
-#define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER ADC_NONMULTIMODE_OR_MULTIMODEMASTER\r
-#define __HAL_ADC_COMMON_ADC_OTHER ADC_COMMON_ADC_OTHER\r
-#define __HAL_ADC_MULTI_SLAVE ADC_MULTI_SLAVE\r
-\r
-#define __HAL_ADC_SQR1_L ADC_SQR1_L_SHIFT\r
-#define __HAL_ADC_JSQR_JL ADC_JSQR_JL_SHIFT\r
-#define __HAL_ADC_JSQR_RK_JL ADC_JSQR_RK_JL\r
-#define __HAL_ADC_CR1_DISCONTINUOUS_NUM ADC_CR1_DISCONTINUOUS_NUM\r
-#define __HAL_ADC_CR1_SCAN ADC_CR1_SCAN_SET\r
-#define __HAL_ADC_CONVCYCLES_MAX_RANGE ADC_CONVCYCLES_MAX_RANGE\r
-#define __HAL_ADC_CLOCK_PRESCALER_RANGE ADC_CLOCK_PRESCALER_RANGE\r
-#define __HAL_ADC_GET_CLOCK_PRESCALER ADC_GET_CLOCK_PRESCALER\r
-\r
-#define __HAL_ADC_SQR1 ADC_SQR1\r
-#define __HAL_ADC_SMPR1 ADC_SMPR1\r
-#define __HAL_ADC_SMPR2 ADC_SMPR2\r
-#define __HAL_ADC_SQR3_RK ADC_SQR3_RK\r
-#define __HAL_ADC_SQR2_RK ADC_SQR2_RK\r
-#define __HAL_ADC_SQR1_RK ADC_SQR1_RK\r
-#define __HAL_ADC_CR2_CONTINUOUS ADC_CR2_CONTINUOUS\r
-#define __HAL_ADC_CR1_DISCONTINUOUS ADC_CR1_DISCONTINUOUS\r
-#define __HAL_ADC_CR1_SCANCONV ADC_CR1_SCANCONV\r
-#define __HAL_ADC_CR2_EOCSelection ADC_CR2_EOCSelection\r
-#define __HAL_ADC_CR2_DMAContReq ADC_CR2_DMAContReq\r
-#define __HAL_ADC_JSQR ADC_JSQR\r
-\r
-#define __HAL_ADC_CHSELR_CHANNEL ADC_CHSELR_CHANNEL\r
-#define __HAL_ADC_CFGR1_REG_DISCCONTINUOUS ADC_CFGR1_REG_DISCCONTINUOUS\r
-#define __HAL_ADC_CFGR1_AUTOOFF ADC_CFGR1_AUTOOFF\r
-#define __HAL_ADC_CFGR1_AUTOWAIT ADC_CFGR1_AUTOWAIT\r
-#define __HAL_ADC_CFGR1_CONTINUOUS ADC_CFGR1_CONTINUOUS\r
-#define __HAL_ADC_CFGR1_OVERRUN ADC_CFGR1_OVERRUN\r
-#define __HAL_ADC_CFGR1_SCANDIR ADC_CFGR1_SCANDIR\r
-#define __HAL_ADC_CFGR1_DMACONTREQ ADC_CFGR1_DMACONTREQ\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_DHR12R1_ALIGNEMENT DAC_DHR12R1_ALIGNMENT\r
-#define __HAL_DHR12R2_ALIGNEMENT DAC_DHR12R2_ALIGNMENT\r
-#define __HAL_DHR12RD_ALIGNEMENT DAC_DHR12RD_ALIGNMENT\r
-#define IS_DAC_GENERATE_WAVE IS_DAC_WAVE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_DBGMCU_Aliased_Macros HAL DBGMCU Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_FREEZE_TIM1_DBGMCU __HAL_DBGMCU_FREEZE_TIM1\r
-#define __HAL_UNFREEZE_TIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM1\r
-#define __HAL_FREEZE_TIM2_DBGMCU __HAL_DBGMCU_FREEZE_TIM2\r
-#define __HAL_UNFREEZE_TIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM2\r
-#define __HAL_FREEZE_TIM3_DBGMCU __HAL_DBGMCU_FREEZE_TIM3\r
-#define __HAL_UNFREEZE_TIM3_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM3\r
-#define __HAL_FREEZE_TIM4_DBGMCU __HAL_DBGMCU_FREEZE_TIM4\r
-#define __HAL_UNFREEZE_TIM4_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM4\r
-#define __HAL_FREEZE_TIM5_DBGMCU __HAL_DBGMCU_FREEZE_TIM5\r
-#define __HAL_UNFREEZE_TIM5_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM5\r
-#define __HAL_FREEZE_TIM6_DBGMCU __HAL_DBGMCU_FREEZE_TIM6\r
-#define __HAL_UNFREEZE_TIM6_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM6\r
-#define __HAL_FREEZE_TIM7_DBGMCU __HAL_DBGMCU_FREEZE_TIM7\r
-#define __HAL_UNFREEZE_TIM7_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM7\r
-#define __HAL_FREEZE_TIM8_DBGMCU __HAL_DBGMCU_FREEZE_TIM8\r
-#define __HAL_UNFREEZE_TIM8_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM8\r
-\r
-#define __HAL_FREEZE_TIM9_DBGMCU __HAL_DBGMCU_FREEZE_TIM9\r
-#define __HAL_UNFREEZE_TIM9_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM9\r
-#define __HAL_FREEZE_TIM10_DBGMCU __HAL_DBGMCU_FREEZE_TIM10\r
-#define __HAL_UNFREEZE_TIM10_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM10\r
-#define __HAL_FREEZE_TIM11_DBGMCU __HAL_DBGMCU_FREEZE_TIM11\r
-#define __HAL_UNFREEZE_TIM11_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM11\r
-#define __HAL_FREEZE_TIM12_DBGMCU __HAL_DBGMCU_FREEZE_TIM12\r
-#define __HAL_UNFREEZE_TIM12_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM12\r
-#define __HAL_FREEZE_TIM13_DBGMCU __HAL_DBGMCU_FREEZE_TIM13\r
-#define __HAL_UNFREEZE_TIM13_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM13\r
-#define __HAL_FREEZE_TIM14_DBGMCU __HAL_DBGMCU_FREEZE_TIM14\r
-#define __HAL_UNFREEZE_TIM14_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM14\r
-#define __HAL_FREEZE_CAN2_DBGMCU __HAL_DBGMCU_FREEZE_CAN2\r
-#define __HAL_UNFREEZE_CAN2_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN2\r
-\r
-\r
-#define __HAL_FREEZE_TIM15_DBGMCU __HAL_DBGMCU_FREEZE_TIM15\r
-#define __HAL_UNFREEZE_TIM15_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM15\r
-#define __HAL_FREEZE_TIM16_DBGMCU __HAL_DBGMCU_FREEZE_TIM16\r
-#define __HAL_UNFREEZE_TIM16_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM16\r
-#define __HAL_FREEZE_TIM17_DBGMCU __HAL_DBGMCU_FREEZE_TIM17\r
-#define __HAL_UNFREEZE_TIM17_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM17\r
-#define __HAL_FREEZE_RTC_DBGMCU __HAL_DBGMCU_FREEZE_RTC\r
-#define __HAL_UNFREEZE_RTC_DBGMCU __HAL_DBGMCU_UNFREEZE_RTC\r
-#if defined(STM32H7)\r
- #define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG1\r
- #define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UnFreeze_WWDG1\r
- #define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG1\r
- #define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UnFreeze_IWDG1\r
-#else\r
- #define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG\r
- #define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_WWDG\r
- #define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG\r
- #define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_IWDG\r
-#endif /* STM32H7 */\r
-#define __HAL_FREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT\r
-#define __HAL_UNFREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT\r
-#define __HAL_FREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT\r
-#define __HAL_UNFREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT\r
-#define __HAL_FREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT\r
-#define __HAL_UNFREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT\r
-#define __HAL_FREEZE_CAN1_DBGMCU __HAL_DBGMCU_FREEZE_CAN1\r
-#define __HAL_UNFREEZE_CAN1_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN1\r
-#define __HAL_FREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM1\r
-#define __HAL_UNFREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM1\r
-#define __HAL_FREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM2\r
-#define __HAL_UNFREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM2\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_COMP_Aliased_Macros HAL COMP Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#if defined(STM32F3)\r
-#define COMP_START __HAL_COMP_ENABLE\r
-#define COMP_STOP __HAL_COMP_DISABLE\r
-#define COMP_LOCK __HAL_COMP_LOCK\r
-\r
-#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)\r
-#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \\r
- __HAL_COMP_COMP6_EXTI_ENABLE_IT())\r
-#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \\r
- __HAL_COMP_COMP6_EXTI_DISABLE_IT())\r
-#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \\r
- __HAL_COMP_COMP6_EXTI_GET_FLAG())\r
-#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \\r
- __HAL_COMP_COMP6_EXTI_CLEAR_FLAG())\r
-# endif\r
-# if defined(STM32F302xE) || defined(STM32F302xC)\r
-#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \\r
- __HAL_COMP_COMP6_EXTI_ENABLE_IT())\r
-#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \\r
- __HAL_COMP_COMP6_EXTI_DISABLE_IT())\r
-#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \\r
- __HAL_COMP_COMP6_EXTI_GET_FLAG())\r
-#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \\r
- __HAL_COMP_COMP6_EXTI_CLEAR_FLAG())\r
-# endif\r
-# if defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F303xC) || defined(STM32F358xx)\r
-#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP7_EXTI_ENABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_RISING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP7_EXTI_DISABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP7_EXTI_ENABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_FALLING_EDGE() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP7_EXTI_DISABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_IT() : \\r
- __HAL_COMP_COMP7_EXTI_ENABLE_IT())\r
-#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_IT() : \\r
- ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_IT() : \\r
- __HAL_COMP_COMP7_EXTI_DISABLE_IT())\r
-#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_GET_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_GET_FLAG() : \\r
- __HAL_COMP_COMP7_EXTI_GET_FLAG())\r
-#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_CLEAR_FLAG() : \\r
- ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_CLEAR_FLAG() : \\r
- __HAL_COMP_COMP7_EXTI_CLEAR_FLAG())\r
-# endif\r
-# if defined(STM32F373xC) ||defined(STM32F378xx)\r
-#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\r
- __HAL_COMP_COMP2_EXTI_ENABLE_IT())\r
-#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\r
- __HAL_COMP_COMP2_EXTI_DISABLE_IT())\r
-#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\r
- __HAL_COMP_COMP2_EXTI_GET_FLAG())\r
-#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\r
- __HAL_COMP_COMP2_EXTI_CLEAR_FLAG())\r
-# endif\r
-#else\r
-#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \\r
- __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE())\r
-#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \\r
- __HAL_COMP_COMP2_EXTI_ENABLE_IT())\r
-#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \\r
- __HAL_COMP_COMP2_EXTI_DISABLE_IT())\r
-#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \\r
- __HAL_COMP_COMP2_EXTI_GET_FLAG())\r
-#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \\r
- __HAL_COMP_COMP2_EXTI_CLEAR_FLAG())\r
-#endif\r
-\r
-#define __HAL_COMP_GET_EXTI_LINE COMP_GET_EXTI_LINE\r
-\r
-#if defined(STM32L0) || defined(STM32L4)\r
-/* Note: On these STM32 families, the only argument of this macro */\r
-/* is COMP_FLAG_LOCK. */\r
-/* This macro is replaced by __HAL_COMP_IS_LOCKED with only HAL handle */\r
-/* argument. */\r
-#define __HAL_COMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_COMP_IS_LOCKED(__HANDLE__))\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-#if defined(STM32L0) || defined(STM32L4)\r
-/** @defgroup HAL_COMP_Aliased_Functions HAL COMP Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_COMP_Start_IT HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */\r
-#define HAL_COMP_Stop_IT HAL_COMP_Stop /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */\r
-/**\r
- * @}\r
- */\r
-#endif\r
-\r
-/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_WAVE_NONE) || \\r
- ((WAVE) == DAC_WAVE_NOISE)|| \\r
- ((WAVE) == DAC_WAVE_TRIANGLE))\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_FLASH_Aliased_Macros HAL FLASH Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define IS_WRPAREA IS_OB_WRPAREA\r
-#define IS_TYPEPROGRAM IS_FLASH_TYPEPROGRAM\r
-#define IS_TYPEPROGRAMFLASH IS_FLASH_TYPEPROGRAM\r
-#define IS_TYPEERASE IS_FLASH_TYPEERASE\r
-#define IS_NBSECTORS IS_FLASH_NBSECTORS\r
-#define IS_OB_WDG_SOURCE IS_OB_IWDG_SOURCE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_I2C_Aliased_Macros HAL I2C Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __HAL_I2C_RESET_CR2 I2C_RESET_CR2\r
-#define __HAL_I2C_GENERATE_START I2C_GENERATE_START\r
-#if defined(STM32F1)\r
-#define __HAL_I2C_FREQ_RANGE I2C_FREQRANGE\r
-#else\r
-#define __HAL_I2C_FREQ_RANGE I2C_FREQ_RANGE\r
-#endif /* STM32F1 */\r
-#define __HAL_I2C_RISE_TIME I2C_RISE_TIME\r
-#define __HAL_I2C_SPEED_STANDARD I2C_SPEED_STANDARD\r
-#define __HAL_I2C_SPEED_FAST I2C_SPEED_FAST\r
-#define __HAL_I2C_SPEED I2C_SPEED\r
-#define __HAL_I2C_7BIT_ADD_WRITE I2C_7BIT_ADD_WRITE\r
-#define __HAL_I2C_7BIT_ADD_READ I2C_7BIT_ADD_READ\r
-#define __HAL_I2C_10BIT_ADDRESS I2C_10BIT_ADDRESS\r
-#define __HAL_I2C_10BIT_HEADER_WRITE I2C_10BIT_HEADER_WRITE\r
-#define __HAL_I2C_10BIT_HEADER_READ I2C_10BIT_HEADER_READ\r
-#define __HAL_I2C_MEM_ADD_MSB I2C_MEM_ADD_MSB\r
-#define __HAL_I2C_MEM_ADD_LSB I2C_MEM_ADD_LSB\r
-#define __HAL_I2C_FREQRANGE I2C_FREQRANGE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_I2S_Aliased_Macros HAL I2S Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define IS_I2S_INSTANCE IS_I2S_ALL_INSTANCE\r
-#define IS_I2S_INSTANCE_EXT IS_I2S_ALL_INSTANCE_EXT\r
-\r
-#if defined(STM32H7)\r
- #define __HAL_I2S_CLEAR_FREFLAG __HAL_I2S_CLEAR_TIFREFLAG\r
-#endif\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_IRDA_Aliased_Macros HAL IRDA Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __IRDA_DISABLE __HAL_IRDA_DISABLE\r
-#define __IRDA_ENABLE __HAL_IRDA_ENABLE\r
-\r
-#define __HAL_IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE\r
-#define __HAL_IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION\r
-#define __IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE\r
-#define __IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION\r
-\r
-#define IS_IRDA_ONEBIT_SAMPLE IS_IRDA_ONE_BIT_SAMPLE\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_IWDG_Aliased_Macros HAL IWDG Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_IWDG_ENABLE_WRITE_ACCESS IWDG_ENABLE_WRITE_ACCESS\r
-#define __HAL_IWDG_DISABLE_WRITE_ACCESS IWDG_DISABLE_WRITE_ACCESS\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_LPTIM_Aliased_Macros HAL LPTIM Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __HAL_LPTIM_ENABLE_INTERRUPT __HAL_LPTIM_ENABLE_IT\r
-#define __HAL_LPTIM_DISABLE_INTERRUPT __HAL_LPTIM_DISABLE_IT\r
-#define __HAL_LPTIM_GET_ITSTATUS __HAL_LPTIM_GET_IT_SOURCE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_OPAMP_Aliased_Macros HAL OPAMP Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __OPAMP_CSR_OPAXPD OPAMP_CSR_OPAXPD\r
-#define __OPAMP_CSR_S3SELX OPAMP_CSR_S3SELX\r
-#define __OPAMP_CSR_S4SELX OPAMP_CSR_S4SELX\r
-#define __OPAMP_CSR_S5SELX OPAMP_CSR_S5SELX\r
-#define __OPAMP_CSR_S6SELX OPAMP_CSR_S6SELX\r
-#define __OPAMP_CSR_OPAXCAL_L OPAMP_CSR_OPAXCAL_L\r
-#define __OPAMP_CSR_OPAXCAL_H OPAMP_CSR_OPAXCAL_H\r
-#define __OPAMP_CSR_OPAXLPM OPAMP_CSR_OPAXLPM\r
-#define __OPAMP_CSR_ALL_SWITCHES OPAMP_CSR_ALL_SWITCHES\r
-#define __OPAMP_CSR_ANAWSELX OPAMP_CSR_ANAWSELX\r
-#define __OPAMP_CSR_OPAXCALOUT OPAMP_CSR_OPAXCALOUT\r
-#define __OPAMP_OFFSET_TRIM_BITSPOSITION OPAMP_OFFSET_TRIM_BITSPOSITION\r
-#define __OPAMP_OFFSET_TRIM_SET OPAMP_OFFSET_TRIM_SET\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_PWR_Aliased_Macros HAL PWR Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_PVD_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT\r
-#define __HAL_PVD_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT\r
-#define __HAL_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE\r
-#define __HAL_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE\r
-#define __HAL_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE\r
-#define __HAL_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE\r
-#define __HAL_PVM_EVENT_DISABLE __HAL_PWR_PVM_EVENT_DISABLE\r
-#define __HAL_PVM_EVENT_ENABLE __HAL_PWR_PVM_EVENT_ENABLE\r
-#define __HAL_PVM_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_DISABLE\r
-#define __HAL_PVM_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_ENABLE\r
-#define __HAL_PVM_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_DISABLE\r
-#define __HAL_PVM_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_ENABLE\r
-#define __HAL_PWR_INTERNALWAKEUP_DISABLE HAL_PWREx_DisableInternalWakeUpLine\r
-#define __HAL_PWR_INTERNALWAKEUP_ENABLE HAL_PWREx_EnableInternalWakeUpLine\r
-#define __HAL_PWR_PULL_UP_DOWN_CONFIG_DISABLE HAL_PWREx_DisablePullUpPullDownConfig\r
-#define __HAL_PWR_PULL_UP_DOWN_CONFIG_ENABLE HAL_PWREx_EnablePullUpPullDownConfig\r
-#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER() do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); } while(0)\r
-#define __HAL_PWR_PVD_EXTI_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT\r
-#define __HAL_PWR_PVD_EXTI_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT\r
-#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE\r
-#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE\r
-#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE\r
-#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE\r
-#define __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE\r
-#define __HAL_PWR_PVD_EXTI_SET_RISING_EDGE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE\r
-#define __HAL_PWR_PVM_DISABLE() do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2();HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); } while(0)\r
-#define __HAL_PWR_PVM_ENABLE() do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2();HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); } while(0)\r
-#define __HAL_PWR_SRAM2CONTENT_PRESERVE_DISABLE HAL_PWREx_DisableSRAM2ContentRetention\r
-#define __HAL_PWR_SRAM2CONTENT_PRESERVE_ENABLE HAL_PWREx_EnableSRAM2ContentRetention\r
-#define __HAL_PWR_VDDIO2_DISABLE HAL_PWREx_DisableVddIO2\r
-#define __HAL_PWR_VDDIO2_ENABLE HAL_PWREx_EnableVddIO2\r
-#define __HAL_PWR_VDDIO2_EXTI_CLEAR_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE\r
-#define __HAL_PWR_VDDIO2_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_ENABLE_FALLING_EDGE\r
-#define __HAL_PWR_VDDUSB_DISABLE HAL_PWREx_DisableVddUSB\r
-#define __HAL_PWR_VDDUSB_ENABLE HAL_PWREx_EnableVddUSB\r
-\r
-#if defined (STM32F4)\r
-#define __HAL_PVD_EXTI_ENABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_ENABLE_IT()\r
-#define __HAL_PVD_EXTI_DISABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_DISABLE_IT()\r
-#define __HAL_PVD_EXTI_GET_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GET_FLAG()\r
-#define __HAL_PVD_EXTI_CLEAR_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_CLEAR_FLAG()\r
-#define __HAL_PVD_EXTI_GENERATE_SWIT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GENERATE_SWIT()\r
-#else\r
-#define __HAL_PVD_EXTI_CLEAR_FLAG __HAL_PWR_PVD_EXTI_CLEAR_FLAG\r
-#define __HAL_PVD_EXTI_DISABLE_IT __HAL_PWR_PVD_EXTI_DISABLE_IT\r
-#define __HAL_PVD_EXTI_ENABLE_IT __HAL_PWR_PVD_EXTI_ENABLE_IT\r
-#define __HAL_PVD_EXTI_GENERATE_SWIT __HAL_PWR_PVD_EXTI_GENERATE_SWIT\r
-#define __HAL_PVD_EXTI_GET_FLAG __HAL_PWR_PVD_EXTI_GET_FLAG\r
-#endif /* STM32F4 */\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_RCC_Aliased HAL RCC Aliased maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define RCC_StopWakeUpClock_MSI RCC_STOP_WAKEUPCLOCK_MSI\r
-#define RCC_StopWakeUpClock_HSI RCC_STOP_WAKEUPCLOCK_HSI\r
-\r
-#define HAL_RCC_CCSCallback HAL_RCC_CSSCallback\r
-#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT())\r
-\r
-#define __ADC_CLK_DISABLE __HAL_RCC_ADC_CLK_DISABLE\r
-#define __ADC_CLK_ENABLE __HAL_RCC_ADC_CLK_ENABLE\r
-#define __ADC_CLK_SLEEP_DISABLE __HAL_RCC_ADC_CLK_SLEEP_DISABLE\r
-#define __ADC_CLK_SLEEP_ENABLE __HAL_RCC_ADC_CLK_SLEEP_ENABLE\r
-#define __ADC_FORCE_RESET __HAL_RCC_ADC_FORCE_RESET\r
-#define __ADC_RELEASE_RESET __HAL_RCC_ADC_RELEASE_RESET\r
-#define __ADC1_CLK_DISABLE __HAL_RCC_ADC1_CLK_DISABLE\r
-#define __ADC1_CLK_ENABLE __HAL_RCC_ADC1_CLK_ENABLE\r
-#define __ADC1_FORCE_RESET __HAL_RCC_ADC1_FORCE_RESET\r
-#define __ADC1_RELEASE_RESET __HAL_RCC_ADC1_RELEASE_RESET\r
-#define __ADC1_CLK_SLEEP_ENABLE __HAL_RCC_ADC1_CLK_SLEEP_ENABLE\r
-#define __ADC1_CLK_SLEEP_DISABLE __HAL_RCC_ADC1_CLK_SLEEP_DISABLE\r
-#define __ADC2_CLK_DISABLE __HAL_RCC_ADC2_CLK_DISABLE\r
-#define __ADC2_CLK_ENABLE __HAL_RCC_ADC2_CLK_ENABLE\r
-#define __ADC2_FORCE_RESET __HAL_RCC_ADC2_FORCE_RESET\r
-#define __ADC2_RELEASE_RESET __HAL_RCC_ADC2_RELEASE_RESET\r
-#define __ADC3_CLK_DISABLE __HAL_RCC_ADC3_CLK_DISABLE\r
-#define __ADC3_CLK_ENABLE __HAL_RCC_ADC3_CLK_ENABLE\r
-#define __ADC3_FORCE_RESET __HAL_RCC_ADC3_FORCE_RESET\r
-#define __ADC3_RELEASE_RESET __HAL_RCC_ADC3_RELEASE_RESET\r
-#define __AES_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE\r
-#define __AES_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE\r
-#define __AES_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE\r
-#define __AES_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE\r
-#define __AES_FORCE_RESET __HAL_RCC_AES_FORCE_RESET\r
-#define __AES_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET\r
-#define __CRYP_CLK_SLEEP_ENABLE __HAL_RCC_CRYP_CLK_SLEEP_ENABLE\r
-#define __CRYP_CLK_SLEEP_DISABLE __HAL_RCC_CRYP_CLK_SLEEP_DISABLE\r
-#define __CRYP_CLK_ENABLE __HAL_RCC_CRYP_CLK_ENABLE\r
-#define __CRYP_CLK_DISABLE __HAL_RCC_CRYP_CLK_DISABLE\r
-#define __CRYP_FORCE_RESET __HAL_RCC_CRYP_FORCE_RESET\r
-#define __CRYP_RELEASE_RESET __HAL_RCC_CRYP_RELEASE_RESET\r
-#define __AFIO_CLK_DISABLE __HAL_RCC_AFIO_CLK_DISABLE\r
-#define __AFIO_CLK_ENABLE __HAL_RCC_AFIO_CLK_ENABLE\r
-#define __AFIO_FORCE_RESET __HAL_RCC_AFIO_FORCE_RESET\r
-#define __AFIO_RELEASE_RESET __HAL_RCC_AFIO_RELEASE_RESET\r
-#define __AHB_FORCE_RESET __HAL_RCC_AHB_FORCE_RESET\r
-#define __AHB_RELEASE_RESET __HAL_RCC_AHB_RELEASE_RESET\r
-#define __AHB1_FORCE_RESET __HAL_RCC_AHB1_FORCE_RESET\r
-#define __AHB1_RELEASE_RESET __HAL_RCC_AHB1_RELEASE_RESET\r
-#define __AHB2_FORCE_RESET __HAL_RCC_AHB2_FORCE_RESET\r
-#define __AHB2_RELEASE_RESET __HAL_RCC_AHB2_RELEASE_RESET\r
-#define __AHB3_FORCE_RESET __HAL_RCC_AHB3_FORCE_RESET\r
-#define __AHB3_RELEASE_RESET __HAL_RCC_AHB3_RELEASE_RESET\r
-#define __APB1_FORCE_RESET __HAL_RCC_APB1_FORCE_RESET\r
-#define __APB1_RELEASE_RESET __HAL_RCC_APB1_RELEASE_RESET\r
-#define __APB2_FORCE_RESET __HAL_RCC_APB2_FORCE_RESET\r
-#define __APB2_RELEASE_RESET __HAL_RCC_APB2_RELEASE_RESET\r
-#define __BKP_CLK_DISABLE __HAL_RCC_BKP_CLK_DISABLE\r
-#define __BKP_CLK_ENABLE __HAL_RCC_BKP_CLK_ENABLE\r
-#define __BKP_FORCE_RESET __HAL_RCC_BKP_FORCE_RESET\r
-#define __BKP_RELEASE_RESET __HAL_RCC_BKP_RELEASE_RESET\r
-#define __CAN1_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE\r
-#define __CAN1_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE\r
-#define __CAN1_CLK_SLEEP_DISABLE __HAL_RCC_CAN1_CLK_SLEEP_DISABLE\r
-#define __CAN1_CLK_SLEEP_ENABLE __HAL_RCC_CAN1_CLK_SLEEP_ENABLE\r
-#define __CAN1_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET\r
-#define __CAN1_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET\r
-#define __CAN_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE\r
-#define __CAN_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE\r
-#define __CAN_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET\r
-#define __CAN_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET\r
-#define __CAN2_CLK_DISABLE __HAL_RCC_CAN2_CLK_DISABLE\r
-#define __CAN2_CLK_ENABLE __HAL_RCC_CAN2_CLK_ENABLE\r
-#define __CAN2_FORCE_RESET __HAL_RCC_CAN2_FORCE_RESET\r
-#define __CAN2_RELEASE_RESET __HAL_RCC_CAN2_RELEASE_RESET\r
-#define __CEC_CLK_DISABLE __HAL_RCC_CEC_CLK_DISABLE\r
-#define __CEC_CLK_ENABLE __HAL_RCC_CEC_CLK_ENABLE\r
-#define __COMP_CLK_DISABLE __HAL_RCC_COMP_CLK_DISABLE\r
-#define __COMP_CLK_ENABLE __HAL_RCC_COMP_CLK_ENABLE\r
-#define __COMP_FORCE_RESET __HAL_RCC_COMP_FORCE_RESET\r
-#define __COMP_RELEASE_RESET __HAL_RCC_COMP_RELEASE_RESET\r
-#define __COMP_CLK_SLEEP_ENABLE __HAL_RCC_COMP_CLK_SLEEP_ENABLE\r
-#define __COMP_CLK_SLEEP_DISABLE __HAL_RCC_COMP_CLK_SLEEP_DISABLE\r
-#define __CEC_FORCE_RESET __HAL_RCC_CEC_FORCE_RESET\r
-#define __CEC_RELEASE_RESET __HAL_RCC_CEC_RELEASE_RESET\r
-#define __CRC_CLK_DISABLE __HAL_RCC_CRC_CLK_DISABLE\r
-#define __CRC_CLK_ENABLE __HAL_RCC_CRC_CLK_ENABLE\r
-#define __CRC_CLK_SLEEP_DISABLE __HAL_RCC_CRC_CLK_SLEEP_DISABLE\r
-#define __CRC_CLK_SLEEP_ENABLE __HAL_RCC_CRC_CLK_SLEEP_ENABLE\r
-#define __CRC_FORCE_RESET __HAL_RCC_CRC_FORCE_RESET\r
-#define __CRC_RELEASE_RESET __HAL_RCC_CRC_RELEASE_RESET\r
-#define __DAC_CLK_DISABLE __HAL_RCC_DAC_CLK_DISABLE\r
-#define __DAC_CLK_ENABLE __HAL_RCC_DAC_CLK_ENABLE\r
-#define __DAC_FORCE_RESET __HAL_RCC_DAC_FORCE_RESET\r
-#define __DAC_RELEASE_RESET __HAL_RCC_DAC_RELEASE_RESET\r
-#define __DAC1_CLK_DISABLE __HAL_RCC_DAC1_CLK_DISABLE\r
-#define __DAC1_CLK_ENABLE __HAL_RCC_DAC1_CLK_ENABLE\r
-#define __DAC1_CLK_SLEEP_DISABLE __HAL_RCC_DAC1_CLK_SLEEP_DISABLE\r
-#define __DAC1_CLK_SLEEP_ENABLE __HAL_RCC_DAC1_CLK_SLEEP_ENABLE\r
-#define __DAC1_FORCE_RESET __HAL_RCC_DAC1_FORCE_RESET\r
-#define __DAC1_RELEASE_RESET __HAL_RCC_DAC1_RELEASE_RESET\r
-#define __DBGMCU_CLK_ENABLE __HAL_RCC_DBGMCU_CLK_ENABLE\r
-#define __DBGMCU_CLK_DISABLE __HAL_RCC_DBGMCU_CLK_DISABLE\r
-#define __DBGMCU_FORCE_RESET __HAL_RCC_DBGMCU_FORCE_RESET\r
-#define __DBGMCU_RELEASE_RESET __HAL_RCC_DBGMCU_RELEASE_RESET\r
-#define __DFSDM_CLK_DISABLE __HAL_RCC_DFSDM_CLK_DISABLE\r
-#define __DFSDM_CLK_ENABLE __HAL_RCC_DFSDM_CLK_ENABLE\r
-#define __DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE\r
-#define __DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE\r
-#define __DFSDM_FORCE_RESET __HAL_RCC_DFSDM_FORCE_RESET\r
-#define __DFSDM_RELEASE_RESET __HAL_RCC_DFSDM_RELEASE_RESET\r
-#define __DMA1_CLK_DISABLE __HAL_RCC_DMA1_CLK_DISABLE\r
-#define __DMA1_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE\r
-#define __DMA1_CLK_SLEEP_DISABLE __HAL_RCC_DMA1_CLK_SLEEP_DISABLE\r
-#define __DMA1_CLK_SLEEP_ENABLE __HAL_RCC_DMA1_CLK_SLEEP_ENABLE\r
-#define __DMA1_FORCE_RESET __HAL_RCC_DMA1_FORCE_RESET\r
-#define __DMA1_RELEASE_RESET __HAL_RCC_DMA1_RELEASE_RESET\r
-#define __DMA2_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE\r
-#define __DMA2_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE\r
-#define __DMA2_CLK_SLEEP_DISABLE __HAL_RCC_DMA2_CLK_SLEEP_DISABLE\r
-#define __DMA2_CLK_SLEEP_ENABLE __HAL_RCC_DMA2_CLK_SLEEP_ENABLE\r
-#define __DMA2_FORCE_RESET __HAL_RCC_DMA2_FORCE_RESET\r
-#define __DMA2_RELEASE_RESET __HAL_RCC_DMA2_RELEASE_RESET\r
-#define __ETHMAC_CLK_DISABLE __HAL_RCC_ETHMAC_CLK_DISABLE\r
-#define __ETHMAC_CLK_ENABLE __HAL_RCC_ETHMAC_CLK_ENABLE\r
-#define __ETHMAC_FORCE_RESET __HAL_RCC_ETHMAC_FORCE_RESET\r
-#define __ETHMAC_RELEASE_RESET __HAL_RCC_ETHMAC_RELEASE_RESET\r
-#define __ETHMACRX_CLK_DISABLE __HAL_RCC_ETHMACRX_CLK_DISABLE\r
-#define __ETHMACRX_CLK_ENABLE __HAL_RCC_ETHMACRX_CLK_ENABLE\r
-#define __ETHMACTX_CLK_DISABLE __HAL_RCC_ETHMACTX_CLK_DISABLE\r
-#define __ETHMACTX_CLK_ENABLE __HAL_RCC_ETHMACTX_CLK_ENABLE\r
-#define __FIREWALL_CLK_DISABLE __HAL_RCC_FIREWALL_CLK_DISABLE\r
-#define __FIREWALL_CLK_ENABLE __HAL_RCC_FIREWALL_CLK_ENABLE\r
-#define __FLASH_CLK_DISABLE __HAL_RCC_FLASH_CLK_DISABLE\r
-#define __FLASH_CLK_ENABLE __HAL_RCC_FLASH_CLK_ENABLE\r
-#define __FLASH_CLK_SLEEP_DISABLE __HAL_RCC_FLASH_CLK_SLEEP_DISABLE\r
-#define __FLASH_CLK_SLEEP_ENABLE __HAL_RCC_FLASH_CLK_SLEEP_ENABLE\r
-#define __FLASH_FORCE_RESET __HAL_RCC_FLASH_FORCE_RESET\r
-#define __FLASH_RELEASE_RESET __HAL_RCC_FLASH_RELEASE_RESET\r
-#define __FLITF_CLK_DISABLE __HAL_RCC_FLITF_CLK_DISABLE\r
-#define __FLITF_CLK_ENABLE __HAL_RCC_FLITF_CLK_ENABLE\r
-#define __FLITF_FORCE_RESET __HAL_RCC_FLITF_FORCE_RESET\r
-#define __FLITF_RELEASE_RESET __HAL_RCC_FLITF_RELEASE_RESET\r
-#define __FLITF_CLK_SLEEP_ENABLE __HAL_RCC_FLITF_CLK_SLEEP_ENABLE\r
-#define __FLITF_CLK_SLEEP_DISABLE __HAL_RCC_FLITF_CLK_SLEEP_DISABLE\r
-#define __FMC_CLK_DISABLE __HAL_RCC_FMC_CLK_DISABLE\r
-#define __FMC_CLK_ENABLE __HAL_RCC_FMC_CLK_ENABLE\r
-#define __FMC_CLK_SLEEP_DISABLE __HAL_RCC_FMC_CLK_SLEEP_DISABLE\r
-#define __FMC_CLK_SLEEP_ENABLE __HAL_RCC_FMC_CLK_SLEEP_ENABLE\r
-#define __FMC_FORCE_RESET __HAL_RCC_FMC_FORCE_RESET\r
-#define __FMC_RELEASE_RESET __HAL_RCC_FMC_RELEASE_RESET\r
-#define __FSMC_CLK_DISABLE __HAL_RCC_FSMC_CLK_DISABLE\r
-#define __FSMC_CLK_ENABLE __HAL_RCC_FSMC_CLK_ENABLE\r
-#define __GPIOA_CLK_DISABLE __HAL_RCC_GPIOA_CLK_DISABLE\r
-#define __GPIOA_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE\r
-#define __GPIOA_CLK_SLEEP_DISABLE __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE\r
-#define __GPIOA_CLK_SLEEP_ENABLE __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE\r
-#define __GPIOA_FORCE_RESET __HAL_RCC_GPIOA_FORCE_RESET\r
-#define __GPIOA_RELEASE_RESET __HAL_RCC_GPIOA_RELEASE_RESET\r
-#define __GPIOB_CLK_DISABLE __HAL_RCC_GPIOB_CLK_DISABLE\r
-#define __GPIOB_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE\r
-#define __GPIOB_CLK_SLEEP_DISABLE __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE\r
-#define __GPIOB_CLK_SLEEP_ENABLE __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE\r
-#define __GPIOB_FORCE_RESET __HAL_RCC_GPIOB_FORCE_RESET\r
-#define __GPIOB_RELEASE_RESET __HAL_RCC_GPIOB_RELEASE_RESET\r
-#define __GPIOC_CLK_DISABLE __HAL_RCC_GPIOC_CLK_DISABLE\r
-#define __GPIOC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE\r
-#define __GPIOC_CLK_SLEEP_DISABLE __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE\r
-#define __GPIOC_CLK_SLEEP_ENABLE __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE\r
-#define __GPIOC_FORCE_RESET __HAL_RCC_GPIOC_FORCE_RESET\r
-#define __GPIOC_RELEASE_RESET __HAL_RCC_GPIOC_RELEASE_RESET\r
-#define __GPIOD_CLK_DISABLE __HAL_RCC_GPIOD_CLK_DISABLE\r
-#define __GPIOD_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE\r
-#define __GPIOD_CLK_SLEEP_DISABLE __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE\r
-#define __GPIOD_CLK_SLEEP_ENABLE __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE\r
-#define __GPIOD_FORCE_RESET __HAL_RCC_GPIOD_FORCE_RESET\r
-#define __GPIOD_RELEASE_RESET __HAL_RCC_GPIOD_RELEASE_RESET\r
-#define __GPIOE_CLK_DISABLE __HAL_RCC_GPIOE_CLK_DISABLE\r
-#define __GPIOE_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE\r
-#define __GPIOE_CLK_SLEEP_DISABLE __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE\r
-#define __GPIOE_CLK_SLEEP_ENABLE __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE\r
-#define __GPIOE_FORCE_RESET __HAL_RCC_GPIOE_FORCE_RESET\r
-#define __GPIOE_RELEASE_RESET __HAL_RCC_GPIOE_RELEASE_RESET\r
-#define __GPIOF_CLK_DISABLE __HAL_RCC_GPIOF_CLK_DISABLE\r
-#define __GPIOF_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE\r
-#define __GPIOF_CLK_SLEEP_DISABLE __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE\r
-#define __GPIOF_CLK_SLEEP_ENABLE __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE\r
-#define __GPIOF_FORCE_RESET __HAL_RCC_GPIOF_FORCE_RESET\r
-#define __GPIOF_RELEASE_RESET __HAL_RCC_GPIOF_RELEASE_RESET\r
-#define __GPIOG_CLK_DISABLE __HAL_RCC_GPIOG_CLK_DISABLE\r
-#define __GPIOG_CLK_ENABLE __HAL_RCC_GPIOG_CLK_ENABLE\r
-#define __GPIOG_CLK_SLEEP_DISABLE __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE\r
-#define __GPIOG_CLK_SLEEP_ENABLE __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE\r
-#define __GPIOG_FORCE_RESET __HAL_RCC_GPIOG_FORCE_RESET\r
-#define __GPIOG_RELEASE_RESET __HAL_RCC_GPIOG_RELEASE_RESET\r
-#define __GPIOH_CLK_DISABLE __HAL_RCC_GPIOH_CLK_DISABLE\r
-#define __GPIOH_CLK_ENABLE __HAL_RCC_GPIOH_CLK_ENABLE\r
-#define __GPIOH_CLK_SLEEP_DISABLE __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE\r
-#define __GPIOH_CLK_SLEEP_ENABLE __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE\r
-#define __GPIOH_FORCE_RESET __HAL_RCC_GPIOH_FORCE_RESET\r
-#define __GPIOH_RELEASE_RESET __HAL_RCC_GPIOH_RELEASE_RESET\r
-#define __I2C1_CLK_DISABLE __HAL_RCC_I2C1_CLK_DISABLE\r
-#define __I2C1_CLK_ENABLE __HAL_RCC_I2C1_CLK_ENABLE\r
-#define __I2C1_CLK_SLEEP_DISABLE __HAL_RCC_I2C1_CLK_SLEEP_DISABLE\r
-#define __I2C1_CLK_SLEEP_ENABLE __HAL_RCC_I2C1_CLK_SLEEP_ENABLE\r
-#define __I2C1_FORCE_RESET __HAL_RCC_I2C1_FORCE_RESET\r
-#define __I2C1_RELEASE_RESET __HAL_RCC_I2C1_RELEASE_RESET\r
-#define __I2C2_CLK_DISABLE __HAL_RCC_I2C2_CLK_DISABLE\r
-#define __I2C2_CLK_ENABLE __HAL_RCC_I2C2_CLK_ENABLE\r
-#define __I2C2_CLK_SLEEP_DISABLE __HAL_RCC_I2C2_CLK_SLEEP_DISABLE\r
-#define __I2C2_CLK_SLEEP_ENABLE __HAL_RCC_I2C2_CLK_SLEEP_ENABLE\r
-#define __I2C2_FORCE_RESET __HAL_RCC_I2C2_FORCE_RESET\r
-#define __I2C2_RELEASE_RESET __HAL_RCC_I2C2_RELEASE_RESET\r
-#define __I2C3_CLK_DISABLE __HAL_RCC_I2C3_CLK_DISABLE\r
-#define __I2C3_CLK_ENABLE __HAL_RCC_I2C3_CLK_ENABLE\r
-#define __I2C3_CLK_SLEEP_DISABLE __HAL_RCC_I2C3_CLK_SLEEP_DISABLE\r
-#define __I2C3_CLK_SLEEP_ENABLE __HAL_RCC_I2C3_CLK_SLEEP_ENABLE\r
-#define __I2C3_FORCE_RESET __HAL_RCC_I2C3_FORCE_RESET\r
-#define __I2C3_RELEASE_RESET __HAL_RCC_I2C3_RELEASE_RESET\r
-#define __LCD_CLK_DISABLE __HAL_RCC_LCD_CLK_DISABLE\r
-#define __LCD_CLK_ENABLE __HAL_RCC_LCD_CLK_ENABLE\r
-#define __LCD_CLK_SLEEP_DISABLE __HAL_RCC_LCD_CLK_SLEEP_DISABLE\r
-#define __LCD_CLK_SLEEP_ENABLE __HAL_RCC_LCD_CLK_SLEEP_ENABLE\r
-#define __LCD_FORCE_RESET __HAL_RCC_LCD_FORCE_RESET\r
-#define __LCD_RELEASE_RESET __HAL_RCC_LCD_RELEASE_RESET\r
-#define __LPTIM1_CLK_DISABLE __HAL_RCC_LPTIM1_CLK_DISABLE\r
-#define __LPTIM1_CLK_ENABLE __HAL_RCC_LPTIM1_CLK_ENABLE\r
-#define __LPTIM1_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE\r
-#define __LPTIM1_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE\r
-#define __LPTIM1_FORCE_RESET __HAL_RCC_LPTIM1_FORCE_RESET\r
-#define __LPTIM1_RELEASE_RESET __HAL_RCC_LPTIM1_RELEASE_RESET\r
-#define __LPTIM2_CLK_DISABLE __HAL_RCC_LPTIM2_CLK_DISABLE\r
-#define __LPTIM2_CLK_ENABLE __HAL_RCC_LPTIM2_CLK_ENABLE\r
-#define __LPTIM2_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE\r
-#define __LPTIM2_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE\r
-#define __LPTIM2_FORCE_RESET __HAL_RCC_LPTIM2_FORCE_RESET\r
-#define __LPTIM2_RELEASE_RESET __HAL_RCC_LPTIM2_RELEASE_RESET\r
-#define __LPUART1_CLK_DISABLE __HAL_RCC_LPUART1_CLK_DISABLE\r
-#define __LPUART1_CLK_ENABLE __HAL_RCC_LPUART1_CLK_ENABLE\r
-#define __LPUART1_CLK_SLEEP_DISABLE __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE\r
-#define __LPUART1_CLK_SLEEP_ENABLE __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE\r
-#define __LPUART1_FORCE_RESET __HAL_RCC_LPUART1_FORCE_RESET\r
-#define __LPUART1_RELEASE_RESET __HAL_RCC_LPUART1_RELEASE_RESET\r
-#define __OPAMP_CLK_DISABLE __HAL_RCC_OPAMP_CLK_DISABLE\r
-#define __OPAMP_CLK_ENABLE __HAL_RCC_OPAMP_CLK_ENABLE\r
-#define __OPAMP_CLK_SLEEP_DISABLE __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE\r
-#define __OPAMP_CLK_SLEEP_ENABLE __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE\r
-#define __OPAMP_FORCE_RESET __HAL_RCC_OPAMP_FORCE_RESET\r
-#define __OPAMP_RELEASE_RESET __HAL_RCC_OPAMP_RELEASE_RESET\r
-#define __OTGFS_CLK_DISABLE __HAL_RCC_OTGFS_CLK_DISABLE\r
-#define __OTGFS_CLK_ENABLE __HAL_RCC_OTGFS_CLK_ENABLE\r
-#define __OTGFS_CLK_SLEEP_DISABLE __HAL_RCC_OTGFS_CLK_SLEEP_DISABLE\r
-#define __OTGFS_CLK_SLEEP_ENABLE __HAL_RCC_OTGFS_CLK_SLEEP_ENABLE\r
-#define __OTGFS_FORCE_RESET __HAL_RCC_OTGFS_FORCE_RESET\r
-#define __OTGFS_RELEASE_RESET __HAL_RCC_OTGFS_RELEASE_RESET\r
-#define __PWR_CLK_DISABLE __HAL_RCC_PWR_CLK_DISABLE\r
-#define __PWR_CLK_ENABLE __HAL_RCC_PWR_CLK_ENABLE\r
-#define __PWR_CLK_SLEEP_DISABLE __HAL_RCC_PWR_CLK_SLEEP_DISABLE\r
-#define __PWR_CLK_SLEEP_ENABLE __HAL_RCC_PWR_CLK_SLEEP_ENABLE\r
-#define __PWR_FORCE_RESET __HAL_RCC_PWR_FORCE_RESET\r
-#define __PWR_RELEASE_RESET __HAL_RCC_PWR_RELEASE_RESET\r
-#define __QSPI_CLK_DISABLE __HAL_RCC_QSPI_CLK_DISABLE\r
-#define __QSPI_CLK_ENABLE __HAL_RCC_QSPI_CLK_ENABLE\r
-#define __QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QSPI_CLK_SLEEP_DISABLE\r
-#define __QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QSPI_CLK_SLEEP_ENABLE\r
-#define __QSPI_FORCE_RESET __HAL_RCC_QSPI_FORCE_RESET\r
-#define __QSPI_RELEASE_RESET __HAL_RCC_QSPI_RELEASE_RESET\r
-\r
-#if defined(STM32WB)\r
-#define __HAL_RCC_QSPI_CLK_DISABLE __HAL_RCC_QUADSPI_CLK_DISABLE\r
-#define __HAL_RCC_QSPI_CLK_ENABLE __HAL_RCC_QUADSPI_CLK_ENABLE\r
-#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QUADSPI_CLK_SLEEP_DISABLE\r
-#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QUADSPI_CLK_SLEEP_ENABLE\r
-#define __HAL_RCC_QSPI_FORCE_RESET __HAL_RCC_QUADSPI_FORCE_RESET\r
-#define __HAL_RCC_QSPI_RELEASE_RESET __HAL_RCC_QUADSPI_RELEASE_RESET\r
-#define __HAL_RCC_QSPI_IS_CLK_ENABLED __HAL_RCC_QUADSPI_IS_CLK_ENABLED\r
-#define __HAL_RCC_QSPI_IS_CLK_DISABLED __HAL_RCC_QUADSPI_IS_CLK_DISABLED\r
-#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_ENABLED\r
-#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_DISABLED\r
-#define QSPI_IRQHandler QUADSPI_IRQHandler\r
-#endif /* __HAL_RCC_QUADSPI_CLK_ENABLE */\r
-\r
-#define __RNG_CLK_DISABLE __HAL_RCC_RNG_CLK_DISABLE\r
-#define __RNG_CLK_ENABLE __HAL_RCC_RNG_CLK_ENABLE\r
-#define __RNG_CLK_SLEEP_DISABLE __HAL_RCC_RNG_CLK_SLEEP_DISABLE\r
-#define __RNG_CLK_SLEEP_ENABLE __HAL_RCC_RNG_CLK_SLEEP_ENABLE\r
-#define __RNG_FORCE_RESET __HAL_RCC_RNG_FORCE_RESET\r
-#define __RNG_RELEASE_RESET __HAL_RCC_RNG_RELEASE_RESET\r
-#define __SAI1_CLK_DISABLE __HAL_RCC_SAI1_CLK_DISABLE\r
-#define __SAI1_CLK_ENABLE __HAL_RCC_SAI1_CLK_ENABLE\r
-#define __SAI1_CLK_SLEEP_DISABLE __HAL_RCC_SAI1_CLK_SLEEP_DISABLE\r
-#define __SAI1_CLK_SLEEP_ENABLE __HAL_RCC_SAI1_CLK_SLEEP_ENABLE\r
-#define __SAI1_FORCE_RESET __HAL_RCC_SAI1_FORCE_RESET\r
-#define __SAI1_RELEASE_RESET __HAL_RCC_SAI1_RELEASE_RESET\r
-#define __SAI2_CLK_DISABLE __HAL_RCC_SAI2_CLK_DISABLE\r
-#define __SAI2_CLK_ENABLE __HAL_RCC_SAI2_CLK_ENABLE\r
-#define __SAI2_CLK_SLEEP_DISABLE __HAL_RCC_SAI2_CLK_SLEEP_DISABLE\r
-#define __SAI2_CLK_SLEEP_ENABLE __HAL_RCC_SAI2_CLK_SLEEP_ENABLE\r
-#define __SAI2_FORCE_RESET __HAL_RCC_SAI2_FORCE_RESET\r
-#define __SAI2_RELEASE_RESET __HAL_RCC_SAI2_RELEASE_RESET\r
-#define __SDIO_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE\r
-#define __SDIO_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE\r
-#define __SDMMC_CLK_DISABLE __HAL_RCC_SDMMC_CLK_DISABLE\r
-#define __SDMMC_CLK_ENABLE __HAL_RCC_SDMMC_CLK_ENABLE\r
-#define __SDMMC_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC_CLK_SLEEP_DISABLE\r
-#define __SDMMC_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC_CLK_SLEEP_ENABLE\r
-#define __SDMMC_FORCE_RESET __HAL_RCC_SDMMC_FORCE_RESET\r
-#define __SDMMC_RELEASE_RESET __HAL_RCC_SDMMC_RELEASE_RESET\r
-#define __SPI1_CLK_DISABLE __HAL_RCC_SPI1_CLK_DISABLE\r
-#define __SPI1_CLK_ENABLE __HAL_RCC_SPI1_CLK_ENABLE\r
-#define __SPI1_CLK_SLEEP_DISABLE __HAL_RCC_SPI1_CLK_SLEEP_DISABLE\r
-#define __SPI1_CLK_SLEEP_ENABLE __HAL_RCC_SPI1_CLK_SLEEP_ENABLE\r
-#define __SPI1_FORCE_RESET __HAL_RCC_SPI1_FORCE_RESET\r
-#define __SPI1_RELEASE_RESET __HAL_RCC_SPI1_RELEASE_RESET\r
-#define __SPI2_CLK_DISABLE __HAL_RCC_SPI2_CLK_DISABLE\r
-#define __SPI2_CLK_ENABLE __HAL_RCC_SPI2_CLK_ENABLE\r
-#define __SPI2_CLK_SLEEP_DISABLE __HAL_RCC_SPI2_CLK_SLEEP_DISABLE\r
-#define __SPI2_CLK_SLEEP_ENABLE __HAL_RCC_SPI2_CLK_SLEEP_ENABLE\r
-#define __SPI2_FORCE_RESET __HAL_RCC_SPI2_FORCE_RESET\r
-#define __SPI2_RELEASE_RESET __HAL_RCC_SPI2_RELEASE_RESET\r
-#define __SPI3_CLK_DISABLE __HAL_RCC_SPI3_CLK_DISABLE\r
-#define __SPI3_CLK_ENABLE __HAL_RCC_SPI3_CLK_ENABLE\r
-#define __SPI3_CLK_SLEEP_DISABLE __HAL_RCC_SPI3_CLK_SLEEP_DISABLE\r
-#define __SPI3_CLK_SLEEP_ENABLE __HAL_RCC_SPI3_CLK_SLEEP_ENABLE\r
-#define __SPI3_FORCE_RESET __HAL_RCC_SPI3_FORCE_RESET\r
-#define __SPI3_RELEASE_RESET __HAL_RCC_SPI3_RELEASE_RESET\r
-#define __SRAM_CLK_DISABLE __HAL_RCC_SRAM_CLK_DISABLE\r
-#define __SRAM_CLK_ENABLE __HAL_RCC_SRAM_CLK_ENABLE\r
-#define __SRAM1_CLK_SLEEP_DISABLE __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE\r
-#define __SRAM1_CLK_SLEEP_ENABLE __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE\r
-#define __SRAM2_CLK_SLEEP_DISABLE __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE\r
-#define __SRAM2_CLK_SLEEP_ENABLE __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE\r
-#define __SWPMI1_CLK_DISABLE __HAL_RCC_SWPMI1_CLK_DISABLE\r
-#define __SWPMI1_CLK_ENABLE __HAL_RCC_SWPMI1_CLK_ENABLE\r
-#define __SWPMI1_CLK_SLEEP_DISABLE __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE\r
-#define __SWPMI1_CLK_SLEEP_ENABLE __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE\r
-#define __SWPMI1_FORCE_RESET __HAL_RCC_SWPMI1_FORCE_RESET\r
-#define __SWPMI1_RELEASE_RESET __HAL_RCC_SWPMI1_RELEASE_RESET\r
-#define __SYSCFG_CLK_DISABLE __HAL_RCC_SYSCFG_CLK_DISABLE\r
-#define __SYSCFG_CLK_ENABLE __HAL_RCC_SYSCFG_CLK_ENABLE\r
-#define __SYSCFG_CLK_SLEEP_DISABLE __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE\r
-#define __SYSCFG_CLK_SLEEP_ENABLE __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE\r
-#define __SYSCFG_FORCE_RESET __HAL_RCC_SYSCFG_FORCE_RESET\r
-#define __SYSCFG_RELEASE_RESET __HAL_RCC_SYSCFG_RELEASE_RESET\r
-#define __TIM1_CLK_DISABLE __HAL_RCC_TIM1_CLK_DISABLE\r
-#define __TIM1_CLK_ENABLE __HAL_RCC_TIM1_CLK_ENABLE\r
-#define __TIM1_CLK_SLEEP_DISABLE __HAL_RCC_TIM1_CLK_SLEEP_DISABLE\r
-#define __TIM1_CLK_SLEEP_ENABLE __HAL_RCC_TIM1_CLK_SLEEP_ENABLE\r
-#define __TIM1_FORCE_RESET __HAL_RCC_TIM1_FORCE_RESET\r
-#define __TIM1_RELEASE_RESET __HAL_RCC_TIM1_RELEASE_RESET\r
-#define __TIM10_CLK_DISABLE __HAL_RCC_TIM10_CLK_DISABLE\r
-#define __TIM10_CLK_ENABLE __HAL_RCC_TIM10_CLK_ENABLE\r
-#define __TIM10_FORCE_RESET __HAL_RCC_TIM10_FORCE_RESET\r
-#define __TIM10_RELEASE_RESET __HAL_RCC_TIM10_RELEASE_RESET\r
-#define __TIM11_CLK_DISABLE __HAL_RCC_TIM11_CLK_DISABLE\r
-#define __TIM11_CLK_ENABLE __HAL_RCC_TIM11_CLK_ENABLE\r
-#define __TIM11_FORCE_RESET __HAL_RCC_TIM11_FORCE_RESET\r
-#define __TIM11_RELEASE_RESET __HAL_RCC_TIM11_RELEASE_RESET\r
-#define __TIM12_CLK_DISABLE __HAL_RCC_TIM12_CLK_DISABLE\r
-#define __TIM12_CLK_ENABLE __HAL_RCC_TIM12_CLK_ENABLE\r
-#define __TIM12_FORCE_RESET __HAL_RCC_TIM12_FORCE_RESET\r
-#define __TIM12_RELEASE_RESET __HAL_RCC_TIM12_RELEASE_RESET\r
-#define __TIM13_CLK_DISABLE __HAL_RCC_TIM13_CLK_DISABLE\r
-#define __TIM13_CLK_ENABLE __HAL_RCC_TIM13_CLK_ENABLE\r
-#define __TIM13_FORCE_RESET __HAL_RCC_TIM13_FORCE_RESET\r
-#define __TIM13_RELEASE_RESET __HAL_RCC_TIM13_RELEASE_RESET\r
-#define __TIM14_CLK_DISABLE __HAL_RCC_TIM14_CLK_DISABLE\r
-#define __TIM14_CLK_ENABLE __HAL_RCC_TIM14_CLK_ENABLE\r
-#define __TIM14_FORCE_RESET __HAL_RCC_TIM14_FORCE_RESET\r
-#define __TIM14_RELEASE_RESET __HAL_RCC_TIM14_RELEASE_RESET\r
-#define __TIM15_CLK_DISABLE __HAL_RCC_TIM15_CLK_DISABLE\r
-#define __TIM15_CLK_ENABLE __HAL_RCC_TIM15_CLK_ENABLE\r
-#define __TIM15_CLK_SLEEP_DISABLE __HAL_RCC_TIM15_CLK_SLEEP_DISABLE\r
-#define __TIM15_CLK_SLEEP_ENABLE __HAL_RCC_TIM15_CLK_SLEEP_ENABLE\r
-#define __TIM15_FORCE_RESET __HAL_RCC_TIM15_FORCE_RESET\r
-#define __TIM15_RELEASE_RESET __HAL_RCC_TIM15_RELEASE_RESET\r
-#define __TIM16_CLK_DISABLE __HAL_RCC_TIM16_CLK_DISABLE\r
-#define __TIM16_CLK_ENABLE __HAL_RCC_TIM16_CLK_ENABLE\r
-#define __TIM16_CLK_SLEEP_DISABLE __HAL_RCC_TIM16_CLK_SLEEP_DISABLE\r
-#define __TIM16_CLK_SLEEP_ENABLE __HAL_RCC_TIM16_CLK_SLEEP_ENABLE\r
-#define __TIM16_FORCE_RESET __HAL_RCC_TIM16_FORCE_RESET\r
-#define __TIM16_RELEASE_RESET __HAL_RCC_TIM16_RELEASE_RESET\r
-#define __TIM17_CLK_DISABLE __HAL_RCC_TIM17_CLK_DISABLE\r
-#define __TIM17_CLK_ENABLE __HAL_RCC_TIM17_CLK_ENABLE\r
-#define __TIM17_CLK_SLEEP_DISABLE __HAL_RCC_TIM17_CLK_SLEEP_DISABLE\r
-#define __TIM17_CLK_SLEEP_ENABLE __HAL_RCC_TIM17_CLK_SLEEP_ENABLE\r
-#define __TIM17_FORCE_RESET __HAL_RCC_TIM17_FORCE_RESET\r
-#define __TIM17_RELEASE_RESET __HAL_RCC_TIM17_RELEASE_RESET\r
-#define __TIM2_CLK_DISABLE __HAL_RCC_TIM2_CLK_DISABLE\r
-#define __TIM2_CLK_ENABLE __HAL_RCC_TIM2_CLK_ENABLE\r
-#define __TIM2_CLK_SLEEP_DISABLE __HAL_RCC_TIM2_CLK_SLEEP_DISABLE\r
-#define __TIM2_CLK_SLEEP_ENABLE __HAL_RCC_TIM2_CLK_SLEEP_ENABLE\r
-#define __TIM2_FORCE_RESET __HAL_RCC_TIM2_FORCE_RESET\r
-#define __TIM2_RELEASE_RESET __HAL_RCC_TIM2_RELEASE_RESET\r
-#define __TIM3_CLK_DISABLE __HAL_RCC_TIM3_CLK_DISABLE\r
-#define __TIM3_CLK_ENABLE __HAL_RCC_TIM3_CLK_ENABLE\r
-#define __TIM3_CLK_SLEEP_DISABLE __HAL_RCC_TIM3_CLK_SLEEP_DISABLE\r
-#define __TIM3_CLK_SLEEP_ENABLE __HAL_RCC_TIM3_CLK_SLEEP_ENABLE\r
-#define __TIM3_FORCE_RESET __HAL_RCC_TIM3_FORCE_RESET\r
-#define __TIM3_RELEASE_RESET __HAL_RCC_TIM3_RELEASE_RESET\r
-#define __TIM4_CLK_DISABLE __HAL_RCC_TIM4_CLK_DISABLE\r
-#define __TIM4_CLK_ENABLE __HAL_RCC_TIM4_CLK_ENABLE\r
-#define __TIM4_CLK_SLEEP_DISABLE __HAL_RCC_TIM4_CLK_SLEEP_DISABLE\r
-#define __TIM4_CLK_SLEEP_ENABLE __HAL_RCC_TIM4_CLK_SLEEP_ENABLE\r
-#define __TIM4_FORCE_RESET __HAL_RCC_TIM4_FORCE_RESET\r
-#define __TIM4_RELEASE_RESET __HAL_RCC_TIM4_RELEASE_RESET\r
-#define __TIM5_CLK_DISABLE __HAL_RCC_TIM5_CLK_DISABLE\r
-#define __TIM5_CLK_ENABLE __HAL_RCC_TIM5_CLK_ENABLE\r
-#define __TIM5_CLK_SLEEP_DISABLE __HAL_RCC_TIM5_CLK_SLEEP_DISABLE\r
-#define __TIM5_CLK_SLEEP_ENABLE __HAL_RCC_TIM5_CLK_SLEEP_ENABLE\r
-#define __TIM5_FORCE_RESET __HAL_RCC_TIM5_FORCE_RESET\r
-#define __TIM5_RELEASE_RESET __HAL_RCC_TIM5_RELEASE_RESET\r
-#define __TIM6_CLK_DISABLE __HAL_RCC_TIM6_CLK_DISABLE\r
-#define __TIM6_CLK_ENABLE __HAL_RCC_TIM6_CLK_ENABLE\r
-#define __TIM6_CLK_SLEEP_DISABLE __HAL_RCC_TIM6_CLK_SLEEP_DISABLE\r
-#define __TIM6_CLK_SLEEP_ENABLE __HAL_RCC_TIM6_CLK_SLEEP_ENABLE\r
-#define __TIM6_FORCE_RESET __HAL_RCC_TIM6_FORCE_RESET\r
-#define __TIM6_RELEASE_RESET __HAL_RCC_TIM6_RELEASE_RESET\r
-#define __TIM7_CLK_DISABLE __HAL_RCC_TIM7_CLK_DISABLE\r
-#define __TIM7_CLK_ENABLE __HAL_RCC_TIM7_CLK_ENABLE\r
-#define __TIM7_CLK_SLEEP_DISABLE __HAL_RCC_TIM7_CLK_SLEEP_DISABLE\r
-#define __TIM7_CLK_SLEEP_ENABLE __HAL_RCC_TIM7_CLK_SLEEP_ENABLE\r
-#define __TIM7_FORCE_RESET __HAL_RCC_TIM7_FORCE_RESET\r
-#define __TIM7_RELEASE_RESET __HAL_RCC_TIM7_RELEASE_RESET\r
-#define __TIM8_CLK_DISABLE __HAL_RCC_TIM8_CLK_DISABLE\r
-#define __TIM8_CLK_ENABLE __HAL_RCC_TIM8_CLK_ENABLE\r
-#define __TIM8_CLK_SLEEP_DISABLE __HAL_RCC_TIM8_CLK_SLEEP_DISABLE\r
-#define __TIM8_CLK_SLEEP_ENABLE __HAL_RCC_TIM8_CLK_SLEEP_ENABLE\r
-#define __TIM8_FORCE_RESET __HAL_RCC_TIM8_FORCE_RESET\r
-#define __TIM8_RELEASE_RESET __HAL_RCC_TIM8_RELEASE_RESET\r
-#define __TIM9_CLK_DISABLE __HAL_RCC_TIM9_CLK_DISABLE\r
-#define __TIM9_CLK_ENABLE __HAL_RCC_TIM9_CLK_ENABLE\r
-#define __TIM9_FORCE_RESET __HAL_RCC_TIM9_FORCE_RESET\r
-#define __TIM9_RELEASE_RESET __HAL_RCC_TIM9_RELEASE_RESET\r
-#define __TSC_CLK_DISABLE __HAL_RCC_TSC_CLK_DISABLE\r
-#define __TSC_CLK_ENABLE __HAL_RCC_TSC_CLK_ENABLE\r
-#define __TSC_CLK_SLEEP_DISABLE __HAL_RCC_TSC_CLK_SLEEP_DISABLE\r
-#define __TSC_CLK_SLEEP_ENABLE __HAL_RCC_TSC_CLK_SLEEP_ENABLE\r
-#define __TSC_FORCE_RESET __HAL_RCC_TSC_FORCE_RESET\r
-#define __TSC_RELEASE_RESET __HAL_RCC_TSC_RELEASE_RESET\r
-#define __UART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE\r
-#define __UART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE\r
-#define __UART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE\r
-#define __UART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE\r
-#define __UART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET\r
-#define __UART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET\r
-#define __UART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE\r
-#define __UART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE\r
-#define __UART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE\r
-#define __UART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE\r
-#define __UART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET\r
-#define __UART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET\r
-#define __USART1_CLK_DISABLE __HAL_RCC_USART1_CLK_DISABLE\r
-#define __USART1_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE\r
-#define __USART1_CLK_SLEEP_DISABLE __HAL_RCC_USART1_CLK_SLEEP_DISABLE\r
-#define __USART1_CLK_SLEEP_ENABLE __HAL_RCC_USART1_CLK_SLEEP_ENABLE\r
-#define __USART1_FORCE_RESET __HAL_RCC_USART1_FORCE_RESET\r
-#define __USART1_RELEASE_RESET __HAL_RCC_USART1_RELEASE_RESET\r
-#define __USART2_CLK_DISABLE __HAL_RCC_USART2_CLK_DISABLE\r
-#define __USART2_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE\r
-#define __USART2_CLK_SLEEP_DISABLE __HAL_RCC_USART2_CLK_SLEEP_DISABLE\r
-#define __USART2_CLK_SLEEP_ENABLE __HAL_RCC_USART2_CLK_SLEEP_ENABLE\r
-#define __USART2_FORCE_RESET __HAL_RCC_USART2_FORCE_RESET\r
-#define __USART2_RELEASE_RESET __HAL_RCC_USART2_RELEASE_RESET\r
-#define __USART3_CLK_DISABLE __HAL_RCC_USART3_CLK_DISABLE\r
-#define __USART3_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE\r
-#define __USART3_CLK_SLEEP_DISABLE __HAL_RCC_USART3_CLK_SLEEP_DISABLE\r
-#define __USART3_CLK_SLEEP_ENABLE __HAL_RCC_USART3_CLK_SLEEP_ENABLE\r
-#define __USART3_FORCE_RESET __HAL_RCC_USART3_FORCE_RESET\r
-#define __USART3_RELEASE_RESET __HAL_RCC_USART3_RELEASE_RESET\r
-#define __USART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE\r
-#define __USART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE\r
-#define __USART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE\r
-#define __USART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE\r
-#define __USART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET\r
-#define __USART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET\r
-#define __USART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE\r
-#define __USART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE\r
-#define __USART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE\r
-#define __USART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE\r
-#define __USART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET\r
-#define __USART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET\r
-#define __USART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE\r
-#define __USART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE\r
-#define __USART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET\r
-#define __USART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET\r
-#define __USART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE\r
-#define __USART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE\r
-#define __USART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET\r
-#define __USART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET\r
-#define __USB_CLK_DISABLE __HAL_RCC_USB_CLK_DISABLE\r
-#define __USB_CLK_ENABLE __HAL_RCC_USB_CLK_ENABLE\r
-#define __USB_FORCE_RESET __HAL_RCC_USB_FORCE_RESET\r
-#define __USB_CLK_SLEEP_ENABLE __HAL_RCC_USB_CLK_SLEEP_ENABLE\r
-#define __USB_CLK_SLEEP_DISABLE __HAL_RCC_USB_CLK_SLEEP_DISABLE\r
-#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE\r
-#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE\r
-#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET\r
-#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE\r
-#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE\r
-#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE\r
-#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE\r
-#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET\r
-#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET\r
-#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE\r
-#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE\r
-#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET\r
-#define __TIM21_RELEASE_RESET __HAL_RCC_TIM21_RELEASE_RESET\r
-#define __TIM21_CLK_SLEEP_ENABLE __HAL_RCC_TIM21_CLK_SLEEP_ENABLE\r
-#define __TIM21_CLK_SLEEP_DISABLE __HAL_RCC_TIM21_CLK_SLEEP_DISABLE\r
-#define __TIM22_CLK_ENABLE __HAL_RCC_TIM22_CLK_ENABLE\r
-#define __TIM22_CLK_DISABLE __HAL_RCC_TIM22_CLK_DISABLE\r
-#define __TIM22_FORCE_RESET __HAL_RCC_TIM22_FORCE_RESET\r
-#define __TIM22_RELEASE_RESET __HAL_RCC_TIM22_RELEASE_RESET\r
-#define __TIM22_CLK_SLEEP_ENABLE __HAL_RCC_TIM22_CLK_SLEEP_ENABLE\r
-#define __TIM22_CLK_SLEEP_DISABLE __HAL_RCC_TIM22_CLK_SLEEP_DISABLE\r
-#define __CRS_CLK_DISABLE __HAL_RCC_CRS_CLK_DISABLE\r
-#define __CRS_CLK_ENABLE __HAL_RCC_CRS_CLK_ENABLE\r
-#define __CRS_CLK_SLEEP_DISABLE __HAL_RCC_CRS_CLK_SLEEP_DISABLE\r
-#define __CRS_CLK_SLEEP_ENABLE __HAL_RCC_CRS_CLK_SLEEP_ENABLE\r
-#define __CRS_FORCE_RESET __HAL_RCC_CRS_FORCE_RESET\r
-#define __CRS_RELEASE_RESET __HAL_RCC_CRS_RELEASE_RESET\r
-#define __RCC_BACKUPRESET_FORCE __HAL_RCC_BACKUPRESET_FORCE\r
-#define __RCC_BACKUPRESET_RELEASE __HAL_RCC_BACKUPRESET_RELEASE\r
-\r
-#define __USB_OTG_FS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET\r
-#define __USB_OTG_FS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET\r
-#define __USB_OTG_FS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE\r
-#define __USB_OTG_FS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE\r
-#define __USB_OTG_HS_CLK_DISABLE __HAL_RCC_USB_OTG_HS_CLK_DISABLE\r
-#define __USB_OTG_HS_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE\r
-#define __USB_OTG_HS_ULPI_CLK_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE\r
-#define __USB_OTG_HS_ULPI_CLK_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE\r
-#define __TIM9_CLK_SLEEP_ENABLE __HAL_RCC_TIM9_CLK_SLEEP_ENABLE\r
-#define __TIM9_CLK_SLEEP_DISABLE __HAL_RCC_TIM9_CLK_SLEEP_DISABLE\r
-#define __TIM10_CLK_SLEEP_ENABLE __HAL_RCC_TIM10_CLK_SLEEP_ENABLE\r
-#define __TIM10_CLK_SLEEP_DISABLE __HAL_RCC_TIM10_CLK_SLEEP_DISABLE\r
-#define __TIM11_CLK_SLEEP_ENABLE __HAL_RCC_TIM11_CLK_SLEEP_ENABLE\r
-#define __TIM11_CLK_SLEEP_DISABLE __HAL_RCC_TIM11_CLK_SLEEP_DISABLE\r
-#define __ETHMACPTP_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE\r
-#define __ETHMACPTP_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE\r
-#define __ETHMACPTP_CLK_ENABLE __HAL_RCC_ETHMACPTP_CLK_ENABLE\r
-#define __ETHMACPTP_CLK_DISABLE __HAL_RCC_ETHMACPTP_CLK_DISABLE\r
-#define __HASH_CLK_ENABLE __HAL_RCC_HASH_CLK_ENABLE\r
-#define __HASH_FORCE_RESET __HAL_RCC_HASH_FORCE_RESET\r
-#define __HASH_RELEASE_RESET __HAL_RCC_HASH_RELEASE_RESET\r
-#define __HASH_CLK_SLEEP_ENABLE __HAL_RCC_HASH_CLK_SLEEP_ENABLE\r
-#define __HASH_CLK_SLEEP_DISABLE __HAL_RCC_HASH_CLK_SLEEP_DISABLE\r
-#define __HASH_CLK_DISABLE __HAL_RCC_HASH_CLK_DISABLE\r
-#define __SPI5_CLK_ENABLE __HAL_RCC_SPI5_CLK_ENABLE\r
-#define __SPI5_CLK_DISABLE __HAL_RCC_SPI5_CLK_DISABLE\r
-#define __SPI5_FORCE_RESET __HAL_RCC_SPI5_FORCE_RESET\r
-#define __SPI5_RELEASE_RESET __HAL_RCC_SPI5_RELEASE_RESET\r
-#define __SPI5_CLK_SLEEP_ENABLE __HAL_RCC_SPI5_CLK_SLEEP_ENABLE\r
-#define __SPI5_CLK_SLEEP_DISABLE __HAL_RCC_SPI5_CLK_SLEEP_DISABLE\r
-#define __SPI6_CLK_ENABLE __HAL_RCC_SPI6_CLK_ENABLE\r
-#define __SPI6_CLK_DISABLE __HAL_RCC_SPI6_CLK_DISABLE\r
-#define __SPI6_FORCE_RESET __HAL_RCC_SPI6_FORCE_RESET\r
-#define __SPI6_RELEASE_RESET __HAL_RCC_SPI6_RELEASE_RESET\r
-#define __SPI6_CLK_SLEEP_ENABLE __HAL_RCC_SPI6_CLK_SLEEP_ENABLE\r
-#define __SPI6_CLK_SLEEP_DISABLE __HAL_RCC_SPI6_CLK_SLEEP_DISABLE\r
-#define __LTDC_CLK_ENABLE __HAL_RCC_LTDC_CLK_ENABLE\r
-#define __LTDC_CLK_DISABLE __HAL_RCC_LTDC_CLK_DISABLE\r
-#define __LTDC_FORCE_RESET __HAL_RCC_LTDC_FORCE_RESET\r
-#define __LTDC_RELEASE_RESET __HAL_RCC_LTDC_RELEASE_RESET\r
-#define __LTDC_CLK_SLEEP_ENABLE __HAL_RCC_LTDC_CLK_SLEEP_ENABLE\r
-#define __ETHMAC_CLK_SLEEP_ENABLE __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE\r
-#define __ETHMAC_CLK_SLEEP_DISABLE __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE\r
-#define __ETHMACTX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE\r
-#define __ETHMACTX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE\r
-#define __ETHMACRX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE\r
-#define __ETHMACRX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE\r
-#define __TIM12_CLK_SLEEP_ENABLE __HAL_RCC_TIM12_CLK_SLEEP_ENABLE\r
-#define __TIM12_CLK_SLEEP_DISABLE __HAL_RCC_TIM12_CLK_SLEEP_DISABLE\r
-#define __TIM13_CLK_SLEEP_ENABLE __HAL_RCC_TIM13_CLK_SLEEP_ENABLE\r
-#define __TIM13_CLK_SLEEP_DISABLE __HAL_RCC_TIM13_CLK_SLEEP_DISABLE\r
-#define __TIM14_CLK_SLEEP_ENABLE __HAL_RCC_TIM14_CLK_SLEEP_ENABLE\r
-#define __TIM14_CLK_SLEEP_DISABLE __HAL_RCC_TIM14_CLK_SLEEP_DISABLE\r
-#define __BKPSRAM_CLK_ENABLE __HAL_RCC_BKPSRAM_CLK_ENABLE\r
-#define __BKPSRAM_CLK_DISABLE __HAL_RCC_BKPSRAM_CLK_DISABLE\r
-#define __BKPSRAM_CLK_SLEEP_ENABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE\r
-#define __BKPSRAM_CLK_SLEEP_DISABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE\r
-#define __CCMDATARAMEN_CLK_ENABLE __HAL_RCC_CCMDATARAMEN_CLK_ENABLE\r
-#define __CCMDATARAMEN_CLK_DISABLE __HAL_RCC_CCMDATARAMEN_CLK_DISABLE\r
-#define __USART6_CLK_ENABLE __HAL_RCC_USART6_CLK_ENABLE\r
-#define __USART6_CLK_DISABLE __HAL_RCC_USART6_CLK_DISABLE\r
-#define __USART6_FORCE_RESET __HAL_RCC_USART6_FORCE_RESET\r
-#define __USART6_RELEASE_RESET __HAL_RCC_USART6_RELEASE_RESET\r
-#define __USART6_CLK_SLEEP_ENABLE __HAL_RCC_USART6_CLK_SLEEP_ENABLE\r
-#define __USART6_CLK_SLEEP_DISABLE __HAL_RCC_USART6_CLK_SLEEP_DISABLE\r
-#define __SPI4_CLK_ENABLE __HAL_RCC_SPI4_CLK_ENABLE\r
-#define __SPI4_CLK_DISABLE __HAL_RCC_SPI4_CLK_DISABLE\r
-#define __SPI4_FORCE_RESET __HAL_RCC_SPI4_FORCE_RESET\r
-#define __SPI4_RELEASE_RESET __HAL_RCC_SPI4_RELEASE_RESET\r
-#define __SPI4_CLK_SLEEP_ENABLE __HAL_RCC_SPI4_CLK_SLEEP_ENABLE\r
-#define __SPI4_CLK_SLEEP_DISABLE __HAL_RCC_SPI4_CLK_SLEEP_DISABLE\r
-#define __GPIOI_CLK_ENABLE __HAL_RCC_GPIOI_CLK_ENABLE\r
-#define __GPIOI_CLK_DISABLE __HAL_RCC_GPIOI_CLK_DISABLE\r
-#define __GPIOI_FORCE_RESET __HAL_RCC_GPIOI_FORCE_RESET\r
-#define __GPIOI_RELEASE_RESET __HAL_RCC_GPIOI_RELEASE_RESET\r
-#define __GPIOI_CLK_SLEEP_ENABLE __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE\r
-#define __GPIOI_CLK_SLEEP_DISABLE __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE\r
-#define __GPIOJ_CLK_ENABLE __HAL_RCC_GPIOJ_CLK_ENABLE\r
-#define __GPIOJ_CLK_DISABLE __HAL_RCC_GPIOJ_CLK_DISABLE\r
-#define __GPIOJ_FORCE_RESET __HAL_RCC_GPIOJ_FORCE_RESET\r
-#define __GPIOJ_RELEASE_RESET __HAL_RCC_GPIOJ_RELEASE_RESET\r
-#define __GPIOJ_CLK_SLEEP_ENABLE __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE\r
-#define __GPIOJ_CLK_SLEEP_DISABLE __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE\r
-#define __GPIOK_CLK_ENABLE __HAL_RCC_GPIOK_CLK_ENABLE\r
-#define __GPIOK_CLK_DISABLE __HAL_RCC_GPIOK_CLK_DISABLE\r
-#define __GPIOK_RELEASE_RESET __HAL_RCC_GPIOK_RELEASE_RESET\r
-#define __GPIOK_CLK_SLEEP_ENABLE __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE\r
-#define __GPIOK_CLK_SLEEP_DISABLE __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE\r
-#define __ETH_CLK_ENABLE __HAL_RCC_ETH_CLK_ENABLE\r
-#define __ETH_CLK_DISABLE __HAL_RCC_ETH_CLK_DISABLE\r
-#define __DCMI_CLK_ENABLE __HAL_RCC_DCMI_CLK_ENABLE\r
-#define __DCMI_CLK_DISABLE __HAL_RCC_DCMI_CLK_DISABLE\r
-#define __DCMI_FORCE_RESET __HAL_RCC_DCMI_FORCE_RESET\r
-#define __DCMI_RELEASE_RESET __HAL_RCC_DCMI_RELEASE_RESET\r
-#define __DCMI_CLK_SLEEP_ENABLE __HAL_RCC_DCMI_CLK_SLEEP_ENABLE\r
-#define __DCMI_CLK_SLEEP_DISABLE __HAL_RCC_DCMI_CLK_SLEEP_DISABLE\r
-#define __UART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE\r
-#define __UART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE\r
-#define __UART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET\r
-#define __UART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET\r
-#define __UART7_CLK_SLEEP_ENABLE __HAL_RCC_UART7_CLK_SLEEP_ENABLE\r
-#define __UART7_CLK_SLEEP_DISABLE __HAL_RCC_UART7_CLK_SLEEP_DISABLE\r
-#define __UART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE\r
-#define __UART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE\r
-#define __UART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET\r
-#define __UART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET\r
-#define __UART8_CLK_SLEEP_ENABLE __HAL_RCC_UART8_CLK_SLEEP_ENABLE\r
-#define __UART8_CLK_SLEEP_DISABLE __HAL_RCC_UART8_CLK_SLEEP_DISABLE\r
-#define __OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE\r
-#define __OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE\r
-#define __OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET\r
-#define __OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET\r
-#define __OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE\r
-#define __OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE\r
-#define __HAL_RCC_OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE\r
-#define __HAL_RCC_OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE\r
-#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED\r
-#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED\r
-#define __HAL_RCC_OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET\r
-#define __HAL_RCC_OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET\r
-#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE\r
-#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE\r
-#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED\r
-#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED\r
-#define __SRAM3_CLK_SLEEP_ENABLE __HAL_RCC_SRAM3_CLK_SLEEP_ENABLE\r
-#define __CAN2_CLK_SLEEP_ENABLE __HAL_RCC_CAN2_CLK_SLEEP_ENABLE\r
-#define __CAN2_CLK_SLEEP_DISABLE __HAL_RCC_CAN2_CLK_SLEEP_DISABLE\r
-#define __DAC_CLK_SLEEP_ENABLE __HAL_RCC_DAC_CLK_SLEEP_ENABLE\r
-#define __DAC_CLK_SLEEP_DISABLE __HAL_RCC_DAC_CLK_SLEEP_DISABLE\r
-#define __ADC2_CLK_SLEEP_ENABLE __HAL_RCC_ADC2_CLK_SLEEP_ENABLE\r
-#define __ADC2_CLK_SLEEP_DISABLE __HAL_RCC_ADC2_CLK_SLEEP_DISABLE\r
-#define __ADC3_CLK_SLEEP_ENABLE __HAL_RCC_ADC3_CLK_SLEEP_ENABLE\r
-#define __ADC3_CLK_SLEEP_DISABLE __HAL_RCC_ADC3_CLK_SLEEP_DISABLE\r
-#define __FSMC_FORCE_RESET __HAL_RCC_FSMC_FORCE_RESET\r
-#define __FSMC_RELEASE_RESET __HAL_RCC_FSMC_RELEASE_RESET\r
-#define __FSMC_CLK_SLEEP_ENABLE __HAL_RCC_FSMC_CLK_SLEEP_ENABLE\r
-#define __FSMC_CLK_SLEEP_DISABLE __HAL_RCC_FSMC_CLK_SLEEP_DISABLE\r
-#define __SDIO_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET\r
-#define __SDIO_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET\r
-#define __SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE\r
-#define __SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE\r
-#define __DMA2D_CLK_ENABLE __HAL_RCC_DMA2D_CLK_ENABLE\r
-#define __DMA2D_CLK_DISABLE __HAL_RCC_DMA2D_CLK_DISABLE\r
-#define __DMA2D_FORCE_RESET __HAL_RCC_DMA2D_FORCE_RESET\r
-#define __DMA2D_RELEASE_RESET __HAL_RCC_DMA2D_RELEASE_RESET\r
-#define __DMA2D_CLK_SLEEP_ENABLE __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE\r
-#define __DMA2D_CLK_SLEEP_DISABLE __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE\r
-\r
-/* alias define maintained for legacy */\r
-#define __HAL_RCC_OTGFS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET\r
-#define __HAL_RCC_OTGFS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET\r
-\r
-#define __ADC12_CLK_ENABLE __HAL_RCC_ADC12_CLK_ENABLE\r
-#define __ADC12_CLK_DISABLE __HAL_RCC_ADC12_CLK_DISABLE\r
-#define __ADC34_CLK_ENABLE __HAL_RCC_ADC34_CLK_ENABLE\r
-#define __ADC34_CLK_DISABLE __HAL_RCC_ADC34_CLK_DISABLE\r
-#define __DAC2_CLK_ENABLE __HAL_RCC_DAC2_CLK_ENABLE\r
-#define __DAC2_CLK_DISABLE __HAL_RCC_DAC2_CLK_DISABLE\r
-#define __TIM18_CLK_ENABLE __HAL_RCC_TIM18_CLK_ENABLE\r
-#define __TIM18_CLK_DISABLE __HAL_RCC_TIM18_CLK_DISABLE\r
-#define __TIM19_CLK_ENABLE __HAL_RCC_TIM19_CLK_ENABLE\r
-#define __TIM19_CLK_DISABLE __HAL_RCC_TIM19_CLK_DISABLE\r
-#define __TIM20_CLK_ENABLE __HAL_RCC_TIM20_CLK_ENABLE\r
-#define __TIM20_CLK_DISABLE __HAL_RCC_TIM20_CLK_DISABLE\r
-#define __HRTIM1_CLK_ENABLE __HAL_RCC_HRTIM1_CLK_ENABLE\r
-#define __HRTIM1_CLK_DISABLE __HAL_RCC_HRTIM1_CLK_DISABLE\r
-#define __SDADC1_CLK_ENABLE __HAL_RCC_SDADC1_CLK_ENABLE\r
-#define __SDADC2_CLK_ENABLE __HAL_RCC_SDADC2_CLK_ENABLE\r
-#define __SDADC3_CLK_ENABLE __HAL_RCC_SDADC3_CLK_ENABLE\r
-#define __SDADC1_CLK_DISABLE __HAL_RCC_SDADC1_CLK_DISABLE\r
-#define __SDADC2_CLK_DISABLE __HAL_RCC_SDADC2_CLK_DISABLE\r
-#define __SDADC3_CLK_DISABLE __HAL_RCC_SDADC3_CLK_DISABLE\r
-\r
-#define __ADC12_FORCE_RESET __HAL_RCC_ADC12_FORCE_RESET\r
-#define __ADC12_RELEASE_RESET __HAL_RCC_ADC12_RELEASE_RESET\r
-#define __ADC34_FORCE_RESET __HAL_RCC_ADC34_FORCE_RESET\r
-#define __ADC34_RELEASE_RESET __HAL_RCC_ADC34_RELEASE_RESET\r
-#define __DAC2_FORCE_RESET __HAL_RCC_DAC2_FORCE_RESET\r
-#define __DAC2_RELEASE_RESET __HAL_RCC_DAC2_RELEASE_RESET\r
-#define __TIM18_FORCE_RESET __HAL_RCC_TIM18_FORCE_RESET\r
-#define __TIM18_RELEASE_RESET __HAL_RCC_TIM18_RELEASE_RESET\r
-#define __TIM19_FORCE_RESET __HAL_RCC_TIM19_FORCE_RESET\r
-#define __TIM19_RELEASE_RESET __HAL_RCC_TIM19_RELEASE_RESET\r
-#define __TIM20_FORCE_RESET __HAL_RCC_TIM20_FORCE_RESET\r
-#define __TIM20_RELEASE_RESET __HAL_RCC_TIM20_RELEASE_RESET\r
-#define __HRTIM1_FORCE_RESET __HAL_RCC_HRTIM1_FORCE_RESET\r
-#define __HRTIM1_RELEASE_RESET __HAL_RCC_HRTIM1_RELEASE_RESET\r
-#define __SDADC1_FORCE_RESET __HAL_RCC_SDADC1_FORCE_RESET\r
-#define __SDADC2_FORCE_RESET __HAL_RCC_SDADC2_FORCE_RESET\r
-#define __SDADC3_FORCE_RESET __HAL_RCC_SDADC3_FORCE_RESET\r
-#define __SDADC1_RELEASE_RESET __HAL_RCC_SDADC1_RELEASE_RESET\r
-#define __SDADC2_RELEASE_RESET __HAL_RCC_SDADC2_RELEASE_RESET\r
-#define __SDADC3_RELEASE_RESET __HAL_RCC_SDADC3_RELEASE_RESET\r
-\r
-#define __ADC1_IS_CLK_ENABLED __HAL_RCC_ADC1_IS_CLK_ENABLED\r
-#define __ADC1_IS_CLK_DISABLED __HAL_RCC_ADC1_IS_CLK_DISABLED\r
-#define __ADC12_IS_CLK_ENABLED __HAL_RCC_ADC12_IS_CLK_ENABLED\r
-#define __ADC12_IS_CLK_DISABLED __HAL_RCC_ADC12_IS_CLK_DISABLED\r
-#define __ADC34_IS_CLK_ENABLED __HAL_RCC_ADC34_IS_CLK_ENABLED\r
-#define __ADC34_IS_CLK_DISABLED __HAL_RCC_ADC34_IS_CLK_DISABLED\r
-#define __CEC_IS_CLK_ENABLED __HAL_RCC_CEC_IS_CLK_ENABLED\r
-#define __CEC_IS_CLK_DISABLED __HAL_RCC_CEC_IS_CLK_DISABLED\r
-#define __CRC_IS_CLK_ENABLED __HAL_RCC_CRC_IS_CLK_ENABLED\r
-#define __CRC_IS_CLK_DISABLED __HAL_RCC_CRC_IS_CLK_DISABLED\r
-#define __DAC1_IS_CLK_ENABLED __HAL_RCC_DAC1_IS_CLK_ENABLED\r
-#define __DAC1_IS_CLK_DISABLED __HAL_RCC_DAC1_IS_CLK_DISABLED\r
-#define __DAC2_IS_CLK_ENABLED __HAL_RCC_DAC2_IS_CLK_ENABLED\r
-#define __DAC2_IS_CLK_DISABLED __HAL_RCC_DAC2_IS_CLK_DISABLED\r
-#define __DMA1_IS_CLK_ENABLED __HAL_RCC_DMA1_IS_CLK_ENABLED\r
-#define __DMA1_IS_CLK_DISABLED __HAL_RCC_DMA1_IS_CLK_DISABLED\r
-#define __DMA2_IS_CLK_ENABLED __HAL_RCC_DMA2_IS_CLK_ENABLED\r
-#define __DMA2_IS_CLK_DISABLED __HAL_RCC_DMA2_IS_CLK_DISABLED\r
-#define __FLITF_IS_CLK_ENABLED __HAL_RCC_FLITF_IS_CLK_ENABLED\r
-#define __FLITF_IS_CLK_DISABLED __HAL_RCC_FLITF_IS_CLK_DISABLED\r
-#define __FMC_IS_CLK_ENABLED __HAL_RCC_FMC_IS_CLK_ENABLED\r
-#define __FMC_IS_CLK_DISABLED __HAL_RCC_FMC_IS_CLK_DISABLED\r
-#define __GPIOA_IS_CLK_ENABLED __HAL_RCC_GPIOA_IS_CLK_ENABLED\r
-#define __GPIOA_IS_CLK_DISABLED __HAL_RCC_GPIOA_IS_CLK_DISABLED\r
-#define __GPIOB_IS_CLK_ENABLED __HAL_RCC_GPIOB_IS_CLK_ENABLED\r
-#define __GPIOB_IS_CLK_DISABLED __HAL_RCC_GPIOB_IS_CLK_DISABLED\r
-#define __GPIOC_IS_CLK_ENABLED __HAL_RCC_GPIOC_IS_CLK_ENABLED\r
-#define __GPIOC_IS_CLK_DISABLED __HAL_RCC_GPIOC_IS_CLK_DISABLED\r
-#define __GPIOD_IS_CLK_ENABLED __HAL_RCC_GPIOD_IS_CLK_ENABLED\r
-#define __GPIOD_IS_CLK_DISABLED __HAL_RCC_GPIOD_IS_CLK_DISABLED\r
-#define __GPIOE_IS_CLK_ENABLED __HAL_RCC_GPIOE_IS_CLK_ENABLED\r
-#define __GPIOE_IS_CLK_DISABLED __HAL_RCC_GPIOE_IS_CLK_DISABLED\r
-#define __GPIOF_IS_CLK_ENABLED __HAL_RCC_GPIOF_IS_CLK_ENABLED\r
-#define __GPIOF_IS_CLK_DISABLED __HAL_RCC_GPIOF_IS_CLK_DISABLED\r
-#define __GPIOG_IS_CLK_ENABLED __HAL_RCC_GPIOG_IS_CLK_ENABLED\r
-#define __GPIOG_IS_CLK_DISABLED __HAL_RCC_GPIOG_IS_CLK_DISABLED\r
-#define __GPIOH_IS_CLK_ENABLED __HAL_RCC_GPIOH_IS_CLK_ENABLED\r
-#define __GPIOH_IS_CLK_DISABLED __HAL_RCC_GPIOH_IS_CLK_DISABLED\r
-#define __HRTIM1_IS_CLK_ENABLED __HAL_RCC_HRTIM1_IS_CLK_ENABLED\r
-#define __HRTIM1_IS_CLK_DISABLED __HAL_RCC_HRTIM1_IS_CLK_DISABLED\r
-#define __I2C1_IS_CLK_ENABLED __HAL_RCC_I2C1_IS_CLK_ENABLED\r
-#define __I2C1_IS_CLK_DISABLED __HAL_RCC_I2C1_IS_CLK_DISABLED\r
-#define __I2C2_IS_CLK_ENABLED __HAL_RCC_I2C2_IS_CLK_ENABLED\r
-#define __I2C2_IS_CLK_DISABLED __HAL_RCC_I2C2_IS_CLK_DISABLED\r
-#define __I2C3_IS_CLK_ENABLED __HAL_RCC_I2C3_IS_CLK_ENABLED\r
-#define __I2C3_IS_CLK_DISABLED __HAL_RCC_I2C3_IS_CLK_DISABLED\r
-#define __PWR_IS_CLK_ENABLED __HAL_RCC_PWR_IS_CLK_ENABLED\r
-#define __PWR_IS_CLK_DISABLED __HAL_RCC_PWR_IS_CLK_DISABLED\r
-#define __SYSCFG_IS_CLK_ENABLED __HAL_RCC_SYSCFG_IS_CLK_ENABLED\r
-#define __SYSCFG_IS_CLK_DISABLED __HAL_RCC_SYSCFG_IS_CLK_DISABLED\r
-#define __SPI1_IS_CLK_ENABLED __HAL_RCC_SPI1_IS_CLK_ENABLED\r
-#define __SPI1_IS_CLK_DISABLED __HAL_RCC_SPI1_IS_CLK_DISABLED\r
-#define __SPI2_IS_CLK_ENABLED __HAL_RCC_SPI2_IS_CLK_ENABLED\r
-#define __SPI2_IS_CLK_DISABLED __HAL_RCC_SPI2_IS_CLK_DISABLED\r
-#define __SPI3_IS_CLK_ENABLED __HAL_RCC_SPI3_IS_CLK_ENABLED\r
-#define __SPI3_IS_CLK_DISABLED __HAL_RCC_SPI3_IS_CLK_DISABLED\r
-#define __SPI4_IS_CLK_ENABLED __HAL_RCC_SPI4_IS_CLK_ENABLED\r
-#define __SPI4_IS_CLK_DISABLED __HAL_RCC_SPI4_IS_CLK_DISABLED\r
-#define __SDADC1_IS_CLK_ENABLED __HAL_RCC_SDADC1_IS_CLK_ENABLED\r
-#define __SDADC1_IS_CLK_DISABLED __HAL_RCC_SDADC1_IS_CLK_DISABLED\r
-#define __SDADC2_IS_CLK_ENABLED __HAL_RCC_SDADC2_IS_CLK_ENABLED\r
-#define __SDADC2_IS_CLK_DISABLED __HAL_RCC_SDADC2_IS_CLK_DISABLED\r
-#define __SDADC3_IS_CLK_ENABLED __HAL_RCC_SDADC3_IS_CLK_ENABLED\r
-#define __SDADC3_IS_CLK_DISABLED __HAL_RCC_SDADC3_IS_CLK_DISABLED\r
-#define __SRAM_IS_CLK_ENABLED __HAL_RCC_SRAM_IS_CLK_ENABLED\r
-#define __SRAM_IS_CLK_DISABLED __HAL_RCC_SRAM_IS_CLK_DISABLED\r
-#define __TIM1_IS_CLK_ENABLED __HAL_RCC_TIM1_IS_CLK_ENABLED\r
-#define __TIM1_IS_CLK_DISABLED __HAL_RCC_TIM1_IS_CLK_DISABLED\r
-#define __TIM2_IS_CLK_ENABLED __HAL_RCC_TIM2_IS_CLK_ENABLED\r
-#define __TIM2_IS_CLK_DISABLED __HAL_RCC_TIM2_IS_CLK_DISABLED\r
-#define __TIM3_IS_CLK_ENABLED __HAL_RCC_TIM3_IS_CLK_ENABLED\r
-#define __TIM3_IS_CLK_DISABLED __HAL_RCC_TIM3_IS_CLK_DISABLED\r
-#define __TIM4_IS_CLK_ENABLED __HAL_RCC_TIM4_IS_CLK_ENABLED\r
-#define __TIM4_IS_CLK_DISABLED __HAL_RCC_TIM4_IS_CLK_DISABLED\r
-#define __TIM5_IS_CLK_ENABLED __HAL_RCC_TIM5_IS_CLK_ENABLED\r
-#define __TIM5_IS_CLK_DISABLED __HAL_RCC_TIM5_IS_CLK_DISABLED\r
-#define __TIM6_IS_CLK_ENABLED __HAL_RCC_TIM6_IS_CLK_ENABLED\r
-#define __TIM6_IS_CLK_DISABLED __HAL_RCC_TIM6_IS_CLK_DISABLED\r
-#define __TIM7_IS_CLK_ENABLED __HAL_RCC_TIM7_IS_CLK_ENABLED\r
-#define __TIM7_IS_CLK_DISABLED __HAL_RCC_TIM7_IS_CLK_DISABLED\r
-#define __TIM8_IS_CLK_ENABLED __HAL_RCC_TIM8_IS_CLK_ENABLED\r
-#define __TIM8_IS_CLK_DISABLED __HAL_RCC_TIM8_IS_CLK_DISABLED\r
-#define __TIM12_IS_CLK_ENABLED __HAL_RCC_TIM12_IS_CLK_ENABLED\r
-#define __TIM12_IS_CLK_DISABLED __HAL_RCC_TIM12_IS_CLK_DISABLED\r
-#define __TIM13_IS_CLK_ENABLED __HAL_RCC_TIM13_IS_CLK_ENABLED\r
-#define __TIM13_IS_CLK_DISABLED __HAL_RCC_TIM13_IS_CLK_DISABLED\r
-#define __TIM14_IS_CLK_ENABLED __HAL_RCC_TIM14_IS_CLK_ENABLED\r
-#define __TIM14_IS_CLK_DISABLED __HAL_RCC_TIM14_IS_CLK_DISABLED\r
-#define __TIM15_IS_CLK_ENABLED __HAL_RCC_TIM15_IS_CLK_ENABLED\r
-#define __TIM15_IS_CLK_DISABLED __HAL_RCC_TIM15_IS_CLK_DISABLED\r
-#define __TIM16_IS_CLK_ENABLED __HAL_RCC_TIM16_IS_CLK_ENABLED\r
-#define __TIM16_IS_CLK_DISABLED __HAL_RCC_TIM16_IS_CLK_DISABLED\r
-#define __TIM17_IS_CLK_ENABLED __HAL_RCC_TIM17_IS_CLK_ENABLED\r
-#define __TIM17_IS_CLK_DISABLED __HAL_RCC_TIM17_IS_CLK_DISABLED\r
-#define __TIM18_IS_CLK_ENABLED __HAL_RCC_TIM18_IS_CLK_ENABLED\r
-#define __TIM18_IS_CLK_DISABLED __HAL_RCC_TIM18_IS_CLK_DISABLED\r
-#define __TIM19_IS_CLK_ENABLED __HAL_RCC_TIM19_IS_CLK_ENABLED\r
-#define __TIM19_IS_CLK_DISABLED __HAL_RCC_TIM19_IS_CLK_DISABLED\r
-#define __TIM20_IS_CLK_ENABLED __HAL_RCC_TIM20_IS_CLK_ENABLED\r
-#define __TIM20_IS_CLK_DISABLED __HAL_RCC_TIM20_IS_CLK_DISABLED\r
-#define __TSC_IS_CLK_ENABLED __HAL_RCC_TSC_IS_CLK_ENABLED\r
-#define __TSC_IS_CLK_DISABLED __HAL_RCC_TSC_IS_CLK_DISABLED\r
-#define __UART4_IS_CLK_ENABLED __HAL_RCC_UART4_IS_CLK_ENABLED\r
-#define __UART4_IS_CLK_DISABLED __HAL_RCC_UART4_IS_CLK_DISABLED\r
-#define __UART5_IS_CLK_ENABLED __HAL_RCC_UART5_IS_CLK_ENABLED\r
-#define __UART5_IS_CLK_DISABLED __HAL_RCC_UART5_IS_CLK_DISABLED\r
-#define __USART1_IS_CLK_ENABLED __HAL_RCC_USART1_IS_CLK_ENABLED\r
-#define __USART1_IS_CLK_DISABLED __HAL_RCC_USART1_IS_CLK_DISABLED\r
-#define __USART2_IS_CLK_ENABLED __HAL_RCC_USART2_IS_CLK_ENABLED\r
-#define __USART2_IS_CLK_DISABLED __HAL_RCC_USART2_IS_CLK_DISABLED\r
-#define __USART3_IS_CLK_ENABLED __HAL_RCC_USART3_IS_CLK_ENABLED\r
-#define __USART3_IS_CLK_DISABLED __HAL_RCC_USART3_IS_CLK_DISABLED\r
-#define __USB_IS_CLK_ENABLED __HAL_RCC_USB_IS_CLK_ENABLED\r
-#define __USB_IS_CLK_DISABLED __HAL_RCC_USB_IS_CLK_DISABLED\r
-#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED\r
-#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED\r
-\r
-#if defined(STM32F4)\r
-#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET\r
-#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET\r
-#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE\r
-#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE\r
-#define __HAL_RCC_SDMMC1_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE\r
-#define __HAL_RCC_SDMMC1_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE\r
-#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED __HAL_RCC_SDIO_IS_CLK_ENABLED\r
-#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED __HAL_RCC_SDIO_IS_CLK_DISABLED\r
-#define Sdmmc1ClockSelection SdioClockSelection\r
-#define RCC_PERIPHCLK_SDMMC1 RCC_PERIPHCLK_SDIO\r
-#define RCC_SDMMC1CLKSOURCE_CLK48 RCC_SDIOCLKSOURCE_CK48\r
-#define RCC_SDMMC1CLKSOURCE_SYSCLK RCC_SDIOCLKSOURCE_SYSCLK\r
-#define __HAL_RCC_SDMMC1_CONFIG __HAL_RCC_SDIO_CONFIG\r
-#define __HAL_RCC_GET_SDMMC1_SOURCE __HAL_RCC_GET_SDIO_SOURCE\r
-#endif\r
-\r
-#if defined(STM32F7) || defined(STM32L4)\r
-#define __HAL_RCC_SDIO_FORCE_RESET __HAL_RCC_SDMMC1_FORCE_RESET\r
-#define __HAL_RCC_SDIO_RELEASE_RESET __HAL_RCC_SDMMC1_RELEASE_RESET\r
-#define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE\r
-#define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE\r
-#define __HAL_RCC_SDIO_CLK_ENABLE __HAL_RCC_SDMMC1_CLK_ENABLE\r
-#define __HAL_RCC_SDIO_CLK_DISABLE __HAL_RCC_SDMMC1_CLK_DISABLE\r
-#define __HAL_RCC_SDIO_IS_CLK_ENABLED __HAL_RCC_SDMMC1_IS_CLK_ENABLED\r
-#define __HAL_RCC_SDIO_IS_CLK_DISABLED __HAL_RCC_SDMMC1_IS_CLK_DISABLED\r
-#define SdioClockSelection Sdmmc1ClockSelection\r
-#define RCC_PERIPHCLK_SDIO RCC_PERIPHCLK_SDMMC1\r
-#define __HAL_RCC_SDIO_CONFIG __HAL_RCC_SDMMC1_CONFIG\r
-#define __HAL_RCC_GET_SDIO_SOURCE __HAL_RCC_GET_SDMMC1_SOURCE\r
-#endif\r
-\r
-#if defined(STM32F7)\r
-#define RCC_SDIOCLKSOURCE_CLK48 RCC_SDMMC1CLKSOURCE_CLK48\r
-#define RCC_SDIOCLKSOURCE_SYSCLK RCC_SDMMC1CLKSOURCE_SYSCLK\r
-#endif\r
-\r
-#if defined(STM32H7)\r
-#define __HAL_RCC_USB_OTG_HS_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_ENABLE()\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_ENABLE()\r
-#define __HAL_RCC_USB_OTG_HS_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_DISABLE()\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_DISABLE()\r
-#define __HAL_RCC_USB_OTG_HS_FORCE_RESET() __HAL_RCC_USB1_OTG_HS_FORCE_RESET()\r
-#define __HAL_RCC_USB_OTG_HS_RELEASE_RESET() __HAL_RCC_USB1_OTG_HS_RELEASE_RESET()\r
-#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_ENABLE()\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE()\r
-#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_DISABLE()\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE()\r
-\r
-#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_ENABLE()\r
-#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_ENABLE()\r
-#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_DISABLE()\r
-#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_DISABLE()\r
-#define __HAL_RCC_USB_OTG_FS_FORCE_RESET() __HAL_RCC_USB2_OTG_FS_FORCE_RESET()\r
-#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() __HAL_RCC_USB2_OTG_FS_RELEASE_RESET()\r
-#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_ENABLE()\r
-#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE()\r
-#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_DISABLE()\r
-#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE()\r
-#endif\r
-\r
-#define __HAL_RCC_I2SCLK __HAL_RCC_I2S_CONFIG\r
-#define __HAL_RCC_I2SCLK_CONFIG __HAL_RCC_I2S_CONFIG\r
-\r
-#define __RCC_PLLSRC RCC_GET_PLL_OSCSOURCE\r
-\r
-#define IS_RCC_MSIRANGE IS_RCC_MSI_CLOCK_RANGE\r
-#define IS_RCC_RTCCLK_SOURCE IS_RCC_RTCCLKSOURCE\r
-#define IS_RCC_SYSCLK_DIV IS_RCC_HCLK\r
-#define IS_RCC_HCLK_DIV IS_RCC_PCLK\r
-#define IS_RCC_PERIPHCLK IS_RCC_PERIPHCLOCK\r
-\r
-#define RCC_IT_HSI14 RCC_IT_HSI14RDY\r
-\r
-#define RCC_IT_CSSLSE RCC_IT_LSECSS\r
-#define RCC_IT_CSSHSE RCC_IT_CSS\r
-\r
-#define RCC_PLLMUL_3 RCC_PLL_MUL3\r
-#define RCC_PLLMUL_4 RCC_PLL_MUL4\r
-#define RCC_PLLMUL_6 RCC_PLL_MUL6\r
-#define RCC_PLLMUL_8 RCC_PLL_MUL8\r
-#define RCC_PLLMUL_12 RCC_PLL_MUL12\r
-#define RCC_PLLMUL_16 RCC_PLL_MUL16\r
-#define RCC_PLLMUL_24 RCC_PLL_MUL24\r
-#define RCC_PLLMUL_32 RCC_PLL_MUL32\r
-#define RCC_PLLMUL_48 RCC_PLL_MUL48\r
-\r
-#define RCC_PLLDIV_2 RCC_PLL_DIV2\r
-#define RCC_PLLDIV_3 RCC_PLL_DIV3\r
-#define RCC_PLLDIV_4 RCC_PLL_DIV4\r
-\r
-#define IS_RCC_MCOSOURCE IS_RCC_MCO1SOURCE\r
-#define __HAL_RCC_MCO_CONFIG __HAL_RCC_MCO1_CONFIG\r
-#define RCC_MCO_NODIV RCC_MCODIV_1\r
-#define RCC_MCO_DIV1 RCC_MCODIV_1\r
-#define RCC_MCO_DIV2 RCC_MCODIV_2\r
-#define RCC_MCO_DIV4 RCC_MCODIV_4\r
-#define RCC_MCO_DIV8 RCC_MCODIV_8\r
-#define RCC_MCO_DIV16 RCC_MCODIV_16\r
-#define RCC_MCO_DIV32 RCC_MCODIV_32\r
-#define RCC_MCO_DIV64 RCC_MCODIV_64\r
-#define RCC_MCO_DIV128 RCC_MCODIV_128\r
-#define RCC_MCOSOURCE_NONE RCC_MCO1SOURCE_NOCLOCK\r
-#define RCC_MCOSOURCE_LSI RCC_MCO1SOURCE_LSI\r
-#define RCC_MCOSOURCE_LSE RCC_MCO1SOURCE_LSE\r
-#define RCC_MCOSOURCE_SYSCLK RCC_MCO1SOURCE_SYSCLK\r
-#define RCC_MCOSOURCE_HSI RCC_MCO1SOURCE_HSI\r
-#define RCC_MCOSOURCE_HSI14 RCC_MCO1SOURCE_HSI14\r
-#define RCC_MCOSOURCE_HSI48 RCC_MCO1SOURCE_HSI48\r
-#define RCC_MCOSOURCE_HSE RCC_MCO1SOURCE_HSE\r
-#define RCC_MCOSOURCE_PLLCLK_DIV1 RCC_MCO1SOURCE_PLLCLK\r
-#define RCC_MCOSOURCE_PLLCLK_NODIV RCC_MCO1SOURCE_PLLCLK\r
-#define RCC_MCOSOURCE_PLLCLK_DIV2 RCC_MCO1SOURCE_PLLCLK_DIV2\r
-\r
-#if defined(STM32L4)\r
-#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE\r
-#elif defined(STM32WB) || defined(STM32G0)\r
-#else\r
-#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK\r
-#endif\r
-\r
-#define RCC_USBCLK_PLLSAI1 RCC_USBCLKSOURCE_PLLSAI1\r
-#define RCC_USBCLK_PLL RCC_USBCLKSOURCE_PLL\r
-#define RCC_USBCLK_MSI RCC_USBCLKSOURCE_MSI\r
-#define RCC_USBCLKSOURCE_PLLCLK RCC_USBCLKSOURCE_PLL\r
-#define RCC_USBPLLCLK_DIV1 RCC_USBCLKSOURCE_PLL\r
-#define RCC_USBPLLCLK_DIV1_5 RCC_USBCLKSOURCE_PLL_DIV1_5\r
-#define RCC_USBPLLCLK_DIV2 RCC_USBCLKSOURCE_PLL_DIV2\r
-#define RCC_USBPLLCLK_DIV3 RCC_USBCLKSOURCE_PLL_DIV3\r
-\r
-#define HSION_BitNumber RCC_HSION_BIT_NUMBER\r
-#define HSION_BITNUMBER RCC_HSION_BIT_NUMBER\r
-#define HSEON_BitNumber RCC_HSEON_BIT_NUMBER\r
-#define HSEON_BITNUMBER RCC_HSEON_BIT_NUMBER\r
-#define MSION_BITNUMBER RCC_MSION_BIT_NUMBER\r
-#define CSSON_BitNumber RCC_CSSON_BIT_NUMBER\r
-#define CSSON_BITNUMBER RCC_CSSON_BIT_NUMBER\r
-#define PLLON_BitNumber RCC_PLLON_BIT_NUMBER\r
-#define PLLON_BITNUMBER RCC_PLLON_BIT_NUMBER\r
-#define PLLI2SON_BitNumber RCC_PLLI2SON_BIT_NUMBER\r
-#define I2SSRC_BitNumber RCC_I2SSRC_BIT_NUMBER\r
-#define RTCEN_BitNumber RCC_RTCEN_BIT_NUMBER\r
-#define RTCEN_BITNUMBER RCC_RTCEN_BIT_NUMBER\r
-#define BDRST_BitNumber RCC_BDRST_BIT_NUMBER\r
-#define BDRST_BITNUMBER RCC_BDRST_BIT_NUMBER\r
-#define RTCRST_BITNUMBER RCC_RTCRST_BIT_NUMBER\r
-#define LSION_BitNumber RCC_LSION_BIT_NUMBER\r
-#define LSION_BITNUMBER RCC_LSION_BIT_NUMBER\r
-#define LSEON_BitNumber RCC_LSEON_BIT_NUMBER\r
-#define LSEON_BITNUMBER RCC_LSEON_BIT_NUMBER\r
-#define LSEBYP_BITNUMBER RCC_LSEBYP_BIT_NUMBER\r
-#define PLLSAION_BitNumber RCC_PLLSAION_BIT_NUMBER\r
-#define TIMPRE_BitNumber RCC_TIMPRE_BIT_NUMBER\r
-#define RMVF_BitNumber RCC_RMVF_BIT_NUMBER\r
-#define RMVF_BITNUMBER RCC_RMVF_BIT_NUMBER\r
-#define RCC_CR2_HSI14TRIM_BitNumber RCC_HSI14TRIM_BIT_NUMBER\r
-#define CR_BYTE2_ADDRESS RCC_CR_BYTE2_ADDRESS\r
-#define CIR_BYTE1_ADDRESS RCC_CIR_BYTE1_ADDRESS\r
-#define CIR_BYTE2_ADDRESS RCC_CIR_BYTE2_ADDRESS\r
-#define BDCR_BYTE0_ADDRESS RCC_BDCR_BYTE0_ADDRESS\r
-#define DBP_TIMEOUT_VALUE RCC_DBP_TIMEOUT_VALUE\r
-#define LSE_TIMEOUT_VALUE RCC_LSE_TIMEOUT_VALUE\r
-\r
-#define CR_HSION_BB RCC_CR_HSION_BB\r
-#define CR_CSSON_BB RCC_CR_CSSON_BB\r
-#define CR_PLLON_BB RCC_CR_PLLON_BB\r
-#define CR_PLLI2SON_BB RCC_CR_PLLI2SON_BB\r
-#define CR_MSION_BB RCC_CR_MSION_BB\r
-#define CSR_LSION_BB RCC_CSR_LSION_BB\r
-#define CSR_LSEON_BB RCC_CSR_LSEON_BB\r
-#define CSR_LSEBYP_BB RCC_CSR_LSEBYP_BB\r
-#define CSR_RTCEN_BB RCC_CSR_RTCEN_BB\r
-#define CSR_RTCRST_BB RCC_CSR_RTCRST_BB\r
-#define CFGR_I2SSRC_BB RCC_CFGR_I2SSRC_BB\r
-#define BDCR_RTCEN_BB RCC_BDCR_RTCEN_BB\r
-#define BDCR_BDRST_BB RCC_BDCR_BDRST_BB\r
-#define CR_HSEON_BB RCC_CR_HSEON_BB\r
-#define CSR_RMVF_BB RCC_CSR_RMVF_BB\r
-#define CR_PLLSAION_BB RCC_CR_PLLSAION_BB\r
-#define DCKCFGR_TIMPRE_BB RCC_DCKCFGR_TIMPRE_BB\r
-\r
-#define __HAL_RCC_CRS_ENABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE\r
-#define __HAL_RCC_CRS_DISABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE\r
-#define __HAL_RCC_CRS_ENABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE\r
-#define __HAL_RCC_CRS_DISABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE\r
-#define __HAL_RCC_CRS_CALCULATE_RELOADVALUE __HAL_RCC_CRS_RELOADVALUE_CALCULATE\r
-\r
-#define __HAL_RCC_GET_IT_SOURCE __HAL_RCC_GET_IT\r
-\r
-#define RCC_CRS_SYNCWARM RCC_CRS_SYNCWARN\r
-#define RCC_CRS_TRIMOV RCC_CRS_TRIMOVF\r
-\r
-#define RCC_PERIPHCLK_CK48 RCC_PERIPHCLK_CLK48\r
-#define RCC_CK48CLKSOURCE_PLLQ RCC_CLK48CLKSOURCE_PLLQ\r
-#define RCC_CK48CLKSOURCE_PLLSAIP RCC_CLK48CLKSOURCE_PLLSAIP\r
-#define RCC_CK48CLKSOURCE_PLLI2SQ RCC_CLK48CLKSOURCE_PLLI2SQ\r
-#define IS_RCC_CK48CLKSOURCE IS_RCC_CLK48CLKSOURCE\r
-#define RCC_SDIOCLKSOURCE_CK48 RCC_SDIOCLKSOURCE_CLK48\r
-\r
-#define __HAL_RCC_DFSDM_CLK_ENABLE __HAL_RCC_DFSDM1_CLK_ENABLE\r
-#define __HAL_RCC_DFSDM_CLK_DISABLE __HAL_RCC_DFSDM1_CLK_DISABLE\r
-#define __HAL_RCC_DFSDM_IS_CLK_ENABLED __HAL_RCC_DFSDM1_IS_CLK_ENABLED\r
-#define __HAL_RCC_DFSDM_IS_CLK_DISABLED __HAL_RCC_DFSDM1_IS_CLK_DISABLED\r
-#define __HAL_RCC_DFSDM_FORCE_RESET __HAL_RCC_DFSDM1_FORCE_RESET\r
-#define __HAL_RCC_DFSDM_RELEASE_RESET __HAL_RCC_DFSDM1_RELEASE_RESET\r
-#define __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE\r
-#define __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE\r
-#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_ENABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED\r
-#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_DISABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED\r
-#define DfsdmClockSelection Dfsdm1ClockSelection\r
-#define RCC_PERIPHCLK_DFSDM RCC_PERIPHCLK_DFSDM1\r
-#define RCC_DFSDMCLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2\r
-#define RCC_DFSDMCLKSOURCE_SYSCLK RCC_DFSDM1CLKSOURCE_SYSCLK\r
-#define __HAL_RCC_DFSDM_CONFIG __HAL_RCC_DFSDM1_CONFIG\r
-#define __HAL_RCC_GET_DFSDM_SOURCE __HAL_RCC_GET_DFSDM1_SOURCE\r
-#define RCC_DFSDM1CLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2\r
-#define RCC_SWPMI1CLKSOURCE_PCLK RCC_SWPMI1CLKSOURCE_PCLK1\r
-#define RCC_LPTIM1CLKSOURCE_PCLK RCC_LPTIM1CLKSOURCE_PCLK1\r
-#define RCC_LPTIM2CLKSOURCE_PCLK RCC_LPTIM2CLKSOURCE_PCLK1\r
-\r
-#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM1AUDIOCLKSOURCE_I2S1\r
-#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM1AUDIOCLKSOURCE_I2S2\r
-#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM2AUDIOCLKSOURCE_I2S1\r
-#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM2AUDIOCLKSOURCE_I2S2\r
-#define RCC_DFSDM1CLKSOURCE_APB2 RCC_DFSDM1CLKSOURCE_PCLK2\r
-#define RCC_DFSDM2CLKSOURCE_APB2 RCC_DFSDM2CLKSOURCE_PCLK2\r
-#define RCC_FMPI2C1CLKSOURCE_APB RCC_FMPI2C1CLKSOURCE_PCLK1\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_RNG_Aliased_Macros HAL RNG Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define HAL_RNG_ReadyCallback(__HANDLE__) HAL_RNG_ReadyDataCallback((__HANDLE__), uint32_t random32bit)\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#if defined (STM32G0) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx)\r
-#else\r
-#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG\r
-#endif\r
-#define __HAL_RTC_DISABLE_IT __HAL_RTC_EXTI_DISABLE_IT\r
-#define __HAL_RTC_ENABLE_IT __HAL_RTC_EXTI_ENABLE_IT\r
-\r
-#if defined (STM32F1)\r
-#define __HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_CLEAR_FLAG()\r
-\r
-#define __HAL_RTC_EXTI_ENABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_ENABLE_IT()\r
-\r
-#define __HAL_RTC_EXTI_DISABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_DISABLE_IT()\r
-\r
-#define __HAL_RTC_EXTI_GET_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GET_FLAG()\r
-\r
-#define __HAL_RTC_EXTI_GENERATE_SWIT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GENERATE_SWIT()\r
-#else\r
-#define __HAL_RTC_EXTI_CLEAR_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() : \\r
- (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() : \\r
- __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()))\r
-#define __HAL_RTC_EXTI_ENABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_ENABLE_IT() : \\r
- (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() : \\r
- __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()))\r
-#define __HAL_RTC_EXTI_DISABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_DISABLE_IT() : \\r
- (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() : \\r
- __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()))\r
-#define __HAL_RTC_EXTI_GET_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GET_FLAG() : \\r
- (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() : \\r
- __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()))\r
-#define __HAL_RTC_EXTI_GENERATE_SWIT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() : \\r
- (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() : \\r
- __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()))\r
-#endif /* STM32F1 */\r
-\r
-#define IS_ALARM IS_RTC_ALARM\r
-#define IS_ALARM_MASK IS_RTC_ALARM_MASK\r
-#define IS_TAMPER IS_RTC_TAMPER\r
-#define IS_TAMPER_ERASE_MODE IS_RTC_TAMPER_ERASE_MODE\r
-#define IS_TAMPER_FILTER IS_RTC_TAMPER_FILTER\r
-#define IS_TAMPER_INTERRUPT IS_RTC_TAMPER_INTERRUPT\r
-#define IS_TAMPER_MASKFLAG_STATE IS_RTC_TAMPER_MASKFLAG_STATE\r
-#define IS_TAMPER_PRECHARGE_DURATION IS_RTC_TAMPER_PRECHARGE_DURATION\r
-#define IS_TAMPER_PULLUP_STATE IS_RTC_TAMPER_PULLUP_STATE\r
-#define IS_TAMPER_SAMPLING_FREQ IS_RTC_TAMPER_SAMPLING_FREQ\r
-#define IS_TAMPER_TIMESTAMPONTAMPER_DETECTION IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION\r
-#define IS_TAMPER_TRIGGER IS_RTC_TAMPER_TRIGGER\r
-#define IS_WAKEUP_CLOCK IS_RTC_WAKEUP_CLOCK\r
-#define IS_WAKEUP_COUNTER IS_RTC_WAKEUP_COUNTER\r
-\r
-#define __RTC_WRITEPROTECTION_ENABLE __HAL_RTC_WRITEPROTECTION_ENABLE\r
-#define __RTC_WRITEPROTECTION_DISABLE __HAL_RTC_WRITEPROTECTION_DISABLE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SD_Aliased_Macros HAL SD Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define SD_OCR_CID_CSD_OVERWRIETE SD_OCR_CID_CSD_OVERWRITE\r
-#define SD_CMD_SD_APP_STAUS SD_CMD_SD_APP_STATUS\r
-\r
-#if defined(STM32F4) || defined(STM32F2)\r
-#define SD_SDMMC_DISABLED SD_SDIO_DISABLED\r
-#define SD_SDMMC_FUNCTION_BUSY SD_SDIO_FUNCTION_BUSY\r
-#define SD_SDMMC_FUNCTION_FAILED SD_SDIO_FUNCTION_FAILED\r
-#define SD_SDMMC_UNKNOWN_FUNCTION SD_SDIO_UNKNOWN_FUNCTION\r
-#define SD_CMD_SDMMC_SEN_OP_COND SD_CMD_SDIO_SEN_OP_COND\r
-#define SD_CMD_SDMMC_RW_DIRECT SD_CMD_SDIO_RW_DIRECT\r
-#define SD_CMD_SDMMC_RW_EXTENDED SD_CMD_SDIO_RW_EXTENDED\r
-#define __HAL_SD_SDMMC_ENABLE __HAL_SD_SDIO_ENABLE\r
-#define __HAL_SD_SDMMC_DISABLE __HAL_SD_SDIO_DISABLE\r
-#define __HAL_SD_SDMMC_DMA_ENABLE __HAL_SD_SDIO_DMA_ENABLE\r
-#define __HAL_SD_SDMMC_DMA_DISABLE __HAL_SD_SDIO_DMA_DISABL\r
-#define __HAL_SD_SDMMC_ENABLE_IT __HAL_SD_SDIO_ENABLE_IT\r
-#define __HAL_SD_SDMMC_DISABLE_IT __HAL_SD_SDIO_DISABLE_IT\r
-#define __HAL_SD_SDMMC_GET_FLAG __HAL_SD_SDIO_GET_FLAG\r
-#define __HAL_SD_SDMMC_CLEAR_FLAG __HAL_SD_SDIO_CLEAR_FLAG\r
-#define __HAL_SD_SDMMC_GET_IT __HAL_SD_SDIO_GET_IT\r
-#define __HAL_SD_SDMMC_CLEAR_IT __HAL_SD_SDIO_CLEAR_IT\r
-#define SDMMC_STATIC_FLAGS SDIO_STATIC_FLAGS\r
-#define SDMMC_CMD0TIMEOUT SDIO_CMD0TIMEOUT\r
-#define SD_SDMMC_SEND_IF_COND SD_SDIO_SEND_IF_COND\r
-/* alias CMSIS */\r
-#define SDMMC1_IRQn SDIO_IRQn\r
-#define SDMMC1_IRQHandler SDIO_IRQHandler\r
-#endif\r
-\r
-#if defined(STM32F7) || defined(STM32L4)\r
-#define SD_SDIO_DISABLED SD_SDMMC_DISABLED\r
-#define SD_SDIO_FUNCTION_BUSY SD_SDMMC_FUNCTION_BUSY\r
-#define SD_SDIO_FUNCTION_FAILED SD_SDMMC_FUNCTION_FAILED\r
-#define SD_SDIO_UNKNOWN_FUNCTION SD_SDMMC_UNKNOWN_FUNCTION\r
-#define SD_CMD_SDIO_SEN_OP_COND SD_CMD_SDMMC_SEN_OP_COND\r
-#define SD_CMD_SDIO_RW_DIRECT SD_CMD_SDMMC_RW_DIRECT\r
-#define SD_CMD_SDIO_RW_EXTENDED SD_CMD_SDMMC_RW_EXTENDED\r
-#define __HAL_SD_SDIO_ENABLE __HAL_SD_SDMMC_ENABLE\r
-#define __HAL_SD_SDIO_DISABLE __HAL_SD_SDMMC_DISABLE\r
-#define __HAL_SD_SDIO_DMA_ENABLE __HAL_SD_SDMMC_DMA_ENABLE\r
-#define __HAL_SD_SDIO_DMA_DISABL __HAL_SD_SDMMC_DMA_DISABLE\r
-#define __HAL_SD_SDIO_ENABLE_IT __HAL_SD_SDMMC_ENABLE_IT\r
-#define __HAL_SD_SDIO_DISABLE_IT __HAL_SD_SDMMC_DISABLE_IT\r
-#define __HAL_SD_SDIO_GET_FLAG __HAL_SD_SDMMC_GET_FLAG\r
-#define __HAL_SD_SDIO_CLEAR_FLAG __HAL_SD_SDMMC_CLEAR_FLAG\r
-#define __HAL_SD_SDIO_GET_IT __HAL_SD_SDMMC_GET_IT\r
-#define __HAL_SD_SDIO_CLEAR_IT __HAL_SD_SDMMC_CLEAR_IT\r
-#define SDIO_STATIC_FLAGS SDMMC_STATIC_FLAGS\r
-#define SDIO_CMD0TIMEOUT SDMMC_CMD0TIMEOUT\r
-#define SD_SDIO_SEND_IF_COND SD_SDMMC_SEND_IF_COND\r
-/* alias CMSIS for compatibilities */\r
-#define SDIO_IRQn SDMMC1_IRQn\r
-#define SDIO_IRQHandler SDMMC1_IRQHandler\r
-#endif\r
-\r
-#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2)\r
-#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef\r
-#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef\r
-#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef\r
-#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef\r
-#endif\r
-\r
-#if defined(STM32H7)\r
-#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback\r
-#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback\r
-#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback\r
-#define HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback HAL_MMCEx_Write_DMADoubleBuf1CpltCallback\r
-#define HAL_SDEx_Read_DMADoubleBuffer0CpltCallback HAL_SDEx_Read_DMADoubleBuf0CpltCallback\r
-#define HAL_SDEx_Read_DMADoubleBuffer1CpltCallback HAL_SDEx_Read_DMADoubleBuf1CpltCallback\r
-#define HAL_SDEx_Write_DMADoubleBuffer0CpltCallback HAL_SDEx_Write_DMADoubleBuf0CpltCallback\r
-#define HAL_SDEx_Write_DMADoubleBuffer1CpltCallback HAL_SDEx_Write_DMADoubleBuf1CpltCallback\r
-#define HAL_SD_DriveTransciver_1_8V_Callback HAL_SD_DriveTransceiver_1_8V_Callback\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SMARTCARD_Aliased_Macros HAL SMARTCARD Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __SMARTCARD_ENABLE_IT __HAL_SMARTCARD_ENABLE_IT\r
-#define __SMARTCARD_DISABLE_IT __HAL_SMARTCARD_DISABLE_IT\r
-#define __SMARTCARD_ENABLE __HAL_SMARTCARD_ENABLE\r
-#define __SMARTCARD_DISABLE __HAL_SMARTCARD_DISABLE\r
-#define __SMARTCARD_DMA_REQUEST_ENABLE __HAL_SMARTCARD_DMA_REQUEST_ENABLE\r
-#define __SMARTCARD_DMA_REQUEST_DISABLE __HAL_SMARTCARD_DMA_REQUEST_DISABLE\r
-\r
-#define __HAL_SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE\r
-#define __SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE\r
-\r
-#define IS_SMARTCARD_ONEBIT_SAMPLING IS_SMARTCARD_ONE_BIT_SAMPLE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SMBUS_Aliased_Macros HAL SMBUS Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_SMBUS_RESET_CR1 SMBUS_RESET_CR1\r
-#define __HAL_SMBUS_RESET_CR2 SMBUS_RESET_CR2\r
-#define __HAL_SMBUS_GENERATE_START SMBUS_GENERATE_START\r
-#define __HAL_SMBUS_GET_ADDR_MATCH SMBUS_GET_ADDR_MATCH\r
-#define __HAL_SMBUS_GET_DIR SMBUS_GET_DIR\r
-#define __HAL_SMBUS_GET_STOP_MODE SMBUS_GET_STOP_MODE\r
-#define __HAL_SMBUS_GET_PEC_MODE SMBUS_GET_PEC_MODE\r
-#define __HAL_SMBUS_GET_ALERT_ENABLED SMBUS_GET_ALERT_ENABLED\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SPI_Aliased_Macros HAL SPI Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __HAL_SPI_1LINE_TX SPI_1LINE_TX\r
-#define __HAL_SPI_1LINE_RX SPI_1LINE_RX\r
-#define __HAL_SPI_RESET_CRC SPI_RESET_CRC\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_UART_Aliased_Macros HAL UART Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __HAL_UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE\r
-#define __HAL_UART_MASK_COMPUTATION UART_MASK_COMPUTATION\r
-#define __UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE\r
-#define __UART_MASK_COMPUTATION UART_MASK_COMPUTATION\r
-\r
-#define IS_UART_WAKEUPMETHODE IS_UART_WAKEUPMETHOD\r
-\r
-#define IS_UART_ONEBIT_SAMPLE IS_UART_ONE_BIT_SAMPLE\r
-#define IS_UART_ONEBIT_SAMPLING IS_UART_ONE_BIT_SAMPLE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup HAL_USART_Aliased_Macros HAL USART Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __USART_ENABLE_IT __HAL_USART_ENABLE_IT\r
-#define __USART_DISABLE_IT __HAL_USART_DISABLE_IT\r
-#define __USART_ENABLE __HAL_USART_ENABLE\r
-#define __USART_DISABLE __HAL_USART_DISABLE\r
-\r
-#define __HAL_USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE\r
-#define __USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_USB_Aliased_Macros HAL USB Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define USB_EXTI_LINE_WAKEUP USB_WAKEUP_EXTI_LINE\r
-\r
-#define USB_FS_EXTI_TRIGGER_RISING_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE\r
-#define USB_FS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE\r
-#define USB_FS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE\r
-#define USB_FS_EXTI_LINE_WAKEUP USB_OTG_FS_WAKEUP_EXTI_LINE\r
-\r
-#define USB_HS_EXTI_TRIGGER_RISING_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE\r
-#define USB_HS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE\r
-#define USB_HS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE\r
-#define USB_HS_EXTI_LINE_WAKEUP USB_OTG_HS_WAKEUP_EXTI_LINE\r
-\r
-#define __HAL_USB_EXTI_ENABLE_IT __HAL_USB_WAKEUP_EXTI_ENABLE_IT\r
-#define __HAL_USB_EXTI_DISABLE_IT __HAL_USB_WAKEUP_EXTI_DISABLE_IT\r
-#define __HAL_USB_EXTI_GET_FLAG __HAL_USB_WAKEUP_EXTI_GET_FLAG\r
-#define __HAL_USB_EXTI_CLEAR_FLAG __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG\r
-#define __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE\r
-#define __HAL_USB_EXTI_SET_FALLING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_FALLING_EDGE\r
-#define __HAL_USB_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE\r
-\r
-#define __HAL_USB_FS_EXTI_ENABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT\r
-#define __HAL_USB_FS_EXTI_DISABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT\r
-#define __HAL_USB_FS_EXTI_GET_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG\r
-#define __HAL_USB_FS_EXTI_CLEAR_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG\r
-#define __HAL_USB_FS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE\r
-#define __HAL_USB_FS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE\r
-#define __HAL_USB_FS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE\r
-#define __HAL_USB_FS_EXTI_GENERATE_SWIT __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT\r
-\r
-#define __HAL_USB_HS_EXTI_ENABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT\r
-#define __HAL_USB_HS_EXTI_DISABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT\r
-#define __HAL_USB_HS_EXTI_GET_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG\r
-#define __HAL_USB_HS_EXTI_CLEAR_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG\r
-#define __HAL_USB_HS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE\r
-#define __HAL_USB_HS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_FALLING_EDGE\r
-#define __HAL_USB_HS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE\r
-#define __HAL_USB_HS_EXTI_GENERATE_SWIT __HAL_USB_OTG_HS_WAKEUP_EXTI_GENERATE_SWIT\r
-\r
-#define HAL_PCD_ActiveRemoteWakeup HAL_PCD_ActivateRemoteWakeup\r
-#define HAL_PCD_DeActiveRemoteWakeup HAL_PCD_DeActivateRemoteWakeup\r
-\r
-#define HAL_PCD_SetTxFiFo HAL_PCDEx_SetTxFiFo\r
-#define HAL_PCD_SetRxFiFo HAL_PCDEx_SetRxFiFo\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_TIM_Aliased_Macros HAL TIM Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_TIM_SetICPrescalerValue TIM_SET_ICPRESCALERVALUE\r
-#define __HAL_TIM_ResetICPrescalerValue TIM_RESET_ICPRESCALERVALUE\r
-\r
-#define TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE\r
-#define TIM_GET_CLEAR_IT __HAL_TIM_CLEAR_IT\r
-\r
-#define __HAL_TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE\r
-\r
-#define __HAL_TIM_DIRECTION_STATUS __HAL_TIM_IS_TIM_COUNTING_DOWN\r
-#define __HAL_TIM_PRESCALER __HAL_TIM_SET_PRESCALER\r
-#define __HAL_TIM_SetCounter __HAL_TIM_SET_COUNTER\r
-#define __HAL_TIM_GetCounter __HAL_TIM_GET_COUNTER\r
-#define __HAL_TIM_SetAutoreload __HAL_TIM_SET_AUTORELOAD\r
-#define __HAL_TIM_GetAutoreload __HAL_TIM_GET_AUTORELOAD\r
-#define __HAL_TIM_SetClockDivision __HAL_TIM_SET_CLOCKDIVISION\r
-#define __HAL_TIM_GetClockDivision __HAL_TIM_GET_CLOCKDIVISION\r
-#define __HAL_TIM_SetICPrescaler __HAL_TIM_SET_ICPRESCALER\r
-#define __HAL_TIM_GetICPrescaler __HAL_TIM_GET_ICPRESCALER\r
-#define __HAL_TIM_SetCompare __HAL_TIM_SET_COMPARE\r
-#define __HAL_TIM_GetCompare __HAL_TIM_GET_COMPARE\r
-\r
-#define TIM_BREAKINPUTSOURCE_DFSDM TIM_BREAKINPUTSOURCE_DFSDM1\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_ETH_Aliased_Macros HAL ETH Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-#define __HAL_ETH_EXTI_ENABLE_IT __HAL_ETH_WAKEUP_EXTI_ENABLE_IT\r
-#define __HAL_ETH_EXTI_DISABLE_IT __HAL_ETH_WAKEUP_EXTI_DISABLE_IT\r
-#define __HAL_ETH_EXTI_GET_FLAG __HAL_ETH_WAKEUP_EXTI_GET_FLAG\r
-#define __HAL_ETH_EXTI_CLEAR_FLAG __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG\r
-#define __HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE_TRIGGER\r
-#define __HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE_TRIGGER\r
-#define __HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER\r
-\r
-#define ETH_PROMISCIOUSMODE_ENABLE ETH_PROMISCUOUS_MODE_ENABLE\r
-#define ETH_PROMISCIOUSMODE_DISABLE ETH_PROMISCUOUS_MODE_DISABLE\r
-#define IS_ETH_PROMISCIOUS_MODE IS_ETH_PROMISCUOUS_MODE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_LTDC_Aliased_Macros HAL LTDC Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define __HAL_LTDC_LAYER LTDC_LAYER\r
-#define __HAL_LTDC_RELOAD_CONFIG __HAL_LTDC_RELOAD_IMMEDIATE_CONFIG\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SAI_Aliased_Macros HAL SAI Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#define SAI_OUTPUTDRIVE_DISABLED SAI_OUTPUTDRIVE_DISABLE\r
-#define SAI_OUTPUTDRIVE_ENABLED SAI_OUTPUTDRIVE_ENABLE\r
-#define SAI_MASTERDIVIDER_ENABLED SAI_MASTERDIVIDER_ENABLE\r
-#define SAI_MASTERDIVIDER_DISABLED SAI_MASTERDIVIDER_DISABLE\r
-#define SAI_STREOMODE SAI_STEREOMODE\r
-#define SAI_FIFOStatus_Empty SAI_FIFOSTATUS_EMPTY\r
-#define SAI_FIFOStatus_Less1QuarterFull SAI_FIFOSTATUS_LESS1QUARTERFULL\r
-#define SAI_FIFOStatus_1QuarterFull SAI_FIFOSTATUS_1QUARTERFULL\r
-#define SAI_FIFOStatus_HalfFull SAI_FIFOSTATUS_HALFFULL\r
-#define SAI_FIFOStatus_3QuartersFull SAI_FIFOSTATUS_3QUARTERFULL\r
-#define SAI_FIFOStatus_Full SAI_FIFOSTATUS_FULL\r
-#define IS_SAI_BLOCK_MONO_STREO_MODE IS_SAI_BLOCK_MONO_STEREO_MODE\r
-#define SAI_SYNCHRONOUS_EXT SAI_SYNCHRONOUS_EXT_SAI1\r
-#define SAI_SYNCEXT_IN_ENABLE SAI_SYNCEXT_OUTBLOCKA_ENABLE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_SPDIFRX_Aliased_Macros HAL SPDIFRX Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-#if defined(STM32H7)\r
-#define HAL_SPDIFRX_ReceiveControlFlow HAL_SPDIFRX_ReceiveCtrlFlow\r
-#define HAL_SPDIFRX_ReceiveControlFlow_IT HAL_SPDIFRX_ReceiveCtrlFlow_IT\r
-#define HAL_SPDIFRX_ReceiveControlFlow_DMA HAL_SPDIFRX_ReceiveCtrlFlow_DMA\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose\r
- * @{\r
- */\r
-#if defined (STM32H7) || defined (STM32F3)\r
-#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT\r
-#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA\r
-#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart\r
-#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT\r
-#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA\r
-#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* STM32_HAL_LEGACY */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
-\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal.h\r
- * @author MCD Application Team\r
- * @brief This file contains all the functions prototypes for the HAL \r
- * module driver.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_H\r
-#define __STM32F7xx_HAL_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_conf.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup HAL\r
- * @{\r
- */ \r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup HAL_Exported_Constants HAL Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup HAL_TICK_FREQ Tick Frequency\r
- * @{\r
- */\r
-typedef enum\r
-{\r
- HAL_TICK_FREQ_10HZ = 100U,\r
- HAL_TICK_FREQ_100HZ = 10U,\r
- HAL_TICK_FREQ_1KHZ = 1U,\r
- HAL_TICK_FREQ_DEFAULT = HAL_TICK_FREQ_1KHZ\r
-} HAL_TickFreqTypeDef;\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup SYSCFG_BootMode Boot Mode\r
- * @{\r
- */\r
-#define SYSCFG_MEM_BOOT_ADD0 ((uint32_t)0x00000000U)\r
-#define SYSCFG_MEM_BOOT_ADD1 SYSCFG_MEMRMP_MEM_BOOT\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup HAL_Exported_Macros HAL Exported Macros\r
- * @{\r
- */\r
- \r
-/** @brief Freeze/Unfreeze Peripherals in Debug mode \r
- */\r
-#define __HAL_DBGMCU_FREEZE_TIM2() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM2_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM3() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM3_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM4() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM4_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM5() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM5_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM6() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM6_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM7() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM7_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM12() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM12_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM13() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM13_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM14() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM14_STOP))\r
-#define __HAL_DBGMCU_FREEZE_LPTIM1() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_LPTIM1_STOP))\r
-#define __HAL_DBGMCU_FREEZE_RTC() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_RTC_STOP))\r
-#define __HAL_DBGMCU_FREEZE_WWDG() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_WWDG_STOP))\r
-#define __HAL_DBGMCU_FREEZE_IWDG() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_IWDG_STOP))\r
-#define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_FREEZE_I2C4_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_FREEZE_CAN1() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_CAN1_STOP))\r
-#define __HAL_DBGMCU_FREEZE_CAN2() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_CAN2_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM1() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM1_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM8() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM8_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM9() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM9_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM10() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM10_STOP))\r
-#define __HAL_DBGMCU_FREEZE_TIM11() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM11_STOP))\r
-\r
-#define __HAL_DBGMCU_UNFREEZE_TIM2() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM2_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM3() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM3_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM4() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM4_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM5() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM5_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM6() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM6_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM7() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM7_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM12() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM12_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM13() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM13_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM14() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM14_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_LPTIM1() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_LPTIM1_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_RTC() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_RTC_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_WWDG() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_WWDG_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_IWDG() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_IWDG_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_UNFREEZE_I2C4_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT))\r
-#define __HAL_DBGMCU_UNFREEZE_CAN1() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_CAN1_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_CAN2() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_CAN2_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM1() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM1_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM8() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM8_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM9() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM9_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM10() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM10_STOP))\r
-#define __HAL_DBGMCU_UNFREEZE_TIM11() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM11_STOP))\r
-\r
-\r
-/** @brief FMC (NOR/RAM) mapped at 0x60000000 and SDRAM mapped at 0xC0000000\r
- */\r
-#define __HAL_SYSCFG_REMAPMEMORY_FMC() (SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_SWP_FMC))\r
- \r
-\r
-/** @brief FMC/SDRAM mapped at 0x60000000 (NOR/RAM) mapped at 0xC0000000\r
- */\r
-#define __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM() do {SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_SWP_FMC);\\r
- SYSCFG->MEMRMP |= (SYSCFG_MEMRMP_SWP_FMC_0);\\r
- }while(0);\r
-/**\r
- * @brief Return the memory boot mapping as configured by user.\r
- * @retval The boot mode as configured by user. The returned value can be one\r
- * of the following values:\r
- * @arg @ref SYSCFG_MEM_BOOT_ADD0\r
- * @arg @ref SYSCFG_MEM_BOOT_ADD1\r
- */\r
-#define __HAL_SYSCFG_GET_BOOT_MODE() READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_BOOT)\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-/** @brief SYSCFG Break Cortex-M7 Lockup lock.\r
- * Enable and lock the connection of Cortex-M7 LOCKUP (Hardfault) output to TIM1/8 Break input.\r
- * @note The selected configuration is locked and can be unlocked only by system reset.\r
- */\r
-#define __HAL_SYSCFG_BREAK_LOCKUP_LOCK() SET_BIT(SYSCFG->CBR, SYSCFG_CBR_CLL)\r
-\r
-/** @brief SYSCFG Break PVD lock.\r
- * Enable and lock the PVD connection to Timer1/8 Break input, as well as the PVDE and PLS[2:0] in the PWR_CR1 register.\r
- * @note The selected configuration is locked and can be unlocked only by system reset.\r
- */\r
-#define __HAL_SYSCFG_BREAK_PVD_LOCK() SET_BIT(SYSCFG->CBR, SYSCFG_CBR_PVDL)\r
-#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup HAL_Private_Macros HAL Private Macros\r
- * @{\r
- */\r
-#define IS_TICKFREQ(FREQ) (((FREQ) == HAL_TICK_FREQ_10HZ) || \\r
- ((FREQ) == HAL_TICK_FREQ_100HZ) || \\r
- ((FREQ) == HAL_TICK_FREQ_1KHZ))\r
-/**\r
- * @}\r
- */\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup HAL_Exported_Functions\r
- * @{\r
- */\r
-/** @addtogroup HAL_Exported_Functions_Group1\r
- * @{\r
- */\r
-/* Initialization and Configuration functions ******************************/\r
-HAL_StatusTypeDef HAL_Init(void);\r
-HAL_StatusTypeDef HAL_DeInit(void);\r
-void HAL_MspInit(void);\r
-void HAL_MspDeInit(void);\r
-HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority);\r
-/**\r
- * @}\r
- */\r
- \r
- /* Exported variables ---------------------------------------------------------*/\r
-/** @addtogroup HAL_Exported_Variables\r
- * @{\r
- */\r
-extern __IO uint32_t uwTick;\r
-extern uint32_t uwTickPrio;\r
-extern HAL_TickFreqTypeDef uwTickFreq;\r
-/**\r
- * @}\r
- */\r
- \r
-/** @addtogroup HAL_Exported_Functions_Group2\r
- * @{\r
- */ \r
-/* Peripheral Control functions ************************************************/\r
-void HAL_IncTick(void);\r
-void HAL_Delay(uint32_t Delay);\r
-uint32_t HAL_GetTick(void);\r
-uint32_t HAL_GetTickPrio(void);\r
-HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq);\r
-HAL_TickFreqTypeDef HAL_GetTickFreq(void);\r
-void HAL_SuspendTick(void);\r
-void HAL_ResumeTick(void);\r
-uint32_t HAL_GetHalVersion(void);\r
-uint32_t HAL_GetREVID(void);\r
-uint32_t HAL_GetDEVID(void);\r
-uint32_t HAL_GetUIDw0(void);\r
-uint32_t HAL_GetUIDw1(void);\r
-uint32_t HAL_GetUIDw2(void);\r
-void HAL_DBGMCU_EnableDBGSleepMode(void);\r
-void HAL_DBGMCU_DisableDBGSleepMode(void);\r
-void HAL_DBGMCU_EnableDBGStopMode(void);\r
-void HAL_DBGMCU_DisableDBGStopMode(void);\r
-void HAL_DBGMCU_EnableDBGStandbyMode(void);\r
-void HAL_DBGMCU_DisableDBGStandbyMode(void);\r
-void HAL_EnableCompensationCell(void);\r
-void HAL_DisableCompensationCell(void);\r
-void HAL_EnableFMCMemorySwapping(void);\r
-void HAL_DisableFMCMemorySwapping(void);\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-void HAL_EnableMemorySwappingBank(void);\r
-void HAL_DisableMemorySwappingBank(void);\r
-#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/** @defgroup HAL_Private_Variables HAL Private Variables\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup HAL_Private_Constants HAL Private Constants\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-/* Private macros ------------------------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */ \r
- \r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_cortex.h\r
- * @author MCD Application Team\r
- * @brief Header file of CORTEX HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_CORTEX_H\r
-#define __STM32F7xx_HAL_CORTEX_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup CORTEX\r
- * @{\r
- */ \r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup CORTEX_Exported_Types Cortex Exported Types\r
- * @{\r
- */\r
-\r
-#if (__MPU_PRESENT == 1)\r
-/** @defgroup CORTEX_MPU_Region_Initialization_Structure_definition MPU Region Initialization Structure Definition\r
- * @brief MPU Region initialization structure \r
- * @{\r
- */\r
-typedef struct\r
-{\r
- uint8_t Enable; /*!< Specifies the status of the region. \r
- This parameter can be a value of @ref CORTEX_MPU_Region_Enable */\r
- uint8_t Number; /*!< Specifies the number of the region to protect. \r
- This parameter can be a value of @ref CORTEX_MPU_Region_Number */\r
- uint32_t BaseAddress; /*!< Specifies the base address of the region to protect. */\r
- uint8_t Size; /*!< Specifies the size of the region to protect. \r
- This parameter can be a value of @ref CORTEX_MPU_Region_Size */\r
- uint8_t SubRegionDisable; /*!< Specifies the number of the subregion protection to disable. \r
- This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */ \r
- uint8_t TypeExtField; /*!< Specifies the TEX field level.\r
- This parameter can be a value of @ref CORTEX_MPU_TEX_Levels */ \r
- uint8_t AccessPermission; /*!< Specifies the region access permission type. \r
- This parameter can be a value of @ref CORTEX_MPU_Region_Permission_Attributes */\r
- uint8_t DisableExec; /*!< Specifies the instruction access status. \r
- This parameter can be a value of @ref CORTEX_MPU_Instruction_Access */\r
- uint8_t IsShareable; /*!< Specifies the shareability status of the protected region. \r
- This parameter can be a value of @ref CORTEX_MPU_Access_Shareable */\r
- uint8_t IsCacheable; /*!< Specifies the cacheable status of the region protected. \r
- This parameter can be a value of @ref CORTEX_MPU_Access_Cacheable */\r
- uint8_t IsBufferable; /*!< Specifies the bufferable status of the protected region. \r
- This parameter can be a value of @ref CORTEX_MPU_Access_Bufferable */\r
-}MPU_Region_InitTypeDef;\r
-/**\r
- * @}\r
- */\r
-#endif /* __MPU_PRESENT */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup CORTEX_Preemption_Priority_Group CORTEX Preemption Priority Group\r
- * @{\r
- */\r
-#define NVIC_PRIORITYGROUP_0 ((uint32_t)0x00000007U) /*!< 0 bits for pre-emption priority\r
- 4 bits for subpriority */\r
-#define NVIC_PRIORITYGROUP_1 ((uint32_t)0x00000006U) /*!< 1 bits for pre-emption priority\r
- 3 bits for subpriority */\r
-#define NVIC_PRIORITYGROUP_2 ((uint32_t)0x00000005U) /*!< 2 bits for pre-emption priority\r
- 2 bits for subpriority */\r
-#define NVIC_PRIORITYGROUP_3 ((uint32_t)0x00000004U) /*!< 3 bits for pre-emption priority\r
- 1 bits for subpriority */\r
-#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003U) /*!< 4 bits for pre-emption priority\r
- 0 bits for subpriority */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_SysTick_clock_source CORTEX _SysTick clock source \r
- * @{\r
- */\r
-#define SYSTICK_CLKSOURCE_HCLK_DIV8 ((uint32_t)0x00000000U)\r
-#define SYSTICK_CLKSOURCE_HCLK ((uint32_t)0x00000004U)\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#if (__MPU_PRESENT == 1)\r
-/** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control MPU HFNMI and PRIVILEGED Access control\r
- * @{\r
- */\r
-#define MPU_HFNMI_PRIVDEF_NONE ((uint32_t)0x00000000U) \r
-#define MPU_HARDFAULT_NMI ((uint32_t)0x00000002U)\r
-#define MPU_PRIVILEGED_DEFAULT ((uint32_t)0x00000004U)\r
-#define MPU_HFNMI_PRIVDEF ((uint32_t)0x00000006U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_Region_Enable CORTEX MPU Region Enable\r
- * @{\r
- */\r
-#define MPU_REGION_ENABLE ((uint8_t)0x01U)\r
-#define MPU_REGION_DISABLE ((uint8_t)0x00U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_Instruction_Access CORTEX MPU Instruction Access\r
- * @{\r
- */\r
-#define MPU_INSTRUCTION_ACCESS_ENABLE ((uint8_t)0x00U)\r
-#define MPU_INSTRUCTION_ACCESS_DISABLE ((uint8_t)0x01U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_Access_Shareable CORTEX MPU Instruction Access Shareable\r
- * @{\r
- */\r
-#define MPU_ACCESS_SHAREABLE ((uint8_t)0x01U)\r
-#define MPU_ACCESS_NOT_SHAREABLE ((uint8_t)0x00U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_Access_Cacheable CORTEX MPU Instruction Access Cacheable\r
- * @{\r
- */\r
-#define MPU_ACCESS_CACHEABLE ((uint8_t)0x01U)\r
-#define MPU_ACCESS_NOT_CACHEABLE ((uint8_t)0x00U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_Access_Bufferable CORTEX MPU Instruction Access Bufferable\r
- * @{\r
- */\r
-#define MPU_ACCESS_BUFFERABLE ((uint8_t)0x01U)\r
-#define MPU_ACCESS_NOT_BUFFERABLE ((uint8_t)0x00U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_TEX_Levels MPU TEX Levels\r
- * @{\r
- */\r
-#define MPU_TEX_LEVEL0 ((uint8_t)0x00U)\r
-#define MPU_TEX_LEVEL1 ((uint8_t)0x01U)\r
-#define MPU_TEX_LEVEL2 ((uint8_t)0x02U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_Region_Size CORTEX MPU Region Size\r
- * @{\r
- */\r
-#define MPU_REGION_SIZE_32B ((uint8_t)0x04U)\r
-#define MPU_REGION_SIZE_64B ((uint8_t)0x05U)\r
-#define MPU_REGION_SIZE_128B ((uint8_t)0x06U) \r
-#define MPU_REGION_SIZE_256B ((uint8_t)0x07U) \r
-#define MPU_REGION_SIZE_512B ((uint8_t)0x08U) \r
-#define MPU_REGION_SIZE_1KB ((uint8_t)0x09U) \r
-#define MPU_REGION_SIZE_2KB ((uint8_t)0x0AU)\r
-#define MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) \r
-#define MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) \r
-#define MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) \r
-#define MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) \r
-#define MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) \r
-#define MPU_REGION_SIZE_128KB ((uint8_t)0x10U)\r
-#define MPU_REGION_SIZE_256KB ((uint8_t)0x11U)\r
-#define MPU_REGION_SIZE_512KB ((uint8_t)0x12U)\r
-#define MPU_REGION_SIZE_1MB ((uint8_t)0x13U) \r
-#define MPU_REGION_SIZE_2MB ((uint8_t)0x14U) \r
-#define MPU_REGION_SIZE_4MB ((uint8_t)0x15U) \r
-#define MPU_REGION_SIZE_8MB ((uint8_t)0x16U) \r
-#define MPU_REGION_SIZE_16MB ((uint8_t)0x17U)\r
-#define MPU_REGION_SIZE_32MB ((uint8_t)0x18U)\r
-#define MPU_REGION_SIZE_64MB ((uint8_t)0x19U)\r
-#define MPU_REGION_SIZE_128MB ((uint8_t)0x1AU)\r
-#define MPU_REGION_SIZE_256MB ((uint8_t)0x1BU)\r
-#define MPU_REGION_SIZE_512MB ((uint8_t)0x1CU)\r
-#define MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) \r
-#define MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) \r
-#define MPU_REGION_SIZE_4GB ((uint8_t)0x1FU)\r
-/** \r
- * @}\r
- */\r
- \r
-/** @defgroup CORTEX_MPU_Region_Permission_Attributes CORTEX MPU Region Permission Attributes \r
- * @{\r
- */\r
-#define MPU_REGION_NO_ACCESS ((uint8_t)0x00U) \r
-#define MPU_REGION_PRIV_RW ((uint8_t)0x01U) \r
-#define MPU_REGION_PRIV_RW_URO ((uint8_t)0x02U) \r
-#define MPU_REGION_FULL_ACCESS ((uint8_t)0x03U) \r
-#define MPU_REGION_PRIV_RO ((uint8_t)0x05U) \r
-#define MPU_REGION_PRIV_RO_URO ((uint8_t)0x06U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_MPU_Region_Number CORTEX MPU Region Number\r
- * @{\r
- */\r
-#define MPU_REGION_NUMBER0 ((uint8_t)0x00U) \r
-#define MPU_REGION_NUMBER1 ((uint8_t)0x01U) \r
-#define MPU_REGION_NUMBER2 ((uint8_t)0x02U) \r
-#define MPU_REGION_NUMBER3 ((uint8_t)0x03U) \r
-#define MPU_REGION_NUMBER4 ((uint8_t)0x04U) \r
-#define MPU_REGION_NUMBER5 ((uint8_t)0x05U)\r
-#define MPU_REGION_NUMBER6 ((uint8_t)0x06U)\r
-#define MPU_REGION_NUMBER7 ((uint8_t)0x07U)\r
-/**\r
- * @}\r
- */\r
-#endif /* __MPU_PRESENT */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/* Exported Macros -----------------------------------------------------------*/\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup CORTEX_Exported_Functions\r
- * @{\r
- */\r
- \r
-/** @addtogroup CORTEX_Exported_Functions_Group1\r
- * @{\r
- */\r
-/* Initialization and de-initialization functions *****************************/\r
-void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup);\r
-void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);\r
-void HAL_NVIC_EnableIRQ(IRQn_Type IRQn);\r
-void HAL_NVIC_DisableIRQ(IRQn_Type IRQn);\r
-void HAL_NVIC_SystemReset(void);\r
-uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup CORTEX_Exported_Functions_Group2\r
- * @{\r
- */\r
-/* Peripheral Control functions ***********************************************/\r
-#if (__MPU_PRESENT == 1)\r
-void HAL_MPU_Enable(uint32_t MPU_Control);\r
-void HAL_MPU_Disable(void);\r
-void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init);\r
-#endif /* __MPU_PRESENT */\r
-uint32_t HAL_NVIC_GetPriorityGrouping(void);\r
-void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority);\r
-uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn);\r
-void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn);\r
-void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn);\r
-uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn);\r
-void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource);\r
-void HAL_SYSTICK_IRQHandler(void);\r
-void HAL_SYSTICK_Callback(void);\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private types -------------------------------------------------------------*/ \r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup CORTEX_Private_Macros CORTEX Private Macros\r
- * @{\r
- */\r
-#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PRIORITYGROUP_0) || \\r
- ((GROUP) == NVIC_PRIORITYGROUP_1) || \\r
- ((GROUP) == NVIC_PRIORITYGROUP_2) || \\r
- ((GROUP) == NVIC_PRIORITYGROUP_3) || \\r
- ((GROUP) == NVIC_PRIORITYGROUP_4))\r
-\r
-#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x10U)\r
-\r
-#define IS_NVIC_SUB_PRIORITY(PRIORITY) ((PRIORITY) < 0x10U)\r
-\r
-#define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= 0x00)\r
-\r
-#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \\r
- ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8))\r
-\r
-#if (__MPU_PRESENT == 1)\r
-#define IS_MPU_REGION_ENABLE(STATE) (((STATE) == MPU_REGION_ENABLE) || \\r
- ((STATE) == MPU_REGION_DISABLE))\r
-\r
-#define IS_MPU_INSTRUCTION_ACCESS(STATE) (((STATE) == MPU_INSTRUCTION_ACCESS_ENABLE) || \\r
- ((STATE) == MPU_INSTRUCTION_ACCESS_DISABLE))\r
-\r
-#define IS_MPU_ACCESS_SHAREABLE(STATE) (((STATE) == MPU_ACCESS_SHAREABLE) || \\r
- ((STATE) == MPU_ACCESS_NOT_SHAREABLE))\r
-\r
-#define IS_MPU_ACCESS_CACHEABLE(STATE) (((STATE) == MPU_ACCESS_CACHEABLE) || \\r
- ((STATE) == MPU_ACCESS_NOT_CACHEABLE))\r
-\r
-#define IS_MPU_ACCESS_BUFFERABLE(STATE) (((STATE) == MPU_ACCESS_BUFFERABLE) || \\r
- ((STATE) == MPU_ACCESS_NOT_BUFFERABLE))\r
-\r
-#define IS_MPU_TEX_LEVEL(TYPE) (((TYPE) == MPU_TEX_LEVEL0) || \\r
- ((TYPE) == MPU_TEX_LEVEL1) || \\r
- ((TYPE) == MPU_TEX_LEVEL2))\r
-\r
-#define IS_MPU_REGION_PERMISSION_ATTRIBUTE(TYPE) (((TYPE) == MPU_REGION_NO_ACCESS) || \\r
- ((TYPE) == MPU_REGION_PRIV_RW) || \\r
- ((TYPE) == MPU_REGION_PRIV_RW_URO) || \\r
- ((TYPE) == MPU_REGION_FULL_ACCESS) || \\r
- ((TYPE) == MPU_REGION_PRIV_RO) || \\r
- ((TYPE) == MPU_REGION_PRIV_RO_URO))\r
-\r
-#define IS_MPU_REGION_NUMBER(NUMBER) (((NUMBER) == MPU_REGION_NUMBER0) || \\r
- ((NUMBER) == MPU_REGION_NUMBER1) || \\r
- ((NUMBER) == MPU_REGION_NUMBER2) || \\r
- ((NUMBER) == MPU_REGION_NUMBER3) || \\r
- ((NUMBER) == MPU_REGION_NUMBER4) || \\r
- ((NUMBER) == MPU_REGION_NUMBER5) || \\r
- ((NUMBER) == MPU_REGION_NUMBER6) || \\r
- ((NUMBER) == MPU_REGION_NUMBER7))\r
-\r
-#define IS_MPU_REGION_SIZE(SIZE) (((SIZE) == MPU_REGION_SIZE_32B) || \\r
- ((SIZE) == MPU_REGION_SIZE_64B) || \\r
- ((SIZE) == MPU_REGION_SIZE_128B) || \\r
- ((SIZE) == MPU_REGION_SIZE_256B) || \\r
- ((SIZE) == MPU_REGION_SIZE_512B) || \\r
- ((SIZE) == MPU_REGION_SIZE_1KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_2KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_4KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_8KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_16KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_32KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_64KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_128KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_256KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_512KB) || \\r
- ((SIZE) == MPU_REGION_SIZE_1MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_2MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_4MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_8MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_16MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_32MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_64MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_128MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_256MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_512MB) || \\r
- ((SIZE) == MPU_REGION_SIZE_1GB) || \\r
- ((SIZE) == MPU_REGION_SIZE_2GB) || \\r
- ((SIZE) == MPU_REGION_SIZE_4GB))\r
-\r
-#define IS_MPU_SUB_REGION_DISABLE(SUBREGION) ((SUBREGION) < (uint16_t)0x00FFU)\r
-#endif /* __MPU_PRESENT */\r
-\r
-/** \r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
- \r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_CORTEX_H */\r
- \r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_def.h\r
- * @author MCD Application Team\r
- * @brief This file contains HAL common defines, enumeration, macros and \r
- * structures definitions. \r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_DEF\r
-#define __STM32F7xx_HAL_DEF\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx.h"\r
-#include "Legacy/stm32_hal_legacy.h"\r
-#include <stddef.h>\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-\r
-/** \r
- * @brief HAL Status structures definition \r
- */ \r
-typedef enum \r
-{\r
- HAL_OK = 0x00U,\r
- HAL_ERROR = 0x01U,\r
- HAL_BUSY = 0x02U,\r
- HAL_TIMEOUT = 0x03U\r
-} HAL_StatusTypeDef;\r
-\r
-/** \r
- * @brief HAL Lock structures definition \r
- */\r
-typedef enum \r
-{\r
- HAL_UNLOCKED = 0x00U,\r
- HAL_LOCKED = 0x01U \r
-} HAL_LockTypeDef;\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-\r
-#define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */\r
-\r
-#define HAL_MAX_DELAY 0xFFFFFFFFU\r
-\r
-#define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) == (BIT))\r
-#define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == 0U)\r
-\r
-#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \\r
- do{ \\r
- (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \\r
- (__DMA_HANDLE__).Parent = (__HANDLE__); \\r
- } while(0)\r
-\r
-/** @brief Reset the Handle's State field.\r
- * @param __HANDLE__ specifies the Peripheral Handle.\r
- * @note This macro can be used for the following purpose: \r
- * - When the Handle is declared as local variable; before passing it as parameter\r
- * to HAL_PPP_Init() for the first time, it is mandatory to use this macro \r
- * to set to 0 the Handle's "State" field.\r
- * Otherwise, "State" field may have any random value and the first time the function \r
- * HAL_PPP_Init() is called, the low level hardware initialization will be missed\r
- * (i.e. HAL_PPP_MspInit() will not be executed).\r
- * - When there is a need to reconfigure the low level hardware: instead of calling\r
- * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init().\r
- * In this later function, when the Handle's "State" field is set to 0, it will execute the function\r
- * HAL_PPP_MspInit() which will reconfigure the low level hardware.\r
- * @retval None\r
- */\r
-#define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0U)\r
-\r
-#if (USE_RTOS == 1U)\r
- /* Reserved for future use */\r
- #error "USE_RTOS should be 0 in the current HAL release"\r
-#else\r
- #define __HAL_LOCK(__HANDLE__) \\r
- do{ \\r
- if((__HANDLE__)->Lock == HAL_LOCKED) \\r
- { \\r
- return HAL_BUSY; \\r
- } \\r
- else \\r
- { \\r
- (__HANDLE__)->Lock = HAL_LOCKED; \\r
- } \\r
- }while (0U)\r
-\r
- #define __HAL_UNLOCK(__HANDLE__) \\r
- do{ \\r
- (__HANDLE__)->Lock = HAL_UNLOCKED; \\r
- }while (0U)\r
-#endif /* USE_RTOS */\r
-\r
-#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */\r
- #ifndef __weak\r
- #define __weak __attribute__((weak))\r
- #endif /* __weak */\r
- #ifndef __packed\r
- #define __packed __attribute__((__packed__))\r
- #endif /* __packed */\r
-#endif /* __GNUC__ */\r
-\r
-\r
-/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */\r
-#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */\r
- #ifndef __ALIGN_END\r
- #define __ALIGN_END __attribute__ ((aligned (4)))\r
- #endif /* __ALIGN_END */\r
- #ifndef __ALIGN_BEGIN \r
- #define __ALIGN_BEGIN\r
- #endif /* __ALIGN_BEGIN */\r
-#else\r
- #ifndef __ALIGN_END\r
- #define __ALIGN_END\r
- #endif /* __ALIGN_END */\r
- #ifndef __ALIGN_BEGIN \r
- #if defined (__CC_ARM) /* ARM Compiler */\r
- #define __ALIGN_BEGIN __align(4)\r
- #elif defined (__ICCARM__) /* IAR Compiler */\r
- #define __ALIGN_BEGIN \r
- #endif /* __CC_ARM */\r
- #endif /* __ALIGN_BEGIN */\r
-#endif /* __GNUC__ */\r
-\r
-/* Macro to get variable aligned on 32-bytes,needed for cache maintenance purpose */\r
-#if defined (__GNUC__) /* GNU Compiler */\r
- #define ALIGN_32BYTES(buf) buf __attribute__ ((aligned (32)))\r
-#elif defined (__ICCARM__) /* IAR Compiler */\r
- #define ALIGN_32BYTES(buf) _Pragma("data_alignment=32") buf\r
-#elif defined (__CC_ARM) /* ARM Compiler */\r
- #define ALIGN_32BYTES(buf) __align(32) buf\r
-#endif\r
-\r
-/**\r
- * @brief __RAM_FUNC definition\r
- */ \r
-#if defined ( __CC_ARM )\r
-/* ARM Compiler\r
- ------------\r
- RAM functions are defined using the toolchain options. \r
- Functions that are executed in RAM should reside in a separate source module.\r
- Using the 'Options for File' dialog you can simply change the 'Code / Const' \r
- area of a module to a memory space in physical RAM.\r
- Available memory areas are declared in the 'Target' tab of the 'Options for Target'\r
- dialog. \r
-*/\r
-#define __RAM_FUNC \r
-\r
-#elif defined ( __ICCARM__ )\r
-/* ICCARM Compiler\r
- ---------------\r
- RAM functions are defined using a specific toolchain keyword "__ramfunc". \r
-*/\r
-#define __RAM_FUNC __ramfunc\r
-\r
-#elif defined ( __GNUC__ )\r
-/* GNU Compiler\r
- ------------\r
- RAM functions are defined using a specific toolchain attribute \r
- "__attribute__((section(".RamFunc")))".\r
-*/\r
-#define __RAM_FUNC __attribute__((section(".RamFunc")))\r
-\r
-#endif\r
-\r
-/** \r
- * @brief __NOINLINE definition\r
- */ \r
-#if defined ( __CC_ARM ) || defined ( __GNUC__ )\r
-/* ARM & GNUCompiler \r
- ---------------- \r
-*/\r
-#define __NOINLINE __attribute__ ( (noinline) )\r
-\r
-#elif defined ( __ICCARM__ )\r
-/* ICCARM Compiler\r
- ---------------\r
-*/\r
-#define __NOINLINE _Pragma("optimize = no_inline")\r
-\r
-#endif\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* ___STM32F7xx_HAL_DEF */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_dma.h\r
- * @author MCD Application Team\r
- * @brief Header file of DMA HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_DMA_H\r
-#define __STM32F7xx_HAL_DMA_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup DMA\r
- * @{\r
- */ \r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-\r
-/** @defgroup DMA_Exported_Types DMA Exported Types\r
- * @brief DMA Exported Types \r
- * @{\r
- */\r
- \r
-/** \r
- * @brief DMA Configuration Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t Channel; /*!< Specifies the channel used for the specified stream. \r
- This parameter can be a value of @ref DMAEx_Channel_selection */\r
-\r
- uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, \r
- from memory to memory or from peripheral to memory.\r
- This parameter can be a value of @ref DMA_Data_transfer_direction */\r
-\r
- uint32_t PeriphInc; /*!< Specifies whether the Peripheral address register should be incremented or not.\r
- This parameter can be a value of @ref DMA_Peripheral_incremented_mode */\r
-\r
- uint32_t MemInc; /*!< Specifies whether the memory address register should be incremented or not.\r
- This parameter can be a value of @ref DMA_Memory_incremented_mode */\r
-\r
- uint32_t PeriphDataAlignment; /*!< Specifies the Peripheral data width.\r
- This parameter can be a value of @ref DMA_Peripheral_data_size */\r
-\r
- uint32_t MemDataAlignment; /*!< Specifies the Memory data width.\r
- This parameter can be a value of @ref DMA_Memory_data_size */\r
-\r
- uint32_t Mode; /*!< Specifies the operation mode of the DMAy Streamx.\r
- This parameter can be a value of @ref DMA_mode\r
- @note The circular buffer mode cannot be used if the memory-to-memory\r
- data transfer is configured on the selected Stream */\r
-\r
- uint32_t Priority; /*!< Specifies the software priority for the DMAy Streamx.\r
- This parameter can be a value of @ref DMA_Priority_level */\r
-\r
- uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream.\r
- This parameter can be a value of @ref DMA_FIFO_direct_mode\r
- @note The Direct mode (FIFO mode disabled) cannot be used if the \r
- memory-to-memory data transfer is configured on the selected stream */\r
-\r
- uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level.\r
- This parameter can be a value of @ref DMA_FIFO_threshold_level */\r
-\r
- uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory transfers. \r
- It specifies the amount of data to be transferred in a single non interruptible \r
- transaction.\r
- This parameter can be a value of @ref DMA_Memory_burst \r
- @note The burst mode is possible only if the address Increment mode is enabled. */\r
-\r
- uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripheral transfers. \r
- It specifies the amount of data to be transferred in a single non interruptible \r
- transaction. \r
- This parameter can be a value of @ref DMA_Peripheral_burst\r
- @note The burst mode is possible only if the address Increment mode is enabled. */\r
-}DMA_InitTypeDef;\r
-\r
-/** \r
- * @brief HAL DMA State structures definition\r
- */\r
-typedef enum\r
-{\r
- HAL_DMA_STATE_RESET = 0x00U, /*!< DMA not yet initialized or disabled */\r
- HAL_DMA_STATE_READY = 0x01U, /*!< DMA initialized and ready for use */\r
- HAL_DMA_STATE_BUSY = 0x02U, /*!< DMA process is ongoing */\r
- HAL_DMA_STATE_TIMEOUT = 0x03U, /*!< DMA timeout state */\r
- HAL_DMA_STATE_ERROR = 0x04U, /*!< DMA error state */\r
- HAL_DMA_STATE_ABORT = 0x05U, /*!< DMA Abort state */\r
-}HAL_DMA_StateTypeDef;\r
-\r
-/** \r
- * @brief HAL DMA Error Code structure definition\r
- */\r
-typedef enum\r
-{\r
- HAL_DMA_FULL_TRANSFER = 0x00U, /*!< Full transfer */\r
- HAL_DMA_HALF_TRANSFER = 0x01U, /*!< Half Transfer */\r
-}HAL_DMA_LevelCompleteTypeDef;\r
-\r
-/** \r
- * @brief HAL DMA Error Code structure definition\r
- */\r
-typedef enum\r
-{\r
- HAL_DMA_XFER_CPLT_CB_ID = 0x00U, /*!< Full transfer */\r
- HAL_DMA_XFER_HALFCPLT_CB_ID = 0x01U, /*!< Half Transfer */\r
- HAL_DMA_XFER_M1CPLT_CB_ID = 0x02U, /*!< M1 Full Transfer */\r
- HAL_DMA_XFER_M1HALFCPLT_CB_ID = 0x03U, /*!< M1 Half Transfer */\r
- HAL_DMA_XFER_ERROR_CB_ID = 0x04U, /*!< Error */\r
- HAL_DMA_XFER_ABORT_CB_ID = 0x05U, /*!< Abort */\r
- HAL_DMA_XFER_ALL_CB_ID = 0x06U /*!< All */\r
-}HAL_DMA_CallbackIDTypeDef;\r
-\r
-/** \r
- * @brief DMA handle Structure definition\r
- */\r
-typedef struct __DMA_HandleTypeDef\r
-{\r
- DMA_Stream_TypeDef *Instance; /*!< Register base address */\r
-\r
- DMA_InitTypeDef Init; /*!< DMA communication parameters */ \r
-\r
- HAL_LockTypeDef Lock; /*!< DMA locking object */ \r
-\r
- __IO HAL_DMA_StateTypeDef State; /*!< DMA transfer state */\r
-\r
- void *Parent; /*!< Parent object state */ \r
-\r
- void (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer complete callback */\r
-\r
- void (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA Half transfer complete callback */\r
-\r
- void (* XferM1CpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer complete Memory1 callback */\r
- \r
- void (* XferM1HalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer Half complete Memory1 callback */\r
- \r
- void (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer error callback */\r
- \r
- void (* XferAbortCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer Abort callback */ \r
-\r
- __IO uint32_t ErrorCode; /*!< DMA Error code */\r
- \r
- uint32_t StreamBaseAddress; /*!< DMA Stream Base Address */\r
-\r
- uint32_t StreamIndex; /*!< DMA Stream Index */\r
- \r
-}DMA_HandleTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup DMA_Exported_Constants DMA Exported Constants\r
- * @brief DMA Exported constants \r
- * @{\r
- */\r
-\r
-/** @defgroup DMA_Error_Code DMA Error Code\r
- * @brief DMA Error Code \r
- * @{\r
- */ \r
-#define HAL_DMA_ERROR_NONE 0x00000000U /*!< No error */\r
-#define HAL_DMA_ERROR_TE 0x00000001U /*!< Transfer error */\r
-#define HAL_DMA_ERROR_FE 0x00000002U /*!< FIFO error */\r
-#define HAL_DMA_ERROR_DME 0x00000004U /*!< Direct Mode error */\r
-#define HAL_DMA_ERROR_TIMEOUT 0x00000020U /*!< Timeout error */\r
-#define HAL_DMA_ERROR_PARAM 0x00000040U /*!< Parameter error */\r
-#define HAL_DMA_ERROR_NO_XFER 0x00000080U /*!< Abort requested with no Xfer ongoing */\r
-#define HAL_DMA_ERROR_NOT_SUPPORTED 0x00000100U /*!< Not supported mode */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_Data_transfer_direction DMA Data transfer direction\r
- * @brief DMA data transfer direction \r
- * @{\r
- */ \r
-#define DMA_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */\r
-#define DMA_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direction */\r
-#define DMA_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction */\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode\r
- * @brief DMA peripheral incremented mode \r
- * @{\r
- */ \r
-#define DMA_PINC_ENABLE DMA_SxCR_PINC /*!< Peripheral increment mode enable */\r
-#define DMA_PINC_DISABLE 0x00000000U /*!< Peripheral increment mode disable */\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode\r
- * @brief DMA memory incremented mode \r
- * @{\r
- */ \r
-#define DMA_MINC_ENABLE DMA_SxCR_MINC /*!< Memory increment mode enable */\r
-#define DMA_MINC_DISABLE 0x00000000U /*!< Memory increment mode disable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_Peripheral_data_size DMA Peripheral data size\r
- * @brief DMA peripheral data size \r
- * @{\r
- */ \r
-#define DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment: Byte */\r
-#define DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment: HalfWord */\r
-#define DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment: Word */\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup DMA_Memory_data_size DMA Memory data size\r
- * @brief DMA memory data size \r
- * @{ \r
- */\r
-#define DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment: Byte */\r
-#define DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment: HalfWord */\r
-#define DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment: Word */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_mode DMA mode\r
- * @brief DMA mode \r
- * @{\r
- */ \r
-#define DMA_NORMAL 0x00000000U /*!< Normal mode */\r
-#define DMA_CIRCULAR DMA_SxCR_CIRC /*!< Circular mode */\r
-#define DMA_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mode */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_Priority_level DMA Priority level\r
- * @brief DMA priority levels \r
- * @{\r
- */\r
-#define DMA_PRIORITY_LOW 0x00000000U /*!< Priority level: Low */\r
-#define DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level: Medium */\r
-#define DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level: High */\r
-#define DMA_PRIORITY_VERY_HIGH DMA_SxCR_PL /*!< Priority level: Very High */\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup DMA_FIFO_direct_mode DMA FIFO direct mode\r
- * @brief DMA FIFO direct mode\r
- * @{\r
- */\r
-#define DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable */\r
-#define DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode enable */\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup DMA_FIFO_threshold_level DMA FIFO threshold level\r
- * @brief DMA FIFO level \r
- * @{\r
- */\r
-#define DMA_FIFO_THRESHOLD_1QUARTERFULL 0x00000000U /*!< FIFO threshold 1 quart full configuration */\r
-#define DMA_FIFO_THRESHOLD_HALFFULL DMA_SxFCR_FTH_0 /*!< FIFO threshold half full configuration */\r
-#define DMA_FIFO_THRESHOLD_3QUARTERSFULL DMA_SxFCR_FTH_1 /*!< FIFO threshold 3 quarts full configuration */\r
-#define DMA_FIFO_THRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO threshold full configuration */\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup DMA_Memory_burst DMA Memory burst\r
- * @brief DMA memory burst \r
- * @{\r
- */ \r
-#define DMA_MBURST_SINGLE 0x00000000U\r
-#define DMA_MBURST_INC4 DMA_SxCR_MBURST_0\r
-#define DMA_MBURST_INC8 DMA_SxCR_MBURST_1\r
-#define DMA_MBURST_INC16 DMA_SxCR_MBURST\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup DMA_Peripheral_burst DMA Peripheral burst\r
- * @brief DMA peripheral burst \r
- * @{\r
- */ \r
-#define DMA_PBURST_SINGLE 0x00000000U\r
-#define DMA_PBURST_INC4 DMA_SxCR_PBURST_0\r
-#define DMA_PBURST_INC8 DMA_SxCR_PBURST_1\r
-#define DMA_PBURST_INC16 DMA_SxCR_PBURST\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions\r
- * @brief DMA interrupts definition \r
- * @{\r
- */\r
-#define DMA_IT_TC DMA_SxCR_TCIE\r
-#define DMA_IT_HT DMA_SxCR_HTIE\r
-#define DMA_IT_TE DMA_SxCR_TEIE\r
-#define DMA_IT_DME DMA_SxCR_DMEIE\r
-#define DMA_IT_FE 0x00000080U\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_flag_definitions DMA flag definitions\r
- * @brief DMA flag definitions \r
- * @{\r
- */ \r
-#define DMA_FLAG_FEIF0_4 0x00000001U\r
-#define DMA_FLAG_DMEIF0_4 0x00000004U\r
-#define DMA_FLAG_TEIF0_4 0x00000008U\r
-#define DMA_FLAG_HTIF0_4 0x00000010U\r
-#define DMA_FLAG_TCIF0_4 0x00000020U\r
-#define DMA_FLAG_FEIF1_5 0x00000040U\r
-#define DMA_FLAG_DMEIF1_5 0x00000100U\r
-#define DMA_FLAG_TEIF1_5 0x00000200U\r
-#define DMA_FLAG_HTIF1_5 0x00000400U\r
-#define DMA_FLAG_TCIF1_5 0x00000800U\r
-#define DMA_FLAG_FEIF2_6 0x00010000U\r
-#define DMA_FLAG_DMEIF2_6 0x00040000U\r
-#define DMA_FLAG_TEIF2_6 0x00080000U\r
-#define DMA_FLAG_HTIF2_6 0x00100000U\r
-#define DMA_FLAG_TCIF2_6 0x00200000U\r
-#define DMA_FLAG_FEIF3_7 0x00400000U\r
-#define DMA_FLAG_DMEIF3_7 0x01000000U\r
-#define DMA_FLAG_TEIF3_7 0x02000000U\r
-#define DMA_FLAG_HTIF3_7 0x04000000U\r
-#define DMA_FLAG_TCIF3_7 0x08000000U\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/* Exported macro ------------------------------------------------------------*/\r
-\r
-/** @brief Reset DMA handle state\r
- * @param __HANDLE__ specifies the DMA handle.\r
- * @retval None\r
- */\r
-#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET)\r
-\r
-/**\r
- * @brief Return the current DMA Stream FIFO filled level.\r
- * @param __HANDLE__ DMA handle\r
- * @retval The FIFO filling state.\r
- * - DMA_FIFOStatus_Less1QuarterFull: when FIFO is less than 1 quarter-full \r
- * and not empty.\r
- * - DMA_FIFOStatus_1QuarterFull: if more than 1 quarter-full.\r
- * - DMA_FIFOStatus_HalfFull: if more than 1 half-full.\r
- * - DMA_FIFOStatus_3QuartersFull: if more than 3 quarters-full.\r
- * - DMA_FIFOStatus_Empty: when FIFO is empty\r
- * - DMA_FIFOStatus_Full: when FIFO is full\r
- */\r
-#define __HAL_DMA_GET_FS(__HANDLE__) (((__HANDLE__)->Instance->FCR & (DMA_SxFCR_FS)))\r
-\r
-/**\r
- * @brief Enable the specified DMA Stream.\r
- * @param __HANDLE__ DMA handle\r
- * @retval None\r
- */\r
-#define __HAL_DMA_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= DMA_SxCR_EN)\r
-\r
-/**\r
- * @brief Disable the specified DMA Stream.\r
- * @param __HANDLE__ DMA handle\r
- * @retval None\r
- */\r
-#define __HAL_DMA_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~DMA_SxCR_EN)\r
-\r
-/* Interrupt & Flag management */\r
-\r
-/**\r
- * @brief Return the current DMA Stream transfer complete flag.\r
- * @param __HANDLE__ DMA handle\r
- * @retval The specified transfer complete flag index.\r
- */\r
-#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \\r
-(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TCIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TCIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TCIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TCIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TCIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TCIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TCIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TCIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TCIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TCIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TCIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TCIF2_6 :\\r
- DMA_FLAG_TCIF3_7)\r
-\r
-/**\r
- * @brief Return the current DMA Stream half transfer complete flag.\r
- * @param __HANDLE__ DMA handle\r
- * @retval The specified half transfer complete flag index.\r
- */ \r
-#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\\r
-(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_HTIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_HTIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_HTIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_HTIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_HTIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_HTIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_HTIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_HTIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_HTIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_HTIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_HTIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_HTIF2_6 :\\r
- DMA_FLAG_HTIF3_7)\r
-\r
-/**\r
- * @brief Return the current DMA Stream transfer error flag.\r
- * @param __HANDLE__ DMA handle\r
- * @retval The specified transfer error flag index.\r
- */\r
-#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\\r
-(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TEIF2_6 :\\r
- DMA_FLAG_TEIF3_7)\r
-\r
-/**\r
- * @brief Return the current DMA Stream FIFO error flag.\r
- * @param __HANDLE__ DMA handle\r
- * @retval The specified FIFO error flag index.\r
- */\r
-#define __HAL_DMA_GET_FE_FLAG_INDEX(__HANDLE__)\\r
-(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_FEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_FEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_FEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_FEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_FEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_FEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_FEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_FEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_FEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_FEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_FEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_FEIF2_6 :\\r
- DMA_FLAG_FEIF3_7)\r
-\r
-/**\r
- * @brief Return the current DMA Stream direct mode error flag.\r
- * @param __HANDLE__ DMA handle\r
- * @retval The specified direct mode error flag index.\r
- */\r
-#define __HAL_DMA_GET_DME_FLAG_INDEX(__HANDLE__)\\r
-(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_DMEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_DMEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_DMEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_DMEIF0_4 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_DMEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_DMEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_DMEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_DMEIF1_5 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_DMEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_DMEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_DMEIF2_6 :\\r
- ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_DMEIF2_6 :\\r
- DMA_FLAG_DMEIF3_7)\r
-\r
-/**\r
- * @brief Get the DMA Stream pending flags.\r
- * @param __HANDLE__ DMA handle\r
- * @param __FLAG__ Get the specified flag.\r
- * This parameter can be any combination of the following values:\r
- * @arg DMA_FLAG_TCIFx: Transfer complete flag.\r
- * @arg DMA_FLAG_HTIFx: Half transfer complete flag.\r
- * @arg DMA_FLAG_TEIFx: Transfer error flag.\r
- * @arg DMA_FLAG_DMEIFx: Direct mode error flag.\r
- * @arg DMA_FLAG_FEIFx: FIFO error flag.\r
- * Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag. \r
- * @retval The state of FLAG (SET or RESET).\r
- */\r
-#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\\r
-(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HISR & (__FLAG__)) :\\r
- ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LISR & (__FLAG__)) :\\r
- ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HISR & (__FLAG__)) : (DMA1->LISR & (__FLAG__)))\r
-\r
-/**\r
- * @brief Clear the DMA Stream pending flags.\r
- * @param __HANDLE__ DMA handle\r
- * @param __FLAG__ specifies the flag to clear.\r
- * This parameter can be any combination of the following values:\r
- * @arg DMA_FLAG_TCIFx: Transfer complete flag.\r
- * @arg DMA_FLAG_HTIFx: Half transfer complete flag.\r
- * @arg DMA_FLAG_TEIFx: Transfer error flag.\r
- * @arg DMA_FLAG_DMEIFx: Direct mode error flag.\r
- * @arg DMA_FLAG_FEIFx: FIFO error flag.\r
- * Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag. \r
- * @retval None\r
- */\r
-#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \\r
-(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HIFCR = (__FLAG__)) :\\r
- ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LIFCR = (__FLAG__)) :\\r
- ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HIFCR = (__FLAG__)) : (DMA1->LIFCR = (__FLAG__)))\r
-\r
-/**\r
- * @brief Enable the specified DMA Stream interrupts.\r
- * @param __HANDLE__ DMA handle\r
- * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. \r
- * This parameter can be one of the following values:\r
- * @arg DMA_IT_TC: Transfer complete interrupt mask.\r
- * @arg DMA_IT_HT: Half transfer complete interrupt mask.\r
- * @arg DMA_IT_TE: Transfer error interrupt mask.\r
- * @arg DMA_IT_FE: FIFO error interrupt mask.\r
- * @arg DMA_IT_DME: Direct mode error interrupt.\r
- * @retval None\r
- */\r
-#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__INTERRUPT__) != DMA_IT_FE)? \\r
-((__HANDLE__)->Instance->CR |= (__INTERRUPT__)) : ((__HANDLE__)->Instance->FCR |= (__INTERRUPT__)))\r
-\r
-/**\r
- * @brief Disable the specified DMA Stream interrupts.\r
- * @param __HANDLE__ DMA handle\r
- * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. \r
- * This parameter can be one of the following values:\r
- * @arg DMA_IT_TC: Transfer complete interrupt mask.\r
- * @arg DMA_IT_HT: Half transfer complete interrupt mask.\r
- * @arg DMA_IT_TE: Transfer error interrupt mask.\r
- * @arg DMA_IT_FE: FIFO error interrupt mask.\r
- * @arg DMA_IT_DME: Direct mode error interrupt.\r
- * @retval None\r
- */\r
-#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__INTERRUPT__) != DMA_IT_FE)? \\r
-((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__)) : ((__HANDLE__)->Instance->FCR &= ~(__INTERRUPT__)))\r
-\r
-/**\r
- * @brief Check whether the specified DMA Stream interrupt is enabled or not.\r
- * @param __HANDLE__ DMA handle\r
- * @param __INTERRUPT__ specifies the DMA interrupt source to check.\r
- * This parameter can be one of the following values:\r
- * @arg DMA_IT_TC: Transfer complete interrupt mask.\r
- * @arg DMA_IT_HT: Half transfer complete interrupt mask.\r
- * @arg DMA_IT_TE: Transfer error interrupt mask.\r
- * @arg DMA_IT_FE: FIFO error interrupt mask.\r
- * @arg DMA_IT_DME: Direct mode error interrupt.\r
- * @retval The state of DMA_IT.\r
- */\r
-#define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__INTERRUPT__) != DMA_IT_FE)? \\r
- ((__HANDLE__)->Instance->CR & (__INTERRUPT__)) : \\r
- ((__HANDLE__)->Instance->FCR & (__INTERRUPT__)))\r
-\r
-/**\r
- * @brief Writes the number of data units to be transferred on the DMA Stream.\r
- * @param __HANDLE__ DMA handle\r
- * @param __COUNTER__ Number of data units to be transferred (from 0 to 65535) \r
- * Number of data items depends only on the Peripheral data format.\r
- * \r
- * @note If Peripheral data format is Bytes: number of data units is equal \r
- * to total number of bytes to be transferred.\r
- * \r
- * @note If Peripheral data format is Half-Word: number of data units is \r
- * equal to total number of bytes to be transferred / 2.\r
- * \r
- * @note If Peripheral data format is Word: number of data units is equal \r
- * to total number of bytes to be transferred / 4.\r
- * \r
- * @retval The number of remaining data units in the current DMAy Streamx transfer.\r
- */\r
-#define __HAL_DMA_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->NDTR = (uint16_t)(__COUNTER__))\r
-\r
-/**\r
- * @brief Returns the number of remaining data units in the current DMAy Streamx transfer.\r
- * @param __HANDLE__ DMA handle\r
- * \r
- * @retval The number of remaining data units in the current DMA Stream transfer.\r
- */\r
-#define __HAL_DMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->NDTR)\r
-\r
-\r
-/* Include DMA HAL Extension module */\r
-#include "stm32f7xx_hal_dma_ex.h" \r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @defgroup DMA_Exported_Functions DMA Exported Functions\r
- * @brief DMA Exported functions \r
- * @{\r
- */\r
-\r
-/** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @brief Initialization and de-initialization functions \r
- * @{\r
- */\r
-HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma); \r
-HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_Exported_Functions_Group2 I/O operation functions\r
- * @brief I/O operation functions \r
- * @{\r
- */\r
-HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\r
-HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\r
-HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);\r
-HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma);\r
-HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout);\r
-void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma);\r
-HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma));\r
-HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID);\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup DMA_Exported_Functions_Group3 Peripheral State functions\r
- * @brief Peripheral State functions \r
- * @{\r
- */\r
-HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma);\r
-uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma);\r
-/**\r
- * @}\r
- */ \r
-/**\r
- * @}\r
- */ \r
-/* Private Constants -------------------------------------------------------------*/\r
-/** @defgroup DMA_Private_Constants DMA Private Constants\r
- * @brief DMA private defines and constants \r
- * @{\r
- */\r
-/**\r
- * @}\r
- */ \r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup DMA_Private_Macros DMA Private Macros\r
- * @brief DMA private macros \r
- * @{\r
- */\r
-#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \\r
- ((DIRECTION) == DMA_MEMORY_TO_PERIPH) || \\r
- ((DIRECTION) == DMA_MEMORY_TO_MEMORY)) \r
-\r
-#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x01U) && ((SIZE) < 0x10000U))\r
-\r
-#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \\r
- ((STATE) == DMA_PINC_DISABLE))\r
-\r
-#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE) || \\r
- ((STATE) == DMA_MINC_DISABLE))\r
-\r
-#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE) || \\r
- ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \\r
- ((SIZE) == DMA_PDATAALIGN_WORD))\r
-\r
-#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE) || \\r
- ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \\r
- ((SIZE) == DMA_MDATAALIGN_WORD ))\r
-\r
-#define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL ) || \\r
- ((MODE) == DMA_CIRCULAR) || \\r
- ((MODE) == DMA_PFCTRL)) \r
-\r
-#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW ) || \\r
- ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \\r
- ((PRIORITY) == DMA_PRIORITY_HIGH) || \\r
- ((PRIORITY) == DMA_PRIORITY_VERY_HIGH)) \r
-\r
-#define IS_DMA_FIFO_MODE_STATE(STATE) (((STATE) == DMA_FIFOMODE_DISABLE ) || \\r
- ((STATE) == DMA_FIFOMODE_ENABLE))\r
-\r
-#define IS_DMA_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == DMA_FIFO_THRESHOLD_1QUARTERFULL ) || \\r
- ((THRESHOLD) == DMA_FIFO_THRESHOLD_HALFFULL) || \\r
- ((THRESHOLD) == DMA_FIFO_THRESHOLD_3QUARTERSFULL) || \\r
- ((THRESHOLD) == DMA_FIFO_THRESHOLD_FULL))\r
-\r
-#define IS_DMA_MEMORY_BURST(BURST) (((BURST) == DMA_MBURST_SINGLE) || \\r
- ((BURST) == DMA_MBURST_INC4) || \\r
- ((BURST) == DMA_MBURST_INC8) || \\r
- ((BURST) == DMA_MBURST_INC16))\r
-\r
-#define IS_DMA_PERIPHERAL_BURST(BURST) (((BURST) == DMA_PBURST_SINGLE) || \\r
- ((BURST) == DMA_PBURST_INC4) || \\r
- ((BURST) == DMA_PBURST_INC8) || \\r
- ((BURST) == DMA_PBURST_INC16))\r
-/**\r
- * @}\r
- */ \r
-\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup DMA_Private_Functions DMA Private Functions\r
- * @brief DMA private functions \r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_DMA_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_dma_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of DMA HAL extension module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_DMA_EX_H\r
-#define __STM32F7xx_HAL_DMA_EX_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup DMAEx\r
- * @{\r
- */ \r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup DMAEx_Exported_Types DMAEx Exported Types\r
- * @brief DMAEx Exported types\r
- * @{\r
- */\r
- \r
-/** \r
- * @brief HAL DMA Memory definition \r
- */ \r
-typedef enum\r
-{\r
- MEMORY0 = 0x00U, /*!< Memory 0 */\r
- MEMORY1 = 0x01U, /*!< Memory 1 */\r
-\r
-}HAL_DMA_MemoryTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup DMA_Exported_Constants DMA Exported Constants\r
- * @brief DMA Exported constants \r
- * @{\r
- */\r
-\r
-/** @defgroup DMAEx_Channel_selection DMA Channel selection\r
- * @brief DMAEx channel selection \r
- * @{\r
- */ \r
-#define DMA_CHANNEL_0 0x00000000U /*!< DMA Channel 0 */\r
-#define DMA_CHANNEL_1 0x02000000U /*!< DMA Channel 1 */\r
-#define DMA_CHANNEL_2 0x04000000U /*!< DMA Channel 2 */\r
-#define DMA_CHANNEL_3 0x06000000U /*!< DMA Channel 3 */\r
-#define DMA_CHANNEL_4 0x08000000U /*!< DMA Channel 4 */\r
-#define DMA_CHANNEL_5 0x0A000000U /*!< DMA Channel 5 */\r
-#define DMA_CHANNEL_6 0x0C000000U /*!< DMA Channel 6 */\r
-#define DMA_CHANNEL_7 0x0E000000U /*!< DMA Channel 7 */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define DMA_CHANNEL_8 0x10000000U /*!< DMA Channel 8 */\r
-#define DMA_CHANNEL_9 0x12000000U /*!< DMA Channel 9 */\r
-#define DMA_CHANNEL_10 0x14000000U /*!< DMA Channel 10*/\r
-#define DMA_CHANNEL_11 0x16000000U /*!< DMA Channel 11*/\r
-#define DMA_CHANNEL_12 0x18000000U /*!< DMA Channel 12*/\r
-#define DMA_CHANNEL_13 0x1A000000U /*!< DMA Channel 13*/\r
-#define DMA_CHANNEL_14 0x1C000000U /*!< DMA Channel 14*/\r
-#define DMA_CHANNEL_15 0x1E000000U /*!< DMA Channel 15*/\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/**\r
- * @}\r
- */ \r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @defgroup DMAEx_Exported_Functions DMAEx Exported Functions\r
- * @brief DMAEx Exported functions\r
- * @{\r
- */\r
-\r
-/** @defgroup DMAEx_Exported_Functions_Group1 Extended features functions\r
- * @brief Extended features functions\r
- * @{\r
- */\r
-\r
-/* IO operation functions *******************************************************/\r
-HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength);\r
-HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength);\r
-HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory);\r
-\r
-/**\r
- * @}\r
- */\r
-/**\r
- * @}\r
- */\r
- \r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup DMAEx_Private_Macros DMA Private Macros\r
- * @brief DMAEx private macros \r
- * @{\r
- */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) == DMA_CHANNEL_0) || \\r
- ((CHANNEL) == DMA_CHANNEL_1) || \\r
- ((CHANNEL) == DMA_CHANNEL_2) || \\r
- ((CHANNEL) == DMA_CHANNEL_3) || \\r
- ((CHANNEL) == DMA_CHANNEL_4) || \\r
- ((CHANNEL) == DMA_CHANNEL_5) || \\r
- ((CHANNEL) == DMA_CHANNEL_6) || \\r
- ((CHANNEL) == DMA_CHANNEL_7) || \\r
- ((CHANNEL) == DMA_CHANNEL_8) || \\r
- ((CHANNEL) == DMA_CHANNEL_9) || \\r
- ((CHANNEL) == DMA_CHANNEL_10) || \\r
- ((CHANNEL) == DMA_CHANNEL_11) || \\r
- ((CHANNEL) == DMA_CHANNEL_12) || \\r
- ((CHANNEL) == DMA_CHANNEL_13) || \\r
- ((CHANNEL) == DMA_CHANNEL_14) || \\r
- ((CHANNEL) == DMA_CHANNEL_15)) \r
-#else\r
-#define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) == DMA_CHANNEL_0) || \\r
- ((CHANNEL) == DMA_CHANNEL_1) || \\r
- ((CHANNEL) == DMA_CHANNEL_2) || \\r
- ((CHANNEL) == DMA_CHANNEL_3) || \\r
- ((CHANNEL) == DMA_CHANNEL_4) || \\r
- ((CHANNEL) == DMA_CHANNEL_5) || \\r
- ((CHANNEL) == DMA_CHANNEL_6) || \\r
- ((CHANNEL) == DMA_CHANNEL_7))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx*/\r
-/**\r
- * @}\r
- */ \r
- \r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup DMAEx_Private_Functions DMAEx Private Functions\r
- * @brief DMAEx Private functions\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_DMA_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_exti.h\r
- * @author MCD Application Team\r
- * @brief Header file of EXTI HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2018 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_EXTI_H\r
-#define __STM32F7xx_HAL_EXTI_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup EXTI EXTI\r
- * @brief EXTI HAL module driver\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup EXTI_Exported_Types EXTI Exported Types\r
- * @{\r
- */\r
-typedef enum\r
-{\r
- HAL_EXTI_COMMON_CB_ID = 0x00U,\r
- HAL_EXTI_RISING_CB_ID = 0x01U,\r
- HAL_EXTI_FALLING_CB_ID = 0x02U,\r
-} EXTI_CallbackIDTypeDef;\r
-\r
-/**\r
- * @brief EXTI Handle structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t Line; /*!< Exti line number */\r
- void (* PendingCallback)(void); /*!< Exti pending callback */\r
-} EXTI_HandleTypeDef;\r
-\r
-/**\r
- * @brief EXTI Configuration structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t Line; /*!< The Exti line to be configured. This parameter\r
- can be a value of @ref EXTI_Line */\r
- uint32_t Mode; /*!< The Exit Mode to be configured for a core.\r
- This parameter can be a combination of @ref EXTI_Mode */\r
- uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter\r
- can be a value of @ref EXTI_Trigger */\r
-} EXTI_ConfigTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup EXTI_Exported_Constants EXTI Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup EXTI_Line EXTI Line\r
- * @{\r
- */\r
-#define EXTI_LINE_0 EXTI_IMR_IM0 /*!< External interrupt line 0 */\r
-#define EXTI_LINE_1 EXTI_IMR_IM1 /*!< External interrupt line 1 */\r
-#define EXTI_LINE_2 EXTI_IMR_IM2 /*!< External interrupt line 2 */\r
-#define EXTI_LINE_3 EXTI_IMR_IM3 /*!< External interrupt line 3 */\r
-#define EXTI_LINE_4 EXTI_IMR_IM4 /*!< External interrupt line 4 */\r
-#define EXTI_LINE_5 EXTI_IMR_IM5 /*!< External interrupt line 5 */\r
-#define EXTI_LINE_6 EXTI_IMR_IM6 /*!< External interrupt line 6 */\r
-#define EXTI_LINE_7 EXTI_IMR_IM7 /*!< External interrupt line 7 */\r
-#define EXTI_LINE_8 EXTI_IMR_IM8 /*!< External interrupt line 8 */\r
-#define EXTI_LINE_9 EXTI_IMR_IM9 /*!< External interrupt line 9 */\r
-#define EXTI_LINE_10 EXTI_IMR_IM10 /*!< External interrupt line 10 */\r
-#define EXTI_LINE_11 EXTI_IMR_IM11 /*!< External interrupt line 11 */\r
-#define EXTI_LINE_12 EXTI_IMR_IM12 /*!< External interrupt line 12 */\r
-#define EXTI_LINE_13 EXTI_IMR_IM13 /*!< External interrupt line 13 */\r
-#define EXTI_LINE_14 EXTI_IMR_IM14 /*!< External interrupt line 14 */\r
-#define EXTI_LINE_15 EXTI_IMR_IM15 /*!< External interrupt line 15 */\r
-#if defined(EXTI_IMR_IM16)\r
-#define EXTI_LINE_16 EXTI_IMR_IM16 /*!< External interrupt line 16 Connected to the PVD Output */\r
-#endif /* EXTI_IMR_IM16 */\r
-#if defined(EXTI_IMR_IM17)\r
-#define EXTI_LINE_17 EXTI_IMR_IM17 /*!< External interrupt line 17 Connected to the RTC Alarm event */\r
-#endif /* EXTI_IMR_IM17 */\r
-#if defined(EXTI_IMR_IM18)\r
-#define EXTI_LINE_18 EXTI_IMR_IM18 /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */\r
-#endif /* EXTI_IMR_IM18 */\r
-#if defined(EXTI_IMR_IM19)\r
-#define EXTI_LINE_19 EXTI_IMR_IM19 /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */\r
-#endif /* EXTI_IMR_IM19 */\r
-#if defined(EXTI_IMR_IM20)\r
-#define EXTI_LINE_20 EXTI_IMR_IM20 /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */\r
-#endif /* EXTI_IMR_IM20 */\r
-#if defined(EXTI_IMR_IM21)\r
-#define EXTI_LINE_21 EXTI_IMR_IM21 /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */ \r
-#endif /* EXTI_IMR_IM21 */\r
-#if defined(EXTI_IMR_IM22)\r
-#define EXTI_LINE_22 EXTI_IMR_IM22 /*!< External interrupt line 22 Connected to the RTC Wakeup event */\r
-#endif /* EXTI_IMR_IM22 */\r
-#if defined(EXTI_IMR_IM23)\r
-#define EXTI_LINE_23 EXTI_IMR_IM23 /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */\r
-#endif /* EXTI_IMR_IM23 */\r
-#if defined(EXTI_IMR_IM24)\r
-#define EXTI_LINE_24 EXTI_IMR_IM24 /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */\r
-#endif /* EXTI_IMR_IM24 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup EXTI_Mode EXTI Mode\r
- * @{\r
- */\r
-#define EXTI_MODE_NONE 0x00000000u\r
-#define EXTI_MODE_INTERRUPT 0x00000001u\r
-#define EXTI_MODE_EVENT 0x00000002u\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup EXTI_Trigger EXTI Trigger\r
- * @{\r
- */\r
-#define EXTI_TRIGGER_NONE 0x00000000u\r
-#define EXTI_TRIGGER_RISING 0x00000001u\r
-#define EXTI_TRIGGER_FALLING 0x00000002u\r
-#define EXTI_TRIGGER_RISING_FALLING (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup EXTI_Exported_Macros EXTI Exported Macros\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private constants --------------------------------------------------------*/\r
-/** @defgroup EXTI_Private_Constants EXTI Private Constants\r
- * @{\r
- */\r
-/**\r
- * @brief EXTI Mask for interrupt & event mode\r
- */\r
-#define EXTI_MODE_MASK (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT)\r
-\r
-/**\r
- * @brief EXTI Mask for trigger possibilities\r
- */\r
-#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING | EXTI_TRIGGER_RISING_FALLING)\r
-\r
-/**\r
- * @brief EXTI Line number\r
- */\r
-#define EXTI_LINE_NB 25u\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup EXTI_Private_Macros EXTI Private Macros\r
- * @{\r
- */\r
-#define IS_EXTI_LINE(__LINE__) ((((__LINE__) & ~EXTI_IMR_IM) == 0x00U) && (__LINE__))\r
-\r
-#define IS_EXTI_MODE(__LINE__) ((((__LINE__) & ~EXTI_MODE_MASK) == 0x00U))\r
-\r
-#define IS_EXTI_TRIGGER(__LINE__) (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00U)\r
-\r
-#define IS_EXTI_PENDING_EDGE(__LINE__) (((__LINE__) == EXTI_TRIGGER_FALLING) || \\r
- ((__LINE__) == EXTI_TRIGGER_RISING) || \\r
- ((__LINE__) == EXTI_TRIGGER_RISING_FALLING))\r
-\r
-#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U)\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @defgroup EXTI_Exported_Functions EXTI Exported Functions\r
- * @brief EXTI Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup EXTI_Exported_Functions_Group1 Configuration functions\r
- * @brief Configuration functions\r
- * @{\r
- */\r
-/* Configuration functions ****************************************************/\r
-HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);\r
-HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);\r
-HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti);\r
-HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void));\r
-HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup EXTI_Exported_Functions_Group2 IO operation functions\r
- * @brief IO operation functions\r
- * @{\r
- */\r
-/* IO operation functions *****************************************************/\r
-void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti);\r
-uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);\r
-void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);\r
-void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_EXTI_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_flash.h\r
- * @author MCD Application Team\r
- * @brief Header file of FLASH HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_FLASH_H\r
-#define __STM32F7xx_HAL_FLASH_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup FLASH\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup FLASH_Exported_Types FLASH Exported Types\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief FLASH Procedure structure definition\r
- */\r
-typedef enum\r
-{\r
- FLASH_PROC_NONE = 0U,\r
- FLASH_PROC_SECTERASE,\r
- FLASH_PROC_MASSERASE,\r
- FLASH_PROC_PROGRAM\r
-} FLASH_ProcedureTypeDef;\r
-\r
-\r
-/**\r
- * @brief FLASH handle Structure definition\r
- */\r
-typedef struct\r
-{\r
- __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /* Internal variable to indicate which procedure is ongoing or not in IT context */\r
-\r
- __IO uint32_t NbSectorsToErase; /* Internal variable to save the remaining sectors to erase in IT context */\r
-\r
- __IO uint8_t VoltageForErase; /* Internal variable to provide voltage range selected by user in IT context */\r
-\r
- __IO uint32_t Sector; /* Internal variable to define the current sector which is erasing */\r
-\r
- __IO uint32_t Address; /* Internal variable to save address selected for program */\r
-\r
- HAL_LockTypeDef Lock; /* FLASH locking object */\r
-\r
- __IO uint32_t ErrorCode; /* FLASH error code */\r
-\r
-}FLASH_ProcessTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup FLASH_Exported_Constants FLASH Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup FLASH_Error_Code FLASH Error Code\r
- * @brief FLASH Error Code\r
- * @{\r
- */\r
-#define HAL_FLASH_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */\r
-#define HAL_FLASH_ERROR_ERS ((uint32_t)0x00000002U) /*!< Programming Sequence error */\r
-#define HAL_FLASH_ERROR_PGP ((uint32_t)0x00000004U) /*!< Programming Parallelism error */\r
-#define HAL_FLASH_ERROR_PGA ((uint32_t)0x00000008U) /*!< Programming Alignment error */\r
-#define HAL_FLASH_ERROR_WRP ((uint32_t)0x00000010U) /*!< Write protection error */\r
-#define HAL_FLASH_ERROR_OPERATION ((uint32_t)0x00000020U) /*!< Operation Error */\r
-#define HAL_FLASH_ERROR_RD ((uint32_t)0x00000040U) /*!< Read Protection Error */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Type_Program FLASH Type Program\r
- * @{\r
- */\r
-#define FLASH_TYPEPROGRAM_BYTE ((uint32_t)0x00U) /*!< Program byte (8-bit) at a specified address */\r
-#define FLASH_TYPEPROGRAM_HALFWORD ((uint32_t)0x01U) /*!< Program a half-word (16-bit) at a specified address */\r
-#define FLASH_TYPEPROGRAM_WORD ((uint32_t)0x02U) /*!< Program a word (32-bit) at a specified address */\r
-#define FLASH_TYPEPROGRAM_DOUBLEWORD ((uint32_t)0x03U) /*!< Program a double word (64-bit) at a specified address */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Flag_definition FLASH Flag definition\r
- * @brief Flag definition\r
- * @{\r
- */\r
-#define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Operation flag */\r
-#define FLASH_FLAG_OPERR FLASH_SR_OPERR /*!< FLASH operation Error flag */\r
-#define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */\r
-#define FLASH_FLAG_PGAERR FLASH_SR_PGAERR /*!< FLASH Programming Alignment error flag */\r
-#define FLASH_FLAG_PGPERR FLASH_SR_PGPERR /*!< FLASH Programming Parallelism error flag */\r
-#define FLASH_FLAG_ERSERR FLASH_SR_ERSERR /*!< FLASH Erasing Sequence error flag */\r
-#define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
-#define FLASH_FLAG_RDERR FLASH_SR_RDERR /*!< FLASH Read protection error flag */\r
-#define FLASH_FLAG_ALL_ERRORS (FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \\r
- FLASH_FLAG_PGPERR | FLASH_FLAG_ERSERR | FLASH_FLAG_RDERR)\r
-#else\r
-#define FLASH_FLAG_ALL_ERRORS (FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \\r
- FLASH_FLAG_PGPERR | FLASH_FLAG_ERSERR)\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Interrupt_definition FLASH Interrupt definition\r
- * @brief FLASH Interrupt definition\r
- * @{\r
- */\r
-#define FLASH_IT_EOP FLASH_CR_EOPIE /*!< End of FLASH Operation Interrupt source */\r
-#define FLASH_IT_ERR ((uint32_t)0x02000000U) /*!< Error Interrupt source */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Program_Parallelism FLASH Program Parallelism\r
- * @{\r
- */\r
-#define FLASH_PSIZE_BYTE ((uint32_t)0x00000000U)\r
-#define FLASH_PSIZE_HALF_WORD ((uint32_t)FLASH_CR_PSIZE_0)\r
-#define FLASH_PSIZE_WORD ((uint32_t)FLASH_CR_PSIZE_1)\r
-#define FLASH_PSIZE_DOUBLE_WORD ((uint32_t)FLASH_CR_PSIZE)\r
-#define CR_PSIZE_MASK ((uint32_t)0xFFFFFCFFU)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Keys FLASH Keys\r
- * @{\r
- */\r
-#define FLASH_KEY1 ((uint32_t)0x45670123U)\r
-#define FLASH_KEY2 ((uint32_t)0xCDEF89ABU)\r
-#define FLASH_OPT_KEY1 ((uint32_t)0x08192A3BU)\r
-#define FLASH_OPT_KEY2 ((uint32_t)0x4C5D6E7FU)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Sectors FLASH Sectors\r
- * @{\r
- */\r
-#if (FLASH_SECTOR_TOTAL == 2)\r
-#define FLASH_SECTOR_0 ((uint32_t)0U) /*!< Sector Number 0 */\r
-#define FLASH_SECTOR_1 ((uint32_t)1U) /*!< Sector Number 1 */\r
-#elif (FLASH_SECTOR_TOTAL == 4)\r
-#define FLASH_SECTOR_0 ((uint32_t)0U) /*!< Sector Number 0 */\r
-#define FLASH_SECTOR_1 ((uint32_t)1U) /*!< Sector Number 1 */\r
-#define FLASH_SECTOR_2 ((uint32_t)2U) /*!< Sector Number 2 */\r
-#define FLASH_SECTOR_3 ((uint32_t)3U) /*!< Sector Number 3 */\r
-#else\r
-#define FLASH_SECTOR_0 ((uint32_t)0U) /*!< Sector Number 0 */\r
-#define FLASH_SECTOR_1 ((uint32_t)1U) /*!< Sector Number 1 */\r
-#define FLASH_SECTOR_2 ((uint32_t)2U) /*!< Sector Number 2 */\r
-#define FLASH_SECTOR_3 ((uint32_t)3U) /*!< Sector Number 3 */\r
-#define FLASH_SECTOR_4 ((uint32_t)4U) /*!< Sector Number 4 */\r
-#define FLASH_SECTOR_5 ((uint32_t)5U) /*!< Sector Number 5 */\r
-#define FLASH_SECTOR_6 ((uint32_t)6U) /*!< Sector Number 6 */\r
-#define FLASH_SECTOR_7 ((uint32_t)7U) /*!< Sector Number 7 */\r
-#endif /* FLASH_SECTOR_TOTAL */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup FLASH_Exported_Macros FLASH Exported Macros\r
- * @{\r
- */\r
-/**\r
- * @brief Set the FLASH Latency.\r
- * @param __LATENCY__ FLASH Latency\r
- * The value of this parameter depend on device used within the same series\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_SET_LATENCY(__LATENCY__) \\r
- MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(__LATENCY__))\r
-\r
-/**\r
- * @brief Get the FLASH Latency.\r
- * @retval FLASH Latency\r
- * The value of this parameter depend on device used within the same series\r
- */\r
-#define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))\r
-\r
-/**\r
- * @brief Enable the FLASH prefetch buffer.\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() (FLASH->ACR |= FLASH_ACR_PRFTEN)\r
-\r
-/**\r
- * @brief Disable the FLASH prefetch buffer.\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() (FLASH->ACR &= (~FLASH_ACR_PRFTEN))\r
-\r
-/**\r
- * @brief Enable the FLASH Adaptive Real-Time memory accelerator.\r
- * @note The ART accelerator is available only for flash access on ITCM interface.\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_ART_ENABLE() SET_BIT(FLASH->ACR, FLASH_ACR_ARTEN)\r
-\r
-/**\r
- * @brief Disable the FLASH Adaptive Real-Time memory accelerator.\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_ART_DISABLE() CLEAR_BIT(FLASH->ACR, FLASH_ACR_ARTEN)\r
-\r
-/**\r
- * @brief Resets the FLASH Adaptive Real-Time memory accelerator.\r
- * @note This function must be used only when the Adaptive Real-Time memory accelerator\r
- * is disabled.\r
- * @retval None\r
- */\r
-#define __HAL_FLASH_ART_RESET() (FLASH->ACR |= FLASH_ACR_ARTRST)\r
-\r
-/**\r
- * @brief Enable the specified FLASH interrupt.\r
- * @param __INTERRUPT__ FLASH interrupt\r
- * This parameter can be any combination of the following values:\r
- * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt\r
- * @arg FLASH_IT_ERR: Error Interrupt\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) (FLASH->CR |= (__INTERRUPT__))\r
-\r
-/**\r
- * @brief Disable the specified FLASH interrupt.\r
- * @param __INTERRUPT__ FLASH interrupt\r
- * This parameter can be any combination of the following values:\r
- * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt\r
- * @arg FLASH_IT_ERR: Error Interrupt\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) (FLASH->CR &= ~(uint32_t)(__INTERRUPT__))\r
-\r
-/**\r
- * @brief Get the specified FLASH flag status.\r
- * @param __FLAG__ specifies the FLASH flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg FLASH_FLAG_EOP : FLASH End of Operation flag\r
- * @arg FLASH_FLAG_OPERR : FLASH operation Error flag\r
- * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag\r
- * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag\r
- * @arg FLASH_FLAG_PGPERR: FLASH Programming Parallelism error flag\r
- * @arg FLASH_FLAG_ERSERR : FLASH Erasing Sequence error flag\r
- * @arg FLASH_FLAG_BSY : FLASH Busy flag\r
- * @retval The new state of __FLAG__ (SET or RESET).\r
- */\r
-#define __HAL_FLASH_GET_FLAG(__FLAG__) ((FLASH->SR & (__FLAG__)))\r
-\r
-/**\r
- * @brief Clear the specified FLASH flag.\r
- * @param __FLAG__ specifies the FLASH flags to clear.\r
- * This parameter can be any combination of the following values:\r
- * @arg FLASH_FLAG_EOP : FLASH End of Operation flag\r
- * @arg FLASH_FLAG_OPERR : FLASH operation Error flag\r
- * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag\r
- * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag\r
- * @arg FLASH_FLAG_PGPERR: FLASH Programming Parallelism error flag\r
- * @arg FLASH_FLAG_ERSERR : FLASH Erasing Sequence error flag\r
- * @retval none\r
- */\r
-#define __HAL_FLASH_CLEAR_FLAG(__FLAG__) (FLASH->SR = (__FLAG__))\r
-/**\r
- * @}\r
- */\r
-\r
-/* Include FLASH HAL Extension module */\r
-#include "stm32f7xx_hal_flash_ex.h"\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup FLASH_Exported_Functions\r
- * @{\r
- */\r
-/** @addtogroup FLASH_Exported_Functions_Group1\r
- * @{\r
- */\r
-/* Program operation functions ***********************************************/\r
-HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);\r
-HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data);\r
-/* FLASH IRQ handler method */\r
-void HAL_FLASH_IRQHandler(void);\r
-/* Callbacks in non blocking modes */\r
-void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);\r
-void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup FLASH_Exported_Functions_Group2\r
- * @{\r
- */\r
-/* Peripheral Control functions **********************************************/\r
-HAL_StatusTypeDef HAL_FLASH_Unlock(void);\r
-HAL_StatusTypeDef HAL_FLASH_Lock(void);\r
-HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);\r
-HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);\r
-/* Option bytes control */\r
-HAL_StatusTypeDef HAL_FLASH_OB_Launch(void);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup FLASH_Exported_Functions_Group3\r
- * @{\r
- */\r
-/* Peripheral State functions ************************************************/\r
-uint32_t HAL_FLASH_GetError(void);\r
-HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/** @defgroup FLASH_Private_Variables FLASH Private Variables\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup FLASH_Private_Constants FLASH Private Constants\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief OPTCR register byte 1 (Bits[15:8]) base address\r
- */\r
-#define OPTCR_BYTE1_ADDRESS ((uint32_t)0x40023C15)\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup FLASH_Private_Macros FLASH Private Macros\r
- * @{\r
- */\r
-\r
-/** @defgroup FLASH_IS_FLASH_Definitions FLASH Private macros to check input parameters\r
- * @{\r
- */\r
-#define IS_FLASH_TYPEPROGRAM(VALUE)(((VALUE) == FLASH_TYPEPROGRAM_BYTE) || \\r
- ((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \\r
- ((VALUE) == FLASH_TYPEPROGRAM_WORD) || \\r
- ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD))\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup FLASH_Private_Functions FLASH Private Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_FLASH_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_flash_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of FLASH HAL Extension module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_FLASH_EX_H\r
-#define __STM32F7xx_HAL_FLASH_EX_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup FLASHEx\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup FLASHEx_Exported_Types FLASH Exported Types\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief FLASH Erase structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t TypeErase; /*!< Mass erase or sector Erase.\r
- This parameter can be a value of @ref FLASHEx_Type_Erase */\r
-\r
-#if defined (FLASH_OPTCR_nDBANK)\r
- uint32_t Banks; /*!< Select banks to erase when Mass erase is enabled.\r
- This parameter must be a value of @ref FLASHEx_Banks */\r
-#endif /* FLASH_OPTCR_nDBANK */\r
-\r
- uint32_t Sector; /*!< Initial FLASH sector to erase when Mass erase is disabled\r
- This parameter must be a value of @ref FLASHEx_Sectors */\r
-\r
- uint32_t NbSectors; /*!< Number of sectors to be erased.\r
- This parameter must be a value between 1 and (max number of sectors - value of Initial sector)*/\r
-\r
- uint32_t VoltageRange;/*!< The device voltage range which defines the erase parallelism\r
- This parameter must be a value of @ref FLASHEx_Voltage_Range */\r
-\r
-} FLASH_EraseInitTypeDef;\r
-\r
-/**\r
- * @brief FLASH Option Bytes Program structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t OptionType; /*!< Option byte to be configured.\r
- This parameter can be a value of @ref FLASHEx_Option_Type */\r
-\r
- uint32_t WRPState; /*!< Write protection activation or deactivation.\r
- This parameter can be a value of @ref FLASHEx_WRP_State */\r
-\r
- uint32_t WRPSector; /*!< Specifies the sector(s) to be write protected.\r
- The value of this parameter depend on device used within the same series */\r
-\r
- uint32_t RDPLevel; /*!< Set the read protection level.\r
- This parameter can be a value of @ref FLASHEx_Option_Bytes_Read_Protection */\r
-\r
- uint32_t BORLevel; /*!< Set the BOR Level.\r
- This parameter can be a value of @ref FLASHEx_BOR_Reset_Level */\r
-\r
- uint32_t USERConfig; /*!< Program the FLASH User Option Byte: WWDG_SW / IWDG_SW / RST_STOP / RST_STDBY /\r
- IWDG_FREEZE_STOP / IWDG_FREEZE_SANDBY / nDBANK / nDBOOT.\r
- nDBANK / nDBOOT are only available for STM32F76xxx/STM32F77xxx devices */\r
-\r
- uint32_t BootAddr0; /*!< Boot base address when Boot pin = 0.\r
- This parameter can be a value of @ref FLASHEx_Boot_Address */\r
-\r
- uint32_t BootAddr1; /*!< Boot base address when Boot pin = 1.\r
- This parameter can be a value of @ref FLASHEx_Boot_Address */\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
- uint32_t PCROPSector; /*!< Set the PCROP sector.\r
- This parameter can be a value of @ref FLASHEx_Option_Bytes_PCROP_Sectors */\r
-\r
- uint32_t PCROPRdp; /*!< Set the PCROP_RDP option.\r
- This parameter can be a value of @ref FLASHEx_Option_Bytes_PCROP_RDP */\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-\r
-} FLASH_OBProgramInitTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup FLASHEx_Exported_Constants FLASH Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup FLASHEx_Type_Erase FLASH Type Erase\r
- * @{\r
- */\r
-#define FLASH_TYPEERASE_SECTORS ((uint32_t)0x00U) /*!< Sectors erase only */\r
-#define FLASH_TYPEERASE_MASSERASE ((uint32_t)0x01U) /*!< Flash Mass erase activation */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Voltage_Range FLASH Voltage Range\r
- * @{\r
- */\r
-#define FLASH_VOLTAGE_RANGE_1 ((uint32_t)0x00U) /*!< Device operating range: 1.8V to 2.1V */\r
-#define FLASH_VOLTAGE_RANGE_2 ((uint32_t)0x01U) /*!< Device operating range: 2.1V to 2.7V */\r
-#define FLASH_VOLTAGE_RANGE_3 ((uint32_t)0x02U) /*!< Device operating range: 2.7V to 3.6V */\r
-#define FLASH_VOLTAGE_RANGE_4 ((uint32_t)0x03U) /*!< Device operating range: 2.7V to 3.6V + External Vpp */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_WRP_State FLASH WRP State\r
- * @{\r
- */\r
-#define OB_WRPSTATE_DISABLE ((uint32_t)0x00U) /*!< Disable the write protection of the desired bank 1 sectors */\r
-#define OB_WRPSTATE_ENABLE ((uint32_t)0x01U) /*!< Enable the write protection of the desired bank 1 sectors */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Option_Type FLASH Option Type\r
- * @{\r
- */\r
-#define OPTIONBYTE_WRP ((uint32_t)0x01U) /*!< WRP option byte configuration */\r
-#define OPTIONBYTE_RDP ((uint32_t)0x02U) /*!< RDP option byte configuration */\r
-#define OPTIONBYTE_USER ((uint32_t)0x04U) /*!< USER option byte configuration */\r
-#define OPTIONBYTE_BOR ((uint32_t)0x08U) /*!< BOR option byte configuration */\r
-#define OPTIONBYTE_BOOTADDR_0 ((uint32_t)0x10U) /*!< Boot 0 Address configuration */\r
-#define OPTIONBYTE_BOOTADDR_1 ((uint32_t)0x20U) /*!< Boot 1 Address configuration */\r
-#if defined (FLASH_OPTCR2_PCROP)\r
-#define OPTIONBYTE_PCROP ((uint32_t)0x40U) /*!< PCROP configuration */\r
-#define OPTIONBYTE_PCROP_RDP ((uint32_t)0x80U) /*!< PCROP_RDP configuration */\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_Read_Protection FLASH Option Bytes Read Protection\r
- * @{\r
- */\r
-#define OB_RDP_LEVEL_0 ((uint8_t)0xAAU)\r
-#define OB_RDP_LEVEL_1 ((uint8_t)0x55U)\r
-#define OB_RDP_LEVEL_2 ((uint8_t)0xCCU) /*!< Warning: When enabling read protection level 2\r
- it s no more possible to go back to level 1 or 0 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_WWatchdog FLASH Option Bytes WWatchdog\r
- * @{\r
- */\r
-#define OB_WWDG_SW ((uint32_t)0x10U) /*!< Software WWDG selected */\r
-#define OB_WWDG_HW ((uint32_t)0x00U) /*!< Hardware WWDG selected */\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_IWatchdog FLASH Option Bytes IWatchdog\r
- * @{\r
- */\r
-#define OB_IWDG_SW ((uint32_t)0x20U) /*!< Software IWDG selected */\r
-#define OB_IWDG_HW ((uint32_t)0x00U) /*!< Hardware IWDG selected */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_nRST_STOP FLASH Option Bytes nRST_STOP\r
- * @{\r
- */\r
-#define OB_STOP_NO_RST ((uint32_t)0x40U) /*!< No reset generated when entering in STOP */\r
-#define OB_STOP_RST ((uint32_t)0x00U) /*!< Reset generated when entering in STOP */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_nRST_STDBY FLASH Option Bytes nRST_STDBY\r
- * @{\r
- */\r
-#define OB_STDBY_NO_RST ((uint32_t)0x80U) /*!< No reset generated when entering in STANDBY */\r
-#define OB_STDBY_RST ((uint32_t)0x00U) /*!< Reset generated when entering in STANDBY */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_STOP FLASH IWDG Counter Freeze in STOP\r
- * @{\r
- */\r
-#define OB_IWDG_STOP_FREEZE ((uint32_t)0x00000000U) /*!< Freeze IWDG counter in STOP mode */\r
-#define OB_IWDG_STOP_ACTIVE ((uint32_t)0x80000000U) /*!< IWDG counter active in STOP mode */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_SANDBY FLASH IWDG Counter Freeze in STANDBY\r
- * @{\r
- */\r
-#define OB_IWDG_STDBY_FREEZE ((uint32_t)0x00000000U) /*!< Freeze IWDG counter in STANDBY mode */\r
-#define OB_IWDG_STDBY_ACTIVE ((uint32_t)0x40000000U) /*!< IWDG counter active in STANDBY mode */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_BOR_Reset_Level FLASH BOR Reset Level\r
- * @{\r
- */\r
-#define OB_BOR_LEVEL3 ((uint32_t)0x00U) /*!< Supply voltage ranges from 2.70 to 3.60 V */\r
-#define OB_BOR_LEVEL2 ((uint32_t)0x04U) /*!< Supply voltage ranges from 2.40 to 2.70 V */\r
-#define OB_BOR_LEVEL1 ((uint32_t)0x08U) /*!< Supply voltage ranges from 2.10 to 2.40 V */\r
-#define OB_BOR_OFF ((uint32_t)0x0CU) /*!< Supply voltage ranges from 1.62 to 2.10 V */\r
-/**\r
- * @}\r
- */\r
-\r
-#if defined (FLASH_OPTCR_nDBOOT)\r
-/** @defgroup FLASHEx_Option_Bytes_nDBOOT FLASH Option Bytes nDBOOT\r
- * @{\r
- */\r
-#define OB_DUAL_BOOT_DISABLE ((uint32_t)0x10000000U) /* !< Dual Boot disable. Boot according to boot address option */\r
-#define OB_DUAL_BOOT_ENABLE ((uint32_t)0x00000000U) /* !< Dual Boot enable. Boot always from system memory if boot address in flash\r
- (Dual bank Boot mode), or RAM if Boot address option in RAM */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_OPTCR_nDBOOT */\r
-\r
-#if defined (FLASH_OPTCR_nDBANK)\r
-/** @defgroup FLASHEx_Option_Bytes_nDBank FLASH Single Bank or Dual Bank\r
- * @{\r
- */\r
-#define OB_NDBANK_SINGLE_BANK ((uint32_t)0x20000000U) /*!< NDBANK bit is set : Single Bank mode */\r
-#define OB_NDBANK_DUAL_BANK ((uint32_t)0x00000000U) /*!< NDBANK bit is reset : Dual Bank mode */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_OPTCR_nDBANK */\r
-\r
-/** @defgroup FLASHEx_Boot_Address FLASH Boot Address\r
- * @{\r
- */\r
-#define OB_BOOTADDR_ITCM_RAM ((uint32_t)0x0000U) /*!< Boot from ITCM RAM (0x00000000) */\r
-#define OB_BOOTADDR_SYSTEM ((uint32_t)0x0040U) /*!< Boot from System memory bootloader (0x00100000) */\r
-#define OB_BOOTADDR_ITCM_FLASH ((uint32_t)0x0080U) /*!< Boot from Flash on ITCM interface (0x00200000) */\r
-#define OB_BOOTADDR_AXIM_FLASH ((uint32_t)0x2000U) /*!< Boot from Flash on AXIM interface (0x08000000) */\r
-#define OB_BOOTADDR_DTCM_RAM ((uint32_t)0x8000U) /*!< Boot from DTCM RAM (0x20000000) */\r
-#define OB_BOOTADDR_SRAM1 ((uint32_t)0x8004U) /*!< Boot from SRAM1 (0x20010000) */\r
-#if (SRAM2_BASE == 0x2003C000U)\r
-#define OB_BOOTADDR_SRAM2 ((uint32_t)0x800FU) /*!< Boot from SRAM2 (0x2003C000) */\r
-#else\r
-#define OB_BOOTADDR_SRAM2 ((uint32_t)0x8013U) /*!< Boot from SRAM2 (0x2004C000) */\r
-#endif /* SRAM2_BASE == 0x2003C000U */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Latency FLASH Latency\r
- * @{\r
- */\r
-#define FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero Latency cycle */\r
-#define FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One Latency cycle */\r
-#define FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two Latency cycles */\r
-#define FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three Latency cycles */\r
-#define FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four Latency cycles */\r
-#define FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH Five Latency cycles */\r
-#define FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH Six Latency cycles */\r
-#define FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH Seven Latency cycles */\r
-#define FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH Eight Latency cycles */\r
-#define FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH Nine Latency cycles */\r
-#define FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH Ten Latency cycles */\r
-#define FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH Eleven Latency cycles */\r
-#define FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH Twelve Latency cycles */\r
-#define FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH Thirteen Latency cycles */\r
-#define FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH Fourteen Latency cycles */\r
-#define FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH Fifteen Latency cycles */\r
-/**\r
- * @}\r
- */\r
-\r
-#if defined (FLASH_OPTCR_nDBANK)\r
-/** @defgroup FLASHEx_Banks FLASH Banks\r
- * @{\r
- */\r
-#define FLASH_BANK_1 ((uint32_t)0x01U) /*!< Bank 1 */\r
-#define FLASH_BANK_2 ((uint32_t)0x02U) /*!< Bank 2 */\r
-#define FLASH_BANK_BOTH ((uint32_t)(FLASH_BANK_1 | FLASH_BANK_2)) /*!< Bank1 and Bank2 */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_OPTCR_nDBANK */\r
-\r
-/** @defgroup FLASHEx_MassErase_bit FLASH Mass Erase bit\r
- * @{\r
- */\r
-#if defined (FLASH_OPTCR_nDBANK)\r
-#define FLASH_MER_BIT (FLASH_CR_MER1 | FLASH_CR_MER2) /*!< 2 MER bits */\r
-#else\r
-#define FLASH_MER_BIT (FLASH_CR_MER) /*!< only 1 MER bit */\r
-#endif /* FLASH_OPTCR_nDBANK */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASHEx_Sectors FLASH Sectors\r
- * @{\r
- */\r
-#if (FLASH_SECTOR_TOTAL == 24)\r
-#define FLASH_SECTOR_8 ((uint32_t)8U) /*!< Sector Number 8 */\r
-#define FLASH_SECTOR_9 ((uint32_t)9U) /*!< Sector Number 9 */\r
-#define FLASH_SECTOR_10 ((uint32_t)10U) /*!< Sector Number 10 */\r
-#define FLASH_SECTOR_11 ((uint32_t)11U) /*!< Sector Number 11 */\r
-#define FLASH_SECTOR_12 ((uint32_t)12U) /*!< Sector Number 12 */\r
-#define FLASH_SECTOR_13 ((uint32_t)13U) /*!< Sector Number 13 */\r
-#define FLASH_SECTOR_14 ((uint32_t)14U) /*!< Sector Number 14 */\r
-#define FLASH_SECTOR_15 ((uint32_t)15U) /*!< Sector Number 15 */\r
-#define FLASH_SECTOR_16 ((uint32_t)16U) /*!< Sector Number 16 */\r
-#define FLASH_SECTOR_17 ((uint32_t)17U) /*!< Sector Number 17 */\r
-#define FLASH_SECTOR_18 ((uint32_t)18U) /*!< Sector Number 18 */\r
-#define FLASH_SECTOR_19 ((uint32_t)19U) /*!< Sector Number 19 */\r
-#define FLASH_SECTOR_20 ((uint32_t)20U) /*!< Sector Number 20 */\r
-#define FLASH_SECTOR_21 ((uint32_t)21U) /*!< Sector Number 21 */\r
-#define FLASH_SECTOR_22 ((uint32_t)22U) /*!< Sector Number 22 */\r
-#define FLASH_SECTOR_23 ((uint32_t)23U) /*!< Sector Number 23 */\r
-#endif /* FLASH_SECTOR_TOTAL == 24 */\r
-/**\r
- * @}\r
- */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 24)\r
-/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection\r
- * @note For Single Bank mode, use OB_WRP_SECTOR_x defines: In fact, in FLASH_OPTCR register,\r
- * nWRP[11:0] bits contain the value of the write-protection option bytes for sectors 0 to 11.\r
- * For Dual Bank mode, use OB_WRP_DB_SECTOR_x defines: In fact, in FLASH_OPTCR register,\r
- * nWRP[11:0] bits are divided on two groups, one group dedicated for bank 1 and\r
- * a second one dedicated for bank 2 (nWRP[i] activates Write protection on sector 2*i and 2*i+1).\r
- * This behavior is applicable only for STM32F76xxx / STM32F77xxx devices.\r
- * @{\r
- */\r
-/* Single Bank Sectors */\r
-#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Single Bank Sector0 */\r
-#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Single Bank Sector1 */\r
-#define OB_WRP_SECTOR_2 ((uint32_t)0x00040000U) /*!< Write protection of Single Bank Sector2 */\r
-#define OB_WRP_SECTOR_3 ((uint32_t)0x00080000U) /*!< Write protection of Single Bank Sector3 */\r
-#define OB_WRP_SECTOR_4 ((uint32_t)0x00100000U) /*!< Write protection of Single Bank Sector4 */\r
-#define OB_WRP_SECTOR_5 ((uint32_t)0x00200000U) /*!< Write protection of Single Bank Sector5 */\r
-#define OB_WRP_SECTOR_6 ((uint32_t)0x00400000U) /*!< Write protection of Single Bank Sector6 */\r
-#define OB_WRP_SECTOR_7 ((uint32_t)0x00800000U) /*!< Write protection of Single Bank Sector7 */\r
-#define OB_WRP_SECTOR_8 ((uint32_t)0x01000000U) /*!< Write protection of Single Bank Sector8 */\r
-#define OB_WRP_SECTOR_9 ((uint32_t)0x02000000U) /*!< Write protection of Single Bank Sector9 */\r
-#define OB_WRP_SECTOR_10 ((uint32_t)0x04000000U) /*!< Write protection of Single Bank Sector10 */\r
-#define OB_WRP_SECTOR_11 ((uint32_t)0x08000000U) /*!< Write protection of Single Bank Sector11 */\r
-#define OB_WRP_SECTOR_All ((uint32_t)0x0FFF0000U) /*!< Write protection of all Sectors for Single Bank Flash */\r
-\r
-/* Dual Bank Sectors */\r
-#define OB_WRP_DB_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Dual Bank Sector0 */\r
-#define OB_WRP_DB_SECTOR_1 ((uint32_t)0x00010000U) /*!< Write protection of Dual Bank Sector1 */\r
-#define OB_WRP_DB_SECTOR_2 ((uint32_t)0x00020000U) /*!< Write protection of Dual Bank Sector2 */\r
-#define OB_WRP_DB_SECTOR_3 ((uint32_t)0x00020000U) /*!< Write protection of Dual Bank Sector3 */\r
-#define OB_WRP_DB_SECTOR_4 ((uint32_t)0x00040000U) /*!< Write protection of Dual Bank Sector4 */\r
-#define OB_WRP_DB_SECTOR_5 ((uint32_t)0x00040000U) /*!< Write protection of Dual Bank Sector5 */\r
-#define OB_WRP_DB_SECTOR_6 ((uint32_t)0x00080000U) /*!< Write protection of Dual Bank Sector6 */\r
-#define OB_WRP_DB_SECTOR_7 ((uint32_t)0x00080000U) /*!< Write protection of Dual Bank Sector7 */\r
-#define OB_WRP_DB_SECTOR_8 ((uint32_t)0x00100000U) /*!< Write protection of Dual Bank Sector8 */\r
-#define OB_WRP_DB_SECTOR_9 ((uint32_t)0x00100000U) /*!< Write protection of Dual Bank Sector9 */\r
-#define OB_WRP_DB_SECTOR_10 ((uint32_t)0x00200000U) /*!< Write protection of Dual Bank Sector10 */\r
-#define OB_WRP_DB_SECTOR_11 ((uint32_t)0x00200000U) /*!< Write protection of Dual Bank Sector11 */\r
-#define OB_WRP_DB_SECTOR_12 ((uint32_t)0x00400000U) /*!< Write protection of Dual Bank Sector12 */\r
-#define OB_WRP_DB_SECTOR_13 ((uint32_t)0x00400000U) /*!< Write protection of Dual Bank Sector13 */\r
-#define OB_WRP_DB_SECTOR_14 ((uint32_t)0x00800000U) /*!< Write protection of Dual Bank Sector14 */\r
-#define OB_WRP_DB_SECTOR_15 ((uint32_t)0x00800000U) /*!< Write protection of Dual Bank Sector15 */\r
-#define OB_WRP_DB_SECTOR_16 ((uint32_t)0x01000000U) /*!< Write protection of Dual Bank Sector16 */\r
-#define OB_WRP_DB_SECTOR_17 ((uint32_t)0x01000000U) /*!< Write protection of Dual Bank Sector17 */\r
-#define OB_WRP_DB_SECTOR_18 ((uint32_t)0x02000000U) /*!< Write protection of Dual Bank Sector18 */\r
-#define OB_WRP_DB_SECTOR_19 ((uint32_t)0x02000000U) /*!< Write protection of Dual Bank Sector19 */\r
-#define OB_WRP_DB_SECTOR_20 ((uint32_t)0x04000000U) /*!< Write protection of Dual Bank Sector20 */\r
-#define OB_WRP_DB_SECTOR_21 ((uint32_t)0x04000000U) /*!< Write protection of Dual Bank Sector21 */\r
-#define OB_WRP_DB_SECTOR_22 ((uint32_t)0x08000000U) /*!< Write protection of Dual Bank Sector22 */\r
-#define OB_WRP_DB_SECTOR_23 ((uint32_t)0x08000000U) /*!< Write protection of Dual Bank Sector23 */\r
-#define OB_WRP_DB_SECTOR_All ((uint32_t)0x0FFF0000U) /*!< Write protection of all Sectors for Dual Bank Flash */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_SECTOR_TOTAL == 24 */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 8)\r
-/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection\r
- * @{\r
- */\r
-#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Sector0 */\r
-#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Sector1 */\r
-#define OB_WRP_SECTOR_2 ((uint32_t)0x00040000U) /*!< Write protection of Sector2 */\r
-#define OB_WRP_SECTOR_3 ((uint32_t)0x00080000U) /*!< Write protection of Sector3 */\r
-#define OB_WRP_SECTOR_4 ((uint32_t)0x00100000U) /*!< Write protection of Sector4 */\r
-#define OB_WRP_SECTOR_5 ((uint32_t)0x00200000U) /*!< Write protection of Sector5 */\r
-#define OB_WRP_SECTOR_6 ((uint32_t)0x00400000U) /*!< Write protection of Sector6 */\r
-#define OB_WRP_SECTOR_7 ((uint32_t)0x00800000U) /*!< Write protection of Sector7 */\r
-#define OB_WRP_SECTOR_All ((uint32_t)0x00FF0000U) /*!< Write protection of all Sectors */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_SECTOR_TOTAL == 8 */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 4)\r
-/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection\r
- * @{\r
- */\r
-#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Sector0 */\r
-#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Sector1 */\r
-#define OB_WRP_SECTOR_2 ((uint32_t)0x00040000U) /*!< Write protection of Sector2 */\r
-#define OB_WRP_SECTOR_3 ((uint32_t)0x00080000U) /*!< Write protection of Sector3 */\r
-#define OB_WRP_SECTOR_All ((uint32_t)0x000F0000U) /*!< Write protection of all Sectors */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_SECTOR_TOTAL == 4 */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 2)\r
-/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection\r
- * @{\r
- */\r
-#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Sector0 */\r
-#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Sector1 */\r
-#define OB_WRP_SECTOR_All ((uint32_t)0x00030000U) /*!< Write protection of all Sectors */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_SECTOR_TOTAL == 2 */\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
-#if (FLASH_SECTOR_TOTAL == 8)\r
-/** @defgroup FLASHEx_Option_Bytes_PCROP_Sectors FLASH Option Bytes PCROP Sectors\r
- * @{\r
- */\r
-#define OB_PCROP_SECTOR_0 ((uint32_t)0x00000001U) /*!< PC Readout protection of Sector0 */\r
-#define OB_PCROP_SECTOR_1 ((uint32_t)0x00000002U) /*!< PC Readout protection of Sector1 */\r
-#define OB_PCROP_SECTOR_2 ((uint32_t)0x00000004U) /*!< PC Readout protection of Sector2 */\r
-#define OB_PCROP_SECTOR_3 ((uint32_t)0x00000008U) /*!< PC Readout protection of Sector3 */\r
-#define OB_PCROP_SECTOR_4 ((uint32_t)0x00000010U) /*!< PC Readout protection of Sector4 */\r
-#define OB_PCROP_SECTOR_5 ((uint32_t)0x00000020U) /*!< PC Readout protection of Sector5 */\r
-#define OB_PCROP_SECTOR_6 ((uint32_t)0x00000040U) /*!< PC Readout protection of Sector6 */\r
-#define OB_PCROP_SECTOR_7 ((uint32_t)0x00000080U) /*!< PC Readout protection of Sector7 */\r
-#define OB_PCROP_SECTOR_All ((uint32_t)0x000000FFU) /*!< PC Readout protection of all Sectors */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_SECTOR_TOTAL == 8 */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 4)\r
-/** @defgroup FLASHEx_Option_Bytes_PCROP_Sectors FLASH Option Bytes PCROP Sectors\r
- * @{\r
- */\r
-#define OB_PCROP_SECTOR_0 ((uint32_t)0x00000001U) /*!< PC Readout protection of Sector0 */\r
-#define OB_PCROP_SECTOR_1 ((uint32_t)0x00000002U) /*!< PC Readout protection of Sector1 */\r
-#define OB_PCROP_SECTOR_2 ((uint32_t)0x00000004U) /*!< PC Readout protection of Sector2 */\r
-#define OB_PCROP_SECTOR_3 ((uint32_t)0x00000008U) /*!< PC Readout protection of Sector3 */\r
-#define OB_PCROP_SECTOR_All ((uint32_t)0x0000000FU) /*!< PC Readout protection of all Sectors */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_SECTOR_TOTAL == 4 */\r
-\r
-/** @defgroup FLASHEx_Option_Bytes_PCROP_RDP FLASH Option Bytes PCROP_RDP Bit\r
- * @{\r
- */\r
-#define OB_PCROP_RDP_ENABLE ((uint32_t)0x80000000U) /*!< PCROP_RDP Enable */\r
-#define OB_PCROP_RDP_DISABLE ((uint32_t)0x00000000U) /*!< PCROP_RDP Disable */\r
-/**\r
- * @}\r
- */\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup FLASH_Exported_Macros FLASH Exported Macros\r
- * @{\r
- */\r
-/**\r
- * @brief Calculate the FLASH Boot Base Adress (BOOT_ADD0 or BOOT_ADD1)\r
- * @note Returned value BOOT_ADDx[15:0] corresponds to boot address [29:14].\r
- * @param __ADDRESS__ FLASH Boot Address (in the range 0x0000 0000 to 0x2004 FFFF with a granularity of 16KB)\r
- * @retval The FLASH Boot Base Adress\r
- */\r
-#define __HAL_FLASH_CALC_BOOT_BASE_ADR(__ADDRESS__) ((__ADDRESS__) >> 14)\r
- /**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup FLASHEx_Exported_Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup FLASHEx_Exported_Functions_Group1\r
- * @{\r
- */\r
-/* Extension Program operation functions *************************************/\r
-HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError);\r
-HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit);\r
-HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit);\r
-void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup FLASHEx_Private_Macros FLASH Private Macros\r
- * @{\r
- */\r
-\r
-/** @defgroup FLASHEx_IS_FLASH_Definitions FLASH Private macros to check input parameters\r
- * @{\r
- */\r
-\r
-#define IS_FLASH_TYPEERASE(VALUE)(((VALUE) == FLASH_TYPEERASE_SECTORS) || \\r
- ((VALUE) == FLASH_TYPEERASE_MASSERASE))\r
-\r
-#define IS_VOLTAGERANGE(RANGE)(((RANGE) == FLASH_VOLTAGE_RANGE_1) || \\r
- ((RANGE) == FLASH_VOLTAGE_RANGE_2) || \\r
- ((RANGE) == FLASH_VOLTAGE_RANGE_3) || \\r
- ((RANGE) == FLASH_VOLTAGE_RANGE_4))\r
-\r
-#define IS_WRPSTATE(VALUE)(((VALUE) == OB_WRPSTATE_DISABLE) || \\r
- ((VALUE) == OB_WRPSTATE_ENABLE))\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
-#define IS_OPTIONBYTE(VALUE)(((VALUE) <= (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\\r
- OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1 |\\r
- OPTIONBYTE_PCROP | OPTIONBYTE_PCROP_RDP)))\r
-#else\r
-#define IS_OPTIONBYTE(VALUE)(((VALUE) <= (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\\r
- OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1)))\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-\r
-#define IS_OB_BOOT_ADDRESS(ADDRESS) ((ADDRESS) <= 0x8013)\r
-\r
-#define IS_OB_RDP_LEVEL(LEVEL) (((LEVEL) == OB_RDP_LEVEL_0) ||\\r
- ((LEVEL) == OB_RDP_LEVEL_1) ||\\r
- ((LEVEL) == OB_RDP_LEVEL_2))\r
-\r
-#define IS_OB_WWDG_SOURCE(SOURCE) (((SOURCE) == OB_WWDG_SW) || ((SOURCE) == OB_WWDG_HW))\r
-\r
-#define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))\r
-\r
-#define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NO_RST) || ((SOURCE) == OB_STOP_RST))\r
-\r
-#define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NO_RST) || ((SOURCE) == OB_STDBY_RST))\r
-\r
-#define IS_OB_IWDG_STOP_FREEZE(FREEZE) (((FREEZE) == OB_IWDG_STOP_FREEZE) || ((FREEZE) == OB_IWDG_STOP_ACTIVE))\r
-\r
-#define IS_OB_IWDG_STDBY_FREEZE(FREEZE) (((FREEZE) == OB_IWDG_STDBY_FREEZE) || ((FREEZE) == OB_IWDG_STDBY_ACTIVE))\r
-\r
-#define IS_OB_BOR_LEVEL(LEVEL) (((LEVEL) == OB_BOR_LEVEL1) || ((LEVEL) == OB_BOR_LEVEL2) ||\\r
- ((LEVEL) == OB_BOR_LEVEL3) || ((LEVEL) == OB_BOR_OFF))\r
-\r
-#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_LATENCY_0) || \\r
- ((LATENCY) == FLASH_LATENCY_1) || \\r
- ((LATENCY) == FLASH_LATENCY_2) || \\r
- ((LATENCY) == FLASH_LATENCY_3) || \\r
- ((LATENCY) == FLASH_LATENCY_4) || \\r
- ((LATENCY) == FLASH_LATENCY_5) || \\r
- ((LATENCY) == FLASH_LATENCY_6) || \\r
- ((LATENCY) == FLASH_LATENCY_7) || \\r
- ((LATENCY) == FLASH_LATENCY_8) || \\r
- ((LATENCY) == FLASH_LATENCY_9) || \\r
- ((LATENCY) == FLASH_LATENCY_10) || \\r
- ((LATENCY) == FLASH_LATENCY_11) || \\r
- ((LATENCY) == FLASH_LATENCY_12) || \\r
- ((LATENCY) == FLASH_LATENCY_13) || \\r
- ((LATENCY) == FLASH_LATENCY_14) || \\r
- ((LATENCY) == FLASH_LATENCY_15))\r
-\r
-#define IS_FLASH_ADDRESS(ADDRESS) ((((ADDRESS) >= FLASH_BASE) && ((ADDRESS) <= FLASH_END)) || \\r
- (((ADDRESS) >= FLASH_OTP_BASE) && ((ADDRESS) <= FLASH_OTP_END)))\r
-#define IS_FLASH_NBSECTORS(NBSECTORS) (((NBSECTORS) != 0U) && ((NBSECTORS) <= FLASH_SECTOR_TOTAL))\r
-\r
-#if (FLASH_SECTOR_TOTAL == 8)\r
-#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\\r
- ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\\r
- ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\\r
- ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7))\r
-\r
-#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xFF00FFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U))\r
-#endif /* FLASH_SECTOR_TOTAL == 8 */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 24)\r
-#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\\r
- ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\\r
- ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\\r
- ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7) ||\\r
- ((SECTOR) == FLASH_SECTOR_8) || ((SECTOR) == FLASH_SECTOR_9) ||\\r
- ((SECTOR) == FLASH_SECTOR_10) || ((SECTOR) == FLASH_SECTOR_11) ||\\r
- ((SECTOR) == FLASH_SECTOR_12) || ((SECTOR) == FLASH_SECTOR_13) ||\\r
- ((SECTOR) == FLASH_SECTOR_14) || ((SECTOR) == FLASH_SECTOR_15) ||\\r
- ((SECTOR) == FLASH_SECTOR_16) || ((SECTOR) == FLASH_SECTOR_17) ||\\r
- ((SECTOR) == FLASH_SECTOR_18) || ((SECTOR) == FLASH_SECTOR_19) ||\\r
- ((SECTOR) == FLASH_SECTOR_20) || ((SECTOR) == FLASH_SECTOR_21) ||\\r
- ((SECTOR) == FLASH_SECTOR_22) || ((SECTOR) == FLASH_SECTOR_23))\r
-\r
-#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xF000FFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U))\r
-#endif /* FLASH_SECTOR_TOTAL == 24 */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 4)\r
-#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\\r
- ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3))\r
-\r
-#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xFFF0FFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U))\r
-#endif /* FLASH_SECTOR_TOTAL == 4 */\r
-\r
-#if (FLASH_SECTOR_TOTAL == 2)\r
-#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1))\r
-\r
-#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xFFFCFFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U))\r
-#endif /* FLASH_SECTOR_TOTAL == 2 */\r
-\r
-#if defined (FLASH_OPTCR_nDBANK)\r
-#define IS_OB_NDBANK(VALUE) (((VALUE) == OB_NDBANK_SINGLE_BANK) || \\r
- ((VALUE) == OB_NDBANK_DUAL_BANK))\r
-\r
-#define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1) || \\r
- ((BANK) == FLASH_BANK_2) || \\r
- ((BANK) == FLASH_BANK_BOTH))\r
-#endif /* FLASH_OPTCR_nDBANK */\r
-\r
-#if defined (FLASH_OPTCR_nDBOOT)\r
-#define IS_OB_NDBOOT(VALUE) (((VALUE) == OB_DUAL_BOOT_DISABLE) || \\r
- ((VALUE) == OB_DUAL_BOOT_ENABLE))\r
-#endif /* FLASH_OPTCR_nDBOOT */\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
-#define IS_OB_PCROP_SECTOR(SECTOR) (((SECTOR) & (uint32_t)0xFFFFFF00U) == 0x00000000U)\r
-#define IS_OB_PCROP_RDP_VALUE(VALUE) (((VALUE) == OB_PCROP_RDP_DISABLE) || \\r
- ((VALUE) == OB_PCROP_RDP_ENABLE))\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup FLASHEx_Private_Functions FLASH Private Functions\r
- * @{\r
- */\r
-void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange);\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_FLASH_EX_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_gpio.h\r
- * @author MCD Application Team\r
- * @brief Header file of GPIO HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_GPIO_H\r
-#define __STM32F7xx_HAL_GPIO_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup GPIO\r
- * @{\r
- */ \r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup GPIO_Exported_Types GPIO Exported Types\r
- * @{\r
- */\r
-\r
-/** \r
- * @brief GPIO Init structure definition \r
- */ \r
-typedef struct\r
-{\r
- uint32_t Pin; /*!< Specifies the GPIO pins to be configured.\r
- This parameter can be any value of @ref GPIO_pins_define */\r
-\r
- uint32_t Mode; /*!< Specifies the operating mode for the selected pins.\r
- This parameter can be a value of @ref GPIO_mode_define */\r
-\r
- uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.\r
- This parameter can be a value of @ref GPIO_pull_define */\r
-\r
- uint32_t Speed; /*!< Specifies the speed for the selected pins.\r
- This parameter can be a value of @ref GPIO_speed_define */\r
-\r
- uint32_t Alternate; /*!< Peripheral to be connected to the selected pins. \r
- This parameter can be a value of @ref GPIO_Alternate_function_selection */\r
-}GPIO_InitTypeDef;\r
-\r
-/** \r
- * @brief GPIO Bit SET and Bit RESET enumeration \r
- */\r
-typedef enum\r
-{\r
- GPIO_PIN_RESET = 0,\r
- GPIO_PIN_SET\r
-}GPIO_PinState;\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup GPIO_Exported_Constants GPIO Exported Constants\r
- * @{\r
- */ \r
-\r
-/** @defgroup GPIO_pins_define GPIO pins define\r
- * @{\r
- */\r
-#define GPIO_PIN_0 ((uint16_t)0x0001U) /* Pin 0 selected */\r
-#define GPIO_PIN_1 ((uint16_t)0x0002U) /* Pin 1 selected */\r
-#define GPIO_PIN_2 ((uint16_t)0x0004U) /* Pin 2 selected */\r
-#define GPIO_PIN_3 ((uint16_t)0x0008U) /* Pin 3 selected */\r
-#define GPIO_PIN_4 ((uint16_t)0x0010U) /* Pin 4 selected */\r
-#define GPIO_PIN_5 ((uint16_t)0x0020U) /* Pin 5 selected */\r
-#define GPIO_PIN_6 ((uint16_t)0x0040U) /* Pin 6 selected */\r
-#define GPIO_PIN_7 ((uint16_t)0x0080U) /* Pin 7 selected */\r
-#define GPIO_PIN_8 ((uint16_t)0x0100U) /* Pin 8 selected */\r
-#define GPIO_PIN_9 ((uint16_t)0x0200U) /* Pin 9 selected */\r
-#define GPIO_PIN_10 ((uint16_t)0x0400U) /* Pin 10 selected */\r
-#define GPIO_PIN_11 ((uint16_t)0x0800U) /* Pin 11 selected */\r
-#define GPIO_PIN_12 ((uint16_t)0x1000U) /* Pin 12 selected */\r
-#define GPIO_PIN_13 ((uint16_t)0x2000U) /* Pin 13 selected */\r
-#define GPIO_PIN_14 ((uint16_t)0x4000U) /* Pin 14 selected */\r
-#define GPIO_PIN_15 ((uint16_t)0x8000U) /* Pin 15 selected */\r
-#define GPIO_PIN_All ((uint16_t)0xFFFFU) /* All pins selected */\r
-\r
-#define GPIO_PIN_MASK ((uint32_t)0x0000FFFFU) /* PIN mask for assert test */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup GPIO_mode_define GPIO mode define\r
- * @brief GPIO Configuration Mode \r
- * Elements values convention: 0xX0yz00YZ\r
- * - X : GPIO mode or EXTI Mode\r
- * - y : External IT or Event trigger detection \r
- * - z : IO configuration on External IT or Event\r
- * - Y : Output type (Push Pull or Open Drain)\r
- * - Z : IO Direction mode (Input, Output, Alternate or Analog)\r
- * @{\r
- */ \r
-#define GPIO_MODE_INPUT ((uint32_t)0x00000000U) /*!< Input Floating Mode */\r
-#define GPIO_MODE_OUTPUT_PP ((uint32_t)0x00000001U) /*!< Output Push Pull Mode */\r
-#define GPIO_MODE_OUTPUT_OD ((uint32_t)0x00000011U) /*!< Output Open Drain Mode */\r
-#define GPIO_MODE_AF_PP ((uint32_t)0x00000002U) /*!< Alternate Function Push Pull Mode */\r
-#define GPIO_MODE_AF_OD ((uint32_t)0x00000012U) /*!< Alternate Function Open Drain Mode */\r
-\r
-#define GPIO_MODE_ANALOG ((uint32_t)0x00000003U) /*!< Analog Mode */\r
- \r
-#define GPIO_MODE_IT_RISING ((uint32_t)0x10110000U) /*!< External Interrupt Mode with Rising edge trigger detection */\r
-#define GPIO_MODE_IT_FALLING ((uint32_t)0x10210000U) /*!< External Interrupt Mode with Falling edge trigger detection */\r
-#define GPIO_MODE_IT_RISING_FALLING ((uint32_t)0x10310000U) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */\r
- \r
-#define GPIO_MODE_EVT_RISING ((uint32_t)0x10120000U) /*!< External Event Mode with Rising edge trigger detection */\r
-#define GPIO_MODE_EVT_FALLING ((uint32_t)0x10220000U) /*!< External Event Mode with Falling edge trigger detection */\r
-#define GPIO_MODE_EVT_RISING_FALLING ((uint32_t)0x10320000U) /*!< External Event Mode with Rising/Falling edge trigger detection */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup GPIO_speed_define GPIO speed define\r
- * @brief GPIO Output Maximum frequency\r
- * @{\r
- */ \r
-#define GPIO_SPEED_FREQ_LOW ((uint32_t)0x00000000U) /*!< Low speed */\r
-#define GPIO_SPEED_FREQ_MEDIUM ((uint32_t)0x00000001U) /*!< Medium speed */\r
-#define GPIO_SPEED_FREQ_HIGH ((uint32_t)0x00000002U) /*!< Fast speed */\r
-#define GPIO_SPEED_FREQ_VERY_HIGH ((uint32_t)0x00000003U) /*!< High speed */\r
-/**\r
- * @}\r
- */\r
-\r
- /** @defgroup GPIO_pull_define GPIO pull define\r
- * @brief GPIO Pull-Up or Pull-Down Activation\r
- * @{\r
- */ \r
-#define GPIO_NOPULL ((uint32_t)0x00000000U) /*!< No Pull-up or Pull-down activation */\r
-#define GPIO_PULLUP ((uint32_t)0x00000001U) /*!< Pull-up activation */\r
-#define GPIO_PULLDOWN ((uint32_t)0x00000002U) /*!< Pull-down activation */\r
-/**\r
- * @}\r
- */\r
- \r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup GPIO_Exported_Macros GPIO Exported Macros\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Checks whether the specified EXTI line flag is set or not.\r
- * @param __EXTI_LINE__ specifies the EXTI line flag to check.\r
- * This parameter can be GPIO_PIN_x where x can be(0..15)\r
- * @retval The new state of __EXTI_LINE__ (SET or RESET).\r
- */\r
-#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))\r
-\r
-/**\r
- * @brief Clears the EXTI's line pending flags.\r
- * @param __EXTI_LINE__ specifies the EXTI lines flags to clear.\r
- * This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\r
- * @retval None\r
- */\r
-#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))\r
-\r
-/**\r
- * @brief Checks whether the specified EXTI line is asserted or not.\r
- * @param __EXTI_LINE__ specifies the EXTI line to check.\r
- * This parameter can be GPIO_PIN_x where x can be(0..15)\r
- * @retval The new state of __EXTI_LINE__ (SET or RESET).\r
- */\r
-#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))\r
-\r
-/**\r
- * @brief Clears the EXTI's line pending bits.\r
- * @param __EXTI_LINE__ specifies the EXTI lines to clear.\r
- * This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\r
- * @retval None\r
- */\r
-#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))\r
-\r
-/**\r
- * @brief Generates a Software interrupt on selected EXTI line.\r
- * @param __EXTI_LINE__ specifies the EXTI line to check.\r
- * This parameter can be GPIO_PIN_x where x can be(0..15)\r
- * @retval None\r
- */\r
-#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__))\r
-/**\r
- * @}\r
- */\r
-\r
-/* Include GPIO HAL Extension module */\r
-#include "stm32f7xx_hal_gpio_ex.h"\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup GPIO_Exported_Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup GPIO_Exported_Functions_Group1\r
- * @{\r
- */\r
-/* Initialization and de-initialization functions *****************************/\r
-void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);\r
-void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup GPIO_Exported_Functions_Group2\r
- * @{\r
- */\r
-/* IO operation functions *****************************************************/\r
-GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
-void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);\r
-void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
-HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
-void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);\r
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */ \r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup GPIO_Private_Constants GPIO Private Constants\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup GPIO_Private_Macros GPIO Private Macros\r
- * @{\r
- */\r
-#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))\r
-#define IS_GPIO_PIN(__PIN__) ((((__PIN__) & GPIO_PIN_MASK) != (uint32_t)0x00))\r
-#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\\r
- ((MODE) == GPIO_MODE_OUTPUT_PP) ||\\r
- ((MODE) == GPIO_MODE_OUTPUT_OD) ||\\r
- ((MODE) == GPIO_MODE_AF_PP) ||\\r
- ((MODE) == GPIO_MODE_AF_OD) ||\\r
- ((MODE) == GPIO_MODE_IT_RISING) ||\\r
- ((MODE) == GPIO_MODE_IT_FALLING) ||\\r
- ((MODE) == GPIO_MODE_IT_RISING_FALLING) ||\\r
- ((MODE) == GPIO_MODE_EVT_RISING) ||\\r
- ((MODE) == GPIO_MODE_EVT_FALLING) ||\\r
- ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\\r
- ((MODE) == GPIO_MODE_ANALOG))\r
-#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_LOW) || ((SPEED) == GPIO_SPEED_MEDIUM) || \\r
- ((SPEED) == GPIO_SPEED_FAST) || ((SPEED) == GPIO_SPEED_HIGH))\r
-#define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \\r
- ((PULL) == GPIO_PULLDOWN))\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup GPIO_Private_Functions GPIO Private Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_GPIO_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_gpio_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of GPIO HAL Extension module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_GPIO_EX_H\r
-#define __STM32F7xx_HAL_GPIO_EX_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup GPIOEx GPIOEx\r
- * @{\r
- */ \r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup GPIOEx_Exported_Constants GPIO Exported Constants\r
- * @{\r
- */\r
- \r
-/** @defgroup GPIO_Alternate_function_selection GPIO Alternate Function Selection\r
- * @{\r
- */ \r
-/*--------------- STM32F74xxx/STM32F75xxx/STM32F76xxx/STM32F77xxx -------------*/\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) ||\\r
- defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) \r
-/** \r
- * @brief AF 0 selection \r
- */ \r
-#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */\r
-#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */\r
-#define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */\r
-#define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 1 selection \r
- */ \r
-#define GPIO_AF1_TIM1 ((uint8_t)0x01U) /* TIM1 Alternate Function mapping */\r
-#define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */\r
-#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)\r
-#define GPIO_AF1_UART5 ((uint8_t)0x01U) /* UART5 Alternate Function mapping */\r
-#define GPIO_AF1_I2C4 ((uint8_t)0x01U) /* I2C4 Alternate Function mapping */ \r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-/** \r
- * @brief AF 2 selection \r
- */ \r
-#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */\r
-#define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */\r
-#define GPIO_AF2_TIM5 ((uint8_t)0x02U) /* TIM5 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 3 selection \r
- */ \r
-#define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */\r
-#define GPIO_AF3_TIM9 ((uint8_t)0x03U) /* TIM9 Alternate Function mapping */\r
-#define GPIO_AF3_TIM10 ((uint8_t)0x03U) /* TIM10 Alternate Function mapping */\r
-#define GPIO_AF3_TIM11 ((uint8_t)0x03U) /* TIM11 Alternate Function mapping */\r
-#define GPIO_AF3_LPTIM1 ((uint8_t)0x03U) /* LPTIM1 Alternate Function mapping */\r
-#define GPIO_AF3_CEC ((uint8_t)0x03U) /* CEC Alternate Function mapping */\r
-#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)\r
-#define GPIO_AF3_DFSDM1 ((uint8_t)0x03U) /* DFSDM1 Alternate Function mapping */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-/** \r
- * @brief AF 4 selection \r
- */ \r
-#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */\r
-#define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */\r
-#define GPIO_AF4_I2C3 ((uint8_t)0x04U) /* I2C3 Alternate Function mapping */\r
-#define GPIO_AF4_I2C4 ((uint8_t)0x04U) /* I2C4 Alternate Function mapping */\r
-#define GPIO_AF4_CEC ((uint8_t)0x04U) /* CEC Alternate Function mapping */\r
-#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)\r
-#define GPIO_AF4_USART1 ((uint8_t)0x04) /* USART1 Alternate Function mapping */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ \r
-\r
-/** \r
- * @brief AF 5 selection \r
- */ \r
-#define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */\r
-#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */\r
-#define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */\r
-#define GPIO_AF5_SPI4 ((uint8_t)0x05U) /* SPI4 Alternate Function mapping */\r
-#define GPIO_AF5_SPI5 ((uint8_t)0x05U) /* SPI5 Alternate Function mapping */\r
-#define GPIO_AF5_SPI6 ((uint8_t)0x05U) /* SPI6 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 6 selection \r
- */ \r
-#define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */\r
-#define GPIO_AF6_SAI1 ((uint8_t)0x06U) /* SAI1 Alternate Function mapping */\r
-#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)\r
-#define GPIO_AF6_UART4 ((uint8_t)0x06U) /* UART4 Alternate Function mapping */ \r
-#define GPIO_AF6_DFSDM1 ((uint8_t)0x06U) /* DFSDM1 Alternate Function mapping */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ \r
-\r
-/** \r
- * @brief AF 7 selection \r
- */ \r
-#define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */\r
-#define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */\r
-#define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */\r
-#define GPIO_AF7_UART5 ((uint8_t)0x07U) /* UART5 Alternate Function mapping */\r
-#define GPIO_AF7_SPDIFRX ((uint8_t)0x07U) /* SPDIF-RX Alternate Function mapping */\r
-#define GPIO_AF7_SPI2 ((uint8_t)0x07U) /* SPI2 Alternate Function mapping */\r
-#define GPIO_AF7_SPI3 ((uint8_t)0x07U) /* SPI3 Alternate Function mapping */\r
-#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)\r
-#define GPIO_AF7_SPI6 ((uint8_t)0x07U) /* SPI6 Alternate Function mapping */\r
-#define GPIO_AF7_DFSDM1 ((uint8_t)0x07U) /* DFSDM1 Alternate Function mapping */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ \r
-\r
-/** \r
- * @brief AF 8 selection \r
- */ \r
-#define GPIO_AF8_UART4 ((uint8_t)0x08U) /* UART4 Alternate Function mapping */\r
-#define GPIO_AF8_UART5 ((uint8_t)0x08U) /* UART5 Alternate Function mapping */\r
-#define GPIO_AF8_USART6 ((uint8_t)0x08U) /* USART6 Alternate Function mapping */\r
-#define GPIO_AF8_UART7 ((uint8_t)0x08U) /* UART7 Alternate Function mapping */\r
-#define GPIO_AF8_UART8 ((uint8_t)0x08U) /* UART8 Alternate Function mapping */\r
-#define GPIO_AF8_SPDIFRX ((uint8_t)0x08U) /* SPIDIF-RX Alternate Function mapping */\r
-#define GPIO_AF8_SAI2 ((uint8_t)0x08U) /* SAI2 Alternate Function mapping */\r
-#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)\r
-#define GPIO_AF8_SPI6 ((uint8_t)0x08U) /* SPI6 Alternate Function mapping */ \r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ \r
-\r
-\r
-/** \r
- * @brief AF 9 selection \r
- */ \r
-#define GPIO_AF9_CAN1 ((uint8_t)0x09U) /* CAN1 Alternate Function mapping */\r
-#define GPIO_AF9_CAN2 ((uint8_t)0x09U) /* CAN2 Alternate Function mapping */\r
-#define GPIO_AF9_TIM12 ((uint8_t)0x09U) /* TIM12 Alternate Function mapping */\r
-#define GPIO_AF9_TIM13 ((uint8_t)0x09U) /* TIM13 Alternate Function mapping */\r
-#define GPIO_AF9_TIM14 ((uint8_t)0x09U) /* TIM14 Alternate Function mapping */\r
-#define GPIO_AF9_QUADSPI ((uint8_t)0x09U) /* QUADSPI Alternate Function mapping */\r
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) || defined(STM32F750xx)\r
-#define GPIO_AF9_LTDC ((uint8_t)0x09U) /* LCD-TFT Alternate Function mapping */\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined(STM32F765xx) || defined(STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) || defined(STM32F750xx)\r
-#define GPIO_AF9_FMC ((uint8_t)0x09U) /* FMC Alternate Function mapping */\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-/** \r
- * @brief AF 10 selection \r
- */ \r
-#define GPIO_AF10_OTG_FS ((uint8_t)0xAU) /* OTG_FS Alternate Function mapping */\r
-#define GPIO_AF10_OTG_HS ((uint8_t)0xAU) /* OTG_HS Alternate Function mapping */\r
-#define GPIO_AF10_QUADSPI ((uint8_t)0xAU) /* QUADSPI Alternate Function mapping */\r
-#define GPIO_AF10_SAI2 ((uint8_t)0xAU) /* SAI2 Alternate Function mapping */\r
-#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)\r
-#define GPIO_AF10_DFSDM1 ((uint8_t)0x0AU) /* DFSDM1 Alternate Function mapping */\r
-#define GPIO_AF10_SDMMC2 ((uint8_t)0x0AU) /* SDMMC2 Alternate Function mapping */ \r
-#define GPIO_AF10_LTDC ((uint8_t)0x0AU) /* LCD-TFT Alternate Function mapping */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ \r
-\r
-/** \r
- * @brief AF 11 selection \r
- */ \r
-#define GPIO_AF11_ETH ((uint8_t)0x0BU) /* ETHERNET Alternate Function mapping */\r
-#if defined(STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define GPIO_AF11_CAN3 ((uint8_t)0x0BU) /* CAN3 Alternate Function mapping */\r
-#define GPIO_AF11_SDMMC2 ((uint8_t)0x0BU) /* SDMMC2 Alternate Function mapping */\r
-#define GPIO_AF11_I2C4 ((uint8_t)0x0BU) /* I2C4 Alternate Function mapping */ \r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
- \r
-/** \r
- * @brief AF 12 selection \r
- */ \r
-#define GPIO_AF12_FMC ((uint8_t)0xCU) /* FMC Alternate Function mapping */\r
-#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xCU) /* OTG HS configured in FS, Alternate Function mapping */\r
-#define GPIO_AF12_SDMMC1 ((uint8_t)0xCU) /* SDMMC1 Alternate Function mapping */\r
-#if defined(STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) \r
-#define GPIO_AF12_MDIOS ((uint8_t)0xCU) /* SDMMC1 Alternate Function mapping */\r
-#define GPIO_AF12_UART7 ((uint8_t)0xCU) /* UART7 Alternate Function mapping */ \r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
- \r
-/** \r
- * @brief AF 13 selection \r
- */ \r
-#define GPIO_AF13_DCMI ((uint8_t)0x0DU) /* DCMI Alternate Function mapping */\r
-#if defined (STM32F769xx) || defined (STM32F779xx) \r
-#define GPIO_AF13_DSI ((uint8_t)0x0DU) /* DSI Alternate Function mapping */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ \r
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) || defined(STM32F750xx)\r
-#define GPIO_AF13_LTDC ((uint8_t)0x0DU) /* LTDC Alternate Function mapping */ \r
- \r
-/** \r
- * @brief AF 14 selection \r
- */\r
-#define GPIO_AF14_LTDC ((uint8_t)0x0EU) /* LCD-TFT Alternate Function mapping */\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-/** \r
- * @brief AF 15 selection \r
- */ \r
-#define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-/*----------------------------------------------------------------------------*/\r
-\r
-/*---------------------------- STM32F72xxx/STM32F73xxx -----------------------*/ \r
-#if defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F732xx) || defined(STM32F733xx) || defined(STM32F730xx)\r
- /** \r
- * @brief AF 0 selection \r
- */ \r
-#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */\r
-#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */\r
-#define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */\r
-#define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 1 selection \r
- */ \r
-#define GPIO_AF1_TIM1 ((uint8_t)0x01U) /* TIM1 Alternate Function mapping */\r
-#define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 2 selection \r
- */ \r
-#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */\r
-#define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */\r
-#define GPIO_AF2_TIM5 ((uint8_t)0x02U) /* TIM5 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 3 selection \r
- */ \r
-#define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */\r
-#define GPIO_AF3_TIM9 ((uint8_t)0x03U) /* TIM9 Alternate Function mapping */\r
-#define GPIO_AF3_TIM10 ((uint8_t)0x03U) /* TIM10 Alternate Function mapping */\r
-#define GPIO_AF3_TIM11 ((uint8_t)0x03U) /* TIM11 Alternate Function mapping */\r
-#define GPIO_AF3_LPTIM1 ((uint8_t)0x03U) /* LPTIM1 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 4 selection \r
- */ \r
-#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */\r
-#define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */\r
-#define GPIO_AF4_I2C3 ((uint8_t)0x04U) /* I2C3 Alternate Function mapping */ \r
-\r
-/** \r
- * @brief AF 5 selection \r
- */ \r
-#define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */\r
-#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */\r
-#define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */\r
-#define GPIO_AF5_SPI4 ((uint8_t)0x05U) /* SPI4 Alternate Function mapping */\r
-#define GPIO_AF5_SPI5 ((uint8_t)0x05U) /* SPI5 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 6 selection \r
- */ \r
-#define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */\r
-#define GPIO_AF6_SAI1 ((uint8_t)0x06U) /* SAI1 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 7 selection \r
- */ \r
-#define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */\r
-#define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */\r
-#define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */\r
-#define GPIO_AF7_UART5 ((uint8_t)0x07U) /* UART5 Alternate Function mapping */\r
-#define GPIO_AF7_SPI2 ((uint8_t)0x07U) /* SPI2 Alternate Function mapping */\r
-#define GPIO_AF7_SPI3 ((uint8_t)0x07U) /* SPI3 Alternate Function mapping */ \r
-\r
-/** \r
- * @brief AF 8 selection \r
- */ \r
-#define GPIO_AF8_UART4 ((uint8_t)0x08U) /* UART4 Alternate Function mapping */\r
-#define GPIO_AF8_UART5 ((uint8_t)0x08U) /* UART5 Alternate Function mapping */\r
-#define GPIO_AF8_USART6 ((uint8_t)0x08U) /* USART6 Alternate Function mapping */\r
-#define GPIO_AF8_UART7 ((uint8_t)0x08U) /* UART7 Alternate Function mapping */\r
-#define GPIO_AF8_UART8 ((uint8_t)0x08U) /* UART8 Alternate Function mapping */\r
-#define GPIO_AF8_SAI2 ((uint8_t)0x08U) /* SAI2 Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 9 selection \r
- */ \r
-#define GPIO_AF9_CAN1 ((uint8_t)0x09U) /* CAN1 Alternate Function mapping */\r
-#define GPIO_AF9_TIM12 ((uint8_t)0x09U) /* TIM12 Alternate Function mapping */\r
-#define GPIO_AF9_TIM13 ((uint8_t)0x09U) /* TIM13 Alternate Function mapping */\r
-#define GPIO_AF9_TIM14 ((uint8_t)0x09U) /* TIM14 Alternate Function mapping */\r
-#define GPIO_AF9_QUADSPI ((uint8_t)0x09U) /* QUADSPI Alternate Function mapping */\r
-\r
-/** \r
- * @brief AF 10 selection \r
- */ \r
-#define GPIO_AF10_OTG_FS ((uint8_t)0xAU) /* OTG_FS Alternate Function mapping */\r
-#define GPIO_AF10_OTG_HS ((uint8_t)0xAU) /* OTG_HS Alternate Function mapping */\r
-#define GPIO_AF10_QUADSPI ((uint8_t)0xAU) /* QUADSPI Alternate Function mapping */\r
-#define GPIO_AF10_SAI2 ((uint8_t)0xAU) /* SAI2 Alternate Function mapping */\r
-#define GPIO_AF10_SDMMC2 ((uint8_t)0x0AU) /* SDMMC2 Alternate Function mapping */ \r
-\r
-/** \r
- * @brief AF 11 selection \r
- */ \r
-#define GPIO_AF11_SDMMC2 ((uint8_t)0x0BU) /* SDMMC2 Alternate Function mapping */\r
- \r
-/** \r
- * @brief AF 12 selection \r
- */ \r
-#define GPIO_AF12_FMC ((uint8_t)0xCU) /* FMC Alternate Function mapping */\r
-#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xCU) /* OTG HS configured in FS, Alternate Function mapping */\r
-#define GPIO_AF12_SDMMC1 ((uint8_t)0xCU) /* SDMMC1 Alternate Function mapping */\r
- \r
-/** \r
- * @brief AF 13 selection \r
- */ \r
-#define GPIO_AF13_RNG ((uint8_t)0x0DU) /* RNG Alternate Function mapping */ \r
- \r
-/** \r
- * @brief AF 15 selection \r
- */ \r
-#define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */ \r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */\r
-/*----------------------------------------------------------------------------*/\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup GPIOEx_Exported_Macros GPIO Exported Macros\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/ \r
-/** @defgroup GPIOEx_Exported_Functions GPIO Exported Functions\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup GPIOEx_Private_Constants GPIO Private Constants\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief GPIO pin available on the platform\r
- */\r
-/* Defines the available pins per GPIOs */\r
-#define GPIOA_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOB_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOC_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOD_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOE_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOF_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOG_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOI_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOJ_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOH_PIN_AVAILABLE GPIO_PIN_All\r
-#define GPIOK_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | \\r
- GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup GPIOEx_Private_Macros GPIO Private Macros\r
- * @{\r
- */\r
-/** @defgroup GPIOEx_Get_Port_Index GPIO Get Port Index\r
- * @{\r
- */\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\\r
- ((__GPIOx__) == (GPIOB))? 1U :\\r
- ((__GPIOx__) == (GPIOC))? 2U :\\r
- ((__GPIOx__) == (GPIOD))? 3U :\\r
- ((__GPIOx__) == (GPIOE))? 4U :\\r
- ((__GPIOx__) == (GPIOF))? 5U :\\r
- ((__GPIOx__) == (GPIOG))? 6U :\\r
- ((__GPIOx__) == (GPIOH))? 7U :\\r
- ((__GPIOx__) == (GPIOI))? 8U :\\r
- ((__GPIOx__) == (GPIOJ))? 9U : 10U)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\\r
- ((__GPIOx__) == (GPIOB))? 1U :\\r
- ((__GPIOx__) == (GPIOC))? 2U :\\r
- ((__GPIOx__) == (GPIOD))? 3U :\\r
- ((__GPIOx__) == (GPIOE))? 4U :\\r
- ((__GPIOx__) == (GPIOF))? 5U :\\r
- ((__GPIOx__) == (GPIOG))? 6U :\\r
- ((__GPIOx__) == (GPIOH))? 7U : 8U)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */\r
-/**\r
- * @}\r
- */\r
-\r
-#define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \\r
- ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOD) && (((__PIN__) & (GPIOD_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOD_PIN_AVAILABLE)) == (GPIOD_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOE) && (((__PIN__) & (GPIOE_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOE_PIN_AVAILABLE)) == (GPIOE_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOF) && (((__PIN__) & (GPIOF_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOF_PIN_AVAILABLE)) == (GPIOF_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOG) && (((__PIN__) & (GPIOG_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOG_PIN_AVAILABLE)) == (GPIOG_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOI) && (((__PIN__) & (GPIOI_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOI_PIN_AVAILABLE)) == (GPIOI_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOJ) && (((__PIN__) & (GPIOJ_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOJ_PIN_AVAILABLE)) == (GPIOJ_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOK) && (((__PIN__) & (GPIOK_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOK_PIN_AVAILABLE)) == (GPIOK_PIN_AVAILABLE))) || \\r
- (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE))))\r
-/** @defgroup GPIOEx_IS_Alternat_function_selection GPIO Check Alternate Function\r
- * @{\r
- */\r
-#if defined(STM32F756xx) || defined(STM32F746xx) || defined(STM32F750xx)\r
-#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \\r
- ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \\r
- ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \\r
- ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \\r
- ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \\r
- ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \\r
- ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \\r
- ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \\r
- ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \\r
- ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \\r
- ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \\r
- ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \\r
- ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \\r
- ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \\r
- ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \\r
- ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \\r
- ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \\r
- ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \\r
- ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \\r
- ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \\r
- ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \\r
- ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \\r
- ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM12) || \\r
- ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \\r
- ((AF) == GPIO_AF9_LTDC) || ((AF) == GPIO_AF10_OTG_FS) || \\r
- ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \\r
- ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \\r
- ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDMMC1) || \\r
- ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF15_EVENTOUT) || \\r
- ((AF) == GPIO_AF13_DCMI) || ((AF) == GPIO_AF14_LTDC))\r
-#elif defined(STM32F745xx)\r
-#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \\r
- ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \\r
- ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \\r
- ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \\r
- ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \\r
- ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \\r
- ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \\r
- ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \\r
- ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \\r
- ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \\r
- ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \\r
- ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \\r
- ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \\r
- ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \\r
- ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \\r
- ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \\r
- ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \\r
- ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \\r
- ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \\r
- ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \\r
- ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \\r
- ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \\r
- ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM12) || \\r
- ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \\r
- ((AF) == GPIO_AF13_DCMI) || ((AF) == GPIO_AF10_OTG_FS) || \\r
- ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \\r
- ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \\r
- ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDMMC1) || \\r
- ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF15_EVENTOUT))\r
-#elif defined(STM32F767xx) || defined(STM32F777xx)\r
-#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \\r
- ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \\r
- ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \\r
- ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \\r
- ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \\r
- ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \\r
- ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \\r
- ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \\r
- ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \\r
- ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \\r
- ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \\r
- ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \\r
- ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \\r
- ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \\r
- ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \\r
- ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \\r
- ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \\r
- ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \\r
- ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \\r
- ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \\r
- ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \\r
- ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \\r
- ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM12) || \\r
- ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \\r
- ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF9_LTDC) || \\r
- ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \\r
- ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \\r
- ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \\r
- ((AF) == GPIO_AF11_CAN3) || ((AF) == GPIO_AF12_OTG_HS_FS) || \\r
- ((AF) == GPIO_AF12_SDMMC1) || ((AF) == GPIO_AF12_FMC) || \\r
- ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF13_DCMI) || \\r
- ((AF) == GPIO_AF14_LTDC))\r
-#elif defined(STM32F769xx) || defined(STM32F779xx)\r
-#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \\r
- ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \\r
- ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \\r
- ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \\r
- ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \\r
- ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \\r
- ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \\r
- ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \\r
- ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \\r
- ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \\r
- ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \\r
- ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \\r
- ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \\r
- ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \\r
- ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \\r
- ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \\r
- ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \\r
- ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \\r
- ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \\r
- ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \\r
- ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \\r
- ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \\r
- ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM12) || \\r
- ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \\r
- ((AF) == GPIO_AF9_LTDC) || ((AF) == GPIO_AF10_OTG_FS) || \\r
- ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \\r
- ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \\r
- ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \\r
- ((AF) == GPIO_AF11_CAN3) || ((AF) == GPIO_AF12_OTG_HS_FS) || \\r
- ((AF) == GPIO_AF12_SDMMC1) || ((AF) == GPIO_AF12_FMC) || \\r
- ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF13_DCMI) || \\r
- ((AF) == GPIO_AF14_LTDC) || ((AF) == GPIO_AF13_DSI))\r
-#elif defined(STM32F765xx)\r
-#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \\r
- ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \\r
- ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \\r
- ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \\r
- ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \\r
- ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \\r
- ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \\r
- ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \\r
- ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \\r
- ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \\r
- ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \\r
- ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \\r
- ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \\r
- ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \\r
- ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \\r
- ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \\r
- ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \\r
- ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \\r
- ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \\r
- ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \\r
- ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \\r
- ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \\r
- ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM12) || \\r
- ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \\r
- ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \\r
- ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \\r
- ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \\r
- ((AF) == GPIO_AF11_CAN3) || ((AF) == GPIO_AF12_OTG_HS_FS) || \\r
- ((AF) == GPIO_AF12_SDMMC1) || ((AF) == GPIO_AF12_FMC) || \\r
- ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF13_DCMI) || \\r
- ((AF) == GPIO_AF10_OTG_FS))\r
-#elif defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \\r
- ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \\r
- ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \\r
- ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \\r
- ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \\r
- ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \\r
- ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \\r
- ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \\r
- ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \\r
- ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF5_SPI3) || \\r
- ((AF) == GPIO_AF5_SPI4) || ((AF) == GPIO_AF5_SPI5) || \\r
- ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \\r
- ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \\r
- ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \\r
- ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \\r
- ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \\r
- ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \\r
- ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \\r
- ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_TIM12) || \\r
- ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM14) || \\r
- ((AF) == GPIO_AF9_QUADSPI) || ((AF) == GPIO_AF10_OTG_HS) || \\r
- ((AF) == GPIO_AF10_SAI2) || ((AF) == GPIO_AF10_QUADSPI) || \\r
- ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \\r
- ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDMMC1) || \\r
- ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF15_EVENTOUT) || \\r
- ((AF) == GPIO_AF10_OTG_FS))\r
-#endif /* STM32F756xx || STM32F746xx || STM32F750xx */\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup GPIOEx_Private_Functions GPIO Private Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */ \r
- \r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_GPIO_EX_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_i2c.h\r
- * @author MCD Application Team\r
- * @brief Header file of I2C HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef STM32F7xx_HAL_I2C_H\r
-#define STM32F7xx_HAL_I2C_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup I2C\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup I2C_Exported_Types I2C Exported Types\r
- * @{\r
- */\r
-\r
-/** @defgroup I2C_Configuration_Structure_definition I2C Configuration Structure definition\r
- * @brief I2C Configuration Structure definition\r
- * @{\r
- */\r
-typedef struct\r
-{\r
- uint32_t Timing; /*!< Specifies the I2C_TIMINGR_register value.\r
- This parameter calculated by referring to I2C initialization\r
- section in Reference manual */\r
-\r
- uint32_t OwnAddress1; /*!< Specifies the first device own address.\r
- This parameter can be a 7-bit or 10-bit address. */\r
-\r
- uint32_t AddressingMode; /*!< Specifies if 7-bit or 10-bit addressing mode is selected.\r
- This parameter can be a value of @ref I2C_ADDRESSING_MODE */\r
-\r
- uint32_t DualAddressMode; /*!< Specifies if dual addressing mode is selected.\r
- This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */\r
-\r
- uint32_t OwnAddress2; /*!< Specifies the second device own address if dual addressing mode is selected\r
- This parameter can be a 7-bit address. */\r
-\r
- uint32_t OwnAddress2Masks; /*!< Specifies the acknowledge mask address second device own address if dual addressing mode is selected\r
- This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */\r
-\r
- uint32_t GeneralCallMode; /*!< Specifies if general call mode is selected.\r
- This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */\r
-\r
- uint32_t NoStretchMode; /*!< Specifies if nostretch mode is selected.\r
- This parameter can be a value of @ref I2C_NOSTRETCH_MODE */\r
-\r
-} I2C_InitTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_state_structure_definition HAL state structure definition\r
- * @brief HAL State structure definition\r
- * @note HAL I2C State value coding follow below described bitmap :\n\r
- * b7-b6 Error information\n\r
- * 00 : No Error\n\r
- * 01 : Abort (Abort user request on going)\n\r
- * 10 : Timeout\n\r
- * 11 : Error\n\r
- * b5 Peripheral initialization status\n\r
- * 0 : Reset (peripheral not initialized)\n\r
- * 1 : Init done (peripheral initialized and ready to use. HAL I2C Init function called)\n\r
- * b4 (not used)\n\r
- * x : Should be set to 0\n\r
- * b3\n\r
- * 0 : Ready or Busy (No Listen mode ongoing)\n\r
- * 1 : Listen (peripheral in Address Listen Mode)\n\r
- * b2 Intrinsic process state\n\r
- * 0 : Ready\n\r
- * 1 : Busy (peripheral busy with some configuration or internal operations)\n\r
- * b1 Rx state\n\r
- * 0 : Ready (no Rx operation ongoing)\n\r
- * 1 : Busy (Rx operation ongoing)\n\r
- * b0 Tx state\n\r
- * 0 : Ready (no Tx operation ongoing)\n\r
- * 1 : Busy (Tx operation ongoing)\r
- * @{\r
- */\r
-typedef enum\r
-{\r
- HAL_I2C_STATE_RESET = 0x00U, /*!< Peripheral is not yet Initialized */\r
- HAL_I2C_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use */\r
- HAL_I2C_STATE_BUSY = 0x24U, /*!< An internal process is ongoing */\r
- HAL_I2C_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing */\r
- HAL_I2C_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing */\r
- HAL_I2C_STATE_LISTEN = 0x28U, /*!< Address Listen Mode is ongoing */\r
- HAL_I2C_STATE_BUSY_TX_LISTEN = 0x29U, /*!< Address Listen Mode and Data Transmission\r
- process is ongoing */\r
- HAL_I2C_STATE_BUSY_RX_LISTEN = 0x2AU, /*!< Address Listen Mode and Data Reception\r
- process is ongoing */\r
- HAL_I2C_STATE_ABORT = 0x60U, /*!< Abort user request ongoing */\r
- HAL_I2C_STATE_TIMEOUT = 0xA0U, /*!< Timeout state */\r
- HAL_I2C_STATE_ERROR = 0xE0U /*!< Error */\r
-\r
-} HAL_I2C_StateTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_mode_structure_definition HAL mode structure definition\r
- * @brief HAL Mode structure definition\r
- * @note HAL I2C Mode value coding follow below described bitmap :\n\r
- * b7 (not used)\n\r
- * x : Should be set to 0\n\r
- * b6\n\r
- * 0 : None\n\r
- * 1 : Memory (HAL I2C communication is in Memory Mode)\n\r
- * b5\n\r
- * 0 : None\n\r
- * 1 : Slave (HAL I2C communication is in Slave Mode)\n\r
- * b4\n\r
- * 0 : None\n\r
- * 1 : Master (HAL I2C communication is in Master Mode)\n\r
- * b3-b2-b1-b0 (not used)\n\r
- * xxxx : Should be set to 0000\r
- * @{\r
- */\r
-typedef enum\r
-{\r
- HAL_I2C_MODE_NONE = 0x00U, /*!< No I2C communication on going */\r
- HAL_I2C_MODE_MASTER = 0x10U, /*!< I2C communication is in Master Mode */\r
- HAL_I2C_MODE_SLAVE = 0x20U, /*!< I2C communication is in Slave Mode */\r
- HAL_I2C_MODE_MEM = 0x40U /*!< I2C communication is in Memory Mode */\r
-\r
-} HAL_I2C_ModeTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_Error_Code_definition I2C Error Code definition\r
- * @brief I2C Error Code definition\r
- * @{\r
- */\r
-#define HAL_I2C_ERROR_NONE (0x00000000U) /*!< No error */\r
-#define HAL_I2C_ERROR_BERR (0x00000001U) /*!< BERR error */\r
-#define HAL_I2C_ERROR_ARLO (0x00000002U) /*!< ARLO error */\r
-#define HAL_I2C_ERROR_AF (0x00000004U) /*!< ACKF error */\r
-#define HAL_I2C_ERROR_OVR (0x00000008U) /*!< OVR error */\r
-#define HAL_I2C_ERROR_DMA (0x00000010U) /*!< DMA transfer error */\r
-#define HAL_I2C_ERROR_TIMEOUT (0x00000020U) /*!< Timeout error */\r
-#define HAL_I2C_ERROR_SIZE (0x00000040U) /*!< Size Management error */\r
-#define HAL_I2C_ERROR_DMA_PARAM (0x00000080U) /*!< DMA Parameter Error */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
-#define HAL_I2C_ERROR_INVALID_CALLBACK (0x00000100U) /*!< Invalid Callback error */\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
-#define HAL_I2C_ERROR_INVALID_PARAM (0x00000200U) /*!< Invalid Parameters error */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_handle_Structure_definition I2C handle Structure definition\r
- * @brief I2C handle Structure definition\r
- * @{\r
- */\r
-typedef struct __I2C_HandleTypeDef\r
-{\r
- I2C_TypeDef *Instance; /*!< I2C registers base address */\r
-\r
- I2C_InitTypeDef Init; /*!< I2C communication parameters */\r
-\r
- uint8_t *pBuffPtr; /*!< Pointer to I2C transfer buffer */\r
-\r
- uint16_t XferSize; /*!< I2C transfer size */\r
-\r
- __IO uint16_t XferCount; /*!< I2C transfer counter */\r
-\r
- __IO uint32_t XferOptions; /*!< I2C sequantial transfer options, this parameter can\r
- be a value of @ref I2C_XFEROPTIONS */\r
-\r
- __IO uint32_t PreviousState; /*!< I2C communication Previous state */\r
-\r
- HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources); /*!< I2C transfer IRQ handler function pointer */\r
-\r
- DMA_HandleTypeDef *hdmatx; /*!< I2C Tx DMA handle parameters */\r
-\r
- DMA_HandleTypeDef *hdmarx; /*!< I2C Rx DMA handle parameters */\r
-\r
- HAL_LockTypeDef Lock; /*!< I2C locking object */\r
-\r
- __IO HAL_I2C_StateTypeDef State; /*!< I2C communication state */\r
-\r
- __IO HAL_I2C_ModeTypeDef Mode; /*!< I2C communication mode */\r
-\r
- __IO uint32_t ErrorCode; /*!< I2C Error code */\r
-\r
- __IO uint32_t AddrEventCount; /*!< I2C Address Event counter */\r
-\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Master Tx Transfer completed callback */\r
- void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Master Rx Transfer completed callback */\r
- void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Slave Tx Transfer completed callback */\r
- void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Slave Rx Transfer completed callback */\r
- void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Listen Complete callback */\r
- void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Memory Tx Transfer completed callback */\r
- void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Memory Rx Transfer completed callback */\r
- void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Error callback */\r
- void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Abort callback */\r
-\r
- void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); /*!< I2C Slave Address Match callback */\r
-\r
- void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Msp Init callback */\r
- void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c); /*!< I2C Msp DeInit callback */\r
-\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
-} I2C_HandleTypeDef;\r
-\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
-/**\r
- * @brief HAL I2C Callback ID enumeration definition\r
- */\r
-typedef enum\r
-{\r
- HAL_I2C_MASTER_TX_COMPLETE_CB_ID = 0x00U, /*!< I2C Master Tx Transfer completed callback ID */\r
- HAL_I2C_MASTER_RX_COMPLETE_CB_ID = 0x01U, /*!< I2C Master Rx Transfer completed callback ID */\r
- HAL_I2C_SLAVE_TX_COMPLETE_CB_ID = 0x02U, /*!< I2C Slave Tx Transfer completed callback ID */\r
- HAL_I2C_SLAVE_RX_COMPLETE_CB_ID = 0x03U, /*!< I2C Slave Rx Transfer completed callback ID */\r
- HAL_I2C_LISTEN_COMPLETE_CB_ID = 0x04U, /*!< I2C Listen Complete callback ID */\r
- HAL_I2C_MEM_TX_COMPLETE_CB_ID = 0x05U, /*!< I2C Memory Tx Transfer callback ID */\r
- HAL_I2C_MEM_RX_COMPLETE_CB_ID = 0x06U, /*!< I2C Memory Rx Transfer completed callback ID */\r
- HAL_I2C_ERROR_CB_ID = 0x07U, /*!< I2C Error callback ID */\r
- HAL_I2C_ABORT_CB_ID = 0x08U, /*!< I2C Abort callback ID */\r
-\r
- HAL_I2C_MSPINIT_CB_ID = 0x09U, /*!< I2C Msp Init callback ID */\r
- HAL_I2C_MSPDEINIT_CB_ID = 0x0AU /*!< I2C Msp DeInit callback ID */\r
-\r
-} HAL_I2C_CallbackIDTypeDef;\r
-\r
-/**\r
- * @brief HAL I2C Callback pointer definition\r
- */\r
-typedef void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c); /*!< pointer to an I2C callback function */\r
-typedef void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); /*!< pointer to an I2C Address Match callback function */\r
-\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup I2C_Exported_Constants I2C Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup I2C_XFEROPTIONS I2C Sequential Transfer Options\r
- * @{\r
- */\r
-#define I2C_FIRST_FRAME ((uint32_t)I2C_SOFTEND_MODE)\r
-#define I2C_FIRST_AND_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE))\r
-#define I2C_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE))\r
-#define I2C_FIRST_AND_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE)\r
-#define I2C_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE)\r
-#define I2C_LAST_FRAME_NO_STOP ((uint32_t)I2C_SOFTEND_MODE)\r
-\r
-/* List of XferOptions in usage of :\r
- * 1- Restart condition in all use cases (direction change or not)\r
- */\r
-#define I2C_OTHER_FRAME (0x000000AAU)\r
-#define I2C_OTHER_AND_LAST_FRAME (0x0000AA00U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_ADDRESSING_MODE I2C Addressing Mode\r
- * @{\r
- */\r
-#define I2C_ADDRESSINGMODE_7BIT (0x00000001U)\r
-#define I2C_ADDRESSINGMODE_10BIT (0x00000002U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_DUAL_ADDRESSING_MODE I2C Dual Addressing Mode\r
- * @{\r
- */\r
-#define I2C_DUALADDRESS_DISABLE (0x00000000U)\r
-#define I2C_DUALADDRESS_ENABLE I2C_OAR2_OA2EN\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_OWN_ADDRESS2_MASKS I2C Own Address2 Masks\r
- * @{\r
- */\r
-#define I2C_OA2_NOMASK ((uint8_t)0x00U)\r
-#define I2C_OA2_MASK01 ((uint8_t)0x01U)\r
-#define I2C_OA2_MASK02 ((uint8_t)0x02U)\r
-#define I2C_OA2_MASK03 ((uint8_t)0x03U)\r
-#define I2C_OA2_MASK04 ((uint8_t)0x04U)\r
-#define I2C_OA2_MASK05 ((uint8_t)0x05U)\r
-#define I2C_OA2_MASK06 ((uint8_t)0x06U)\r
-#define I2C_OA2_MASK07 ((uint8_t)0x07U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_GENERAL_CALL_ADDRESSING_MODE I2C General Call Addressing Mode\r
- * @{\r
- */\r
-#define I2C_GENERALCALL_DISABLE (0x00000000U)\r
-#define I2C_GENERALCALL_ENABLE I2C_CR1_GCEN\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_NOSTRETCH_MODE I2C No-Stretch Mode\r
- * @{\r
- */\r
-#define I2C_NOSTRETCH_DISABLE (0x00000000U)\r
-#define I2C_NOSTRETCH_ENABLE I2C_CR1_NOSTRETCH\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_MEMORY_ADDRESS_SIZE I2C Memory Address Size\r
- * @{\r
- */\r
-#define I2C_MEMADD_SIZE_8BIT (0x00000001U)\r
-#define I2C_MEMADD_SIZE_16BIT (0x00000002U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_XFERDIRECTION I2C Transfer Direction Master Point of View\r
- * @{\r
- */\r
-#define I2C_DIRECTION_TRANSMIT (0x00000000U)\r
-#define I2C_DIRECTION_RECEIVE (0x00000001U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_RELOAD_END_MODE I2C Reload End Mode\r
- * @{\r
- */\r
-#define I2C_RELOAD_MODE I2C_CR2_RELOAD\r
-#define I2C_AUTOEND_MODE I2C_CR2_AUTOEND\r
-#define I2C_SOFTEND_MODE (0x00000000U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_START_STOP_MODE I2C Start or Stop Mode\r
- * @{\r
- */\r
-#define I2C_NO_STARTSTOP (0x00000000U)\r
-#define I2C_GENERATE_STOP (uint32_t)(0x80000000U | I2C_CR2_STOP)\r
-#define I2C_GENERATE_START_READ (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN)\r
-#define I2C_GENERATE_START_WRITE (uint32_t)(0x80000000U | I2C_CR2_START)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_Interrupt_configuration_definition I2C Interrupt configuration definition\r
- * @brief I2C Interrupt definition\r
- * Elements values convention: 0xXXXXXXXX\r
- * - XXXXXXXX : Interrupt control mask\r
- * @{\r
- */\r
-#define I2C_IT_ERRI I2C_CR1_ERRIE\r
-#define I2C_IT_TCI I2C_CR1_TCIE\r
-#define I2C_IT_STOPI I2C_CR1_STOPIE\r
-#define I2C_IT_NACKI I2C_CR1_NACKIE\r
-#define I2C_IT_ADDRI I2C_CR1_ADDRIE\r
-#define I2C_IT_RXI I2C_CR1_RXIE\r
-#define I2C_IT_TXI I2C_CR1_TXIE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_Flag_definition I2C Flag definition\r
- * @{\r
- */\r
-#define I2C_FLAG_TXE I2C_ISR_TXE\r
-#define I2C_FLAG_TXIS I2C_ISR_TXIS\r
-#define I2C_FLAG_RXNE I2C_ISR_RXNE\r
-#define I2C_FLAG_ADDR I2C_ISR_ADDR\r
-#define I2C_FLAG_AF I2C_ISR_NACKF\r
-#define I2C_FLAG_STOPF I2C_ISR_STOPF\r
-#define I2C_FLAG_TC I2C_ISR_TC\r
-#define I2C_FLAG_TCR I2C_ISR_TCR\r
-#define I2C_FLAG_BERR I2C_ISR_BERR\r
-#define I2C_FLAG_ARLO I2C_ISR_ARLO\r
-#define I2C_FLAG_OVR I2C_ISR_OVR\r
-#define I2C_FLAG_PECERR I2C_ISR_PECERR\r
-#define I2C_FLAG_TIMEOUT I2C_ISR_TIMEOUT\r
-#define I2C_FLAG_ALERT I2C_ISR_ALERT\r
-#define I2C_FLAG_BUSY I2C_ISR_BUSY\r
-#define I2C_FLAG_DIR I2C_ISR_DIR\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macros -----------------------------------------------------------*/\r
-\r
-/** @defgroup I2C_Exported_Macros I2C Exported Macros\r
- * @{\r
- */\r
-\r
-/** @brief Reset I2C handle state.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @retval None\r
- */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
-#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) do{ \\r
- (__HANDLE__)->State = HAL_I2C_STATE_RESET; \\r
- (__HANDLE__)->MspInitCallback = NULL; \\r
- (__HANDLE__)->MspDeInitCallback = NULL; \\r
- } while(0)\r
-#else\r
-#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2C_STATE_RESET)\r
-#endif\r
-\r
-/** @brief Enable the specified I2C interrupt.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @param __INTERRUPT__ specifies the interrupt source to enable.\r
- * This parameter can be one of the following values:\r
- * @arg @ref I2C_IT_ERRI Errors interrupt enable\r
- * @arg @ref I2C_IT_TCI Transfer complete interrupt enable\r
- * @arg @ref I2C_IT_STOPI STOP detection interrupt enable\r
- * @arg @ref I2C_IT_NACKI NACK received interrupt enable\r
- * @arg @ref I2C_IT_ADDRI Address match interrupt enable\r
- * @arg @ref I2C_IT_RXI RX interrupt enable\r
- * @arg @ref I2C_IT_TXI TX interrupt enable\r
- *\r
- * @retval None\r
- */\r
-#define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 |= (__INTERRUPT__))\r
-\r
-/** @brief Disable the specified I2C interrupt.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @param __INTERRUPT__ specifies the interrupt source to disable.\r
- * This parameter can be one of the following values:\r
- * @arg @ref I2C_IT_ERRI Errors interrupt enable\r
- * @arg @ref I2C_IT_TCI Transfer complete interrupt enable\r
- * @arg @ref I2C_IT_STOPI STOP detection interrupt enable\r
- * @arg @ref I2C_IT_NACKI NACK received interrupt enable\r
- * @arg @ref I2C_IT_ADDRI Address match interrupt enable\r
- * @arg @ref I2C_IT_RXI RX interrupt enable\r
- * @arg @ref I2C_IT_TXI TX interrupt enable\r
- *\r
- * @retval None\r
- */\r
-#define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 &= (~(__INTERRUPT__)))\r
-\r
-/** @brief Check whether the specified I2C interrupt source is enabled or not.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @param __INTERRUPT__ specifies the I2C interrupt source to check.\r
- * This parameter can be one of the following values:\r
- * @arg @ref I2C_IT_ERRI Errors interrupt enable\r
- * @arg @ref I2C_IT_TCI Transfer complete interrupt enable\r
- * @arg @ref I2C_IT_STOPI STOP detection interrupt enable\r
- * @arg @ref I2C_IT_NACKI NACK received interrupt enable\r
- * @arg @ref I2C_IT_ADDRI Address match interrupt enable\r
- * @arg @ref I2C_IT_RXI RX interrupt enable\r
- * @arg @ref I2C_IT_TXI TX interrupt enable\r
- *\r
- * @retval The new state of __INTERRUPT__ (SET or RESET).\r
- */\r
-#define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)\r
-\r
-/** @brief Check whether the specified I2C flag is set or not.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @param __FLAG__ specifies the flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg @ref I2C_FLAG_TXE Transmit data register empty\r
- * @arg @ref I2C_FLAG_TXIS Transmit interrupt status\r
- * @arg @ref I2C_FLAG_RXNE Receive data register not empty\r
- * @arg @ref I2C_FLAG_ADDR Address matched (slave mode)\r
- * @arg @ref I2C_FLAG_AF Acknowledge failure received flag\r
- * @arg @ref I2C_FLAG_STOPF STOP detection flag\r
- * @arg @ref I2C_FLAG_TC Transfer complete (master mode)\r
- * @arg @ref I2C_FLAG_TCR Transfer complete reload\r
- * @arg @ref I2C_FLAG_BERR Bus error\r
- * @arg @ref I2C_FLAG_ARLO Arbitration lost\r
- * @arg @ref I2C_FLAG_OVR Overrun/Underrun\r
- * @arg @ref I2C_FLAG_PECERR PEC error in reception\r
- * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag\r
- * @arg @ref I2C_FLAG_ALERT SMBus alert\r
- * @arg @ref I2C_FLAG_BUSY Bus busy\r
- * @arg @ref I2C_FLAG_DIR Transfer direction (slave mode)\r
- *\r
- * @retval The new state of __FLAG__ (SET or RESET).\r
- */\r
-#define I2C_FLAG_MASK (0x0001FFFFU)\r
-#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__)) ? SET : RESET)\r
-\r
-/** @brief Clear the I2C pending flags which are cleared by writing 1 in a specific bit.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @param __FLAG__ specifies the flag to clear.\r
- * This parameter can be any combination of the following values:\r
- * @arg @ref I2C_FLAG_TXE Transmit data register empty\r
- * @arg @ref I2C_FLAG_ADDR Address matched (slave mode)\r
- * @arg @ref I2C_FLAG_AF Acknowledge failure received flag\r
- * @arg @ref I2C_FLAG_STOPF STOP detection flag\r
- * @arg @ref I2C_FLAG_BERR Bus error\r
- * @arg @ref I2C_FLAG_ARLO Arbitration lost\r
- * @arg @ref I2C_FLAG_OVR Overrun/Underrun\r
- * @arg @ref I2C_FLAG_PECERR PEC error in reception\r
- * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag\r
- * @arg @ref I2C_FLAG_ALERT SMBus alert\r
- *\r
- * @retval None\r
- */\r
-#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? ((__HANDLE__)->Instance->ISR |= (__FLAG__)) \\r
- : ((__HANDLE__)->Instance->ICR = (__FLAG__)))\r
-\r
-/** @brief Enable the specified I2C peripheral.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @retval None\r
- */\r
-#define __HAL_I2C_ENABLE(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))\r
-\r
-/** @brief Disable the specified I2C peripheral.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @retval None\r
- */\r
-#define __HAL_I2C_DISABLE(__HANDLE__) (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))\r
-\r
-/** @brief Generate a Non-Acknowledge I2C peripheral in Slave mode.\r
- * @param __HANDLE__ specifies the I2C Handle.\r
- * @retval None\r
- */\r
-#define __HAL_I2C_GENERATE_NACK(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK))\r
-/**\r
- * @}\r
- */\r
-\r
-/* Include I2C HAL Extended module */\r
-#include "stm32f7xx_hal_i2c_ex.h"\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup I2C_Exported_Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @{\r
- */\r
-/* Initialization and de-initialization functions******************************/\r
-HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c);\r
-HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c);\r
-\r
-/* Callbacks Register/UnRegister functions ***********************************/\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
-HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, pI2C_CallbackTypeDef pCallback);\r
-HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID);\r
-\r
-HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback);\r
-HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions\r
- * @{\r
- */\r
-/* IO operation functions ****************************************************/\r
-/******* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout);\r
-\r
-/******* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\r
-\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c);\r
-HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c);\r
-HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress);\r
-\r
-/******* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);\r
-\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks\r
- * @{\r
- */\r
-/******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */\r
-void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode);\r
-void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c);\r
-void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions\r
- * @{\r
- */\r
-/* Peripheral State, Mode and Error functions *********************************/\r
-HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c);\r
-HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c);\r
-uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup I2C_Private_Constants I2C Private Constants\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup I2C_Private_Macro I2C Private Macros\r
- * @{\r
- */\r
-\r
-#define IS_I2C_ADDRESSING_MODE(MODE) (((MODE) == I2C_ADDRESSINGMODE_7BIT) || \\r
- ((MODE) == I2C_ADDRESSINGMODE_10BIT))\r
-\r
-#define IS_I2C_DUAL_ADDRESS(ADDRESS) (((ADDRESS) == I2C_DUALADDRESS_DISABLE) || \\r
- ((ADDRESS) == I2C_DUALADDRESS_ENABLE))\r
-\r
-#define IS_I2C_OWN_ADDRESS2_MASK(MASK) (((MASK) == I2C_OA2_NOMASK) || \\r
- ((MASK) == I2C_OA2_MASK01) || \\r
- ((MASK) == I2C_OA2_MASK02) || \\r
- ((MASK) == I2C_OA2_MASK03) || \\r
- ((MASK) == I2C_OA2_MASK04) || \\r
- ((MASK) == I2C_OA2_MASK05) || \\r
- ((MASK) == I2C_OA2_MASK06) || \\r
- ((MASK) == I2C_OA2_MASK07))\r
-\r
-#define IS_I2C_GENERAL_CALL(CALL) (((CALL) == I2C_GENERALCALL_DISABLE) || \\r
- ((CALL) == I2C_GENERALCALL_ENABLE))\r
-\r
-#define IS_I2C_NO_STRETCH(STRETCH) (((STRETCH) == I2C_NOSTRETCH_DISABLE) || \\r
- ((STRETCH) == I2C_NOSTRETCH_ENABLE))\r
-\r
-#define IS_I2C_MEMADD_SIZE(SIZE) (((SIZE) == I2C_MEMADD_SIZE_8BIT) || \\r
- ((SIZE) == I2C_MEMADD_SIZE_16BIT))\r
-\r
-#define IS_TRANSFER_MODE(MODE) (((MODE) == I2C_RELOAD_MODE) || \\r
- ((MODE) == I2C_AUTOEND_MODE) || \\r
- ((MODE) == I2C_SOFTEND_MODE))\r
-\r
-#define IS_TRANSFER_REQUEST(REQUEST) (((REQUEST) == I2C_GENERATE_STOP) || \\r
- ((REQUEST) == I2C_GENERATE_START_READ) || \\r
- ((REQUEST) == I2C_GENERATE_START_WRITE) || \\r
- ((REQUEST) == I2C_NO_STARTSTOP))\r
-\r
-#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_FIRST_FRAME) || \\r
- ((REQUEST) == I2C_FIRST_AND_NEXT_FRAME) || \\r
- ((REQUEST) == I2C_NEXT_FRAME) || \\r
- ((REQUEST) == I2C_FIRST_AND_LAST_FRAME) || \\r
- ((REQUEST) == I2C_LAST_FRAME) || \\r
- ((REQUEST) == I2C_LAST_FRAME_NO_STOP) || \\r
- IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))\r
-\r
-#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_OTHER_FRAME) || \\r
- ((REQUEST) == I2C_OTHER_AND_LAST_FRAME))\r
-\r
-#define I2C_RESET_CR2(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_RD_WRN)))\r
-\r
-#define I2C_GET_ADDR_MATCH(__HANDLE__) ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) >> 16U))\r
-#define I2C_GET_DIR(__HANDLE__) ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) >> 16U))\r
-#define I2C_GET_STOP_MODE(__HANDLE__) ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND)\r
-#define I2C_GET_OWN_ADDRESS1(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1))\r
-#define I2C_GET_OWN_ADDRESS2(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2))\r
-\r
-#define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= 0x000003FFU)\r
-#define IS_I2C_OWN_ADDRESS2(ADDRESS2) ((ADDRESS2) <= (uint16_t)0x00FFU)\r
-\r
-#define I2C_MEM_ADD_MSB(__ADDRESS__) ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0xFF00U))) >> 8U)))\r
-#define I2C_MEM_ADD_LSB(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU))))\r
-\r
-#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & (~I2C_CR2_RD_WRN)) : \\r
- (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_ADD10) | (I2C_CR2_START)) & (~I2C_CR2_RD_WRN)))\r
-\r
-#define I2C_CHECK_FLAG(__ISR__, __FLAG__) ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET)\r
-#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__) ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET)\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private Functions ---------------------------------------------------------*/\r
-/** @defgroup I2C_Private_Functions I2C Private Functions\r
- * @{\r
- */\r
-/* Private functions are defined in stm32f7xx_hal_i2c.c file */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-\r
-#endif /* STM32F7xx_HAL_I2C_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_i2c_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of I2C HAL Extended module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef STM32F7xx_HAL_I2C_EX_H\r
-#define STM32F7xx_HAL_I2C_EX_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup I2CEx\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/* Exported constants --------------------------------------------------------*/\r
-\r
-/** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter\r
- * @{\r
- */\r
-#define I2C_ANALOGFILTER_ENABLE 0x00000000U\r
-#define I2C_ANALOGFILTER_DISABLE I2C_CR1_ANFOFF\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus\r
- * @{\r
- */\r
-#define I2C_FMP_NOT_SUPPORTED 0xAAAA0000U /*!< Fast Mode Plus not supported */\r
-#if defined(SYSCFG_PMC_I2C_PB6_FMP)\r
-#define I2C_FASTMODEPLUS_PB6 SYSCFG_PMC_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */\r
-#define I2C_FASTMODEPLUS_PB7 SYSCFG_PMC_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */\r
-#else\r
-#define I2C_FASTMODEPLUS_PB6 (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported */\r
-#define I2C_FASTMODEPLUS_PB7 (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported */\r
-#endif\r
-#if defined(SYSCFG_PMC_I2C_PB8_FMP)\r
-#define I2C_FASTMODEPLUS_PB8 SYSCFG_PMC_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */\r
-#define I2C_FASTMODEPLUS_PB9 SYSCFG_PMC_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */\r
-#else\r
-#define I2C_FASTMODEPLUS_PB8 (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported */\r
-#define I2C_FASTMODEPLUS_PB9 (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported */\r
-#endif\r
-#if defined(SYSCFG_PMC_I2C1_FMP)\r
-#define I2C_FASTMODEPLUS_I2C1 SYSCFG_PMC_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */\r
-#else\r
-#define I2C_FASTMODEPLUS_I2C1 (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported */\r
-#endif\r
-#if defined(SYSCFG_PMC_I2C2_FMP)\r
-#define I2C_FASTMODEPLUS_I2C2 SYSCFG_PMC_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */\r
-#else\r
-#define I2C_FASTMODEPLUS_I2C2 (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported */\r
-#endif\r
-#if defined(SYSCFG_PMC_I2C3_FMP)\r
-#define I2C_FASTMODEPLUS_I2C3 SYSCFG_PMC_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */\r
-#else\r
-#define I2C_FASTMODEPLUS_I2C3 (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported */\r
-#endif\r
-#if defined(SYSCFG_PMC_I2C4_FMP)\r
-#define I2C_FASTMODEPLUS_I2C4 SYSCFG_PMC_I2C4_FMP /*!< Enable Fast Mode Plus on I2C4 pins */\r
-#else\r
-#define I2C_FASTMODEPLUS_I2C4 (uint32_t)(0x00000800U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C4 not supported */\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup I2CEx_Exported_Functions_Group1 Extended features functions\r
- * @brief Extended features functions\r
- * @{\r
- */\r
-\r
-/* Peripheral Control functions ************************************************/\r
-HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter);\r
-HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter);\r
-#if (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP)\r
-void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);\r
-void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);\r
-#endif\r
-\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup I2CEx_Private_Constants I2C Extended Private Constants\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup I2CEx_Private_Macro I2C Extended Private Macros\r
- * @{\r
- */\r
-#define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \\r
- ((FILTER) == I2C_ANALOGFILTER_DISABLE))\r
-\r
-#define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU)\r
-\r
-#if (defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP) && defined(SYSCFG_PMC_I2C4_FMP))\r
-#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4))\r
-#elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP)\r
-#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3))\r
-#elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP)\r
-#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2))\r
-#elif defined(SYSCFG_PMC_I2C1_FMP)\r
-#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \\r
- (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))\r
-#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private Functions ---------------------------------------------------------*/\r
-/** @defgroup I2CEx_Private_Functions I2C Extended Private Functions\r
- * @{\r
- */\r
-/* Private functions are defined in stm32f7xx_hal_i2c_ex.c file */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* STM32F7xx_HAL_I2C_EX_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_pwr.h\r
- * @author MCD Application Team\r
- * @brief Header file of PWR HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_PWR_H\r
-#define __STM32F7xx_HAL_PWR_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup PWR\r
- * @{\r
- */ \r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-\r
-/** @defgroup PWR_Exported_Types PWR Exported Types\r
- * @{\r
- */\r
- \r
-/**\r
- * @brief PWR PVD configuration structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t PVDLevel; /*!< PVDLevel: Specifies the PVD detection level.\r
- This parameter can be a value of @ref PWR_PVD_detection_level */\r
-\r
- uint32_t Mode; /*!< Mode: Specifies the operating mode for the selected pins.\r
- This parameter can be a value of @ref PWR_PVD_Mode */\r
-}PWR_PVDTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup PWR_Exported_Constants PWR Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup PWR_PVD_detection_level PWR PVD detection level\r
- * @{\r
- */ \r
-#define PWR_PVDLEVEL_0 PWR_CR1_PLS_LEV0\r
-#define PWR_PVDLEVEL_1 PWR_CR1_PLS_LEV1\r
-#define PWR_PVDLEVEL_2 PWR_CR1_PLS_LEV2\r
-#define PWR_PVDLEVEL_3 PWR_CR1_PLS_LEV3\r
-#define PWR_PVDLEVEL_4 PWR_CR1_PLS_LEV4\r
-#define PWR_PVDLEVEL_5 PWR_CR1_PLS_LEV5\r
-#define PWR_PVDLEVEL_6 PWR_CR1_PLS_LEV6\r
-#define PWR_PVDLEVEL_7 PWR_CR1_PLS_LEV7/* External input analog voltage \r
- (Compare internally to VREFINT) */\r
-\r
-/**\r
- * @}\r
- */ \r
- \r
-/** @defgroup PWR_PVD_Mode PWR PVD Mode\r
- * @{\r
- */\r
-#define PWR_PVD_MODE_NORMAL ((uint32_t)0x00000000U) /*!< basic mode is used */\r
-#define PWR_PVD_MODE_IT_RISING ((uint32_t)0x00010001U) /*!< External Interrupt Mode with Rising edge trigger detection */\r
-#define PWR_PVD_MODE_IT_FALLING ((uint32_t)0x00010002U) /*!< External Interrupt Mode with Falling edge trigger detection */\r
-#define PWR_PVD_MODE_IT_RISING_FALLING ((uint32_t)0x00010003U) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */\r
-#define PWR_PVD_MODE_EVENT_RISING ((uint32_t)0x00020001U) /*!< Event Mode with Rising edge trigger detection */\r
-#define PWR_PVD_MODE_EVENT_FALLING ((uint32_t)0x00020002U) /*!< Event Mode with Falling edge trigger detection */\r
-#define PWR_PVD_MODE_EVENT_RISING_FALLING ((uint32_t)0x00020003U) /*!< Event Mode with Rising/Falling edge trigger detection */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup PWR_Regulator_state_in_STOP_mode PWR Regulator state in SLEEP/STOP mode\r
- * @{\r
- */\r
-#define PWR_MAINREGULATOR_ON ((uint32_t)0x00000000U)\r
-#define PWR_LOWPOWERREGULATOR_ON PWR_CR1_LPDS\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry\r
- * @{\r
- */\r
-#define PWR_SLEEPENTRY_WFI ((uint8_t)0x01U)\r
-#define PWR_SLEEPENTRY_WFE ((uint8_t)0x02U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry\r
- * @{\r
- */\r
-#define PWR_STOPENTRY_WFI ((uint8_t)0x01U)\r
-#define PWR_STOPENTRY_WFE ((uint8_t)0x02U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup PWR_Regulator_Voltage_Scale PWR Regulator Voltage Scale\r
- * @{\r
- */\r
-#define PWR_REGULATOR_VOLTAGE_SCALE1 PWR_CR1_VOS\r
-#define PWR_REGULATOR_VOLTAGE_SCALE2 PWR_CR1_VOS_1\r
-#define PWR_REGULATOR_VOLTAGE_SCALE3 PWR_CR1_VOS_0\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup PWR_Flag PWR Flag\r
- * @{\r
- */\r
-#define PWR_FLAG_WU PWR_CSR1_WUIF\r
-#define PWR_FLAG_SB PWR_CSR1_SBF\r
-#define PWR_FLAG_PVDO PWR_CSR1_PVDO\r
-#define PWR_FLAG_BRR PWR_CSR1_BRR\r
-#define PWR_FLAG_VOSRDY PWR_CSR1_VOSRDY\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
- \r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup PWR_Exported_Macro PWR Exported Macro\r
- * @{\r
- */\r
-\r
-/** @brief macros configure the main internal regulator output voltage.\r
- * @param __REGULATOR__ specifies the regulator output voltage to achieve\r
- * a tradeoff between performance and power consumption when the device does\r
- * not operate at the maximum frequency (refer to the datasheets for more details).\r
- * This parameter can be one of the following values:\r
- * @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output Scale 1 mode\r
- * @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output Scale 2 mode\r
- * @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output Scale 3 mode\r
- * @retval None\r
- */\r
-#define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__) do { \\r
- __IO uint32_t tmpreg; \\r
- MODIFY_REG(PWR->CR1, PWR_CR1_VOS, (__REGULATOR__)); \\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(PWR->CR1, PWR_CR1_VOS); \\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-/** @brief Check PWR flag is set or not.\r
- * @param __FLAG__ specifies the flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_FLAG_WU: Wake Up flag. This flag indicates that a wakeup event \r
- * was received on the internal wakeup line in standby mode (RTC alarm (Alarm A or Alarm B),\r
- * RTC Tamper event, RTC TimeStamp event or RTC Wakeup)).\r
- * @arg PWR_FLAG_SB: StandBy flag. This flag indicates that the system was\r
- * resumed from StandBy mode. \r
- * @arg PWR_FLAG_PVDO: PVD Output. This flag is valid only if PVD is enabled \r
- * by the HAL_PWR_EnablePVD() function. The PVD is stopped by Standby mode \r
- * For this reason, this bit is equal to 0 after Standby or reset\r
- * until the PVDE bit is set.\r
- * @arg PWR_FLAG_BRR: Backup regulator ready flag. This bit is not reset \r
- * when the device wakes up from Standby mode or by a system reset \r
- * or power reset. \r
- * @arg PWR_FLAG_VOSRDY: This flag indicates that the Regulator voltage \r
- * scaling output selection is ready.\r
- * @retval The new state of __FLAG__ (TRUE or FALSE).\r
- */\r
-#define __HAL_PWR_GET_FLAG(__FLAG__) ((PWR->CSR1 & (__FLAG__)) == (__FLAG__))\r
-\r
-/** @brief Clear the PWR's pending flags.\r
- * @param __FLAG__ specifies the flag to clear.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_FLAG_SB: StandBy flag\r
- */\r
-#define __HAL_PWR_CLEAR_FLAG(__FLAG__) (PWR->CR1 |= (__FLAG__) << 2)\r
-\r
-/**\r
- * @brief Enable the PVD Exti Line 16.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_ENABLE_IT() (EXTI->IMR |= (PWR_EXTI_LINE_PVD))\r
-\r
-/**\r
- * @brief Disable the PVD EXTI Line 16.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_DISABLE_IT() (EXTI->IMR &= ~(PWR_EXTI_LINE_PVD))\r
-\r
-/**\r
- * @brief Enable event on PVD Exti Line 16.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_ENABLE_EVENT() (EXTI->EMR |= (PWR_EXTI_LINE_PVD))\r
-\r
-/**\r
- * @brief Disable event on PVD Exti Line 16.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_DISABLE_EVENT() (EXTI->EMR &= ~(PWR_EXTI_LINE_PVD))\r
-\r
-/**\r
- * @brief Enable the PVD Extended Interrupt Rising Trigger.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD)\r
-\r
-/**\r
- * @brief Disable the PVD Extended Interrupt Rising Trigger.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD)\r
-\r
-/**\r
- * @brief Enable the PVD Extended Interrupt Falling Trigger.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD)\r
-\r
-\r
-/**\r
- * @brief Disable the PVD Extended Interrupt Falling Trigger.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD)\r
-\r
-\r
-/**\r
- * @brief PVD EXTI line configuration: set rising & falling edge trigger.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE();\r
-\r
-/**\r
- * @brief Disable the PVD Extended Interrupt Rising & Falling Trigger.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE();\r
-\r
-/**\r
- * @brief checks whether the specified PVD Exti interrupt flag is set or not.\r
- * @retval EXTI PVD Line Status.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_GET_FLAG() (EXTI->PR & (PWR_EXTI_LINE_PVD))\r
-\r
-/**\r
- * @brief Clear the PVD Exti flag.\r
- * @retval None.\r
- */\r
-#define __HAL_PWR_PVD_EXTI_CLEAR_FLAG() (EXTI->PR = (PWR_EXTI_LINE_PVD))\r
-\r
-/**\r
- * @brief Generates a Software interrupt on PVD EXTI line.\r
- * @retval None\r
- */\r
-#define __HAL_PWR_PVD_EXTI_GENERATE_SWIT() (EXTI->SWIER |= (PWR_EXTI_LINE_PVD))\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Include PWR HAL Extension module */\r
-#include "stm32f7xx_hal_pwr_ex.h"\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup PWR_Exported_Functions PWR Exported Functions\r
- * @{\r
- */\r
- \r
-/** @addtogroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions \r
- * @{\r
- */\r
-/* Initialization and de-initialization functions *****************************/\r
-void HAL_PWR_DeInit(void);\r
-void HAL_PWR_EnableBkUpAccess(void);\r
-void HAL_PWR_DisableBkUpAccess(void);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup PWR_Exported_Functions_Group2 Peripheral Control functions \r
- * @{\r
- */\r
-/* Peripheral Control functions **********************************************/\r
-/* PVD configuration */\r
-void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD);\r
-void HAL_PWR_EnablePVD(void);\r
-void HAL_PWR_DisablePVD(void);\r
-\r
-/* WakeUp pins configuration */\r
-void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity);\r
-void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx);\r
-\r
-/* Low Power modes entry */\r
-void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry);\r
-void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry);\r
-void HAL_PWR_EnterSTANDBYMode(void);\r
-\r
-/* Power PVD IRQ Handler */\r
-void HAL_PWR_PVD_IRQHandler(void);\r
-void HAL_PWR_PVDCallback(void);\r
-\r
-/* Cortex System Control functions *******************************************/\r
-void HAL_PWR_EnableSleepOnExit(void);\r
-void HAL_PWR_DisableSleepOnExit(void);\r
-void HAL_PWR_EnableSEVOnPend(void);\r
-void HAL_PWR_DisableSEVOnPend(void);\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup PWR_Private_Constants PWR Private Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup PWR_PVD_EXTI_Line PWR PVD EXTI Line\r
- * @{\r
- */\r
-#define PWR_EXTI_LINE_PVD ((uint32_t)EXTI_IMR_IM16) /*!< External interrupt line 16 Connected to the PVD EXTI Line */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup PWR_Private_Macros PWR Private Macros\r
- * @{\r
- */\r
-\r
-/** @defgroup PWR_IS_PWR_Definitions PWR Private macros to check input parameters\r
- * @{\r
- */\r
-#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLEVEL_0) || ((LEVEL) == PWR_PVDLEVEL_1)|| \\r
- ((LEVEL) == PWR_PVDLEVEL_2) || ((LEVEL) == PWR_PVDLEVEL_3)|| \\r
- ((LEVEL) == PWR_PVDLEVEL_4) || ((LEVEL) == PWR_PVDLEVEL_5)|| \\r
- ((LEVEL) == PWR_PVDLEVEL_6) || ((LEVEL) == PWR_PVDLEVEL_7))\r
-#define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_IT_RISING)|| ((MODE) == PWR_PVD_MODE_IT_FALLING) || \\r
- ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING) || \\r
- ((MODE) == PWR_PVD_MODE_EVENT_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING) || \\r
- ((MODE) == PWR_PVD_MODE_NORMAL))\r
-#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \\r
- ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON))\r
-#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || ((ENTRY) == PWR_SLEEPENTRY_WFE))\r
-#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || ((ENTRY) == PWR_STOPENTRY_WFE))\r
-#define IS_PWR_REGULATOR_VOLTAGE(VOLTAGE) (((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \\r
- ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE2) || \\r
- ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE3))\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
- \r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-\r
-#endif /* __STM32F7xx_HAL_PWR_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_pwr_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of PWR HAL Extension module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_PWR_EX_H\r
-#define __STM32F7xx_HAL_PWR_EX_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup PWREx\r
- * @{\r
- */ \r
-\r
-/* Exported types ------------------------------------------------------------*/ \r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup PWREx_Exported_Constants PWREx Exported Constants\r
- * @{\r
- */\r
-/** @defgroup PWREx_WakeUp_Pins PWREx Wake Up Pins\r
- * @{\r
- */\r
-#define PWR_WAKEUP_PIN1 PWR_CSR2_EWUP1\r
-#define PWR_WAKEUP_PIN2 PWR_CSR2_EWUP2\r
-#define PWR_WAKEUP_PIN3 PWR_CSR2_EWUP3\r
-#define PWR_WAKEUP_PIN4 PWR_CSR2_EWUP4\r
-#define PWR_WAKEUP_PIN5 PWR_CSR2_EWUP5\r
-#define PWR_WAKEUP_PIN6 PWR_CSR2_EWUP6\r
-#define PWR_WAKEUP_PIN1_HIGH PWR_CSR2_EWUP1\r
-#define PWR_WAKEUP_PIN2_HIGH PWR_CSR2_EWUP2\r
-#define PWR_WAKEUP_PIN3_HIGH PWR_CSR2_EWUP3\r
-#define PWR_WAKEUP_PIN4_HIGH PWR_CSR2_EWUP4\r
-#define PWR_WAKEUP_PIN5_HIGH PWR_CSR2_EWUP5\r
-#define PWR_WAKEUP_PIN6_HIGH PWR_CSR2_EWUP6\r
-#define PWR_WAKEUP_PIN1_LOW (uint32_t)((PWR_CR2_WUPP1<<6) | PWR_CSR2_EWUP1)\r
-#define PWR_WAKEUP_PIN2_LOW (uint32_t)((PWR_CR2_WUPP2<<6) | PWR_CSR2_EWUP2)\r
-#define PWR_WAKEUP_PIN3_LOW (uint32_t)((PWR_CR2_WUPP3<<6) | PWR_CSR2_EWUP3)\r
-#define PWR_WAKEUP_PIN4_LOW (uint32_t)((PWR_CR2_WUPP4<<6) | PWR_CSR2_EWUP4)\r
-#define PWR_WAKEUP_PIN5_LOW (uint32_t)((PWR_CR2_WUPP5<<6) | PWR_CSR2_EWUP5)\r
-#define PWR_WAKEUP_PIN6_LOW (uint32_t)((PWR_CR2_WUPP6<<6) | PWR_CSR2_EWUP6)\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup PWREx_Regulator_state_in_UnderDrive_mode PWREx Regulator state in UnderDrive mode\r
- * @{\r
- */\r
-#define PWR_MAINREGULATOR_UNDERDRIVE_ON PWR_CR1_MRUDS\r
-#define PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON ((uint32_t)(PWR_CR1_LPDS | PWR_CR1_LPUDS))\r
-/**\r
- * @}\r
- */ \r
- \r
-/** @defgroup PWREx_Over_Under_Drive_Flag PWREx Over Under Drive Flag\r
- * @{\r
- */\r
-#define PWR_FLAG_ODRDY PWR_CSR1_ODRDY\r
-#define PWR_FLAG_ODSWRDY PWR_CSR1_ODSWRDY\r
-#define PWR_FLAG_UDRDY PWR_CSR1_UDRDY\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup PWREx_Wakeup_Pins_Flag PWREx Wake Up Pin Flags\r
- * @{\r
- */\r
-#define PWR_WAKEUP_PIN_FLAG1 PWR_CSR2_WUPF1\r
-#define PWR_WAKEUP_PIN_FLAG2 PWR_CSR2_WUPF2\r
-#define PWR_WAKEUP_PIN_FLAG3 PWR_CSR2_WUPF3\r
-#define PWR_WAKEUP_PIN_FLAG4 PWR_CSR2_WUPF4\r
-#define PWR_WAKEUP_PIN_FLAG5 PWR_CSR2_WUPF5\r
-#define PWR_WAKEUP_PIN_FLAG6 PWR_CSR2_WUPF6\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
- \r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup PWREx_Exported_Macro PWREx Exported Macro\r
- * @{\r
- */\r
-/** @brief Macros to enable or disable the Over drive mode.\r
- */\r
-#define __HAL_PWR_OVERDRIVE_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_ODEN)\r
-#define __HAL_PWR_OVERDRIVE_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_ODEN))\r
-\r
-/** @brief Macros to enable or disable the Over drive switching.\r
- */\r
-#define __HAL_PWR_OVERDRIVESWITCHING_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_ODSWEN)\r
-#define __HAL_PWR_OVERDRIVESWITCHING_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_ODSWEN))\r
-\r
-/** @brief Macros to enable or disable the Under drive mode.\r
- * @note This mode is enabled only with STOP low power mode.\r
- * In this mode, the 1.2V domain is preserved in reduced leakage mode. This \r
- * mode is only available when the main regulator or the low power regulator \r
- * is in low voltage mode. \r
- * @note If the Under-drive mode was enabled, it is automatically disabled after \r
- * exiting Stop mode. \r
- * When the voltage regulator operates in Under-drive mode, an additional \r
- * startup delay is induced when waking up from Stop mode.\r
- */\r
-#define __HAL_PWR_UNDERDRIVE_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_UDEN)\r
-#define __HAL_PWR_UNDERDRIVE_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_UDEN))\r
-\r
-/** @brief Check PWR flag is set or not.\r
- * @param __FLAG__ specifies the flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_FLAG_ODRDY: This flag indicates that the Over-drive mode\r
- * is ready \r
- * @arg PWR_FLAG_ODSWRDY: This flag indicates that the Over-drive mode\r
- * switching is ready \r
- * @arg PWR_FLAG_UDRDY: This flag indicates that the Under-drive mode\r
- * is enabled in Stop mode\r
- * @retval The new state of __FLAG__ (TRUE or FALSE).\r
- */\r
-#define __HAL_PWR_GET_ODRUDR_FLAG(__FLAG__) ((PWR->CSR1 & (__FLAG__)) == (__FLAG__))\r
-\r
-/** @brief Clear the Under-Drive Ready flag.\r
- */\r
-#define __HAL_PWR_CLEAR_ODRUDR_FLAG() (PWR->CSR1 |= PWR_FLAG_UDRDY)\r
-\r
-/** @brief Check Wake Up flag is set or not.\r
- * @param __WUFLAG__ specifies the Wake Up flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_WAKEUP_PIN_FLAG1: Wakeup Pin Flag for PA0\r
- * @arg PWR_WAKEUP_PIN_FLAG2: Wakeup Pin Flag for PA2\r
- * @arg PWR_WAKEUP_PIN_FLAG3: Wakeup Pin Flag for PC1\r
- * @arg PWR_WAKEUP_PIN_FLAG4: Wakeup Pin Flag for PC13\r
- * @arg PWR_WAKEUP_PIN_FLAG5: Wakeup Pin Flag for PI8\r
- * @arg PWR_WAKEUP_PIN_FLAG6: Wakeup Pin Flag for PI11 \r
- */\r
-#define __HAL_PWR_GET_WAKEUP_FLAG(__WUFLAG__) (PWR->CSR2 & (__WUFLAG__))\r
-\r
-/** @brief Clear the WakeUp pins flags.\r
- * @param __WUFLAG__ specifies the Wake Up pin flag to clear.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_WAKEUP_PIN_FLAG1: Wakeup Pin Flag for PA0\r
- * @arg PWR_WAKEUP_PIN_FLAG2: Wakeup Pin Flag for PA2\r
- * @arg PWR_WAKEUP_PIN_FLAG3: Wakeup Pin Flag for PC1\r
- * @arg PWR_WAKEUP_PIN_FLAG4: Wakeup Pin Flag for PC13\r
- * @arg PWR_WAKEUP_PIN_FLAG5: Wakeup Pin Flag for PI8\r
- * @arg PWR_WAKEUP_PIN_FLAG6: Wakeup Pin Flag for PI11 \r
- */\r
-#define __HAL_PWR_CLEAR_WAKEUP_FLAG(__WUFLAG__) (PWR->CR2 |= (__WUFLAG__))\r
-/**\r
- * @}\r
- */\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup PWREx_Exported_Functions PWREx Exported Functions\r
- * @{\r
- */\r
- \r
-/** @addtogroup PWREx_Exported_Functions_Group1\r
- * @{\r
- */\r
-uint32_t HAL_PWREx_GetVoltageRange(void);\r
-HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling);\r
-\r
-void HAL_PWREx_EnableFlashPowerDown(void);\r
-void HAL_PWREx_DisableFlashPowerDown(void); \r
-HAL_StatusTypeDef HAL_PWREx_EnableBkUpReg(void);\r
-HAL_StatusTypeDef HAL_PWREx_DisableBkUpReg(void); \r
-\r
-void HAL_PWREx_EnableMainRegulatorLowVoltage(void);\r
-void HAL_PWREx_DisableMainRegulatorLowVoltage(void);\r
-void HAL_PWREx_EnableLowRegulatorLowVoltage(void);\r
-void HAL_PWREx_DisableLowRegulatorLowVoltage(void);\r
-\r
-HAL_StatusTypeDef HAL_PWREx_EnableOverDrive(void);\r
-HAL_StatusTypeDef HAL_PWREx_DisableOverDrive(void);\r
-HAL_StatusTypeDef HAL_PWREx_EnterUnderDriveSTOPMode(uint32_t Regulator, uint8_t STOPEntry);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup PWREx_Private_Macros PWREx Private Macros\r
- * @{\r
- */\r
-\r
-/** @defgroup PWREx_IS_PWR_Definitions PWREx Private macros to check input parameters\r
- * @{\r
- */\r
-#define IS_PWR_REGULATOR_UNDERDRIVE(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_UNDERDRIVE_ON) || \\r
- ((REGULATOR) == PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON))\r
-#define IS_PWR_WAKEUP_PIN(__PIN__) (((__PIN__) == PWR_WAKEUP_PIN1) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN2) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN3) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN4) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN5) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN6) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN1_HIGH) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN2_HIGH) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN3_HIGH) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN4_HIGH) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN5_HIGH) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN6_HIGH) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN1_LOW) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN2_LOW) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN3_LOW) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN4_LOW) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN5_LOW) || \\r
- ((__PIN__) == PWR_WAKEUP_PIN6_LOW))\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
- \r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-\r
-#endif /* __STM32F7xx_HAL_PWR_EX_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_rcc.h\r
- * @author MCD Application Team\r
- * @brief Header file of RCC HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_RCC_H\r
-#define __STM32F7xx_HAL_RCC_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
- \r
-/* Include RCC HAL Extended module */\r
-/* (include on top of file since RCC structures are defined in extended file) */\r
-#include "stm32f7xx_hal_rcc_ex.h" \r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup RCC\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/ \r
-\r
-/** @defgroup RCC_Exported_Types RCC Exported Types\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition \r
- */\r
-typedef struct\r
-{\r
- uint32_t OscillatorType; /*!< The oscillators to be configured.\r
- This parameter can be a value of @ref RCC_Oscillator_Type */\r
-\r
- uint32_t HSEState; /*!< The new state of the HSE.\r
- This parameter can be a value of @ref RCC_HSE_Config */\r
-\r
- uint32_t LSEState; /*!< The new state of the LSE.\r
- This parameter can be a value of @ref RCC_LSE_Config */\r
- \r
- uint32_t HSIState; /*!< The new state of the HSI.\r
- This parameter can be a value of @ref RCC_HSI_Config */\r
-\r
- uint32_t HSICalibrationValue; /*!< The HSI calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT).\r
- This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x1F */\r
- \r
- uint32_t LSIState; /*!< The new state of the LSI.\r
- This parameter can be a value of @ref RCC_LSI_Config */\r
-\r
- RCC_PLLInitTypeDef PLL; /*!< PLL structure parameters */ \r
-\r
-}RCC_OscInitTypeDef;\r
-\r
-/**\r
- * @brief RCC System, AHB and APB busses clock configuration structure definition \r
- */\r
-typedef struct\r
-{\r
- uint32_t ClockType; /*!< The clock to be configured.\r
- This parameter can be a value of @ref RCC_System_Clock_Type */\r
- \r
- uint32_t SYSCLKSource; /*!< The clock source (SYSCLKS) used as system clock.\r
- This parameter can be a value of @ref RCC_System_Clock_Source */\r
-\r
- uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK).\r
- This parameter can be a value of @ref RCC_AHB_Clock_Source */\r
-\r
- uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK).\r
- This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */\r
-\r
- uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK).\r
- This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */\r
-\r
-}RCC_ClkInitTypeDef;\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup RCC_Exported_Constants RCC Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup RCC_Oscillator_Type Oscillator Type\r
- * @{\r
- */\r
-#define RCC_OSCILLATORTYPE_NONE ((uint32_t)0x00000000U)\r
-#define RCC_OSCILLATORTYPE_HSE ((uint32_t)0x00000001U)\r
-#define RCC_OSCILLATORTYPE_HSI ((uint32_t)0x00000002U)\r
-#define RCC_OSCILLATORTYPE_LSE ((uint32_t)0x00000004U)\r
-#define RCC_OSCILLATORTYPE_LSI ((uint32_t)0x00000008U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_HSE_Config RCC HSE Config\r
- * @{\r
- */\r
-#define RCC_HSE_OFF ((uint32_t)0x00000000U)\r
-#define RCC_HSE_ON RCC_CR_HSEON\r
-#define RCC_HSE_BYPASS ((uint32_t)(RCC_CR_HSEBYP | RCC_CR_HSEON))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_LSE_Config RCC LSE Config\r
- * @{\r
- */\r
-#define RCC_LSE_OFF ((uint32_t)0x00000000U)\r
-#define RCC_LSE_ON RCC_BDCR_LSEON\r
-#define RCC_LSE_BYPASS ((uint32_t)(RCC_BDCR_LSEBYP | RCC_BDCR_LSEON))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_HSI_Config RCC HSI Config\r
- * @{\r
- */\r
-#define RCC_HSI_OFF ((uint32_t)0x00000000U)\r
-#define RCC_HSI_ON RCC_CR_HSION\r
-\r
-#define RCC_HSICALIBRATION_DEFAULT ((uint32_t)0x10U) /* Default HSI calibration trimming value */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_LSI_Config RCC LSI Config\r
- * @{\r
- */\r
-#define RCC_LSI_OFF ((uint32_t)0x00000000U)\r
-#define RCC_LSI_ON RCC_CSR_LSION\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_PLL_Config RCC PLL Config\r
- * @{\r
- */\r
-#define RCC_PLL_NONE ((uint32_t)0x00000000U)\r
-#define RCC_PLL_OFF ((uint32_t)0x00000001U)\r
-#define RCC_PLL_ON ((uint32_t)0x00000002U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_PLLP_Clock_Divider PLLP Clock Divider\r
- * @{\r
- */\r
-#define RCC_PLLP_DIV2 ((uint32_t)0x00000002U)\r
-#define RCC_PLLP_DIV4 ((uint32_t)0x00000004U)\r
-#define RCC_PLLP_DIV6 ((uint32_t)0x00000006U)\r
-#define RCC_PLLP_DIV8 ((uint32_t)0x00000008U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_PLL_Clock_Source PLL Clock Source\r
- * @{\r
- */\r
-#define RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI\r
-#define RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_System_Clock_Type RCC System Clock Type\r
- * @{\r
- */\r
-#define RCC_CLOCKTYPE_SYSCLK ((uint32_t)0x00000001U)\r
-#define RCC_CLOCKTYPE_HCLK ((uint32_t)0x00000002U)\r
-#define RCC_CLOCKTYPE_PCLK1 ((uint32_t)0x00000004U)\r
-#define RCC_CLOCKTYPE_PCLK2 ((uint32_t)0x00000008U)\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup RCC_System_Clock_Source RCC System Clock Source\r
- * @{\r
- */\r
-#define RCC_SYSCLKSOURCE_HSI RCC_CFGR_SW_HSI\r
-#define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_HSE\r
-#define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_PLL\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/** @defgroup RCC_System_Clock_Source_Status System Clock Source Status\r
- * @{\r
- */\r
-#define RCC_SYSCLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */\r
-#define RCC_SYSCLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */\r
-#define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_PLL /*!< PLL used as system clock */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_AHB_Clock_Source RCC AHB Clock Source\r
- * @{\r
- */\r
-#define RCC_SYSCLK_DIV1 RCC_CFGR_HPRE_DIV1\r
-#define RCC_SYSCLK_DIV2 RCC_CFGR_HPRE_DIV2\r
-#define RCC_SYSCLK_DIV4 RCC_CFGR_HPRE_DIV4\r
-#define RCC_SYSCLK_DIV8 RCC_CFGR_HPRE_DIV8\r
-#define RCC_SYSCLK_DIV16 RCC_CFGR_HPRE_DIV16\r
-#define RCC_SYSCLK_DIV64 RCC_CFGR_HPRE_DIV64\r
-#define RCC_SYSCLK_DIV128 RCC_CFGR_HPRE_DIV128\r
-#define RCC_SYSCLK_DIV256 RCC_CFGR_HPRE_DIV256\r
-#define RCC_SYSCLK_DIV512 RCC_CFGR_HPRE_DIV512\r
-/**\r
- * @}\r
- */ \r
- \r
-/** @defgroup RCC_APB1_APB2_Clock_Source RCC APB1/APB2 Clock Source\r
- * @{\r
- */\r
-#define RCC_HCLK_DIV1 RCC_CFGR_PPRE1_DIV1\r
-#define RCC_HCLK_DIV2 RCC_CFGR_PPRE1_DIV2\r
-#define RCC_HCLK_DIV4 RCC_CFGR_PPRE1_DIV4\r
-#define RCC_HCLK_DIV8 RCC_CFGR_PPRE1_DIV8\r
-#define RCC_HCLK_DIV16 RCC_CFGR_PPRE1_DIV16\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup RCC_RTC_Clock_Source RCC RTC Clock Source\r
- * @{\r
- */\r
-#define RCC_RTCCLKSOURCE_NO_CLK ((uint32_t)0x00000000U)\r
-#define RCC_RTCCLKSOURCE_LSE ((uint32_t)0x00000100U)\r
-#define RCC_RTCCLKSOURCE_LSI ((uint32_t)0x00000200U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIVX ((uint32_t)0x00000300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV2 ((uint32_t)0x00020300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV3 ((uint32_t)0x00030300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV4 ((uint32_t)0x00040300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV5 ((uint32_t)0x00050300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV6 ((uint32_t)0x00060300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV7 ((uint32_t)0x00070300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV8 ((uint32_t)0x00080300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV9 ((uint32_t)0x00090300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV10 ((uint32_t)0x000A0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV11 ((uint32_t)0x000B0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV12 ((uint32_t)0x000C0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV13 ((uint32_t)0x000D0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV14 ((uint32_t)0x000E0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV15 ((uint32_t)0x000F0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV16 ((uint32_t)0x00100300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV17 ((uint32_t)0x00110300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV18 ((uint32_t)0x00120300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV19 ((uint32_t)0x00130300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV20 ((uint32_t)0x00140300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV21 ((uint32_t)0x00150300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV22 ((uint32_t)0x00160300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV23 ((uint32_t)0x00170300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV24 ((uint32_t)0x00180300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV25 ((uint32_t)0x00190300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV26 ((uint32_t)0x001A0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV27 ((uint32_t)0x001B0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV28 ((uint32_t)0x001C0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV29 ((uint32_t)0x001D0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV30 ((uint32_t)0x001E0300U)\r
-#define RCC_RTCCLKSOURCE_HSE_DIV31 ((uint32_t)0x001F0300U)\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-\r
-/** @defgroup RCC_MCO_Index RCC MCO Index\r
- * @{\r
- */\r
-#define RCC_MCO1 ((uint32_t)0x00000000U)\r
-#define RCC_MCO2 ((uint32_t)0x00000001U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_MCO1_Clock_Source RCC MCO1 Clock Source\r
- * @{\r
- */\r
-#define RCC_MCO1SOURCE_HSI ((uint32_t)0x00000000U)\r
-#define RCC_MCO1SOURCE_LSE RCC_CFGR_MCO1_0\r
-#define RCC_MCO1SOURCE_HSE RCC_CFGR_MCO1_1\r
-#define RCC_MCO1SOURCE_PLLCLK RCC_CFGR_MCO1\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_MCO2_Clock_Source RCC MCO2 Clock Source\r
- * @{\r
- */\r
-#define RCC_MCO2SOURCE_SYSCLK ((uint32_t)0x00000000U)\r
-#define RCC_MCO2SOURCE_PLLI2SCLK RCC_CFGR_MCO2_0\r
-#define RCC_MCO2SOURCE_HSE RCC_CFGR_MCO2_1\r
-#define RCC_MCO2SOURCE_PLLCLK RCC_CFGR_MCO2\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_MCOx_Clock_Prescaler RCC MCO1 Clock Prescaler\r
- * @{\r
- */\r
-#define RCC_MCODIV_1 ((uint32_t)0x00000000U)\r
-#define RCC_MCODIV_2 RCC_CFGR_MCO1PRE_2\r
-#define RCC_MCODIV_3 ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2)\r
-#define RCC_MCODIV_4 ((uint32_t)RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2)\r
-#define RCC_MCODIV_5 RCC_CFGR_MCO1PRE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_Interrupt RCC Interrupt \r
- * @{\r
- */\r
-#define RCC_IT_LSIRDY ((uint8_t)0x01U)\r
-#define RCC_IT_LSERDY ((uint8_t)0x02U)\r
-#define RCC_IT_HSIRDY ((uint8_t)0x04U)\r
-#define RCC_IT_HSERDY ((uint8_t)0x08U)\r
-#define RCC_IT_PLLRDY ((uint8_t)0x10U)\r
-#define RCC_IT_PLLI2SRDY ((uint8_t)0x20U)\r
-#define RCC_IT_PLLSAIRDY ((uint8_t)0x40U)\r
-#define RCC_IT_CSS ((uint8_t)0x80U)\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup RCC_Flag RCC Flags\r
- * Elements values convention: 0XXYYYYYb\r
- * - YYYYY : Flag position in the register\r
- * - 0XX : Register index\r
- * - 01: CR register\r
- * - 10: BDCR register\r
- * - 11: CSR register\r
- * @{\r
- */\r
-/* Flags in the CR register */\r
-#define RCC_FLAG_HSIRDY ((uint8_t)0x21U)\r
-#define RCC_FLAG_HSERDY ((uint8_t)0x31U)\r
-#define RCC_FLAG_PLLRDY ((uint8_t)0x39U)\r
-#define RCC_FLAG_PLLI2SRDY ((uint8_t)0x3BU)\r
-#define RCC_FLAG_PLLSAIRDY ((uint8_t)0x3CU)\r
-\r
-/* Flags in the BDCR register */\r
-#define RCC_FLAG_LSERDY ((uint8_t)0x41U)\r
-\r
-/* Flags in the CSR register */\r
-#define RCC_FLAG_LSIRDY ((uint8_t)0x61U)\r
-#define RCC_FLAG_BORRST ((uint8_t)0x79U)\r
-#define RCC_FLAG_PINRST ((uint8_t)0x7AU)\r
-#define RCC_FLAG_PORRST ((uint8_t)0x7BU)\r
-#define RCC_FLAG_SFTRST ((uint8_t)0x7CU)\r
-#define RCC_FLAG_IWDGRST ((uint8_t)0x7DU)\r
-#define RCC_FLAG_WWDGRST ((uint8_t)0x7EU)\r
-#define RCC_FLAG_LPWRRST ((uint8_t)0x7FU)\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup RCC_LSEDrive_Configuration RCC LSE Drive configurations\r
- * @{\r
- */\r
-#define RCC_LSEDRIVE_LOW ((uint32_t)0x00000000U)\r
-#define RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_1\r
-#define RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_0\r
-#define RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV\r
-/**\r
- * @}\r
- */\r
- \r
-/**\r
- * @}\r
- */\r
- \r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup RCC_Exported_Macros RCC Exported Macros\r
- * @{\r
- */\r
-\r
-/** @defgroup RCC_AHB1_Clock_Enable_Disable AHB1 Peripheral Clock Enable Disable\r
- * @brief Enable or disable the AHB1 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before \r
- * using it. \r
- * @{\r
- */\r
-#define __HAL_RCC_CRC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
- \r
-#define __HAL_RCC_DMA1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_CRC_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_CRCEN))\r
-#define __HAL_RCC_DMA1_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DMA1EN))\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable\r
- * @brief Enable or disable the Low Speed APB (APB1) peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- * @{\r
- */\r
-#define __HAL_RCC_WWDG_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
- \r
-#define __HAL_RCC_PWR_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\\r
- UNUSED(tmpreg); \\r
- } while(0) \r
-\r
-#define __HAL_RCC_WWDG_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_WWDGEN))\r
-#define __HAL_RCC_PWR_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_PWREN)) \r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable \r
- * @brief Enable or disable the High Speed APB (APB2) peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before \r
- * using it.\r
- * @{\r
- */\r
-#define __HAL_RCC_SYSCFG_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
- \r
-#define __HAL_RCC_SYSCFG_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SYSCFGEN))\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable_Status AHB1 Peripheral Clock Enable Disable Status\r
- * @brief Get the enable or disable status of the AHB1 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- * @{\r
- */\r
-#define __HAL_RCC_CRC_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_CRCEN)) != RESET) \r
-#define __HAL_RCC_DMA1_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA1EN)) != RESET)\r
-\r
-#define __HAL_RCC_CRC_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_CRCEN)) == RESET)\r
-#define __HAL_RCC_DMA1_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA1EN)) == RESET)\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup RCC_APB1_Clock_Enable_Disable_Status APB1 Peripheral Clock Enable Disable Status\r
- * @brief Get the enable or disable status of the APB1 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- * @{\r
- */\r
-#define __HAL_RCC_WWDG_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) != RESET)\r
-#define __HAL_RCC_PWR_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) != RESET)\r
-\r
-#define __HAL_RCC_WWDG_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) == RESET)\r
-#define __HAL_RCC_PWR_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) == RESET)\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup RCC_APB2_Clock_Enable_Disable_Status APB2 Peripheral Clock Enable Disable Status\r
- * @brief EGet the enable or disable status of the APB2 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- * @{\r
- */\r
-#define __HAL_RCC_SYSCFG_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SYSCFGEN)) != RESET)\r
-#define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SYSCFGEN)) == RESET)\r
-/**\r
- * @}\r
- */ \r
- \r
-/** @defgroup RCC_Peripheral_Clock_Force_Release RCC Peripheral Clock Force Release\r
- * @brief Force or release AHB peripheral reset.\r
- * @{\r
- */ \r
-#define __HAL_RCC_AHB1_FORCE_RESET() (RCC->AHB1RSTR = 0xFFFFFFFFU)\r
-#define __HAL_RCC_CRC_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_CRCRST))\r
-#define __HAL_RCC_DMA1_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA1RST))\r
-\r
-#define __HAL_RCC_AHB1_RELEASE_RESET() (RCC->AHB1RSTR = 0x00U)\r
-#define __HAL_RCC_CRC_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_CRCRST))\r
-#define __HAL_RCC_DMA1_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_DMA1RST))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_APB1_Force_Release_Reset APB1 Force Release Reset \r
- * @brief Force or release APB1 peripheral reset.\r
- * @{\r
- */\r
-#define __HAL_RCC_APB1_FORCE_RESET() (RCC->APB1RSTR = 0xFFFFFFFFU) \r
-#define __HAL_RCC_WWDG_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_WWDGRST))\r
-#define __HAL_RCC_PWR_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_PWRRST))\r
-\r
-#define __HAL_RCC_APB1_RELEASE_RESET() (RCC->APB1RSTR = 0x00U) \r
-#define __HAL_RCC_WWDG_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_WWDGRST))\r
-#define __HAL_RCC_PWR_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_PWRRST))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_APB2_Force_Release_Reset APB2 Force Release Reset \r
- * @brief Force or release APB2 peripheral reset.\r
- * @{\r
- */\r
-#define __HAL_RCC_APB2_FORCE_RESET() (RCC->APB2RSTR = 0xFFFFFFFFU) \r
-#define __HAL_RCC_SYSCFG_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SYSCFGRST))\r
-\r
-#define __HAL_RCC_APB2_RELEASE_RESET() (RCC->APB2RSTR = 0x00U)\r
-#define __HAL_RCC_SYSCFG_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SYSCFGRST))\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_Peripheral_Clock_Sleep_Enable_Disable RCC Peripheral Clock Sleep Enable Disable\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- * @{\r
- */\r
-#define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_CRCLPEN))\r
-#define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA1LPEN))\r
-\r
-#define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_CRCLPEN))\r
-#define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DMA1LPEN))\r
-\r
-/** @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_WWDGLPEN))\r
-#define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_PWRLPEN))\r
-\r
-#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_WWDGLPEN))\r
-#define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_PWRLPEN))\r
-\r
-/** @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SYSCFGLPEN))\r
-#define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SYSCFGLPEN))\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup RCC_AHB1_Clock_Sleep_Enable_Disable_Status AHB1 Peripheral Clock Sleep Enable Disable Status\r
- * @brief Get the enable or disable status of the AHB1 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- * @{\r
- */\r
-#define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_CRCLPEN)) != RESET)\r
-#define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA1LPEN)) != RESET)\r
-\r
-#define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_CRCLPEN)) == RESET)\r
-#define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA1LPEN)) == RESET)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable_Status APB1 Peripheral Clock Sleep Enable Disable Status\r
- * @brief Get the enable or disable status of the APB1 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- * @{\r
- */\r
-#define __HAL_RCC_WWDG_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_WWDGLPEN)) != RESET)\r
-#define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_PWRLPEN)) != RESET)\r
-\r
-#define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_WWDGLPEN)) == RESET)\r
-#define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_PWRLPEN)) == RESET)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable_Status APB2 Peripheral Clock Sleep Enable Disable Status\r
- * @brief Get the enable or disable status of the APB2 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- * @{\r
- */\r
-#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SYSCFGLPEN)) != RESET)\r
-#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SYSCFGLPEN)) == RESET)\r
-/**\r
- * @}\r
- */ \r
-\r
-/** @defgroup RCC_HSI_Configuration HSI Configuration\r
- * @{ \r
- */ \r
- \r
-/** @brief Macros to enable or disable the Internal High Speed oscillator (HSI).\r
- * @note The HSI is stopped by hardware when entering STOP and STANDBY modes.\r
- * It is used (enabled by hardware) as system clock source after startup\r
- * from Reset, wakeup from STOP and STANDBY mode, or in case of failure\r
- * of the HSE used directly or indirectly as system clock (if the Clock\r
- * Security System CSS is enabled). \r
- * @note HSI can not be stopped if it is used as system clock source. In this case,\r
- * you have to select another source of the system clock then stop the HSI. \r
- * @note After enabling the HSI, the application software should wait on HSIRDY\r
- * flag to be set indicating that HSI clock is stable and can be used as\r
- * system clock source. \r
- * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator\r
- * clock cycles. \r
- */\r
-#define __HAL_RCC_HSI_ENABLE() (RCC->CR |= (RCC_CR_HSION))\r
-#define __HAL_RCC_HSI_DISABLE() (RCC->CR &= ~(RCC_CR_HSION))\r
-\r
-/** @brief Macro to adjust the Internal High Speed oscillator (HSI) calibration value.\r
- * @note The calibration is used to compensate for the variations in voltage\r
- * and temperature that influence the frequency of the internal HSI RC.\r
- * @param __HSICALIBRATIONVALUE__ specifies the calibration trimming value.\r
- * (default is RCC_HSICALIBRATION_DEFAULT).\r
- */\r
-#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICALIBRATIONVALUE__) (MODIFY_REG(RCC->CR,\\r
- RCC_CR_HSITRIM, (uint32_t)(__HSICALIBRATIONVALUE__) << RCC_CR_HSITRIM_Pos))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_LSI_Configuration LSI Configuration\r
- * @{ \r
- */ \r
-\r
-/** @brief Macros to enable or disable the Internal Low Speed oscillator (LSI).\r
- * @note After enabling the LSI, the application software should wait on \r
- * LSIRDY flag to be set indicating that LSI clock is stable and can\r
- * be used to clock the IWDG and/or the RTC.\r
- * @note LSI can not be disabled if the IWDG is running.\r
- * @note When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator\r
- * clock cycles. \r
- */\r
-#define __HAL_RCC_LSI_ENABLE() (RCC->CSR |= (RCC_CSR_LSION))\r
-#define __HAL_RCC_LSI_DISABLE() (RCC->CSR &= ~(RCC_CSR_LSION))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_HSE_Configuration HSE Configuration\r
- * @{ \r
- */ \r
-/**\r
- * @brief Macro to configure the External High Speed oscillator (HSE).\r
- * @note Transitions HSE Bypass to HSE On and HSE On to HSE Bypass are not\r
- * supported by this macro. User should request a transition to HSE Off\r
- * first and then HSE On or HSE Bypass.\r
- * @note After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application\r
- * software should wait on HSERDY flag to be set indicating that HSE clock\r
- * is stable and can be used to clock the PLL and/or system clock.\r
- * @note HSE state can not be changed if it is used directly or through the\r
- * PLL as system clock. In this case, you have to select another source\r
- * of the system clock then change the HSE state (ex. disable it).\r
- * @note The HSE is stopped by hardware when entering STOP and STANDBY modes.\r
- * @note This function reset the CSSON bit, so if the clock security system(CSS)\r
- * was previously enabled you have to enable it again after calling this\r
- * function.\r
- * @param __STATE__ specifies the new state of the HSE.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_HSE_OFF: turn OFF the HSE oscillator, HSERDY flag goes low after\r
- * 6 HSE oscillator clock cycles.\r
- * @arg RCC_HSE_ON: turn ON the HSE oscillator.\r
- * @arg RCC_HSE_BYPASS: HSE oscillator bypassed with external clock.\r
- */\r
-#define __HAL_RCC_HSE_CONFIG(__STATE__) \\r
- do { \\r
- if ((__STATE__) == RCC_HSE_ON) \\r
- { \\r
- SET_BIT(RCC->CR, RCC_CR_HSEON); \\r
- } \\r
- else if ((__STATE__) == RCC_HSE_OFF) \\r
- { \\r
- CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \\r
- CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \\r
- } \\r
- else if ((__STATE__) == RCC_HSE_BYPASS) \\r
- { \\r
- SET_BIT(RCC->CR, RCC_CR_HSEBYP); \\r
- SET_BIT(RCC->CR, RCC_CR_HSEON); \\r
- } \\r
- else \\r
- { \\r
- CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \\r
- CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \\r
- } \\r
- } while(0)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_LSE_Configuration LSE Configuration\r
- * @{ \r
- */\r
-\r
-/**\r
- * @brief Macro to configure the External Low Speed oscillator (LSE).\r
- * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not supported by this macro. \r
- * User should request a transition to LSE Off first and then LSE On or LSE Bypass. \r
- * @note As the LSE is in the Backup domain and write access is denied to\r
- * this domain after reset, you have to enable write access using \r
- * HAL_PWR_EnableBkUpAccess() function before to configure the LSE\r
- * (to be done once after reset). \r
- * @note After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application\r
- * software should wait on LSERDY flag to be set indicating that LSE clock\r
- * is stable and can be used to clock the RTC.\r
- * @param __STATE__ specifies the new state of the LSE.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_LSE_OFF: turn OFF the LSE oscillator, LSERDY flag goes low after\r
- * 6 LSE oscillator clock cycles.\r
- * @arg RCC_LSE_ON: turn ON the LSE oscillator.\r
- * @arg RCC_LSE_BYPASS: LSE oscillator bypassed with external clock.\r
- */\r
-#define __HAL_RCC_LSE_CONFIG(__STATE__) \\r
- do { \\r
- if((__STATE__) == RCC_LSE_ON) \\r
- { \\r
- SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \\r
- } \\r
- else if((__STATE__) == RCC_LSE_OFF) \\r
- { \\r
- CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \\r
- CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \\r
- } \\r
- else if((__STATE__) == RCC_LSE_BYPASS) \\r
- { \\r
- SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \\r
- SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \\r
- } \\r
- else \\r
- { \\r
- CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \\r
- CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \\r
- } \\r
- } while(0)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_Internal_RTC_Clock_Configuration RTC Clock Configuration\r
- * @{ \r
- */\r
-\r
-/** @brief Macros to enable or disable the RTC clock.\r
- * @note These macros must be used only after the RTC clock source was selected.\r
- */\r
-#define __HAL_RCC_RTC_ENABLE() (RCC->BDCR |= (RCC_BDCR_RTCEN))\r
-#define __HAL_RCC_RTC_DISABLE() (RCC->BDCR &= ~(RCC_BDCR_RTCEN))\r
-\r
-/** @brief Macros to configure the RTC clock (RTCCLK).\r
- * @note As the RTC clock configuration bits are in the Backup domain and write\r
- * access is denied to this domain after reset, you have to enable write\r
- * access using the Power Backup Access macro before to configure\r
- * the RTC clock source (to be done once after reset). \r
- * @note Once the RTC clock is configured it can't be changed unless the \r
- * Backup domain is reset using __HAL_RCC_BackupReset_RELEASE() macro, or by\r
- * a Power On Reset (POR).\r
- * @param __RTCCLKSource__ specifies the RTC clock source.\r
- * This parameter can be one of the following values:\r
- @arg @ref RCC_RTCCLKSOURCE_NO_CLK: No clock selected as RTC clock.\r
- * @arg @ref RCC_RTCCLKSOURCE_LSE: LSE selected as RTC clock.\r
- * @arg @ref RCC_RTCCLKSOURCE_LSI: LSI selected as RTC clock.\r
- * @arg @ref RCC_RTCCLKSOURCE_HSE_DIVX: HSE clock divided by x selected\r
- * as RTC clock, where x:[2,31]\r
- * @note If the LSE or LSI is used as RTC clock source, the RTC continues to\r
- * work in STOP and STANDBY modes, and can be used as wakeup source.\r
- * However, when the HSE clock is used as RTC clock source, the RTC\r
- * cannot be used in STOP and STANDBY modes. \r
- * @note The maximum input clock frequency for RTC is 1MHz (when using HSE as\r
- * RTC clock source).\r
- */\r
-#define __HAL_RCC_RTC_CLKPRESCALER(__RTCCLKSource__) (((__RTCCLKSource__) & RCC_BDCR_RTCSEL) == RCC_BDCR_RTCSEL) ? \\r
- MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, ((__RTCCLKSource__) & 0xFFFFCFF)) : CLEAR_BIT(RCC->CFGR, RCC_CFGR_RTCPRE)\r
- \r
-#define __HAL_RCC_RTC_CONFIG(__RTCCLKSource__) do { __HAL_RCC_RTC_CLKPRESCALER(__RTCCLKSource__); \\r
- RCC->BDCR |= ((__RTCCLKSource__) & 0x00000FFF); \\r
- } while (0)\r
-\r
-/** @brief Macro to get the RTC clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock\r
- * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock\r
- * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock\r
- * @arg @ref RCC_RTCCLKSOURCE_HSE_DIVX HSE divided by X selected as RTC clock (X can be retrieved thanks to @ref __HAL_RCC_GET_RTC_HSE_PRESCALER()\r
- */\r
-#define __HAL_RCC_GET_RTC_SOURCE() (READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL))\r
-\r
-/**\r
- * @brief Get the RTC and HSE clock divider (RTCPRE).\r
- * @retval Returned value can be one of the following values:\r
- * @arg @ref RCC_RTCCLKSOURCE_HSE_DIVX: HSE clock divided by x selected\r
- * as RTC clock, where x:[2,31]\r
- */\r
-#define __HAL_RCC_GET_RTC_HSE_PRESCALER() (READ_BIT(RCC->CFGR, RCC_CFGR_RTCPRE) | RCC_BDCR_RTCSEL)\r
-\r
-/** @brief Macros to force or release the Backup domain reset.\r
- * @note This function resets the RTC peripheral (including the backup registers)\r
- * and the RTC clock source selection in RCC_CSR register.\r
- * @note The BKPSRAM is not affected by this reset. \r
- */\r
-#define __HAL_RCC_BACKUPRESET_FORCE() (RCC->BDCR |= (RCC_BDCR_BDRST))\r
-#define __HAL_RCC_BACKUPRESET_RELEASE() (RCC->BDCR &= ~(RCC_BDCR_BDRST))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_PLL_Configuration PLL Configuration\r
- * @{ \r
- */\r
-\r
-/** @brief Macros to enable or disable the main PLL.\r
- * @note After enabling the main PLL, the application software should wait on \r
- * PLLRDY flag to be set indicating that PLL clock is stable and can\r
- * be used as system clock source.\r
- * @note The main PLL can not be disabled if it is used as system clock source\r
- * @note The main PLL is disabled by hardware when entering STOP and STANDBY modes.\r
- */\r
-#define __HAL_RCC_PLL_ENABLE() SET_BIT(RCC->CR, RCC_CR_PLLON)\r
-#define __HAL_RCC_PLL_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLLON)\r
- \r
-/** @brief Macro to configure the PLL clock source.\r
- * @note This function must be used only when the main PLL is disabled.\r
- * @param __PLLSOURCE__ specifies the PLL entry clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry\r
- * @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry\r
- * \r
- */\r
-#define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLLSOURCE__) MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (__PLLSOURCE__))\r
-\r
-/** @brief Macro to configure the PLL multiplication factor.\r
- * @note This function must be used only when the main PLL is disabled.\r
- * @param __PLLM__ specifies the division factor for PLL VCO input clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 63.\r
- * @note You have to set the PLLM parameter correctly to ensure that the VCO input\r
- * frequency ranges from 1 to 2 MHz. It is recommended to select a frequency\r
- * of 2 MHz to limit PLL jitter.\r
- * \r
- */\r
-#define __HAL_RCC_PLL_PLLM_CONFIG(__PLLM__) MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLM, (__PLLM__))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_PLL_I2S_Configuration PLL I2S Configuration\r
- * @{ \r
- */\r
-\r
-/** @brief Macro to configure the I2S clock source (I2SCLK).\r
- * @note This function must be called before enabling the I2S APB clock.\r
- * @param __SOURCE__ specifies the I2S clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_I2SCLKSOURCE_PLLI2S: PLLI2S clock used as I2S clock source.\r
- * @arg RCC_I2SCLKSOURCE_EXT: External clock mapped on the I2S_CKIN pin\r
- * used as I2S clock source.\r
- */\r
-#define __HAL_RCC_I2S_CONFIG(__SOURCE__) do {RCC->CFGR &= ~(RCC_CFGR_I2SSRC); \\r
- RCC->CFGR |= (__SOURCE__); \\r
- }while(0)\r
-\r
-/** @brief Macros to enable or disable the PLLI2S. \r
- * @note The PLLI2S is disabled by hardware when entering STOP and STANDBY modes.\r
- */\r
-#define __HAL_RCC_PLLI2S_ENABLE() (RCC->CR |= (RCC_CR_PLLI2SON))\r
-#define __HAL_RCC_PLLI2S_DISABLE() (RCC->CR &= ~(RCC_CR_PLLI2SON))\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_Get_Clock_source Get Clock source\r
- * @{ \r
- */\r
-/**\r
- * @brief Macro to configure the system clock source.\r
- * @param __RCC_SYSCLKSOURCE__ specifies the system clock source.\r
- * This parameter can be one of the following values:\r
- * - RCC_SYSCLKSOURCE_HSI: HSI oscillator is used as system clock source.\r
- * - RCC_SYSCLKSOURCE_HSE: HSE oscillator is used as system clock source.\r
- * - RCC_SYSCLKSOURCE_PLLCLK: PLL output is used as system clock source.\r
- */\r
-#define __HAL_RCC_SYSCLK_CONFIG(__RCC_SYSCLKSOURCE__) MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__RCC_SYSCLKSOURCE__))\r
-\r
-/** @brief Macro to get the clock source used as system clock.\r
- * @retval The clock source used as system clock. The returned value can be one\r
- * of the following:\r
- * - RCC_SYSCLKSOURCE_STATUS_HSI: HSI used as system clock.\r
- * - RCC_SYSCLKSOURCE_STATUS_HSE: HSE used as system clock.\r
- * - RCC_SYSCLKSOURCE_STATUS_PLLCLK: PLL used as system clock.\r
- */\r
-#define __HAL_RCC_GET_SYSCLK_SOURCE() (RCC->CFGR & RCC_CFGR_SWS)\r
-\r
-/**\r
- * @brief Macro to configures the External Low Speed oscillator (LSE) drive capability.\r
- * @note As the LSE is in the Backup domain and write access is denied to\r
- * this domain after reset, you have to enable write access using\r
- * HAL_PWR_EnableBkUpAccess() function before to configure the LSE\r
- * (to be done once after reset).\r
- * @param __RCC_LSEDRIVE__ specifies the new state of the LSE drive capability.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_LSEDRIVE_LOW: LSE oscillator low drive capability.\r
- * @arg RCC_LSEDRIVE_MEDIUMLOW: LSE oscillator medium low drive capability.\r
- * @arg RCC_LSEDRIVE_MEDIUMHIGH: LSE oscillator medium high drive capability.\r
- * @arg RCC_LSEDRIVE_HIGH: LSE oscillator high drive capability.\r
- * @retval None\r
- */\r
-#define __HAL_RCC_LSEDRIVE_CONFIG(__RCC_LSEDRIVE__) \\r
- (MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__RCC_LSEDRIVE__) ))\r
-\r
-/** @brief Macro to get the oscillator used as PLL clock source.\r
- * @retval The oscillator used as PLL clock source. The returned value can be one\r
- * of the following:\r
- * - RCC_PLLSOURCE_HSI: HSI oscillator is used as PLL clock source.\r
- * - RCC_PLLSOURCE_HSE: HSE oscillator is used as PLL clock source.\r
- */\r
-#define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC))\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup RCCEx_MCOx_Clock_Config RCC Extended MCOx Clock Config\r
- * @{ \r
- */ \r
- \r
-/** @brief Macro to configure the MCO1 clock.\r
- * @param __MCOCLKSOURCE__ specifies the MCO clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_MCO1SOURCE_HSI: HSI clock selected as MCO1 source\r
- * @arg RCC_MCO1SOURCE_LSE: LSE clock selected as MCO1 source\r
- * @arg RCC_MCO1SOURCE_HSE: HSE clock selected as MCO1 source\r
- * @arg RCC_MCO1SOURCE_PLLCLK: main PLL clock selected as MCO1 source\r
- * @param __MCODIV__ specifies the MCO clock prescaler.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_MCODIV_1: no division applied to MCOx clock\r
- * @arg RCC_MCODIV_2: division by 2 applied to MCOx clock\r
- * @arg RCC_MCODIV_3: division by 3 applied to MCOx clock\r
- * @arg RCC_MCODIV_4: division by 4 applied to MCOx clock\r
- * @arg RCC_MCODIV_5: division by 5 applied to MCOx clock\r
- */\r
-\r
-#define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \\r
- MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), ((__MCOCLKSOURCE__) | (__MCODIV__)))\r
- \r
-/** @brief Macro to configure the MCO2 clock.\r
- * @param __MCOCLKSOURCE__ specifies the MCO clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_MCO2SOURCE_SYSCLK: System clock (SYSCLK) selected as MCO2 source\r
- * @arg RCC_MCO2SOURCE_PLLI2SCLK: PLLI2S clock selected as MCO2 source \r
- * @arg RCC_MCO2SOURCE_HSE: HSE clock selected as MCO2 source\r
- * @arg RCC_MCO2SOURCE_PLLCLK: main PLL clock selected as MCO2 source\r
- * @param __MCODIV__ specifies the MCO clock prescaler.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_MCODIV_1: no division applied to MCOx clock\r
- * @arg RCC_MCODIV_2: division by 2 applied to MCOx clock\r
- * @arg RCC_MCODIV_3: division by 3 applied to MCOx clock\r
- * @arg RCC_MCODIV_4: division by 4 applied to MCOx clock\r
- * @arg RCC_MCODIV_5: division by 5 applied to MCOx clock\r
- */\r
-\r
-#define __HAL_RCC_MCO2_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \\r
- MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), ((__MCOCLKSOURCE__) | ((__MCODIV__) << 3)));\r
-/**\r
- * @}\r
- */\r
- \r
-/** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management\r
- * @brief macros to manage the specified RCC Flags and interrupts.\r
- * @{\r
- */\r
-\r
-/** @brief Enable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to enable\r
- * the selected interrupts).\r
- * @param __INTERRUPT__ specifies the RCC interrupt sources to be enabled.\r
- * This parameter can be any combination of the following values:\r
- * @arg RCC_IT_LSIRDY: LSI ready interrupt.\r
- * @arg RCC_IT_LSERDY: LSE ready interrupt.\r
- * @arg RCC_IT_HSIRDY: HSI ready interrupt.\r
- * @arg RCC_IT_HSERDY: HSE ready interrupt.\r
- * @arg RCC_IT_PLLRDY: Main PLL ready interrupt.\r
- * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt.\r
- */\r
-#define __HAL_RCC_ENABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS |= (__INTERRUPT__))\r
-\r
-/** @brief Disable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to disable \r
- * the selected interrupts).\r
- * @param __INTERRUPT__ specifies the RCC interrupt sources to be disabled.\r
- * This parameter can be any combination of the following values:\r
- * @arg RCC_IT_LSIRDY: LSI ready interrupt.\r
- * @arg RCC_IT_LSERDY: LSE ready interrupt.\r
- * @arg RCC_IT_HSIRDY: HSI ready interrupt.\r
- * @arg RCC_IT_HSERDY: HSE ready interrupt.\r
- * @arg RCC_IT_PLLRDY: Main PLL ready interrupt.\r
- * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt.\r
- */\r
-#define __HAL_RCC_DISABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS &= (uint8_t)(~(__INTERRUPT__)))\r
-\r
-/** @brief Clear the RCC's interrupt pending bits (Perform Byte access to RCC_CIR[23:16]\r
- * bits to clear the selected interrupt pending bits.\r
- * @param __INTERRUPT__ specifies the interrupt pending bit to clear.\r
- * This parameter can be any combination of the following values:\r
- * @arg RCC_IT_LSIRDY: LSI ready interrupt.\r
- * @arg RCC_IT_LSERDY: LSE ready interrupt.\r
- * @arg RCC_IT_HSIRDY: HSI ready interrupt.\r
- * @arg RCC_IT_HSERDY: HSE ready interrupt.\r
- * @arg RCC_IT_PLLRDY: Main PLL ready interrupt.\r
- * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt. \r
- * @arg RCC_IT_CSS: Clock Security System interrupt\r
- */\r
-#define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE2_ADDRESS = (__INTERRUPT__))\r
-\r
-/** @brief Check the RCC's interrupt has occurred or not.\r
- * @param __INTERRUPT__ specifies the RCC interrupt source to check.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_IT_LSIRDY: LSI ready interrupt.\r
- * @arg RCC_IT_LSERDY: LSE ready interrupt.\r
- * @arg RCC_IT_HSIRDY: HSI ready interrupt.\r
- * @arg RCC_IT_HSERDY: HSE ready interrupt.\r
- * @arg RCC_IT_PLLRDY: Main PLL ready interrupt.\r
- * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt.\r
- * @arg RCC_IT_CSS: Clock Security System interrupt\r
- * @retval The new state of __INTERRUPT__ (TRUE or FALSE).\r
- */\r
-#define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIR & (__INTERRUPT__)) == (__INTERRUPT__))\r
-\r
-/** @brief Set RMVF bit to clear the reset flags: RCC_FLAG_PINRST, RCC_FLAG_PORRST, \r
- * RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST and RCC_FLAG_LPWRRST.\r
- */\r
-#define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF)\r
-\r
-/** @brief Check RCC flag is set or not.\r
- * @param __FLAG__ specifies the flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_FLAG_HSIRDY: HSI oscillator clock ready.\r
- * @arg RCC_FLAG_HSERDY: HSE oscillator clock ready.\r
- * @arg RCC_FLAG_PLLRDY: Main PLL clock ready.\r
- * @arg RCC_FLAG_PLLI2SRDY: PLLI2S clock ready.\r
- * @arg RCC_FLAG_LSERDY: LSE oscillator clock ready.\r
- * @arg RCC_FLAG_LSIRDY: LSI oscillator clock ready.\r
- * @arg RCC_FLAG_BORRST: POR/PDR or BOR reset.\r
- * @arg RCC_FLAG_PINRST: Pin reset.\r
- * @arg RCC_FLAG_PORRST: POR/PDR reset.\r
- * @arg RCC_FLAG_SFTRST: Software reset.\r
- * @arg RCC_FLAG_IWDGRST: Independent Watchdog reset.\r
- * @arg RCC_FLAG_WWDGRST: Window Watchdog reset.\r
- * @arg RCC_FLAG_LPWRRST: Low Power reset.\r
- * @retval The new state of __FLAG__ (TRUE or FALSE).\r
- */\r
-#define RCC_FLAG_MASK ((uint8_t)0x1F)\r
-#define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5) == 1)? RCC->CR :((((__FLAG__) >> 5) == 2) ? RCC->BDCR :((((__FLAG__) >> 5) == 3)? RCC->CSR :RCC->CIR))) & ((uint32_t)1 << ((__FLAG__) & RCC_FLAG_MASK)))!= 0)? 1 : 0)\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/**\r
- * @}\r
- */\r
-\r
-/* Include RCC HAL Extension module */\r
-#include "stm32f7xx_hal_rcc_ex.h"\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
- /** @addtogroup RCC_Exported_Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup RCC_Exported_Functions_Group1\r
- * @{\r
- */ \r
-/* Initialization and de-initialization functions ******************************/\r
-HAL_StatusTypeDef HAL_RCC_DeInit(void);\r
-HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);\r
-HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup RCC_Exported_Functions_Group2\r
- * @{\r
- */\r
-/* Peripheral Control functions ************************************************/\r
-void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv);\r
-void HAL_RCC_EnableCSS(void);\r
-void HAL_RCC_DisableCSS(void);\r
-uint32_t HAL_RCC_GetSysClockFreq(void);\r
-uint32_t HAL_RCC_GetHCLKFreq(void);\r
-uint32_t HAL_RCC_GetPCLK1Freq(void);\r
-uint32_t HAL_RCC_GetPCLK2Freq(void);\r
-void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);\r
-void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency);\r
-\r
-/* CSS NMI IRQ handler */\r
-void HAL_RCC_NMI_IRQHandler(void);\r
-\r
-/* User Callbacks in non blocking mode (IT mode) */ \r
-void HAL_RCC_CSSCallback(void);\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup RCC_Private_Constants RCC Private Constants\r
- * @{\r
- */\r
-#define HSE_TIMEOUT_VALUE HSE_STARTUP_TIMEOUT\r
-#define HSI_TIMEOUT_VALUE ((uint32_t)2) /* 2 ms */\r
-#define LSI_TIMEOUT_VALUE ((uint32_t)2) /* 2 ms */\r
-#define PLL_TIMEOUT_VALUE ((uint32_t)2) /* 2 ms */\r
-#define CLOCKSWITCH_TIMEOUT_VALUE ((uint32_t)5000) /* 5 s */\r
-#define PLLI2S_TIMEOUT_VALUE 100U /* Timeout value fixed to 100 ms */\r
-#define PLLSAI_TIMEOUT_VALUE 100U /* Timeout value fixed to 100 ms */\r
-\r
-/** @defgroup RCC_BitAddress_Alias RCC BitAddress Alias\r
- * @brief RCC registers bit address alias\r
- * @{\r
- */\r
-/* CIR register byte 2 (Bits[15:8]) base address */\r
-#define RCC_CIR_BYTE1_ADDRESS ((uint32_t)(RCC_BASE + 0x0C + 0x01))\r
-\r
-/* CIR register byte 3 (Bits[23:16]) base address */\r
-#define RCC_CIR_BYTE2_ADDRESS ((uint32_t)(RCC_BASE + 0x0C + 0x02))\r
-\r
-#define RCC_DBP_TIMEOUT_VALUE ((uint32_t)100)\r
-#define RCC_LSE_TIMEOUT_VALUE LSE_STARTUP_TIMEOUT\r
-/**\r
- * @}\r
- */\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @addtogroup RCC_Private_Macros RCC Private Macros\r
- * @{\r
- */\r
- \r
-/** @defgroup RCC_IS_RCC_Definitions RCC Private macros to check input parameters\r
- * @{\r
- */ \r
-#define IS_RCC_OSCILLATORTYPE(OSCILLATOR) ((OSCILLATOR) <= 15)\r
-\r
-#define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \\r
- ((HSE) == RCC_HSE_BYPASS))\r
-\r
-#define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \\r
- ((LSE) == RCC_LSE_BYPASS))\r
-\r
-#define IS_RCC_HSI(HSI) (((HSI) == RCC_HSI_OFF) || ((HSI) == RCC_HSI_ON))\r
-\r
-#define IS_RCC_LSI(LSI) (((LSI) == RCC_LSI_OFF) || ((LSI) == RCC_LSI_ON))\r
-\r
-#define IS_RCC_PLL(PLL) (((PLL) == RCC_PLL_NONE) ||((PLL) == RCC_PLL_OFF) || ((PLL) == RCC_PLL_ON))\r
-\r
-#define IS_RCC_PLLSOURCE(SOURCE) (((SOURCE) == RCC_PLLSOURCE_HSI) || \\r
- ((SOURCE) == RCC_PLLSOURCE_HSE))\r
-\r
-#define IS_RCC_SYSCLKSOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSOURCE_HSI) || \\r
- ((SOURCE) == RCC_SYSCLKSOURCE_HSE) || \\r
- ((SOURCE) == RCC_SYSCLKSOURCE_PLLCLK))\r
-#define IS_RCC_PLLM_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 63))\r
-\r
-#define IS_RCC_PLLN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432))\r
-\r
-#define IS_RCC_PLLP_VALUE(VALUE) (((VALUE) == RCC_PLLP_DIV2) || ((VALUE) == RCC_PLLP_DIV4) || \\r
- ((VALUE) == RCC_PLLP_DIV6) || ((VALUE) == RCC_PLLP_DIV8))\r
-#define IS_RCC_PLLQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15))\r
-\r
-#define IS_RCC_HCLK(HCLK) (((HCLK) == RCC_SYSCLK_DIV1) || ((HCLK) == RCC_SYSCLK_DIV2) || \\r
- ((HCLK) == RCC_SYSCLK_DIV4) || ((HCLK) == RCC_SYSCLK_DIV8) || \\r
- ((HCLK) == RCC_SYSCLK_DIV16) || ((HCLK) == RCC_SYSCLK_DIV64) || \\r
- ((HCLK) == RCC_SYSCLK_DIV128) || ((HCLK) == RCC_SYSCLK_DIV256) || \\r
- ((HCLK) == RCC_SYSCLK_DIV512))\r
-\r
-#define IS_RCC_CLOCKTYPE(CLK) ((1 <= (CLK)) && ((CLK) <= 15))\r
-\r
-#define IS_RCC_PCLK(PCLK) (((PCLK) == RCC_HCLK_DIV1) || ((PCLK) == RCC_HCLK_DIV2) || \\r
- ((PCLK) == RCC_HCLK_DIV4) || ((PCLK) == RCC_HCLK_DIV8) || \\r
- ((PCLK) == RCC_HCLK_DIV16))\r
-\r
-#define IS_RCC_MCO(MCOX) (((MCOX) == RCC_MCO1) || ((MCOX) == RCC_MCO2))\r
-\r
-\r
-#define IS_RCC_MCO1SOURCE(SOURCE) (((SOURCE) == RCC_MCO1SOURCE_HSI) || ((SOURCE) == RCC_MCO1SOURCE_LSE) || \\r
- ((SOURCE) == RCC_MCO1SOURCE_HSE) || ((SOURCE) == RCC_MCO1SOURCE_PLLCLK))\r
-\r
-#define IS_RCC_MCO2SOURCE(SOURCE) (((SOURCE) == RCC_MCO2SOURCE_SYSCLK) || ((SOURCE) == RCC_MCO2SOURCE_PLLI2SCLK)|| \\r
- ((SOURCE) == RCC_MCO2SOURCE_HSE) || ((SOURCE) == RCC_MCO2SOURCE_PLLCLK))\r
-\r
-#define IS_RCC_MCODIV(DIV) (((DIV) == RCC_MCODIV_1) || ((DIV) == RCC_MCODIV_2) || \\r
- ((DIV) == RCC_MCODIV_3) || ((DIV) == RCC_MCODIV_4) || \\r
- ((DIV) == RCC_MCODIV_5)) \r
-#define IS_RCC_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x1F)\r
-\r
-#define IS_RCC_RTCCLKSOURCE(SOURCE) (((SOURCE) == RCC_RTCCLKSOURCE_LSE) || ((SOURCE) == RCC_RTCCLKSOURCE_LSI) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV2) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV3) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV4) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV5) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV6) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV7) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV8) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV9) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV10) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV11) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV12) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV13) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV14) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV15) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV16) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV17) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV18) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV19) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV20) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV21) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV22) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV23) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV24) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV25) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV26) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV27) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV28) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV29) || \\r
- ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV30) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV31))\r
-\r
-\r
-#define IS_RCC_LSE_DRIVE(DRIVE) (((DRIVE) == RCC_LSEDRIVE_LOW) || \\r
- ((DRIVE) == RCC_LSEDRIVE_MEDIUMLOW) || \\r
- ((DRIVE) == RCC_LSEDRIVE_MEDIUMHIGH) || \\r
- ((DRIVE) == RCC_LSEDRIVE_HIGH))\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_RCC_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_rcc_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of RCC HAL Extension module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __STM32F7xx_HAL_RCC_EX_H\r
-#define __STM32F7xx_HAL_RCC_EX_H\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup RCCEx\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup RCCEx_Exported_Types RCCEx Exported Types\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief RCC PLL configuration structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t PLLState; /*!< The new state of the PLL.\r
- This parameter can be a value of @ref RCC_PLL_Config */\r
-\r
- uint32_t PLLSource; /*!< RCC_PLLSource: PLL entry clock source.\r
- This parameter must be a value of @ref RCC_PLL_Clock_Source */\r
-\r
- uint32_t PLLM; /*!< PLLM: Division factor for PLL VCO input clock.\r
- This parameter must be a number between Min_Data = 2 and Max_Data = 63 */\r
-\r
- uint32_t PLLN; /*!< PLLN: Multiplication factor for PLL VCO output clock.\r
- This parameter must be a number between Min_Data = 50 and Max_Data = 432 */\r
-\r
- uint32_t PLLP; /*!< PLLP: Division factor for main system clock (SYSCLK).\r
- This parameter must be a value of @ref RCC_PLLP_Clock_Divider */\r
-\r
- uint32_t PLLQ; /*!< PLLQ: Division factor for OTG FS, SDMMC and RNG clocks.\r
- This parameter must be a number between Min_Data = 2 and Max_Data = 15 */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
- uint32_t PLLR; /*!< PLLR: Division factor for DSI clock.\r
- This parameter must be a number between Min_Data = 2 and Max_Data = 7 */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-}RCC_PLLInitTypeDef;\r
-\r
-/**\r
- * @brief PLLI2S Clock structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t PLLI2SN; /*!< Specifies the multiplication factor for PLLI2S VCO output clock.\r
- This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- This parameter will be used only when PLLI2S is selected as Clock Source I2S or SAI */\r
-\r
- uint32_t PLLI2SR; /*!< Specifies the division factor for I2S clock.\r
- This parameter must be a number between Min_Data = 2 and Max_Data = 7.\r
- This parameter will be used only when PLLI2S is selected as Clock Source I2S or SAI */\r
-\r
- uint32_t PLLI2SQ; /*!< Specifies the division factor for SAI1 clock.\r
- This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- This parameter will be used only when PLLI2S is selected as Clock Source SAI */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \\r
- defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
- uint32_t PLLI2SP; /*!< Specifies the division factor for SPDIF-RX clock.\r
- This parameter must be a value of @ref RCCEx_PLLI2SP_Clock_Divider.\r
- This parameter will be used only when PLLI2S is selected as Clock Source SPDIF-RX */\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-}RCC_PLLI2SInitTypeDef;\r
-\r
-/**\r
- * @brief PLLSAI Clock structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t PLLSAIN; /*!< Specifies the multiplication factor for PLLI2S VCO output clock.\r
- This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- This parameter will be used only when PLLSAI is selected as Clock Source SAI or LTDC */\r
-\r
- uint32_t PLLSAIQ; /*!< Specifies the division factor for SAI1 clock.\r
- This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- This parameter will be used only when PLLSAI is selected as Clock Source SAI or LTDC */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \\r
- defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
- uint32_t PLLSAIR; /*!< specifies the division factor for LTDC clock\r
- This parameter must be a number between Min_Data = 2 and Max_Data = 7.\r
- This parameter will be used only when PLLSAI is selected as Clock Source LTDC */\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
- uint32_t PLLSAIP; /*!< Specifies the division factor for 48MHz clock.\r
- This parameter must be a value of @ref RCCEx_PLLSAIP_Clock_Divider\r
- This parameter will be used only when PLLSAI is disabled */\r
-}RCC_PLLSAIInitTypeDef;\r
-\r
-/**\r
- * @brief RCC extended clocks structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t PeriphClockSelection; /*!< The Extended Clock to be configured.\r
- This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */\r
-\r
- RCC_PLLI2SInitTypeDef PLLI2S; /*!< PLL I2S structure parameters.\r
- This parameter will be used only when PLLI2S is selected as Clock Source I2S or SAI */\r
-\r
- RCC_PLLSAIInitTypeDef PLLSAI; /*!< PLL SAI structure parameters.\r
- This parameter will be used only when PLLI2S is selected as Clock Source SAI or LTDC */\r
-\r
- uint32_t PLLI2SDivQ; /*!< Specifies the PLLI2S division factor for SAI1 clock.\r
- This parameter must be a number between Min_Data = 1 and Max_Data = 32\r
- This parameter will be used only when PLLI2S is selected as Clock Source SAI */\r
-\r
- uint32_t PLLSAIDivQ; /*!< Specifies the PLLI2S division factor for SAI1 clock.\r
- This parameter must be a number between Min_Data = 1 and Max_Data = 32\r
- This parameter will be used only when PLLSAI is selected as Clock Source SAI */\r
-\r
- uint32_t PLLSAIDivR; /*!< Specifies the PLLSAI division factor for LTDC clock.\r
- This parameter must be one value of @ref RCCEx_PLLSAI_DIVR */\r
-\r
- uint32_t RTCClockSelection; /*!< Specifies RTC Clock source Selection.\r
- This parameter can be a value of @ref RCC_RTC_Clock_Source */\r
-\r
- uint32_t I2sClockSelection; /*!< Specifies I2S Clock source Selection.\r
- This parameter can be a value of @ref RCCEx_I2S_Clock_Source */\r
-\r
- uint32_t TIMPresSelection; /*!< Specifies TIM Clock Prescalers Selection.\r
- This parameter can be a value of @ref RCCEx_TIM_Prescaler_Selection */\r
-\r
- uint32_t Sai1ClockSelection; /*!< Specifies SAI1 Clock Prescalers Selection\r
- This parameter can be a value of @ref RCCEx_SAI1_Clock_Source */\r
-\r
- uint32_t Sai2ClockSelection; /*!< Specifies SAI2 Clock Prescalers Selection\r
- This parameter can be a value of @ref RCCEx_SAI2_Clock_Source */\r
-\r
- uint32_t Usart1ClockSelection; /*!< USART1 clock source\r
- This parameter can be a value of @ref RCCEx_USART1_Clock_Source */\r
-\r
- uint32_t Usart2ClockSelection; /*!< USART2 clock source\r
- This parameter can be a value of @ref RCCEx_USART2_Clock_Source */\r
-\r
- uint32_t Usart3ClockSelection; /*!< USART3 clock source\r
- This parameter can be a value of @ref RCCEx_USART3_Clock_Source */\r
-\r
- uint32_t Uart4ClockSelection; /*!< UART4 clock source\r
- This parameter can be a value of @ref RCCEx_UART4_Clock_Source */\r
-\r
- uint32_t Uart5ClockSelection; /*!< UART5 clock source\r
- This parameter can be a value of @ref RCCEx_UART5_Clock_Source */\r
-\r
- uint32_t Usart6ClockSelection; /*!< USART6 clock source\r
- This parameter can be a value of @ref RCCEx_USART6_Clock_Source */\r
-\r
- uint32_t Uart7ClockSelection; /*!< UART7 clock source\r
- This parameter can be a value of @ref RCCEx_UART7_Clock_Source */\r
-\r
- uint32_t Uart8ClockSelection; /*!< UART8 clock source\r
- This parameter can be a value of @ref RCCEx_UART8_Clock_Source */\r
-\r
- uint32_t I2c1ClockSelection; /*!< I2C1 clock source\r
- This parameter can be a value of @ref RCCEx_I2C1_Clock_Source */\r
-\r
- uint32_t I2c2ClockSelection; /*!< I2C2 clock source\r
- This parameter can be a value of @ref RCCEx_I2C2_Clock_Source */\r
-\r
- uint32_t I2c3ClockSelection; /*!< I2C3 clock source\r
- This parameter can be a value of @ref RCCEx_I2C3_Clock_Source */\r
-\r
- uint32_t I2c4ClockSelection; /*!< I2C4 clock source\r
- This parameter can be a value of @ref RCCEx_I2C4_Clock_Source */\r
-\r
- uint32_t Lptim1ClockSelection; /*!< Specifies LPTIM1 clock source\r
- This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source */\r
-\r
- uint32_t CecClockSelection; /*!< CEC clock source\r
- This parameter can be a value of @ref RCCEx_CEC_Clock_Source */\r
-\r
- uint32_t Clk48ClockSelection; /*!< Specifies 48Mhz clock source used by USB OTG FS, RNG and SDMMC\r
- This parameter can be a value of @ref RCCEx_CLK48_Clock_Source */\r
-\r
- uint32_t Sdmmc1ClockSelection; /*!< SDMMC1 clock source\r
- This parameter can be a value of @ref RCCEx_SDMMC1_Clock_Source */\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
- uint32_t Sdmmc2ClockSelection; /*!< SDMMC2 clock source\r
- This parameter can be a value of @ref RCCEx_SDMMC2_Clock_Source */\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
- uint32_t Dfsdm1ClockSelection; /*!< DFSDM1 clock source\r
- This parameter can be a value of @ref RCCEx_DFSDM1_Kernel_Clock_Source */\r
-\r
- uint32_t Dfsdm1AudioClockSelection; /*!< DFSDM1 clock source\r
- This parameter can be a value of @ref RCCEx_DFSDM1_AUDIO_Clock_Source */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-}RCC_PeriphCLKInitTypeDef;\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup RCCEx_Periph_Clock_Selection RCC Periph Clock Selection\r
- * @{\r
- */\r
-#define RCC_PERIPHCLK_I2S ((uint32_t)0x00000001U)\r
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define RCC_PERIPHCLK_LTDC ((uint32_t)0x00000008U)\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#define RCC_PERIPHCLK_TIM ((uint32_t)0x00000010U)\r
-#define RCC_PERIPHCLK_RTC ((uint32_t)0x00000020U)\r
-#define RCC_PERIPHCLK_USART1 ((uint32_t)0x00000040U)\r
-#define RCC_PERIPHCLK_USART2 ((uint32_t)0x00000080U)\r
-#define RCC_PERIPHCLK_USART3 ((uint32_t)0x00000100U)\r
-#define RCC_PERIPHCLK_UART4 ((uint32_t)0x00000200U)\r
-#define RCC_PERIPHCLK_UART5 ((uint32_t)0x00000400U)\r
-#define RCC_PERIPHCLK_USART6 ((uint32_t)0x00000800U)\r
-#define RCC_PERIPHCLK_UART7 ((uint32_t)0x00001000U)\r
-#define RCC_PERIPHCLK_UART8 ((uint32_t)0x00002000U)\r
-#define RCC_PERIPHCLK_I2C1 ((uint32_t)0x00004000U)\r
-#define RCC_PERIPHCLK_I2C2 ((uint32_t)0x00008000U)\r
-#define RCC_PERIPHCLK_I2C3 ((uint32_t)0x00010000U)\r
-#define RCC_PERIPHCLK_I2C4 ((uint32_t)0x00020000U)\r
-#define RCC_PERIPHCLK_LPTIM1 ((uint32_t)0x00040000U)\r
-#define RCC_PERIPHCLK_SAI1 ((uint32_t)0x00080000U)\r
-#define RCC_PERIPHCLK_SAI2 ((uint32_t)0x00100000U)\r
-#define RCC_PERIPHCLK_CLK48 ((uint32_t)0x00200000U)\r
-#define RCC_PERIPHCLK_CEC ((uint32_t)0x00400000U)\r
-#define RCC_PERIPHCLK_SDMMC1 ((uint32_t)0x00800000U)\r
-#define RCC_PERIPHCLK_SPDIFRX ((uint32_t)0x01000000U)\r
-#define RCC_PERIPHCLK_PLLI2S ((uint32_t)0x02000000U)\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define RCC_PERIPHCLK_SDMMC2 ((uint32_t)0x04000000U)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define RCC_PERIPHCLK_DFSDM1 ((uint32_t)0x08000000U)\r
-#define RCC_PERIPHCLK_DFSDM1_AUDIO ((uint32_t)0x10000000U)\r
-#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \\r
- defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-/** @defgroup RCCEx_PLLI2SP_Clock_Divider RCCEx PLLI2SP Clock Divider\r
- * @{\r
- */\r
-#define RCC_PLLI2SP_DIV2 ((uint32_t)0x00000000U)\r
-#define RCC_PLLI2SP_DIV4 ((uint32_t)0x00000001U)\r
-#define RCC_PLLI2SP_DIV6 ((uint32_t)0x00000002U)\r
-#define RCC_PLLI2SP_DIV8 ((uint32_t)0x00000003U)\r
-/**\r
- * @}\r
- */\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @defgroup RCCEx_PLLSAIP_Clock_Divider RCCEx PLLSAIP Clock Divider\r
- * @{\r
- */\r
-#define RCC_PLLSAIP_DIV2 ((uint32_t)0x00000000U)\r
-#define RCC_PLLSAIP_DIV4 ((uint32_t)0x00000001U)\r
-#define RCC_PLLSAIP_DIV6 ((uint32_t)0x00000002U)\r
-#define RCC_PLLSAIP_DIV8 ((uint32_t)0x00000003U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_PLLSAI_DIVR RCCEx PLLSAI DIVR\r
- * @{\r
- */\r
-#define RCC_PLLSAIDIVR_2 ((uint32_t)0x00000000U)\r
-#define RCC_PLLSAIDIVR_4 RCC_DCKCFGR1_PLLSAIDIVR_0\r
-#define RCC_PLLSAIDIVR_8 RCC_DCKCFGR1_PLLSAIDIVR_1\r
-#define RCC_PLLSAIDIVR_16 RCC_DCKCFGR1_PLLSAIDIVR\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_I2S_Clock_Source RCCEx I2S Clock Source\r
- * @{\r
- */\r
-#define RCC_I2SCLKSOURCE_PLLI2S ((uint32_t)0x00000000U)\r
-#define RCC_I2SCLKSOURCE_EXT RCC_CFGR_I2SSRC\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_SAI1_Clock_Source RCCEx SAI1 Clock Source\r
- * @{\r
- */\r
-#define RCC_SAI1CLKSOURCE_PLLSAI ((uint32_t)0x00000000U)\r
-#define RCC_SAI1CLKSOURCE_PLLI2S RCC_DCKCFGR1_SAI1SEL_0\r
-#define RCC_SAI1CLKSOURCE_PIN RCC_DCKCFGR1_SAI1SEL_1\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define RCC_SAI1CLKSOURCE_PLLSRC RCC_DCKCFGR1_SAI1SEL\r
-#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_SAI2_Clock_Source RCCEx SAI2 Clock Source\r
- * @{\r
- */\r
-#define RCC_SAI2CLKSOURCE_PLLSAI ((uint32_t)0x00000000U)\r
-#define RCC_SAI2CLKSOURCE_PLLI2S RCC_DCKCFGR1_SAI2SEL_0\r
-#define RCC_SAI2CLKSOURCE_PIN RCC_DCKCFGR1_SAI2SEL_1\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define RCC_SAI2CLKSOURCE_PLLSRC RCC_DCKCFGR1_SAI2SEL\r
-#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_CEC_Clock_Source RCCEx CEC Clock Source\r
- * @{\r
- */\r
-#define RCC_CECCLKSOURCE_LSE ((uint32_t)0x00000000U)\r
-#define RCC_CECCLKSOURCE_HSI RCC_DCKCFGR2_CECSEL /* CEC clock is HSI/488*/\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_USART1_Clock_Source RCCEx USART1 Clock Source\r
- * @{\r
- */\r
-#define RCC_USART1CLKSOURCE_PCLK2 ((uint32_t)0x00000000U)\r
-#define RCC_USART1CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART1SEL_0\r
-#define RCC_USART1CLKSOURCE_HSI RCC_DCKCFGR2_USART1SEL_1\r
-#define RCC_USART1CLKSOURCE_LSE RCC_DCKCFGR2_USART1SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_USART2_Clock_Source RCCEx USART2 Clock Source\r
- * @{\r
- */\r
-#define RCC_USART2CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_USART2CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART2SEL_0\r
-#define RCC_USART2CLKSOURCE_HSI RCC_DCKCFGR2_USART2SEL_1\r
-#define RCC_USART2CLKSOURCE_LSE RCC_DCKCFGR2_USART2SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_USART3_Clock_Source RCCEx USART3 Clock Source\r
- * @{\r
- */\r
-#define RCC_USART3CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_USART3CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART3SEL_0\r
-#define RCC_USART3CLKSOURCE_HSI RCC_DCKCFGR2_USART3SEL_1\r
-#define RCC_USART3CLKSOURCE_LSE RCC_DCKCFGR2_USART3SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_UART4_Clock_Source RCCEx UART4 Clock Source\r
- * @{\r
- */\r
-#define RCC_UART4CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_UART4CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART4SEL_0\r
-#define RCC_UART4CLKSOURCE_HSI RCC_DCKCFGR2_UART4SEL_1\r
-#define RCC_UART4CLKSOURCE_LSE RCC_DCKCFGR2_UART4SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_UART5_Clock_Source RCCEx UART5 Clock Source\r
- * @{\r
- */\r
-#define RCC_UART5CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_UART5CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART5SEL_0\r
-#define RCC_UART5CLKSOURCE_HSI RCC_DCKCFGR2_UART5SEL_1\r
-#define RCC_UART5CLKSOURCE_LSE RCC_DCKCFGR2_UART5SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_USART6_Clock_Source RCCEx USART6 Clock Source\r
- * @{\r
- */\r
-#define RCC_USART6CLKSOURCE_PCLK2 ((uint32_t)0x00000000U)\r
-#define RCC_USART6CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART6SEL_0\r
-#define RCC_USART6CLKSOURCE_HSI RCC_DCKCFGR2_USART6SEL_1\r
-#define RCC_USART6CLKSOURCE_LSE RCC_DCKCFGR2_USART6SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_UART7_Clock_Source RCCEx UART7 Clock Source\r
- * @{\r
- */\r
-#define RCC_UART7CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_UART7CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART7SEL_0\r
-#define RCC_UART7CLKSOURCE_HSI RCC_DCKCFGR2_UART7SEL_1\r
-#define RCC_UART7CLKSOURCE_LSE RCC_DCKCFGR2_UART7SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_UART8_Clock_Source RCCEx UART8 Clock Source\r
- * @{\r
- */\r
-#define RCC_UART8CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_UART8CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART8SEL_0\r
-#define RCC_UART8CLKSOURCE_HSI RCC_DCKCFGR2_UART8SEL_1\r
-#define RCC_UART8CLKSOURCE_LSE RCC_DCKCFGR2_UART8SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_I2C1_Clock_Source RCCEx I2C1 Clock Source\r
- * @{\r
- */\r
-#define RCC_I2C1CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_I2C1CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C1SEL_0\r
-#define RCC_I2C1CLKSOURCE_HSI RCC_DCKCFGR2_I2C1SEL_1\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_I2C2_Clock_Source RCCEx I2C2 Clock Source\r
- * @{\r
- */\r
-#define RCC_I2C2CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_I2C2CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C2SEL_0\r
-#define RCC_I2C2CLKSOURCE_HSI RCC_DCKCFGR2_I2C2SEL_1\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_I2C3_Clock_Source RCCEx I2C3 Clock Source\r
- * @{\r
- */\r
-#define RCC_I2C3CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_I2C3CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C3SEL_0\r
-#define RCC_I2C3CLKSOURCE_HSI RCC_DCKCFGR2_I2C3SEL_1\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_I2C4_Clock_Source RCCEx I2C4 Clock Source\r
- * @{\r
- */\r
-#define RCC_I2C4CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_I2C4CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C4SEL_0\r
-#define RCC_I2C4CLKSOURCE_HSI RCC_DCKCFGR2_I2C4SEL_1\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_LPTIM1_Clock_Source RCCEx LPTIM1 Clock Source\r
- * @{\r
- */\r
-#define RCC_LPTIM1CLKSOURCE_PCLK1 ((uint32_t)0x00000000U)\r
-#define RCC_LPTIM1CLKSOURCE_LSI RCC_DCKCFGR2_LPTIM1SEL_0\r
-#define RCC_LPTIM1CLKSOURCE_HSI RCC_DCKCFGR2_LPTIM1SEL_1\r
-#define RCC_LPTIM1CLKSOURCE_LSE RCC_DCKCFGR2_LPTIM1SEL\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_CLK48_Clock_Source RCCEx CLK48 Clock Source\r
- * @{\r
- */\r
-#define RCC_CLK48SOURCE_PLL ((uint32_t)0x00000000U)\r
-#define RCC_CLK48SOURCE_PLLSAIP RCC_DCKCFGR2_CK48MSEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_TIM_Prescaler_Selection RCCEx TIM Prescaler Selection\r
- * @{\r
- */\r
-#define RCC_TIMPRES_DESACTIVATED ((uint32_t)0x00000000U)\r
-#define RCC_TIMPRES_ACTIVATED RCC_DCKCFGR1_TIMPRE\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_SDMMC1_Clock_Source RCCEx SDMMC1 Clock Source\r
- * @{\r
- */\r
-#define RCC_SDMMC1CLKSOURCE_CLK48 ((uint32_t)0x00000000U)\r
-#define RCC_SDMMC1CLKSOURCE_SYSCLK RCC_DCKCFGR2_SDMMC1SEL\r
-/**\r
- * @}\r
- */\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-/** @defgroup RCCEx_SDMMC2_Clock_Source RCCEx SDMMC2 Clock Source\r
- * @{\r
- */\r
-#define RCC_SDMMC2CLKSOURCE_CLK48 ((uint32_t)0x00000000U)\r
-#define RCC_SDMMC2CLKSOURCE_SYSCLK RCC_DCKCFGR2_SDMMC2SEL\r
-/**\r
- * @}\r
- */\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-/** @defgroup RCCEx_DFSDM1_Kernel_Clock_Source RCCEx DFSDM1 Kernel Clock Source\r
- * @{\r
- */\r
-#define RCC_DFSDM1CLKSOURCE_PCLK2 ((uint32_t)0x00000000U)\r
-#define RCC_DFSDM1CLKSOURCE_SYSCLK RCC_DCKCFGR1_DFSDM1SEL\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_DFSDM1_AUDIO_Clock_Source RCCEx DFSDM1 AUDIO Clock Source\r
- * @{\r
- */\r
-#define RCC_DFSDM1AUDIOCLKSOURCE_SAI1 ((uint32_t)0x00000000U)\r
-#define RCC_DFSDM1AUDIOCLKSOURCE_SAI2 RCC_DCKCFGR1_ADFSDM1SEL\r
-/**\r
- * @}\r
- */\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-/** @defgroup RCCEx_DSI_Clock_Source RCC DSI Clock Source\r
- * @{\r
- */\r
-#define RCC_DSICLKSOURCE_DSIPHY ((uint32_t)0x00000000U)\r
-#define RCC_DSICLKSOURCE_PLLR ((uint32_t)RCC_DCKCFGR2_DSISEL)\r
-/**\r
- * @}\r
- */\r
-#endif /* STM32F769xx || STM32F779xx */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros\r
- * @{\r
- */\r
-/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable RCCEx_Peripheral_Clock_Enable_Disable\r
- * @brief Enables or disables the AHB/APB peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- * @{\r
- */\r
-\r
-/** @brief Enables or disables the AHB1 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_BKPSRAM_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_DTCMRAMEN_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DTCMRAMEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DTCMRAMEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_DMA2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_USB_OTG_HS_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSULPIEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSULPIEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOA_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOB_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOBEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOBEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOD_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOE_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOEEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOEEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOF_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOFEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOFEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOG_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOGEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOGEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOH_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOHEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOHEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOI_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOIEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOIEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_GPIOJ_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOJEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOJEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_GPIOK_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOKEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOKEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_DMA2D_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#define __HAL_RCC_BKPSRAM_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_BKPSRAMEN))\r
-#define __HAL_RCC_DTCMRAMEN_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DTCMRAMEN))\r
-#define __HAL_RCC_DMA2_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DMA2EN))\r
-#define __HAL_RCC_USB_OTG_HS_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_OTGHSEN))\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_OTGHSULPIEN))\r
-#define __HAL_RCC_GPIOA_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOAEN))\r
-#define __HAL_RCC_GPIOB_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOBEN))\r
-#define __HAL_RCC_GPIOC_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOCEN))\r
-#define __HAL_RCC_GPIOD_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIODEN))\r
-#define __HAL_RCC_GPIOE_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOEEN))\r
-#define __HAL_RCC_GPIOF_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOFEN))\r
-#define __HAL_RCC_GPIOG_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOGEN))\r
-#define __HAL_RCC_GPIOH_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOHEN))\r
-#define __HAL_RCC_GPIOI_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOIEN))\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_GPIOJ_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOJEN))\r
-#define __HAL_RCC_GPIOK_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOKEN))\r
-#define __HAL_RCC_DMA2D_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DMA2DEN))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-/**\r
- * @brief Enable ETHERNET clock.\r
- */\r
-#define __HAL_RCC_ETHMAC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_ETHMACTX_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACTXEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACTXEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_ETHMACRX_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACRXEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACRXEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_ETHMACPTP_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACPTPEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACPTPEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_ETH_CLK_ENABLE() do { \\r
- __HAL_RCC_ETHMAC_CLK_ENABLE(); \\r
- __HAL_RCC_ETHMACTX_CLK_ENABLE(); \\r
- __HAL_RCC_ETHMACRX_CLK_ENABLE(); \\r
- } while(0)\r
-/**\r
- * @brief Disable ETHERNET clock.\r
- */\r
-#define __HAL_RCC_ETHMAC_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACEN))\r
-#define __HAL_RCC_ETHMACTX_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACTXEN))\r
-#define __HAL_RCC_ETHMACRX_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACRXEN))\r
-#define __HAL_RCC_ETHMACPTP_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACPTPEN))\r
-#define __HAL_RCC_ETH_CLK_DISABLE() do { \\r
- __HAL_RCC_ETHMACTX_CLK_DISABLE(); \\r
- __HAL_RCC_ETHMACRX_CLK_DISABLE(); \\r
- __HAL_RCC_ETHMAC_CLK_DISABLE(); \\r
- } while(0)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Enable or disable the AHB2 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DCMI_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMIEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#define __HAL_RCC_DCMI_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_DCMIEN))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_JPEG_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_JPEGEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_JPEGEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#define __HAL_RCC_JPEG_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_JPEGEN))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#define __HAL_RCC_RNG_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN);\\r
- UNUSED(tmpreg); \\r
- __HAL_RCC_SYSCFG_CLK_ENABLE();\\r
- } while(0)\r
-\r
-#define __HAL_RCC_RNG_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_RNGEN))\r
-\r
-#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_OTGFSEN))\r
-#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_CRYP_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CRYPEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_HASH_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HASHEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HASHEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_CRYP_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_CRYPEN))\r
-#define __HAL_RCC_HASH_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_HASHEN))\r
-#endif /* STM32F756x || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_AES_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_AES_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_AESEN))\r
-#endif /* STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
-/** @brief Enables or disables the AHB3 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_FMC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_QSPI_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_FMC_CLK_DISABLE() (RCC->AHB3ENR &= ~(RCC_AHB3ENR_FMCEN))\r
-#define __HAL_RCC_QSPI_CLK_DISABLE() (RCC->AHB3ENR &= ~(RCC_AHB3ENR_QSPIEN))\r
-\r
-/** @brief Enable or disable the Low Speed APB (APB1) peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_TIM2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM3_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM4_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM5_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM6_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM7_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM12_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM13_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM14_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_LPTIM1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_RTC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_RTCEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_RTCEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN3EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN3EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#define __HAL_RCC_SPI2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SPI3_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_USART2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_USART3_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_UART4_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_UART5_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_I2C1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_I2C2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_I2C3_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_CAN1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_DAC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_UART7_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART7EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART7EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_UART8_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART8EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART8EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPDIFRX_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPDIFRXEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPDIFRXEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_I2C4_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C4EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C4EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_CAN2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_CEC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CECEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CECEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#define __HAL_RCC_TIM2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM2EN))\r
-#define __HAL_RCC_TIM3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM3EN))\r
-#define __HAL_RCC_TIM4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM4EN))\r
-#define __HAL_RCC_TIM5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM5EN))\r
-#define __HAL_RCC_TIM6_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM6EN))\r
-#define __HAL_RCC_TIM7_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM7EN))\r
-#define __HAL_RCC_TIM12_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM12EN))\r
-#define __HAL_RCC_TIM13_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM13EN))\r
-#define __HAL_RCC_TIM14_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM14EN))\r
-#define __HAL_RCC_LPTIM1_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_LPTIM1EN))\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_RTC_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_RTCEN))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN3EN))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI2EN))\r
-#define __HAL_RCC_SPI3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI3EN))\r
-#define __HAL_RCC_USART2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_USART2EN))\r
-#define __HAL_RCC_USART3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_USART3EN))\r
-#define __HAL_RCC_UART4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART4EN))\r
-#define __HAL_RCC_UART5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART5EN))\r
-#define __HAL_RCC_I2C1_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C1EN))\r
-#define __HAL_RCC_I2C2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C2EN))\r
-#define __HAL_RCC_I2C3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C3EN))\r
-#define __HAL_RCC_CAN1_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN1EN))\r
-#define __HAL_RCC_DAC_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_DACEN))\r
-#define __HAL_RCC_UART7_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART7EN))\r
-#define __HAL_RCC_UART8_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART8EN))\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPDIFRX_CLK_DISABLE()(RCC->APB1ENR &= ~(RCC_APB1ENR_SPDIFRXEN))\r
-#define __HAL_RCC_I2C4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C4EN))\r
-#define __HAL_RCC_CAN2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN2EN))\r
-#define __HAL_RCC_CEC_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CECEN))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || || STM32F750xx */\r
-\r
-/** @brief Enable or disable the High Speed APB (APB2) peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_TIM1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM8_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_USART1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_USART6_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART6EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART6EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || || STM32F730xx */\r
-\r
-#define __HAL_RCC_ADC1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_ADC2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_ADC3_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC3EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC3EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SDMMC1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SPI1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SPI4_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI4EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI4EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM9_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM10_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_TIM11_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SPI5_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI5EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI5EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SPI6_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI6EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI6EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SAI1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_SAI2_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_LTDCEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_LTDCEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_DSIEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DSIEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F769xx || STM32F779xx */\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-\r
-#define __HAL_RCC_MDIO_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_MDIOEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_MDIOEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_OTGPHYC_CLK_ENABLE() do { \\r
- __IO uint32_t tmpreg; \\r
- SET_BIT(RCC->APB2ENR, RCC_APB2ENR_OTGPHYCEN);\\r
- /* Delay after an RCC peripheral clock enabling */ \\r
- tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_OTGPHYCEN);\\r
- UNUSED(tmpreg); \\r
- } while(0)\r
-#endif /* STM32F723xx || STM32F733xx || STM32F730xx */\r
-\r
-#define __HAL_RCC_TIM1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM1EN))\r
-#define __HAL_RCC_TIM8_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM8EN))\r
-#define __HAL_RCC_USART1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_USART1EN))\r
-#define __HAL_RCC_USART6_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_USART6EN))\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SDMMC2EN))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#define __HAL_RCC_ADC1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC1EN))\r
-#define __HAL_RCC_ADC2_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC2EN))\r
-#define __HAL_RCC_ADC3_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC3EN))\r
-#define __HAL_RCC_SDMMC1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SDMMC1EN))\r
-#define __HAL_RCC_SPI1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI1EN))\r
-#define __HAL_RCC_SPI4_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI4EN))\r
-#define __HAL_RCC_TIM9_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM9EN))\r
-#define __HAL_RCC_TIM10_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM10EN))\r
-#define __HAL_RCC_TIM11_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM11EN))\r
-#define __HAL_RCC_SPI5_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI5EN))\r
-#define __HAL_RCC_SPI6_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI6EN))\r
-#define __HAL_RCC_SAI1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SAI1EN))\r
-#define __HAL_RCC_SAI2_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SAI2EN))\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_LTDCEN))\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_DSIEN))\r
-#endif /* STM32F769xx || STM32F779xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_DFSDM1EN))\r
-#define __HAL_RCC_MDIO_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_MDIOEN))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_OTGPHYC_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_OTGPHYCEN))\r
-#endif /* STM32F723xx || STM32F733xx || STM32F730xx */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable_Status Peripheral Clock Enable Disable Status\r
- * @brief Get the enable or disable status of the AHB/APB peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- * @{\r
- */\r
-\r
-/** @brief Get the enable or disable status of the AHB1 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_BKPSRAM_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_BKPSRAMEN)) != RESET)\r
-#define __HAL_RCC_DTCMRAMEN_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DTCMRAMEN)) != RESET)\r
-#define __HAL_RCC_DMA2_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2EN)) != RESET)\r
-#define __HAL_RCC_USB_OTG_HS_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSEN)) != RESET)\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSULPIEN)) != RESET)\r
-#define __HAL_RCC_GPIOA_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOAEN)) != RESET)\r
-#define __HAL_RCC_GPIOB_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOBEN)) != RESET)\r
-#define __HAL_RCC_GPIOC_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOCEN)) != RESET)\r
-#define __HAL_RCC_GPIOD_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIODEN)) != RESET)\r
-#define __HAL_RCC_GPIOE_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOEEN)) != RESET)\r
-#define __HAL_RCC_GPIOF_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOFEN)) != RESET)\r
-#define __HAL_RCC_GPIOG_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOGEN)) != RESET)\r
-#define __HAL_RCC_GPIOH_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOHEN)) != RESET)\r
-#define __HAL_RCC_GPIOI_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOIEN)) != RESET)\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_GPIOJ_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOJEN)) != RESET)\r
-#define __HAL_RCC_GPIOK_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOKEN)) != RESET)\r
-#define __HAL_RCC_DMA2D_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2DEN)) != RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#define __HAL_RCC_BKPSRAM_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_BKPSRAMEN)) == RESET)\r
-#define __HAL_RCC_DTCMRAMEN_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DTCMRAMEN)) == RESET)\r
-#define __HAL_RCC_DMA2_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2EN)) == RESET)\r
-#define __HAL_RCC_USB_OTG_HS_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSEN)) == RESET)\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSULPIEN)) == RESET)\r
-#define __HAL_RCC_GPIOA_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOAEN)) == RESET)\r
-#define __HAL_RCC_GPIOB_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOBEN)) == RESET)\r
-#define __HAL_RCC_GPIOC_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOCEN)) == RESET)\r
-#define __HAL_RCC_GPIOD_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIODEN)) == RESET)\r
-#define __HAL_RCC_GPIOE_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOEEN)) == RESET)\r
-#define __HAL_RCC_GPIOF_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOFEN)) == RESET)\r
-#define __HAL_RCC_GPIOG_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOGEN)) == RESET)\r
-#define __HAL_RCC_GPIOH_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOHEN)) == RESET)\r
-#define __HAL_RCC_GPIOI_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOIEN)) == RESET)\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_GPIOJ_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOJEN)) == RESET)\r
-#define __HAL_RCC_GPIOK_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOKEN)) == RESET)\r
-#define __HAL_RCC_DMA2D_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2DEN)) == RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-/**\r
- * @brief Enable ETHERNET clock.\r
- */\r
-#define __HAL_RCC_ETHMAC_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACEN)) != RESET)\r
-#define __HAL_RCC_ETHMACTX_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACTXEN)) != RESET)\r
-#define __HAL_RCC_ETHMACRX_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACRXEN)) != RESET)\r
-#define __HAL_RCC_ETHMACPTP_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACPTPEN)) != RESET)\r
-#define __HAL_RCC_ETH_IS_CLK_ENABLED() (__HAL_RCC_ETHMAC_IS_CLK_ENABLED() && \\r
- __HAL_RCC_ETHMACTX_IS_CLK_ENABLED() && \\r
- __HAL_RCC_ETHMACRX_IS_CLK_ENABLED())\r
-\r
-/**\r
- * @brief Disable ETHERNET clock.\r
- */\r
-#define __HAL_RCC_ETHMAC_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACEN)) == RESET)\r
-#define __HAL_RCC_ETHMACTX_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACTXEN)) == RESET)\r
-#define __HAL_RCC_ETHMACRX_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACRXEN)) == RESET)\r
-#define __HAL_RCC_ETHMACPTP_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACPTPEN)) == RESET)\r
-#define __HAL_RCC_ETH_IS_CLK_DISABLED() (__HAL_RCC_ETHMAC_IS_CLK_DISABLED() && \\r
- __HAL_RCC_ETHMACTX_IS_CLK_DISABLED() && \\r
- __HAL_RCC_ETHMACRX_IS_CLK_DISABLED())\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Get the enable or disable status of the AHB2 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_RNG_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_RNGEN)) != RESET)\r
-#define __HAL_RCC_USB_OTG_FS_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_OTGFSEN)) != RESET)\r
-\r
-#define __HAL_RCC_RNG_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_RNGEN)) == RESET)\r
-#define __HAL_RCC_USB_IS_OTG_FS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_OTGFSEN)) == RESET)\r
-\r
-#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_CRYP_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_CRYPEN)) != RESET)\r
-#define __HAL_RCC_HASH_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_HASHEN)) != RESET)\r
-#define __HAL_RCC_CRYP_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_CRYPEN)) == RESET)\r
-#define __HAL_RCC_HASH_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_HASHEN)) == RESET)\r
-#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_AES_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_AESEN)) != RESET)\r
-#define __HAL_RCC_AES_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_AESEN)) == RESET)\r
-#endif /* STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DCMI_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_DCMIEN)) != RESET)\r
-#define __HAL_RCC_DCMI_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_DCMIEN)) == RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_JPEG_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_JPEGEN)) != RESET)\r
-#define __HAL_RCC_JPEG_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_JPEGEN)) == RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-/** @brief Get the enable or disable status of the AHB3 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_FMC_IS_CLK_ENABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_FMCEN)) != RESET)\r
-#define __HAL_RCC_QSPI_IS_CLK_ENABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_QSPIEN)) != RESET)\r
-\r
-#define __HAL_RCC_FMC_IS_CLK_DISABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_FMCEN)) == RESET)\r
-#define __HAL_RCC_QSPI_IS_CLK_DISABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_QSPIEN)) == RESET)\r
-\r
-/** @brief Get the enable or disable status of the APB1 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_TIM2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) != RESET)\r
-#define __HAL_RCC_TIM3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) != RESET)\r
-#define __HAL_RCC_TIM4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) != RESET)\r
-#define __HAL_RCC_TIM5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) != RESET)\r
-#define __HAL_RCC_TIM6_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) != RESET)\r
-#define __HAL_RCC_TIM7_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) != RESET)\r
-#define __HAL_RCC_TIM12_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) != RESET)\r
-#define __HAL_RCC_TIM13_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) != RESET)\r
-#define __HAL_RCC_TIM14_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) != RESET)\r
-#define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LPTIM1EN)) != RESET)\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN3EN)) != RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) != RESET)\r
-#define __HAL_RCC_SPI3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) != RESET)\r
-#define __HAL_RCC_USART2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) != RESET)\r
-#define __HAL_RCC_USART3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) != RESET)\r
-#define __HAL_RCC_UART4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) != RESET)\r
-#define __HAL_RCC_UART5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) != RESET)\r
-#define __HAL_RCC_I2C1_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) != RESET)\r
-#define __HAL_RCC_I2C2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) != RESET)\r
-#define __HAL_RCC_I2C3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C3EN)) != RESET)\r
-#define __HAL_RCC_CAN1_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN1EN)) != RESET)\r
-#define __HAL_RCC_DAC_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) != RESET)\r
-#define __HAL_RCC_UART7_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART7EN)) != RESET)\r
-#define __HAL_RCC_UART8_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART8EN)) != RESET)\r
-\r
-#define __HAL_RCC_TIM2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) == RESET)\r
-#define __HAL_RCC_TIM3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) == RESET)\r
-#define __HAL_RCC_TIM4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) == RESET)\r
-#define __HAL_RCC_TIM5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) == RESET)\r
-#define __HAL_RCC_TIM6_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) == RESET)\r
-#define __HAL_RCC_TIM7_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) == RESET)\r
-#define __HAL_RCC_TIM12_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) == RESET)\r
-#define __HAL_RCC_TIM13_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) == RESET)\r
-#define __HAL_RCC_TIM14_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) == RESET)\r
-#define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LPTIM1EN)) == RESET)\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN3EN)) == RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) == RESET)\r
-#define __HAL_RCC_SPI3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) == RESET)\r
-#define __HAL_RCC_USART2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) == RESET)\r
-#define __HAL_RCC_USART3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) == RESET)\r
-#define __HAL_RCC_UART4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) == RESET)\r
-#define __HAL_RCC_UART5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) == RESET)\r
-#define __HAL_RCC_I2C1_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) == RESET)\r
-#define __HAL_RCC_I2C2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) == RESET)\r
-#define __HAL_RCC_I2C3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C3EN)) == RESET)\r
-#define __HAL_RCC_CAN1_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN1EN)) == RESET)\r
-#define __HAL_RCC_DAC_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) == RESET)\r
-#define __HAL_RCC_UART7_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART7EN)) == RESET)\r
-#define __HAL_RCC_UART8_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART8EN)) == RESET)\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPDIFRX_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPDIFRXEN)) != RESET)\r
-#define __HAL_RCC_CAN2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN2EN)) != RESET)\r
-#define __HAL_RCC_CEC_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CECEN)) != RESET)\r
-#define __HAL_RCC_I2C4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C4EN)) != RESET)\r
-\r
-#define __HAL_RCC_SPDIFRX_IS_CLK_DISABLED()((RCC->APB1ENR & (RCC_APB1ENR_SPDIFRXEN)) == RESET)\r
-#define __HAL_RCC_CAN2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN2EN)) == RESET)\r
-#define __HAL_RCC_CEC_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CECEN)) == RESET)\r
-#define __HAL_RCC_I2C4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C4EN)) == RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_RTC_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_RTCEN)) != RESET)\r
-#define __HAL_RCC_RTC_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_RTCEN)) == RESET)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-/** @brief Get the enable or disable status of the APB2 peripheral clock.\r
- * @note After reset, the peripheral clock (used for registers read/write access)\r
- * is disabled and the application software has to enable this clock before\r
- * using it.\r
- */\r
-#define __HAL_RCC_TIM1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM1EN)) != RESET)\r
-#define __HAL_RCC_TIM8_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM8EN)) != RESET)\r
-#define __HAL_RCC_USART1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) != RESET)\r
-#define __HAL_RCC_USART6_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART6EN)) != RESET)\r
-#define __HAL_RCC_ADC1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) != RESET)\r
-#define __HAL_RCC_ADC2_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC2EN)) != RESET)\r
-#define __HAL_RCC_ADC3_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC3EN)) != RESET)\r
-#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC1EN)) != RESET)\r
-#define __HAL_RCC_SPI1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) != RESET)\r
-#define __HAL_RCC_SPI4_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI4EN)) != RESET)\r
-#define __HAL_RCC_TIM9_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) != RESET)\r
-#define __HAL_RCC_TIM10_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) != RESET)\r
-#define __HAL_RCC_TIM11_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) != RESET)\r
-#define __HAL_RCC_SPI5_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI5EN)) != RESET)\r
-#define __HAL_RCC_SPI6_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI6EN)) != RESET)\r
-#define __HAL_RCC_SAI1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI1EN)) != RESET)\r
-#define __HAL_RCC_SAI2_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI2EN)) != RESET)\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_LTDCEN)) != RESET)\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DSIEN)) != RESET)\r
-#endif /* STM32F769xx || STM32F779xx */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC2EN)) != RESET)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DFSDM1EN)) != RESET)\r
-#define __HAL_RCC_MDIO_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_MDIOEN)) != RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_OTGPHYC_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_OTGPHYCEN)) != RESET)\r
-#endif /* STM32F723xx || STM32F733xx || STM32F730xx */\r
-\r
-#define __HAL_RCC_TIM1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM1EN)) == RESET)\r
-#define __HAL_RCC_TIM8_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM8EN)) == RESET)\r
-#define __HAL_RCC_USART1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) == RESET)\r
-#define __HAL_RCC_USART6_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART6EN)) == RESET)\r
-#define __HAL_RCC_ADC1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) == RESET)\r
-#define __HAL_RCC_ADC2_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC2EN)) == RESET)\r
-#define __HAL_RCC_ADC3_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC3EN)) == RESET)\r
-#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC1EN)) == RESET)\r
-#define __HAL_RCC_SPI1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) == RESET)\r
-#define __HAL_RCC_SPI4_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI4EN)) == RESET)\r
-#define __HAL_RCC_TIM9_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) == RESET)\r
-#define __HAL_RCC_TIM10_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) == RESET)\r
-#define __HAL_RCC_TIM11_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) == RESET)\r
-#define __HAL_RCC_SPI5_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI5EN)) == RESET)\r
-#define __HAL_RCC_SPI6_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI6EN)) == RESET)\r
-#define __HAL_RCC_SAI1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI1EN)) == RESET)\r
-#define __HAL_RCC_SAI2_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI2EN)) == RESET)\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_LTDCEN)) == RESET)\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DSIEN)) == RESET)\r
-#endif /* STM32F769xx || STM32F779xx */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC2EN)) == RESET)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DFSDM1EN)) == RESET)\r
-#define __HAL_RCC_MDIO_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_MDIOEN)) == RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_OTGPHYC_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_OTGPHYCEN)) == RESET)\r
-#endif /* STM32F723xx || STM32F733xx || STM32F730xx */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_Force_Release_Peripheral_Reset RCCEx Force Release Peripheral Reset\r
- * @brief Forces or releases AHB/APB peripheral reset.\r
- * @{\r
- */\r
-\r
-/** @brief Force or release AHB1 peripheral reset.\r
- */\r
-#define __HAL_RCC_DMA2_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA2RST))\r
-#define __HAL_RCC_USB_OTG_HS_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_OTGHRST))\r
-#define __HAL_RCC_GPIOA_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOARST))\r
-#define __HAL_RCC_GPIOB_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOBRST))\r
-#define __HAL_RCC_GPIOC_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOCRST))\r
-#define __HAL_RCC_GPIOD_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST))\r
-#define __HAL_RCC_GPIOE_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOERST))\r
-#define __HAL_RCC_GPIOF_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOFRST))\r
-#define __HAL_RCC_GPIOG_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOGRST))\r
-#define __HAL_RCC_GPIOH_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOHRST))\r
-#define __HAL_RCC_GPIOI_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOIRST))\r
-\r
-#define __HAL_RCC_DMA2_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_DMA2RST))\r
-#define __HAL_RCC_USB_OTG_HS_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_OTGHRST))\r
-#define __HAL_RCC_GPIOA_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOARST))\r
-#define __HAL_RCC_GPIOB_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOBRST))\r
-#define __HAL_RCC_GPIOC_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOCRST))\r
-#define __HAL_RCC_GPIOD_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIODRST))\r
-#define __HAL_RCC_GPIOE_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOERST))\r
-#define __HAL_RCC_GPIOF_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOFRST))\r
-#define __HAL_RCC_GPIOG_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOGRST))\r
-#define __HAL_RCC_GPIOH_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOHRST))\r
-#define __HAL_RCC_GPIOI_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOIRST))\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DMA2D_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA2DRST))\r
-#define __HAL_RCC_ETHMAC_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_ETHMACRST))\r
-#define __HAL_RCC_GPIOJ_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOJRST))\r
-#define __HAL_RCC_GPIOK_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOKRST))\r
-\r
-#define __HAL_RCC_DMA2D_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_DMA2DRST))\r
-#define __HAL_RCC_ETHMAC_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_ETHMACRST))\r
-#define __HAL_RCC_GPIOJ_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOJRST))\r
-#define __HAL_RCC_GPIOK_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOKRST))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Force or release AHB2 peripheral reset.\r
- */\r
-#define __HAL_RCC_AHB2_FORCE_RESET() (RCC->AHB2RSTR = 0xFFFFFFFFU)\r
-#define __HAL_RCC_RNG_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_RNGRST))\r
-#define __HAL_RCC_USB_OTG_FS_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_OTGFSRST))\r
-\r
-#define __HAL_RCC_AHB2_RELEASE_RESET() (RCC->AHB2RSTR = 0x00U)\r
-#define __HAL_RCC_RNG_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_RNGRST))\r
-#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_OTGFSRST))\r
-\r
-#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_JPEG_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_JPEGRST))\r
-#define __HAL_RCC_JPEG_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_JPEGRST))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_CRYP_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_CRYPRST))\r
-#define __HAL_RCC_HASH_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_HASHRST))\r
-#define __HAL_RCC_CRYP_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_CRYPRST))\r
-#define __HAL_RCC_HASH_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_HASHRST))\r
-#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_AES_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_AESRST))\r
-#define __HAL_RCC_AES_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_AESRST))\r
-#endif /* STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DCMI_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_DCMIRST))\r
-#define __HAL_RCC_DCMI_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_DCMIRST))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Force or release AHB3 peripheral reset\r
- */\r
-#define __HAL_RCC_AHB3_FORCE_RESET() (RCC->AHB3RSTR = 0xFFFFFFFFU)\r
-#define __HAL_RCC_FMC_FORCE_RESET() (RCC->AHB3RSTR |= (RCC_AHB3RSTR_FMCRST))\r
-#define __HAL_RCC_QSPI_FORCE_RESET() (RCC->AHB3RSTR |= (RCC_AHB3RSTR_QSPIRST))\r
-\r
-#define __HAL_RCC_AHB3_RELEASE_RESET() (RCC->AHB3RSTR = 0x00U)\r
-#define __HAL_RCC_FMC_RELEASE_RESET() (RCC->AHB3RSTR &= ~(RCC_AHB3RSTR_FMCRST))\r
-#define __HAL_RCC_QSPI_RELEASE_RESET() (RCC->AHB3RSTR &= ~(RCC_AHB3RSTR_QSPIRST))\r
-\r
-/** @brief Force or release APB1 peripheral reset.\r
- */\r
-#define __HAL_RCC_TIM2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM2RST))\r
-#define __HAL_RCC_TIM3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM3RST))\r
-#define __HAL_RCC_TIM4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM4RST))\r
-#define __HAL_RCC_TIM5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM5RST))\r
-#define __HAL_RCC_TIM6_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST))\r
-#define __HAL_RCC_TIM7_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST))\r
-#define __HAL_RCC_TIM12_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM12RST))\r
-#define __HAL_RCC_TIM13_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM13RST))\r
-#define __HAL_RCC_TIM14_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM14RST))\r
-#define __HAL_RCC_LPTIM1_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_LPTIM1RST))\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN3RST))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI2RST))\r
-#define __HAL_RCC_SPI3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI3RST))\r
-#define __HAL_RCC_USART2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_USART2RST))\r
-#define __HAL_RCC_USART3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_USART3RST))\r
-#define __HAL_RCC_UART4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART4RST))\r
-#define __HAL_RCC_UART5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART5RST))\r
-#define __HAL_RCC_I2C1_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C1RST))\r
-#define __HAL_RCC_I2C2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C2RST))\r
-#define __HAL_RCC_I2C3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C3RST))\r
-#define __HAL_RCC_CAN1_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN1RST))\r
-#define __HAL_RCC_DAC_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_DACRST))\r
-#define __HAL_RCC_UART7_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART7RST))\r
-#define __HAL_RCC_UART8_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART8RST))\r
-\r
-#define __HAL_RCC_TIM2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM2RST))\r
-#define __HAL_RCC_TIM3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM3RST))\r
-#define __HAL_RCC_TIM4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM4RST))\r
-#define __HAL_RCC_TIM5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM5RST))\r
-#define __HAL_RCC_TIM6_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM6RST))\r
-#define __HAL_RCC_TIM7_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM7RST))\r
-#define __HAL_RCC_TIM12_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM12RST))\r
-#define __HAL_RCC_TIM13_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM13RST))\r
-#define __HAL_RCC_TIM14_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM14RST))\r
-#define __HAL_RCC_LPTIM1_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_LPTIM1RST))\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN3RST))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI2RST))\r
-#define __HAL_RCC_SPI3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI3RST))\r
-#define __HAL_RCC_USART2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART2RST))\r
-#define __HAL_RCC_USART3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART3RST))\r
-#define __HAL_RCC_UART4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART4RST))\r
-#define __HAL_RCC_UART5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART5RST))\r
-#define __HAL_RCC_I2C1_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C1RST))\r
-#define __HAL_RCC_I2C2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C2RST))\r
-#define __HAL_RCC_I2C3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C3RST))\r
-#define __HAL_RCC_CAN1_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN1RST))\r
-#define __HAL_RCC_DAC_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_DACRST))\r
-#define __HAL_RCC_UART7_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART7RST))\r
-#define __HAL_RCC_UART8_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART8RST))\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPDIFRX_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPDIFRXRST))\r
-#define __HAL_RCC_I2C4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C4RST))\r
-#define __HAL_RCC_CAN2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN2RST))\r
-#define __HAL_RCC_CEC_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CECRST))\r
-\r
-#define __HAL_RCC_SPDIFRX_RELEASE_RESET()(RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPDIFRXRST))\r
-#define __HAL_RCC_I2C4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C4RST))\r
-#define __HAL_RCC_CAN2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN2RST))\r
-#define __HAL_RCC_CEC_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CECRST))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Force or release APB2 peripheral reset.\r
- */\r
-#define __HAL_RCC_TIM1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM1RST))\r
-#define __HAL_RCC_TIM8_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM8RST))\r
-#define __HAL_RCC_USART1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_USART1RST))\r
-#define __HAL_RCC_USART6_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_USART6RST))\r
-#define __HAL_RCC_ADC_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_ADCRST))\r
-#define __HAL_RCC_SDMMC1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SDMMC1RST))\r
-#define __HAL_RCC_SPI1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI1RST))\r
-#define __HAL_RCC_SPI4_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI4RST))\r
-#define __HAL_RCC_TIM9_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM9RST))\r
-#define __HAL_RCC_TIM10_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM10RST))\r
-#define __HAL_RCC_TIM11_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM11RST))\r
-#define __HAL_RCC_SPI5_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI5RST))\r
-#define __HAL_RCC_SPI6_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI6RST))\r
-#define __HAL_RCC_SAI1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SAI1RST))\r
-#define __HAL_RCC_SAI2_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SAI2RST))\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_LTDCRST))\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_OTGPHYC_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_OTGPHYCRST))\r
-#endif /* STM32F723xx || STM32F733xx || STM32F730xx */\r
-\r
-#define __HAL_RCC_TIM1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM1RST))\r
-#define __HAL_RCC_TIM8_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM8RST))\r
-#define __HAL_RCC_USART1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_USART1RST))\r
-#define __HAL_RCC_USART6_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_USART6RST))\r
-#define __HAL_RCC_ADC_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADCRST))\r
-#define __HAL_RCC_SDMMC1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SDMMC1RST))\r
-#define __HAL_RCC_SPI1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI1RST))\r
-#define __HAL_RCC_SPI4_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI4RST))\r
-#define __HAL_RCC_TIM9_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM9RST))\r
-#define __HAL_RCC_TIM10_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM10RST))\r
-#define __HAL_RCC_TIM11_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM11RST))\r
-#define __HAL_RCC_SPI5_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI5RST))\r
-#define __HAL_RCC_SPI6_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI6RST))\r
-#define __HAL_RCC_SAI1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SAI1RST))\r
-#define __HAL_RCC_SAI2_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SAI2RST))\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_LTDCRST))\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_OTGPHYC_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_OTGPHYCRST))\r
-#endif /* STM32F723xx || STM32F733xx || STM32F730xx */\r
-\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_DSIRST))\r
-#define __HAL_RCC_DSI_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_DSIRST))\r
-#endif /* STM32F769xx || STM32F779xx */\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SDMMC2RST))\r
-#define __HAL_RCC_SDMMC2_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SDMMC2RST))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_DFSDM1RST))\r
-#define __HAL_RCC_MDIO_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_MDIORST))\r
-#define __HAL_RCC_DFSDM1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_DFSDM1RST))\r
-#define __HAL_RCC_MDIO_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_MDIORST))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_Peripheral_Clock_Sleep_Enable_Disable RCCEx Peripheral Clock Sleep Enable Disable\r
- * @brief Enables or disables the AHB/APB peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- * @{\r
- */\r
-\r
-/** @brief Enable or disable the AHB1 peripheral clock during Low Power (Sleep) mode.\r
- */\r
-#define __HAL_RCC_FLITF_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_FLITFLPEN))\r
-#define __HAL_RCC_AXI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_AXILPEN))\r
-#define __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_SRAM1LPEN))\r
-#define __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_SRAM2LPEN))\r
-#define __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_BKPSRAMLPEN))\r
-#define __HAL_RCC_DTCM_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DTCMLPEN))\r
-#define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA2LPEN))\r
-#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_OTGHSLPEN))\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_OTGHSULPILPEN))\r
-#define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOALPEN))\r
-#define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOBLPEN))\r
-#define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOCLPEN))\r
-#define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIODLPEN))\r
-#define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOELPEN))\r
-#define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOFLPEN))\r
-#define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOGLPEN))\r
-#define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOHLPEN))\r
-#define __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOILPEN))\r
-\r
-#define __HAL_RCC_FLITF_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_FLITFLPEN))\r
-#define __HAL_RCC_AXI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_AXILPEN))\r
-#define __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_SRAM1LPEN))\r
-#define __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_SRAM2LPEN))\r
-#define __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_BKPSRAMLPEN))\r
-#define __HAL_RCC_DTCM_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DTCMLPEN))\r
-#define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DMA2LPEN))\r
-#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_OTGHSLPEN))\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_OTGHSULPILPEN))\r
-#define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOALPEN))\r
-#define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOBLPEN))\r
-#define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOCLPEN))\r
-#define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIODLPEN))\r
-#define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOELPEN))\r
-#define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOFLPEN))\r
-#define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOGLPEN))\r
-#define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOHLPEN))\r
-#define __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOILPEN))\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA2DLPEN))\r
-#define __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACLPEN))\r
-#define __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACTXLPEN))\r
-#define __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACRXLPEN))\r
-#define __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACPTPLPEN))\r
-#define __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOJLPEN))\r
-#define __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOKLPEN))\r
-\r
-#define __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DMA2DLPEN))\r
-#define __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACLPEN))\r
-#define __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACTXLPEN))\r
-#define __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACRXLPEN))\r
-#define __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACPTPLPEN))\r
-#define __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOJLPEN))\r
-#define __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOKLPEN))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Enable or disable the AHB2 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DCMI_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_DCMILPEN))\r
-#define __HAL_RCC_DCMI_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_DCMILPEN))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_JPEG_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_JPEGLPEN))\r
-#define __HAL_RCC_JPEG_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_JPEGLPEN))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_RNGLPEN))\r
-#define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_RNGLPEN))\r
-\r
-#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_OTGFSLPEN))\r
-#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_OTGFSLPEN))\r
-\r
-#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_CRYPLPEN))\r
-#define __HAL_RCC_HASH_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_HASHLPEN))\r
-\r
-#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_CRYPLPEN))\r
-#define __HAL_RCC_HASH_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_HASHLPEN))\r
-#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_AES_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_AESLPEN))\r
-#define __HAL_RCC_AES_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_AESLPEN))\r
-#endif /* STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
-/** @brief Enable or disable the AHB3 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_FMC_CLK_SLEEP_ENABLE() (RCC->AHB3LPENR |= (RCC_AHB3LPENR_FMCLPEN))\r
-#define __HAL_RCC_FMC_CLK_SLEEP_DISABLE() (RCC->AHB3LPENR &= ~(RCC_AHB3LPENR_FMCLPEN))\r
-\r
-#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE() (RCC->AHB3LPENR |= (RCC_AHB3LPENR_QSPILPEN))\r
-#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE() (RCC->AHB3LPENR &= ~(RCC_AHB3LPENR_QSPILPEN))\r
-\r
-/** @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM2LPEN))\r
-#define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM3LPEN))\r
-#define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM4LPEN))\r
-#define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM5LPEN))\r
-#define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM6LPEN))\r
-#define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM7LPEN))\r
-#define __HAL_RCC_TIM12_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM12LPEN))\r
-#define __HAL_RCC_TIM13_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM13LPEN))\r
-#define __HAL_RCC_TIM14_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM14LPEN))\r
-#define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_LPTIM1LPEN))\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CAN3LPEN))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPI2LPEN))\r
-#define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPI3LPEN))\r
-#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_USART2LPEN))\r
-#define __HAL_RCC_USART3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_USART3LPEN))\r
-#define __HAL_RCC_UART4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART4LPEN))\r
-#define __HAL_RCC_UART5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART5LPEN))\r
-#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C1LPEN))\r
-#define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C2LPEN))\r
-#define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C3LPEN))\r
-#define __HAL_RCC_CAN1_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CAN1LPEN))\r
-#define __HAL_RCC_DAC_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_DACLPEN))\r
-#define __HAL_RCC_UART7_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART7LPEN))\r
-#define __HAL_RCC_UART8_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART8LPEN))\r
-\r
-#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM2LPEN))\r
-#define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM3LPEN))\r
-#define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM4LPEN))\r
-#define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM5LPEN))\r
-#define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM6LPEN))\r
-#define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM7LPEN))\r
-#define __HAL_RCC_TIM12_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM12LPEN))\r
-#define __HAL_RCC_TIM13_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM13LPEN))\r
-#define __HAL_RCC_TIM14_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM14LPEN))\r
-#define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_LPTIM1LPEN))\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CAN3LPEN))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPI2LPEN))\r
-#define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPI3LPEN))\r
-#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_USART2LPEN))\r
-#define __HAL_RCC_USART3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_USART3LPEN))\r
-#define __HAL_RCC_UART4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART4LPEN))\r
-#define __HAL_RCC_UART5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART5LPEN))\r
-#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C1LPEN))\r
-#define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C2LPEN))\r
-#define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C3LPEN))\r
-#define __HAL_RCC_CAN1_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CAN1LPEN))\r
-#define __HAL_RCC_DAC_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_DACLPEN))\r
-#define __HAL_RCC_UART7_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART7LPEN))\r
-#define __HAL_RCC_UART8_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART8LPEN))\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_RTC_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_RTCLPEN))\r
-#define __HAL_RCC_RTC_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_RTCLPEN))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPDIFRX_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPDIFRXLPEN))\r
-#define __HAL_RCC_I2C4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C4LPEN))\r
-#define __HAL_RCC_CAN2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CAN2LPEN))\r
-#define __HAL_RCC_CEC_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CECLPEN))\r
-\r
-#define __HAL_RCC_SPDIFRX_CLK_SLEEP_DISABLE()(RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPDIFRXLPEN))\r
-#define __HAL_RCC_I2C4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C4LPEN))\r
-#define __HAL_RCC_CAN2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CAN2LPEN))\r
-#define __HAL_RCC_CEC_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CECLPEN))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM1LPEN))\r
-#define __HAL_RCC_TIM8_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM8LPEN))\r
-#define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_USART1LPEN))\r
-#define __HAL_RCC_USART6_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_USART6LPEN))\r
-#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_ADC1LPEN))\r
-#define __HAL_RCC_ADC2_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_ADC2LPEN))\r
-#define __HAL_RCC_ADC3_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_ADC3LPEN))\r
-#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SDMMC1LPEN))\r
-#define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI1LPEN))\r
-#define __HAL_RCC_SPI4_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI4LPEN))\r
-#define __HAL_RCC_TIM9_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM9LPEN))\r
-#define __HAL_RCC_TIM10_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM10LPEN))\r
-#define __HAL_RCC_TIM11_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM11LPEN))\r
-#define __HAL_RCC_SPI5_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI5LPEN))\r
-#define __HAL_RCC_SAI1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SAI1LPEN))\r
-#define __HAL_RCC_SAI2_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SAI2LPEN))\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_LTDCLPEN))\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM1LPEN))\r
-#define __HAL_RCC_TIM8_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM8LPEN))\r
-#define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_USART1LPEN))\r
-#define __HAL_RCC_USART6_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_USART6LPEN))\r
-#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_ADC1LPEN))\r
-#define __HAL_RCC_ADC2_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_ADC2LPEN))\r
-#define __HAL_RCC_ADC3_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_ADC3LPEN))\r
-#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SDMMC1LPEN))\r
-#define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI1LPEN))\r
-#define __HAL_RCC_SPI4_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI4LPEN))\r
-#define __HAL_RCC_TIM9_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM9LPEN))\r
-#define __HAL_RCC_TIM10_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM10LPEN))\r
-#define __HAL_RCC_TIM11_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM11LPEN))\r
-#define __HAL_RCC_SPI5_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI5LPEN))\r
-#define __HAL_RCC_SAI1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SAI1LPEN))\r
-#define __HAL_RCC_SAI2_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SAI2LPEN))\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)|| defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_LTDCLPEN))\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_DSILPEN))\r
-#define __HAL_RCC_DSI_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_DSILPEN))\r
-#endif /* STM32F769xx || STM32F779xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_DFSDM1LPEN))\r
-#define __HAL_RCC_MDIO_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_MDIOLPEN))\r
-#define __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_DFSDM1LPEN))\r
-#define __HAL_RCC_MDIO_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_MDIOLPEN))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SDMMC2LPEN))\r
-#define __HAL_RCC_SDMMC2_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SDMMC2LPEN))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPI6_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI6LPEN))\r
-#define __HAL_RCC_SPI6_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI6LPEN))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_Clock_Sleep_Enable_Disable_Status AHB/APB Peripheral Clock Sleep Enable Disable Status\r
- * @brief Get the enable or disable status of the AHB/APB peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- * @{\r
- */\r
-\r
-/** @brief Get the enable or disable status of the AHB1 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_FLITF_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_FLITFLPEN)) != RESET)\r
-#define __HAL_RCC_AXI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_AXILPEN)) != RESET)\r
-#define __HAL_RCC_SRAM1_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM1LPEN)) != RESET)\r
-#define __HAL_RCC_SRAM2_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM2LPEN)) != RESET)\r
-#define __HAL_RCC_BKPSRAM_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_BKPSRAMLPEN)) != RESET)\r
-#define __HAL_RCC_DTCM_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DTCMLPEN)) != RESET)\r
-#define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2LPEN)) != RESET)\r
-#define __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSLPEN)) != RESET)\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSULPILPEN)) != RESET)\r
-#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOALPEN)) != RESET)\r
-#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOBLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOCLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIODLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOELPEN)) != RESET)\r
-#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOFLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOGLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOHLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOILPEN)) != RESET)\r
-\r
-#define __HAL_RCC_FLITF_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_FLITFLPEN)) == RESET)\r
-#define __HAL_RCC_AXI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_AXILPEN)) == RESET)\r
-#define __HAL_RCC_SRAM1_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM1LPEN)) == RESET)\r
-#define __HAL_RCC_SRAM2_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM2LPEN)) == RESET)\r
-#define __HAL_RCC_BKPSRAM_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_BKPSRAMLPEN)) == RESET)\r
-#define __HAL_RCC_DTCM_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DTCMLPEN)) == RESET)\r
-#define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2LPEN)) == RESET)\r
-#define __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSLPEN)) == RESET)\r
-#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSULPILPEN)) == RESET)\r
-#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOALPEN)) == RESET)\r
-#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOBLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOCLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIODLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOELPEN)) == RESET)\r
-#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOFLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOGLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOHLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOILPEN)) == RESET)\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DMA2D_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2DLPEN)) != RESET)\r
-#define __HAL_RCC_ETHMAC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACLPEN)) != RESET)\r
-#define __HAL_RCC_ETHMACTX_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACTXLPEN)) != RESET)\r
-#define __HAL_RCC_ETHMACRX_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACRXLPEN)) != RESET)\r
-#define __HAL_RCC_ETHMACPTP_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACPTPLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOJ_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOJLPEN)) != RESET)\r
-#define __HAL_RCC_GPIOK_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOKLPEN)) != RESET)\r
-\r
-#define __HAL_RCC_DMA2D_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2DLPEN)) == RESET)\r
-#define __HAL_RCC_ETHMAC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACLPEN)) == RESET)\r
-#define __HAL_RCC_ETHMACTX_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACTXLPEN)) == RESET)\r
-#define __HAL_RCC_ETHMACRX_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACRXLPEN)) == RESET)\r
-#define __HAL_RCC_ETHMACPTP_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACPTPLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOJ_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOJLPEN)) == RESET)\r
-#define __HAL_RCC_GPIOK_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOKLPEN)) == RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Get the enable or disable status of the AHB2 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_DCMI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMILPEN)) != RESET)\r
-#define __HAL_RCC_DCMI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMILPEN)) == RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined(STM32F767xx) || defined(STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_JPEG_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_JPEGLPEN)) != RESET)\r
-#define __HAL_RCC_JPEG_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_JPEGLPEN)) == RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_RNGLPEN)) != RESET)\r
-#define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_RNGLPEN)) == RESET)\r
-\r
-#define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_OTGFSLPEN)) != RESET)\r
-#define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_OTGFSLPEN)) == RESET)\r
-\r
-#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_CRYP_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CRYPLPEN)) != RESET)\r
-#define __HAL_RCC_HASH_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_HASHLPEN)) != RESET)\r
-\r
-#define __HAL_RCC_CRYP_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CRYPLPEN)) == RESET)\r
-#define __HAL_RCC_HASH_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_HASHLPEN)) == RESET)\r
-#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AESLPEN)) != RESET)\r
-#define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AESLPEN)) == RESET)\r
-#endif /* STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
-/** @brief Get the enable or disable status of the AHB3 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_FMC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_FMCLPEN)) != RESET)\r
-#define __HAL_RCC_FMC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_FMCLPEN)) == RESET)\r
-\r
-#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_QSPILPEN)) != RESET)\r
-#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_QSPILPEN)) == RESET)\r
-\r
-/** @brief Get the enable or disable status of the APB1 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM2LPEN)) != RESET)\r
-#define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM3LPEN)) != RESET)\r
-#define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM4LPEN)) != RESET)\r
-#define __HAL_RCC_TIM5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) != RESET)\r
-#define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM6LPEN)) != RESET)\r
-#define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM7LPEN)) != RESET)\r
-#define __HAL_RCC_TIM12_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM12LPEN)) != RESET)\r
-#define __HAL_RCC_TIM13_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM13LPEN)) != RESET)\r
-#define __HAL_RCC_TIM14_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM14LPEN)) != RESET)\r
-#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LPTIM1LPEN)) != RESET)\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_RTC_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_RTCLPEN)) != RESET)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN3LPEN)) != RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI2LPEN)) != RESET)\r
-#define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) != RESET)\r
-#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART2LPEN)) != RESET)\r
-#define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART3LPEN)) != RESET)\r
-#define __HAL_RCC_UART4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) != RESET)\r
-#define __HAL_RCC_UART5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) != RESET)\r
-#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C1LPEN)) != RESET)\r
-#define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C2LPEN)) != RESET)\r
-#define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C3LPEN)) != RESET)\r
-#define __HAL_RCC_CAN1_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN1LPEN)) != RESET)\r
-#define __HAL_RCC_DAC_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_DACLPEN)) != RESET)\r
-#define __HAL_RCC_UART7_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART7LPEN)) != RESET)\r
-#define __HAL_RCC_UART8_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART8LPEN)) != RESET)\r
-\r
-#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM2LPEN)) == RESET)\r
-#define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM3LPEN)) == RESET)\r
-#define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM4LPEN)) == RESET)\r
-#define __HAL_RCC_TIM5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) == RESET)\r
-#define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM6LPEN)) == RESET)\r
-#define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM7LPEN)) == RESET)\r
-#define __HAL_RCC_TIM12_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM12LPEN)) == RESET)\r
-#define __HAL_RCC_TIM13_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM13LPEN)) == RESET)\r
-#define __HAL_RCC_TIM14_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM14LPEN)) == RESET)\r
-#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LPTIM1LPEN)) == RESET)\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\\r
- defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\\r
- defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_RTC_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_RTCLPEN)) == RESET)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx ||\r
- STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_CAN3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN3LPEN)) == RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-#define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI2LPEN)) == RESET)\r
-#define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) == RESET)\r
-#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART2LPEN)) == RESET)\r
-#define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART3LPEN)) == RESET)\r
-#define __HAL_RCC_UART4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) == RESET)\r
-#define __HAL_RCC_UART5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) == RESET)\r
-#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C1LPEN)) == RESET)\r
-#define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C2LPEN)) == RESET)\r
-#define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C3LPEN)) == RESET)\r
-#define __HAL_RCC_CAN1_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN1LPEN)) == RESET)\r
-#define __HAL_RCC_DAC_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_DACLPEN)) == RESET)\r
-#define __HAL_RCC_UART7_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART7LPEN)) == RESET)\r
-#define __HAL_RCC_UART8_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART8LPEN)) == RESET)\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPDIFRX_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPDIFRXLPEN)) != RESET)\r
-#define __HAL_RCC_I2C4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C4LPEN)) != RESET)\r
-#define __HAL_RCC_CAN2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN2LPEN)) != RESET)\r
-#define __HAL_RCC_CEC_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CECLPEN)) != RESET)\r
-\r
-#define __HAL_RCC_SPDIFRX_IS_CLK_SLEEP_DISABLED()((RCC->APB1LPENR & (RCC_APB1LPENR_SPDIFRXLPEN)) == RESET)\r
-#define __HAL_RCC_I2C4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C4LPEN)) == RESET)\r
-#define __HAL_RCC_CAN2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN2LPEN)) == RESET)\r
-#define __HAL_RCC_CEC_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CECLPEN)) == RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Get the enable or disable status of the APB2 peripheral clock during Low Power (Sleep) mode.\r
- * @note Peripheral clock gating in SLEEP mode can be used to further reduce\r
- * power consumption.\r
- * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.\r
- * @note By default, all peripheral clocks are enabled during SLEEP mode.\r
- */\r
-#define __HAL_RCC_TIM1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM1LPEN)) != RESET)\r
-#define __HAL_RCC_TIM8_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM8LPEN)) != RESET)\r
-#define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) != RESET)\r
-#define __HAL_RCC_USART6_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART6LPEN)) != RESET)\r
-#define __HAL_RCC_ADC1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC1LPEN)) != RESET)\r
-#define __HAL_RCC_ADC2_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC2LPEN)) != RESET)\r
-#define __HAL_RCC_ADC3_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC3LPEN)) != RESET)\r
-#define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC1LPEN)) != RESET)\r
-#define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN)) != RESET)\r
-#define __HAL_RCC_SPI4_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI4LPEN)) != RESET)\r
-#define __HAL_RCC_TIM9_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM9LPEN)) != RESET)\r
-#define __HAL_RCC_TIM10_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM10LPEN)) != RESET)\r
-#define __HAL_RCC_TIM11_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM11LPEN)) != RESET)\r
-#define __HAL_RCC_SPI5_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI5LPEN)) != RESET)\r
-#define __HAL_RCC_SAI1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI1LPEN)) != RESET)\r
-#define __HAL_RCC_SAI2_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI2LPEN)) != RESET)\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_LTDCLPEN)) != RESET)\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DSILPEN)) != RESET)\r
-#endif /* STM32F769xx || STM32F779xx */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC2LPEN)) != RESET)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DFSDM1LPEN)) != RESET)\r
-#define __HAL_RCC_MDIO_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_MDIOLPEN)) != RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#define __HAL_RCC_TIM1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM1LPEN)) == RESET)\r
-#define __HAL_RCC_TIM8_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM8LPEN)) == RESET)\r
-#define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) == RESET)\r
-#define __HAL_RCC_USART6_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART6LPEN)) == RESET)\r
-#define __HAL_RCC_ADC1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC1LPEN)) == RESET)\r
-#define __HAL_RCC_ADC2_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC2LPEN)) == RESET)\r
-#define __HAL_RCC_ADC3_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC3LPEN)) == RESET)\r
-#define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC1LPEN)) == RESET)\r
-#define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN)) == RESET)\r
-#define __HAL_RCC_SPI4_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI4LPEN)) == RESET)\r
-#define __HAL_RCC_TIM9_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM9LPEN)) == RESET)\r
-#define __HAL_RCC_TIM10_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM10LPEN)) == RESET)\r
-#define __HAL_RCC_TIM11_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM11LPEN)) == RESET)\r
-#define __HAL_RCC_SPI5_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI5LPEN)) == RESET)\r
-#define __HAL_RCC_SAI1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI1LPEN)) == RESET)\r
-#define __HAL_RCC_SAI2_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI2LPEN)) == RESET)\r
-#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define __HAL_RCC_LTDC_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_LTDCLPEN)) == RESET)\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DSI_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DSILPEN)) == RESET)\r
-#endif /* STM32F769xx || STM32F779xx */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define __HAL_RCC_SDMMC2_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC2LPEN)) == RESET)\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DFSDM1LPEN)) == RESET)\r
-#define __HAL_RCC_MDIO_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_MDIOLPEN)) == RESET)\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-#define __HAL_RCC_SPI6_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI6LPEN)) != RESET)\r
-#define __HAL_RCC_SPI6_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI6LPEN)) == RESET)\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-/**\r
- * @}\r
- */\r
-\r
-/*------------------------------- PLL Configuration --------------------------*/\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-/** @brief Macro to configure the main PLL clock source, multiplication and division factors.\r
- * @note This function must be used only when the main PLL is disabled.\r
- * @param __RCC_PLLSource__ specifies the PLL entry clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry\r
- * @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry\r
- * @note This clock source (RCC_PLLSource) is common for the main PLL and PLLI2S.\r
- * @param __PLLM__ specifies the division factor for PLL VCO input clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 63.\r
- * @note You have to set the PLLM parameter correctly to ensure that the VCO input\r
- * frequency ranges from 1 to 2 MHz. It is recommended to select a frequency\r
- * of 2 MHz to limit PLL jitter.\r
- * @param __PLLN__ specifies the multiplication factor for PLL VCO output clock\r
- * This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- * @note You have to set the PLLN parameter correctly to ensure that the VCO\r
- * output frequency is between 100 and 432 MHz.\r
- * @param __PLLP__ specifies the division factor for main system clock (SYSCLK)\r
- * This parameter must be a number in the range {2, 4, 6, or 8}.\r
- * @note You have to set the PLLP parameter correctly to not exceed 216 MHz on\r
- * the System clock frequency.\r
- * @param __PLLQ__ specifies the division factor for OTG FS, SDMMC and RNG clocks\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- * @note If the USB OTG FS is used in your application, you have to set the\r
- * PLLQ parameter correctly to have 48 MHz clock for the USB. However,\r
- * the SDMMC and RNG need a frequency lower than or equal to 48 MHz to work\r
- * correctly.\r
- * @param __PLLR__ specifies the division factor for DSI clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 7.\r
- */\r
-#define __HAL_RCC_PLL_CONFIG(__RCC_PLLSource__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__) \\r
- (RCC->PLLCFGR = ((__RCC_PLLSource__) | (__PLLM__) | \\r
- ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \\r
- ((((__PLLP__) >> 1) -1) << RCC_PLLCFGR_PLLP_Pos) | \\r
- ((__PLLQ__) << RCC_PLLCFGR_PLLQ_Pos) | \\r
- ((__PLLR__) << RCC_PLLCFGR_PLLR_Pos)))\r
-#else\r
-/** @brief Macro to configure the main PLL clock source, multiplication and division factors.\r
- * @note This function must be used only when the main PLL is disabled.\r
- * @param __RCC_PLLSource__ specifies the PLL entry clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry\r
- * @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry\r
- * @note This clock source (RCC_PLLSource) is common for the main PLL and PLLI2S.\r
- * @param __PLLM__ specifies the division factor for PLL VCO input clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 63.\r
- * @note You have to set the PLLM parameter correctly to ensure that the VCO input\r
- * frequency ranges from 1 to 2 MHz. It is recommended to select a frequency\r
- * of 2 MHz to limit PLL jitter.\r
- * @param __PLLN__ specifies the multiplication factor for PLL VCO output clock\r
- * This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- * @note You have to set the PLLN parameter correctly to ensure that the VCO\r
- * output frequency is between 100 and 432 MHz.\r
- * @param __PLLP__ specifies the division factor for main system clock (SYSCLK)\r
- * This parameter must be a number in the range {2, 4, 6, or 8}.\r
- * @note You have to set the PLLP parameter correctly to not exceed 216 MHz on\r
- * the System clock frequency.\r
- * @param __PLLQ__ specifies the division factor for OTG FS, SDMMC and RNG clocks\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- * @note If the USB OTG FS is used in your application, you have to set the\r
- * PLLQ parameter correctly to have 48 MHz clock for the USB. However,\r
- * the SDMMC and RNG need a frequency lower than or equal to 48 MHz to work\r
- * correctly.\r
- */\r
-#define __HAL_RCC_PLL_CONFIG(__RCC_PLLSource__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__) \\r
- (RCC->PLLCFGR = (0x20000000 | (__RCC_PLLSource__) | (__PLLM__)| \\r
- ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \\r
- ((((__PLLP__) >> 1) -1) << RCC_PLLCFGR_PLLP_Pos) | \\r
- ((__PLLQ__) << RCC_PLLCFGR_PLLQ_Pos)))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-/*---------------------------------------------------------------------------------------------*/\r
-\r
-/** @brief Macro to configure the Timers clocks prescalers\r
- * @param __PRESC__ specifies the Timers clocks prescalers selection\r
- * This parameter can be one of the following values:\r
- * @arg RCC_TIMPRES_DESACTIVATED: The Timers kernels clocks prescaler is\r
- * equal to HPRE if PPREx is corresponding to division by 1 or 2,\r
- * else it is equal to [(HPRE * PPREx) / 2] if PPREx is corresponding to\r
- * division by 4 or more.\r
- * @arg RCC_TIMPRES_ACTIVATED: The Timers kernels clocks prescaler is\r
- * equal to HPRE if PPREx is corresponding to division by 1, 2 or 4,\r
- * else it is equal to [(HPRE * PPREx) / 4] if PPREx is corresponding\r
- * to division by 8 or more.\r
- */\r
-#define __HAL_RCC_TIMCLKPRESCALER(__PRESC__) do {RCC->DCKCFGR1 &= ~(RCC_DCKCFGR1_TIMPRE);\\r
- RCC->DCKCFGR1 |= (__PRESC__); \\r
- }while(0)\r
-\r
-/** @brief Macros to Enable or Disable the PLLISAI.\r
- * @note The PLLSAI is disabled by hardware when entering STOP and STANDBY modes.\r
- */\r
-#define __HAL_RCC_PLLSAI_ENABLE() (RCC->CR |= (RCC_CR_PLLSAION))\r
-#define __HAL_RCC_PLLSAI_DISABLE() (RCC->CR &= ~(RCC_CR_PLLSAION))\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-/** @brief Macro to configure the PLLSAI clock multiplication and division factors.\r
- * @note This function must be used only when the PLLSAI is disabled.\r
- * @note PLLSAI clock source is common with the main PLL (configured in\r
- * RCC_PLLConfig function )\r
- * @param __PLLSAIN__ specifies the multiplication factor for PLLSAI VCO output clock.\r
- * This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- * @note You have to set the PLLSAIN parameter correctly to ensure that the VCO\r
- * output frequency is between Min_Data = 100 and Max_Data = 432 MHz.\r
- * @param __PLLSAIP__ specifies the division factor for USB, RNG, SDMMC clocks\r
- * This parameter can be a value of @ref RCCEx_PLLSAIP_Clock_Divider.\r
- * @param __PLLSAIQ__ specifies the division factor for SAI clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- */\r
-#define __HAL_RCC_PLLSAI_CONFIG(__PLLSAIN__, __PLLSAIP__, __PLLSAIQ__) \\r
- (RCC->PLLSAICFGR = ((__PLLSAIN__) << RCC_PLLSAICFGR_PLLSAIN_Pos) |\\r
- ((__PLLSAIP__) << RCC_PLLSAICFGR_PLLSAIP_Pos) |\\r
- ((__PLLSAIQ__) << RCC_PLLSAICFGR_PLLSAIQ_Pos))\r
-\r
-/** @brief Macro to configure the PLLI2S clock multiplication and division factors.\r
- * @note This macro must be used only when the PLLI2S is disabled.\r
- * @note PLLI2S clock source is common with the main PLL (configured in\r
- * HAL_RCC_ClockConfig() API)\r
- * @param __PLLI2SN__ specifies the multiplication factor for PLLI2S VCO output clock.\r
- * This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- * @note You have to set the PLLI2SN parameter correctly to ensure that the VCO\r
- * output frequency is between Min_Data = 100 and Max_Data = 432 MHz.\r
- * @param __PLLI2SQ__ specifies the division factor for SAI clock.\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- * @param __PLLI2SR__ specifies the division factor for I2S clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 7.\r
- * @note You have to set the PLLI2SR parameter correctly to not exceed 192 MHz\r
- * on the I2S clock frequency.\r
- */\r
-#define __HAL_RCC_PLLI2S_CONFIG(__PLLI2SN__, __PLLI2SQ__, __PLLI2SR__) \\r
- (RCC->PLLI2SCFGR = ((__PLLI2SN__) << RCC_PLLI2SCFGR_PLLI2SN_Pos) |\\r
- ((__PLLI2SQ__) << RCC_PLLI2SCFGR_PLLI2SQ_Pos) |\\r
- ((__PLLI2SR__) << RCC_PLLI2SCFGR_PLLI2SR_Pos))\r
-#else\r
-/** @brief Macro to configure the PLLSAI clock multiplication and division factors.\r
- * @note This function must be used only when the PLLSAI is disabled.\r
- * @note PLLSAI clock source is common with the main PLL (configured in\r
- * RCC_PLLConfig function )\r
- * @param __PLLSAIN__ specifies the multiplication factor for PLLSAI VCO output clock.\r
- * This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- * @note You have to set the PLLSAIN parameter correctly to ensure that the VCO\r
- * output frequency is between Min_Data = 100 and Max_Data = 432 MHz.\r
- * @param __PLLSAIP__ specifies the division factor for USB, RNG, SDMMC clocks\r
- * This parameter can be a value of @ref RCCEx_PLLSAIP_Clock_Divider.\r
- * @param __PLLSAIQ__ specifies the division factor for SAI clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- * @param __PLLSAIR__ specifies the division factor for LTDC clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 7.\r
- */\r
-#define __HAL_RCC_PLLSAI_CONFIG(__PLLSAIN__, __PLLSAIP__, __PLLSAIQ__, __PLLSAIR__) \\r
- (RCC->PLLSAICFGR = ((__PLLSAIN__) << RCC_PLLSAICFGR_PLLSAIN_Pos) |\\r
- ((__PLLSAIP__) << RCC_PLLSAICFGR_PLLSAIP_Pos) |\\r
- ((__PLLSAIQ__) << RCC_PLLSAICFGR_PLLSAIQ_Pos) |\\r
- ((__PLLSAIR__) << RCC_PLLSAICFGR_PLLSAIR_Pos))\r
-\r
-/** @brief Macro to configure the PLLI2S clock multiplication and division factors.\r
- * @note This macro must be used only when the PLLI2S is disabled.\r
- * @note PLLI2S clock source is common with the main PLL (configured in\r
- * HAL_RCC_ClockConfig() API)\r
- * @param __PLLI2SN__ specifies the multiplication factor for PLLI2S VCO output clock.\r
- * This parameter must be a number between Min_Data = 50 and Max_Data = 432.\r
- * @note You have to set the PLLI2SN parameter correctly to ensure that the VCO\r
- * output frequency is between Min_Data = 100 and Max_Data = 432 MHz.\r
- * @param __PLLI2SP__ specifies the division factor for SPDDIF-RX clock.\r
- * This parameter can be a value of @ref RCCEx_PLLI2SP_Clock_Divider.\r
- * @param __PLLI2SQ__ specifies the division factor for SAI clock.\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 15.\r
- * @param __PLLI2SR__ specifies the division factor for I2S clock\r
- * This parameter must be a number between Min_Data = 2 and Max_Data = 7.\r
- * @note You have to set the PLLI2SR parameter correctly to not exceed 192 MHz\r
- * on the I2S clock frequency.\r
- */\r
-#define __HAL_RCC_PLLI2S_CONFIG(__PLLI2SN__, __PLLI2SP__, __PLLI2SQ__, __PLLI2SR__) \\r
- (RCC->PLLI2SCFGR = ((__PLLI2SN__) << RCC_PLLI2SCFGR_PLLI2SN_Pos) |\\r
- ((__PLLI2SP__) << RCC_PLLI2SCFGR_PLLI2SP_Pos) |\\r
- ((__PLLI2SQ__) << RCC_PLLI2SCFGR_PLLI2SQ_Pos) |\\r
- ((__PLLI2SR__) << RCC_PLLI2SCFGR_PLLI2SR_Pos))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
-/** @brief Macro to configure the SAI clock Divider coming from PLLI2S.\r
- * @note This function must be called before enabling the PLLI2S.\r
- * @param __PLLI2SDivQ__ specifies the PLLI2S division factor for SAI1 clock .\r
- * This parameter must be a number between 1 and 32.\r
- * SAI1 clock frequency = f(PLLI2SQ) / __PLLI2SDivQ__\r
- */\r
-#define __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(__PLLI2SDivQ__) (MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ, (__PLLI2SDivQ__)-1))\r
-\r
-/** @brief Macro to configure the SAI clock Divider coming from PLLSAI.\r
- * @note This function must be called before enabling the PLLSAI.\r
- * @param __PLLSAIDivQ__ specifies the PLLSAI division factor for SAI1 clock .\r
- * This parameter must be a number between Min_Data = 1 and Max_Data = 32.\r
- * SAI1 clock frequency = f(PLLSAIQ) / __PLLSAIDivQ__\r
- */\r
-#define __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(__PLLSAIDivQ__) (MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVQ, ((__PLLSAIDivQ__)-1)<<8))\r
-\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\\r
- defined (STM32F750xx)\r
-/** @brief Macro to configure the LTDC clock Divider coming from PLLSAI.\r
- * @note This function must be called before enabling the PLLSAI.\r
- * @param __PLLSAIDivR__ specifies the PLLSAI division factor for LTDC clock .\r
- * This parameter can be a value of @ref RCCEx_PLLSAI_DIVR.\r
- * LTDC clock frequency = f(PLLSAIR) / __PLLSAIDivR__\r
- */\r
-#define __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(__PLLSAIDivR__)\\r
- MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVR, (uint32_t)(__PLLSAIDivR__))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-/** @brief Macro to configure SAI1 clock source selection.\r
- * @note This function must be called before enabling PLLSAI, PLLI2S and\r
- * the SAI clock.\r
- * @param __SOURCE__ specifies the SAI1 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_SAI1CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used\r
- * as SAI1 clock.\r
- * @arg RCC_SAI1CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used\r
- * as SAI1 clock.\r
- * @arg RCC_SAI1CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin\r
- * used as SAI1 clock.\r
- * @arg RCC_SAI1CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock\r
- * used as SAI1 clock.\r
- * @note The RCC_SAI1CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices\r
- */\r
-#define __HAL_RCC_SAI1_CONFIG(__SOURCE__)\\r
- MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI1SEL, (uint32_t)(__SOURCE__))\r
-\r
-/** @brief Macro to get the SAI1 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_SAI1CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used\r
- * as SAI1 clock.\r
- * @arg RCC_SAI1CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used\r
- * as SAI1 clock.\r
- * @arg RCC_SAI1CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin\r
- * used as SAI1 clock.\r
- * @arg RCC_SAI1CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock\r
- * used as SAI1 clock.\r
- * @note The RCC_SAI1CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices\r
- */\r
-#define __HAL_RCC_GET_SAI1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI1SEL)))\r
-\r
-/** @brief Macro to configure SAI2 clock source selection.\r
- * @note This function must be called before enabling PLLSAI, PLLI2S and\r
- * the SAI clock.\r
- * @param __SOURCE__ specifies the SAI2 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_SAI2CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used\r
- * as SAI2 clock.\r
- * @arg RCC_SAI2CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used\r
- * as SAI2 clock.\r
- * @arg RCC_SAI2CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin\r
- * used as SAI2 clock.\r
- * @arg RCC_SAI2CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock\r
- * used as SAI2 clock.\r
- * @note The RCC_SAI2CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices\r
- */\r
-#define __HAL_RCC_SAI2_CONFIG(__SOURCE__)\\r
- MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI2SEL, (uint32_t)(__SOURCE__))\r
-\r
-\r
-/** @brief Macro to get the SAI2 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_SAI2CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used\r
- * as SAI2 clock.\r
- * @arg RCC_SAI2CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used\r
- * as SAI2 clock.\r
- * @arg RCC_SAI2CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin\r
- * used as SAI2 clock.\r
- * @arg RCC_SAI2CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock\r
- * used as SAI2 clock.\r
- * @note The RCC_SAI2CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices\r
- */\r
-#define __HAL_RCC_GET_SAI2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI2SEL)))\r
-\r
-\r
-/** @brief Enable PLLSAI_RDY interrupt.\r
- */\r
-#define __HAL_RCC_PLLSAI_ENABLE_IT() (RCC->CIR |= (RCC_CIR_PLLSAIRDYIE))\r
-\r
-/** @brief Disable PLLSAI_RDY interrupt.\r
- */\r
-#define __HAL_RCC_PLLSAI_DISABLE_IT() (RCC->CIR &= ~(RCC_CIR_PLLSAIRDYIE))\r
-\r
-/** @brief Clear the PLLSAI RDY interrupt pending bits.\r
- */\r
-#define __HAL_RCC_PLLSAI_CLEAR_IT() (RCC->CIR |= (RCC_CIR_PLLSAIRDYF))\r
-\r
-/** @brief Check the PLLSAI RDY interrupt has occurred or not.\r
- * @retval The new state (TRUE or FALSE).\r
- */\r
-#define __HAL_RCC_PLLSAI_GET_IT() ((RCC->CIR & (RCC_CIR_PLLSAIRDYIE)) == (RCC_CIR_PLLSAIRDYIE))\r
-\r
-/** @brief Check PLLSAI RDY flag is set or not.\r
- * @retval The new state (TRUE or FALSE).\r
- */\r
-#define __HAL_RCC_PLLSAI_GET_FLAG() ((RCC->CR & (RCC_CR_PLLSAIRDY)) == (RCC_CR_PLLSAIRDY))\r
-\r
-/** @brief Macro to Get I2S clock source selection.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_I2SCLKSOURCE_PLLI2S: PLLI2S VCO output clock divided by PLLI2SR used as I2S clock.\r
- * @arg RCC_I2SCLKSOURCE_EXT: External clock mapped on the I2S_CKIN pin used as I2S clock source\r
- */\r
-#define __HAL_RCC_GET_I2SCLKSOURCE() (READ_BIT(RCC->CFGR, RCC_CFGR_I2SSRC))\r
-\r
-/** @brief Macro to configure the I2C1 clock (I2C1CLK).\r
- *\r
- * @param __I2C1_CLKSOURCE__ specifies the I2C1 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_I2C1CLKSOURCE_PCLK1: PCLK1 selected as I2C1 clock\r
- * @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock\r
- * @arg RCC_I2C1CLKSOURCE_SYSCLK: System Clock selected as I2C1 clock\r
- */\r
-#define __HAL_RCC_I2C1_CONFIG(__I2C1_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C1SEL, (uint32_t)(__I2C1_CLKSOURCE__))\r
-\r
-/** @brief Macro to get the I2C1 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_I2C1CLKSOURCE_PCLK1: PCLK1 selected as I2C1 clock\r
- * @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock\r
- * @arg RCC_I2C1CLKSOURCE_SYSCLK: System Clock selected as I2C1 clock\r
- */\r
-#define __HAL_RCC_GET_I2C1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C1SEL)))\r
-\r
-/** @brief Macro to configure the I2C2 clock (I2C2CLK).\r
- *\r
- * @param __I2C2_CLKSOURCE__ specifies the I2C2 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_I2C2CLKSOURCE_PCLK1: PCLK1 selected as I2C2 clock\r
- * @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock\r
- * @arg RCC_I2C2CLKSOURCE_SYSCLK: System Clock selected as I2C2 clock\r
- */\r
-#define __HAL_RCC_I2C2_CONFIG(__I2C2_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C2SEL, (uint32_t)(__I2C2_CLKSOURCE__))\r
-\r
-/** @brief Macro to get the I2C2 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_I2C2CLKSOURCE_PCLK1: PCLK1 selected as I2C2 clock\r
- * @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock\r
- * @arg RCC_I2C2CLKSOURCE_SYSCLK: System Clock selected as I2C2 clock\r
- */\r
-#define __HAL_RCC_GET_I2C2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C2SEL)))\r
-\r
-/** @brief Macro to configure the I2C3 clock (I2C3CLK).\r
- *\r
- * @param __I2C3_CLKSOURCE__ specifies the I2C3 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_I2C3CLKSOURCE_PCLK1: PCLK1 selected as I2C3 clock\r
- * @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock\r
- * @arg RCC_I2C3CLKSOURCE_SYSCLK: System Clock selected as I2C3 clock\r
- */\r
-#define __HAL_RCC_I2C3_CONFIG(__I2C3_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C3SEL, (uint32_t)(__I2C3_CLKSOURCE__))\r
-\r
-/** @brief macro to get the I2C3 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_I2C3CLKSOURCE_PCLK1: PCLK1 selected as I2C3 clock\r
- * @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock\r
- * @arg RCC_I2C3CLKSOURCE_SYSCLK: System Clock selected as I2C3 clock\r
- */\r
-#define __HAL_RCC_GET_I2C3_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C3SEL)))\r
-\r
-/** @brief Macro to configure the I2C4 clock (I2C4CLK).\r
- *\r
- * @param __I2C4_CLKSOURCE__ specifies the I2C4 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_I2C4CLKSOURCE_PCLK1: PCLK1 selected as I2C4 clock\r
- * @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock\r
- * @arg RCC_I2C4CLKSOURCE_SYSCLK: System Clock selected as I2C4 clock\r
- */\r
-#define __HAL_RCC_I2C4_CONFIG(__I2C4_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C4SEL, (uint32_t)(__I2C4_CLKSOURCE__))\r
-\r
-/** @brief macro to get the I2C4 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_I2C4CLKSOURCE_PCLK1: PCLK1 selected as I2C4 clock\r
- * @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock\r
- * @arg RCC_I2C4CLKSOURCE_SYSCLK: System Clock selected as I2C4 clock\r
- */\r
-#define __HAL_RCC_GET_I2C4_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C4SEL)))\r
-\r
-/** @brief Macro to configure the USART1 clock (USART1CLK).\r
- *\r
- * @param __USART1_CLKSOURCE__ specifies the USART1 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_USART1CLKSOURCE_PCLK2: PCLK2 selected as USART1 clock\r
- * @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock\r
- * @arg RCC_USART1CLKSOURCE_SYSCLK: System Clock selected as USART1 clock\r
- * @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock\r
- */\r
-#define __HAL_RCC_USART1_CONFIG(__USART1_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART1SEL, (uint32_t)(__USART1_CLKSOURCE__))\r
-\r
-/** @brief macro to get the USART1 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_USART1CLKSOURCE_PCLK2: PCLK2 selected as USART1 clock\r
- * @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock\r
- * @arg RCC_USART1CLKSOURCE_SYSCLK: System Clock selected as USART1 clock\r
- * @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock\r
- */\r
-#define __HAL_RCC_GET_USART1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART1SEL)))\r
-\r
-/** @brief Macro to configure the USART2 clock (USART2CLK).\r
- *\r
- * @param __USART2_CLKSOURCE__ specifies the USART2 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_USART2CLKSOURCE_PCLK1: PCLK1 selected as USART2 clock\r
- * @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock\r
- * @arg RCC_USART2CLKSOURCE_SYSCLK: System Clock selected as USART2 clock\r
- * @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock\r
- */\r
-#define __HAL_RCC_USART2_CONFIG(__USART2_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART2SEL, (uint32_t)(__USART2_CLKSOURCE__))\r
-\r
-/** @brief macro to get the USART2 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_USART2CLKSOURCE_PCLK1: PCLK1 selected as USART2 clock\r
- * @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock\r
- * @arg RCC_USART2CLKSOURCE_SYSCLK: System Clock selected as USART2 clock\r
- * @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock\r
- */\r
-#define __HAL_RCC_GET_USART2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART2SEL)))\r
-\r
-/** @brief Macro to configure the USART3 clock (USART3CLK).\r
- *\r
- * @param __USART3_CLKSOURCE__ specifies the USART3 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_USART3CLKSOURCE_PCLK1: PCLK1 selected as USART3 clock\r
- * @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock\r
- * @arg RCC_USART3CLKSOURCE_SYSCLK: System Clock selected as USART3 clock\r
- * @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock\r
- */\r
-#define __HAL_RCC_USART3_CONFIG(__USART3_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART3SEL, (uint32_t)(__USART3_CLKSOURCE__))\r
-\r
-/** @brief macro to get the USART3 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_USART3CLKSOURCE_PCLK1: PCLK1 selected as USART3 clock\r
- * @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock\r
- * @arg RCC_USART3CLKSOURCE_SYSCLK: System Clock selected as USART3 clock\r
- * @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock\r
- */\r
-#define __HAL_RCC_GET_USART3_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART3SEL)))\r
-\r
- /** @brief Macro to configure the UART4 clock (UART4CLK).\r
- *\r
- * @param __UART4_CLKSOURCE__ specifies the UART4 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_UART4CLKSOURCE_PCLK1: PCLK1 selected as UART4 clock\r
- * @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock\r
- * @arg RCC_UART4CLKSOURCE_SYSCLK: System Clock selected as UART4 clock\r
- * @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock\r
- */\r
-#define __HAL_RCC_UART4_CONFIG(__UART4_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART4SEL, (uint32_t)(__UART4_CLKSOURCE__))\r
-\r
-/** @brief macro to get the UART4 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_UART4CLKSOURCE_PCLK1: PCLK1 selected as UART4 clock\r
- * @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock\r
- * @arg RCC_UART4CLKSOURCE_SYSCLK: System Clock selected as UART4 clock\r
- * @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock\r
- */\r
-#define __HAL_RCC_GET_UART4_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART4SEL)))\r
-\r
- /** @brief Macro to configure the UART5 clock (UART5CLK).\r
- *\r
- * @param __UART5_CLKSOURCE__ specifies the UART5 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_UART5CLKSOURCE_PCLK1: PCLK1 selected as UART5 clock\r
- * @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock\r
- * @arg RCC_UART5CLKSOURCE_SYSCLK: System Clock selected as UART5 clock\r
- * @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock\r
- */\r
-#define __HAL_RCC_UART5_CONFIG(__UART5_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART5SEL, (uint32_t)(__UART5_CLKSOURCE__))\r
-\r
-/** @brief macro to get the UART5 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_UART5CLKSOURCE_PCLK1: PCLK1 selected as UART5 clock\r
- * @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock\r
- * @arg RCC_UART5CLKSOURCE_SYSCLK: System Clock selected as UART5 clock\r
- * @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock\r
- */\r
-#define __HAL_RCC_GET_UART5_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART5SEL)))\r
-\r
- /** @brief Macro to configure the USART6 clock (USART6CLK).\r
- *\r
- * @param __USART6_CLKSOURCE__ specifies the USART6 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_USART6CLKSOURCE_PCLK1: PCLK1 selected as USART6 clock\r
- * @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock\r
- * @arg RCC_USART6CLKSOURCE_SYSCLK: System Clock selected as USART6 clock\r
- * @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock\r
- */\r
-#define __HAL_RCC_USART6_CONFIG(__USART6_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART6SEL, (uint32_t)(__USART6_CLKSOURCE__))\r
-\r
-/** @brief macro to get the USART6 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_USART6CLKSOURCE_PCLK1: PCLK1 selected as USART6 clock\r
- * @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock\r
- * @arg RCC_USART6CLKSOURCE_SYSCLK: System Clock selected as USART6 clock\r
- * @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock\r
- */\r
-#define __HAL_RCC_GET_USART6_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART6SEL)))\r
-\r
- /** @brief Macro to configure the UART7 clock (UART7CLK).\r
- *\r
- * @param __UART7_CLKSOURCE__ specifies the UART7 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_UART7CLKSOURCE_PCLK1: PCLK1 selected as UART7 clock\r
- * @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock\r
- * @arg RCC_UART7CLKSOURCE_SYSCLK: System Clock selected as UART7 clock\r
- * @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock\r
- */\r
-#define __HAL_RCC_UART7_CONFIG(__UART7_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART7SEL, (uint32_t)(__UART7_CLKSOURCE__))\r
-\r
-/** @brief macro to get the UART7 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_UART7CLKSOURCE_PCLK1: PCLK1 selected as UART7 clock\r
- * @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock\r
- * @arg RCC_UART7CLKSOURCE_SYSCLK: System Clock selected as UART7 clock\r
- * @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock\r
- */\r
-#define __HAL_RCC_GET_UART7_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART7SEL)))\r
-\r
-/** @brief Macro to configure the UART8 clock (UART8CLK).\r
- *\r
- * @param __UART8_CLKSOURCE__ specifies the UART8 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_UART8CLKSOURCE_PCLK1: PCLK1 selected as UART8 clock\r
- * @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock\r
- * @arg RCC_UART8CLKSOURCE_SYSCLK: System Clock selected as UART8 clock\r
- * @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock\r
- */\r
-#define __HAL_RCC_UART8_CONFIG(__UART8_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART8SEL, (uint32_t)(__UART8_CLKSOURCE__))\r
-\r
-/** @brief macro to get the UART8 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_UART8CLKSOURCE_PCLK1: PCLK1 selected as UART8 clock\r
- * @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock\r
- * @arg RCC_UART8CLKSOURCE_SYSCLK: System Clock selected as UART8 clock\r
- * @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock\r
- */\r
-#define __HAL_RCC_GET_UART8_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART8SEL)))\r
-\r
-/** @brief Macro to configure the LPTIM1 clock (LPTIM1CLK).\r
- *\r
- * @param __LPTIM1_CLKSOURCE__ specifies the LPTIM1 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_LPTIM1CLKSOURCE_PCLK1: PCLK selected as LPTIM1 clock\r
- * @arg RCC_LPTIM1CLKSOURCE_HSI: HSI selected as LPTIM1 clock\r
- * @arg RCC_LPTIM1CLKSOURCE_LSI: LSI selected as LPTIM1 clock\r
- * @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock\r
- */\r
-#define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL, (uint32_t)(__LPTIM1_CLKSOURCE__))\r
-\r
-/** @brief macro to get the LPTIM1 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_LPTIM1CLKSOURCE_PCLK1: PCLK selected as LPTIM1 clock\r
- * @arg RCC_LPTIM1CLKSOURCE_HSI: HSI selected as LPTIM1 clock\r
- * @arg RCC_LPTIM1CLKSOURCE_LSI: LSI selected as LPTIM1 clock\r
- * @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock\r
- */\r
-#define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL)))\r
-\r
-/** @brief Macro to configure the CEC clock (CECCLK).\r
- *\r
- * @param __CEC_CLKSOURCE__ specifies the CEC clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock\r
- * @arg RCC_CECCLKSOURCE_HSI: HSI divided by 488 selected as CEC clock\r
- */\r
-#define __HAL_RCC_CEC_CONFIG(__CEC_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CECSEL, (uint32_t)(__CEC_CLKSOURCE__))\r
-\r
-/** @brief macro to get the CEC clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock\r
- * @arg RCC_CECCLKSOURCE_HSI: HSI selected as CEC clock\r
- */\r
-#define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_CECSEL)))\r
-\r
-/** @brief Macro to configure the CLK48 source (CLK48CLK).\r
- *\r
- * @param __CLK48_SOURCE__ specifies the CLK48 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_CLK48SOURCE_PLL: PLL selected as CLK48 source\r
- * @arg RCC_CLK48SOURCE_PLLSAIP: PLLSAIP selected as CLK48 source\r
- */\r
-#define __HAL_RCC_CLK48_CONFIG(__CLK48_SOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, (uint32_t)(__CLK48_SOURCE__))\r
-\r
-/** @brief macro to get the CLK48 source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_CLK48SOURCE_PLL: PLL used as CLK48 source\r
- * @arg RCC_CLK48SOURCE_PLLSAIP: PLLSAIP used as CLK48 source\r
- */\r
-#define __HAL_RCC_GET_CLK48_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL)))\r
-\r
-/** @brief Macro to configure the SDMMC1 clock (SDMMC1CLK).\r
- *\r
- * @param __SDMMC1_CLKSOURCE__ specifies the SDMMC1 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_SDMMC1CLKSOURCE_CLK48: CLK48 selected as SDMMC clock\r
- * @arg RCC_SDMMC1CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC clock\r
- */\r
-#define __HAL_RCC_SDMMC1_CONFIG(__SDMMC1_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC1SEL, (uint32_t)(__SDMMC1_CLKSOURCE__))\r
-\r
-/** @brief macro to get the SDMMC1 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_SDMMC1CLKSOURCE_CLK48: CLK48 selected as SDMMC1 clock\r
- * @arg RCC_SDMMC1CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC1 clock\r
- */\r
-#define __HAL_RCC_GET_SDMMC1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC1SEL)))\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-/** @brief Macro to configure the SDMMC2 clock (SDMMC2CLK).\r
- * @param __SDMMC2_CLKSOURCE__ specifies the SDMMC2 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_SDMMC2CLKSOURCE_CLK48: CLK48 selected as SDMMC2 clock\r
- * @arg RCC_SDMMC2CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC2 clock\r
- */\r
-#define __HAL_RCC_SDMMC2_CONFIG(__SDMMC2_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC2SEL, (uint32_t)(__SDMMC2_CLKSOURCE__))\r
-\r
-/** @brief macro to get the SDMMC2 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_SDMMC2CLKSOURCE_CLK48: CLK48 selected as SDMMC2 clock\r
- * @arg RCC_SDMMC2CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC2 clock\r
- */\r
-#define __HAL_RCC_GET_SDMMC2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC2SEL)))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-/** @brief Macro to configure the DFSDM1 clock\r
- * @param __DFSDM1_CLKSOURCE__ specifies the DFSDM1 clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_DFSDM1CLKSOURCE_PCLK2: PCLK2 Clock selected as DFSDM clock\r
- * @arg RCC_DFSDMCLKSOURCE_SYSCLK: System Clock selected as DFSDM clock\r
- */\r
-#define __HAL_RCC_DFSDM1_CONFIG(__DFSDM1_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_DFSDM1SEL, (uint32_t)(__DFSDM1_CLKSOURCE__))\r
-\r
-/** @brief Macro to get the DFSDM1 clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_DFSDM1CLKSOURCE_PCLK2: PCLK2 Clock selected as DFSDM1 clock\r
- * @arg RCC_DFSDM1CLKSOURCE_SYSCLK: System Clock selected as DFSDM1 clock\r
- */\r
-#define __HAL_RCC_GET_DFSDM1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_DFSDM1SEL)))\r
-\r
-/** @brief Macro to configure the DFSDM1 Audio clock\r
- * @param __DFSDM1AUDIO_CLKSOURCE__ specifies the DFSDM1 Audio clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI1: SAI1 Clock selected as DFSDM1 Audio clock\r
- * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI2: SAI2 Clock selected as DFSDM1 Audio clock\r
- */\r
-#define __HAL_RCC_DFSDM1AUDIO_CONFIG(__DFSDM1AUDIO_CLKSOURCE__) \\r
- MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_ADFSDM1SEL, (uint32_t)(__DFSDM1AUDIO_CLKSOURCE__))\r
-\r
-/** @brief Macro to get the DFSDM1 Audio clock source.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI1: SAI1 Clock selected as DFSDM1 Audio clock\r
- * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI2: SAI2 Clock selected as DFSDM1 Audio clock\r
- */\r
-#define __HAL_RCC_GET_DFSDM1AUDIO_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_ADFSDM1SEL)))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#if defined (STM32F769xx) || defined (STM32F779xx)\r
-/** @brief Macro to configure the DSI clock.\r
- * @param __DSI_CLKSOURCE__ specifies the DSI clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_DSICLKSOURCE_PLLR: PLLR output used as DSI clock.\r
- * @arg RCC_DSICLKSOURCE_DSIPHY: DSI-PHY output used as DSI clock.\r
- */\r
-#define __HAL_RCC_DSI_CONFIG(__DSI_CLKSOURCE__) (MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_DSISEL, (uint32_t)(__DSI_CLKSOURCE__)))\r
-\r
-/** @brief Macro to Get the DSI clock.\r
- * @retval The clock source can be one of the following values:\r
- * @arg RCC_DSICLKSOURCE_PLLR: PLLR output used as DSI clock.\r
- * @arg RCC_DSICLKSOURCE_DSIPHY: DSI-PHY output used as DSI clock.\r
- */\r
-#define __HAL_RCC_GET_DSI_SOURCE() (READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_DSISEL))\r
-#endif /* STM32F769xx || STM32F779xx */\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup RCCEx_Exported_Functions_Group1\r
- * @{\r
- */\r
-HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);\r
-void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);\r
-uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk);\r
-HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef *PLLI2SInit);\r
-HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void);\r
-HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI(RCC_PLLSAIInitTypeDef *PLLSAIInit);\r
-HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI(void);\r
-/**\r
- * @}\r
- */\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @addtogroup RCCEx_Private_Macros RCCEx Private Macros\r
- * @{\r
- */\r
-/** @defgroup RCCEx_IS_RCC_Definitions RCC Private macros to check input parameters\r
- * @{\r
- */\r
-#if defined(STM32F756xx) || defined(STM32F746xx) || defined(STM32F750xx)\r
-#define IS_RCC_PERIPHCLOCK(SELECTION) \\r
- ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \\r
- (((SELECTION) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC) || \\r
- (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \\r
- (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))\r
-#elif defined(STM32F745xx)\r
-#define IS_RCC_PERIPHCLOCK(SELECTION) \\r
- ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \\r
- (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \\r
- (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))\r
-#elif defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define IS_RCC_PERIPHCLOCK(SELECTION) \\r
- ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \\r
- (((SELECTION) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC) || \\r
- (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \\r
- (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))\r
-#elif defined (STM32F765xx)\r
-#define IS_RCC_PERIPHCLOCK(SELECTION) \\r
- ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \\r
- (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \\r
- (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))\r
-#elif defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-#define IS_RCC_PERIPHCLOCK(SELECTION) \\r
- ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \\r
- (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \\r
- (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \\r
- (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \\r
- (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \\r
- (((SELECTION) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) || \\r
- (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))\r
-#endif /* STM32F746xx || STM32F756xx || STM32F750xx */\r
-#define IS_RCC_PLLI2SN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432))\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \\r
- defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
-#define IS_RCC_PLLI2SP_VALUE(VALUE) (((VALUE) == RCC_PLLI2SP_DIV2) ||\\r
- ((VALUE) == RCC_PLLI2SP_DIV4) ||\\r
- ((VALUE) == RCC_PLLI2SP_DIV6) ||\\r
- ((VALUE) == RCC_PLLI2SP_DIV8))\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-#define IS_RCC_PLLI2SQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15))\r
-#define IS_RCC_PLLI2SR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))\r
-\r
-#define IS_RCC_PLLSAIN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432))\r
-#define IS_RCC_PLLSAIP_VALUE(VALUE) (((VALUE) == RCC_PLLSAIP_DIV2) ||\\r
- ((VALUE) == RCC_PLLSAIP_DIV4) ||\\r
- ((VALUE) == RCC_PLLSAIP_DIV6) ||\\r
- ((VALUE) == RCC_PLLSAIP_DIV8))\r
-#define IS_RCC_PLLSAIQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15))\r
-#define IS_RCC_PLLSAIR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))\r
-\r
-#define IS_RCC_PLLSAI_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32))\r
-\r
-#define IS_RCC_PLLI2S_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32))\r
-\r
-#define IS_RCC_PLLSAI_DIVR_VALUE(VALUE) (((VALUE) == RCC_PLLSAIDIVR_2) ||\\r
- ((VALUE) == RCC_PLLSAIDIVR_4) ||\\r
- ((VALUE) == RCC_PLLSAIDIVR_8) ||\\r
- ((VALUE) == RCC_PLLSAIDIVR_16))\r
-#define IS_RCC_I2SCLKSOURCE(SOURCE) (((SOURCE) == RCC_I2SCLKSOURCE_PLLI2S) || \\r
- ((SOURCE) == RCC_I2SCLKSOURCE_EXT))\r
-\r
-#define IS_RCC_SDMMC1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SDMMC1CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_SDMMC1CLKSOURCE_CLK48))\r
-\r
-#define IS_RCC_CECCLKSOURCE(SOURCE) (((SOURCE) == RCC_CECCLKSOURCE_HSI) || \\r
- ((SOURCE) == RCC_CECCLKSOURCE_LSE))\r
-#define IS_RCC_USART1CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_USART1CLKSOURCE_PCLK2) || \\r
- ((SOURCE) == RCC_USART1CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_USART1CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_USART1CLKSOURCE_HSI))\r
-\r
-#define IS_RCC_USART2CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_USART2CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_USART2CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_USART2CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_USART2CLKSOURCE_HSI))\r
-#define IS_RCC_USART3CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_USART3CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_USART3CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_USART3CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_USART3CLKSOURCE_HSI))\r
-\r
-#define IS_RCC_UART4CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_UART4CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_UART4CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_UART4CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_UART4CLKSOURCE_HSI))\r
-\r
-#define IS_RCC_UART5CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_UART5CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_UART5CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_UART5CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_UART5CLKSOURCE_HSI))\r
-\r
-#define IS_RCC_USART6CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_USART6CLKSOURCE_PCLK2) || \\r
- ((SOURCE) == RCC_USART6CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_USART6CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_USART6CLKSOURCE_HSI))\r
-\r
-#define IS_RCC_UART7CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_UART7CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_UART7CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_UART7CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_UART7CLKSOURCE_HSI))\r
-\r
-#define IS_RCC_UART8CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_UART8CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_UART8CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_UART8CLKSOURCE_LSE) || \\r
- ((SOURCE) == RCC_UART8CLKSOURCE_HSI))\r
-#define IS_RCC_I2C1CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_I2C1CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_I2C1CLKSOURCE_SYSCLK)|| \\r
- ((SOURCE) == RCC_I2C1CLKSOURCE_HSI))\r
-#define IS_RCC_I2C2CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_I2C2CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_I2C2CLKSOURCE_SYSCLK)|| \\r
- ((SOURCE) == RCC_I2C2CLKSOURCE_HSI))\r
-\r
-#define IS_RCC_I2C3CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_I2C3CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_I2C3CLKSOURCE_SYSCLK)|| \\r
- ((SOURCE) == RCC_I2C3CLKSOURCE_HSI))\r
-#define IS_RCC_I2C4CLKSOURCE(SOURCE) \\r
- (((SOURCE) == RCC_I2C4CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_I2C4CLKSOURCE_SYSCLK)|| \\r
- ((SOURCE) == RCC_I2C4CLKSOURCE_HSI))\r
-#define IS_RCC_LPTIM1CLK(SOURCE) \\r
- (((SOURCE) == RCC_LPTIM1CLKSOURCE_PCLK1) || \\r
- ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSI) || \\r
- ((SOURCE) == RCC_LPTIM1CLKSOURCE_HSI) || \\r
- ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSE))\r
-#define IS_RCC_CLK48SOURCE(SOURCE) \\r
- (((SOURCE) == RCC_CLK48SOURCE_PLLSAIP) || \\r
- ((SOURCE) == RCC_CLK48SOURCE_PLL))\r
-#define IS_RCC_TIMPRES(VALUE) \\r
- (((VALUE) == RCC_TIMPRES_DESACTIVATED) || \\r
- ((VALUE) == RCC_TIMPRES_ACTIVATED))\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F745xx) ||\\r
- defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F730xx) || defined (STM32F750xx)\r
-#define IS_RCC_SAI1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI1CLKSOURCE_PLLSAI) || \\r
- ((SOURCE) == RCC_SAI1CLKSOURCE_PLLI2S) || \\r
- ((SOURCE) == RCC_SAI1CLKSOURCE_PIN))\r
-#define IS_RCC_SAI2CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI2CLKSOURCE_PLLSAI) || \\r
- ((SOURCE) == RCC_SAI2CLKSOURCE_PLLI2S) || \\r
- ((SOURCE) == RCC_SAI2CLKSOURCE_PIN))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F745xx || STM32F746xx || STM32F756xx || STM32F750xx || STM32F730xx */\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define IS_RCC_PLLR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))\r
-\r
-#define IS_RCC_SAI1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI1CLKSOURCE_PLLSAI) || \\r
- ((SOURCE) == RCC_SAI1CLKSOURCE_PLLI2S) || \\r
- ((SOURCE) == RCC_SAI1CLKSOURCE_PIN) || \\r
- ((SOURCE) == RCC_SAI1CLKSOURCE_PLLSRC))\r
-\r
-#define IS_RCC_SAI2CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI2CLKSOURCE_PLLSAI) || \\r
- ((SOURCE) == RCC_SAI2CLKSOURCE_PLLI2S) || \\r
- ((SOURCE) == RCC_SAI2CLKSOURCE_PIN) || \\r
- ((SOURCE) == RCC_SAI2CLKSOURCE_PLLSRC))\r
-\r
-#define IS_RCC_DFSDM1CLKSOURCE(SOURCE) (((SOURCE) == RCC_DFSDM1CLKSOURCE_PCLK2) || \\r
- ((SOURCE) == RCC_DFSDM1CLKSOURCE_SYSCLK))\r
-\r
-#define IS_RCC_DFSDM1AUDIOCLKSOURCE(SOURCE) (((SOURCE) == RCC_DFSDM1AUDIOCLKSOURCE_SAI1) || \\r
- ((SOURCE) == RCC_DFSDM1AUDIOCLKSOURCE_SAI2))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx)\r
-#define IS_RCC_SDMMC2CLKSOURCE(SOURCE) (((SOURCE) == RCC_SDMMC2CLKSOURCE_SYSCLK) || \\r
- ((SOURCE) == RCC_SDMMC2CLKSOURCE_CLK48))\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */\r
-\r
-#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-#define IS_RCC_DSIBYTELANECLKSOURCE(SOURCE) (((SOURCE) == RCC_DSICLKSOURCE_PLLR) ||\\r
- ((SOURCE) == RCC_DSICLKSOURCE_DSIPHY))\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __STM32F7xx_HAL_RCC_EX_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_tim.h\r
- * @author MCD Application Team\r
- * @brief Header file of TIM HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef STM32F7xx_HAL_TIM_H\r
-#define STM32F7xx_HAL_TIM_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup TIM\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup TIM_Exported_Types TIM Exported Types\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief TIM Time base Configuration Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock.\r
- This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\r
-\r
- uint32_t CounterMode; /*!< Specifies the counter mode.\r
- This parameter can be a value of @ref TIM_Counter_Mode */\r
-\r
- uint32_t Period; /*!< Specifies the period value to be loaded into the active\r
- Auto-Reload Register at the next update event.\r
- This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */\r
-\r
- uint32_t ClockDivision; /*!< Specifies the clock division.\r
- This parameter can be a value of @ref TIM_ClockDivision */\r
-\r
- uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter\r
- reaches zero, an update event is generated and counting restarts\r
- from the RCR value (N).\r
- This means in PWM mode that (N+1) corresponds to:\r
- - the number of PWM periods in edge-aligned mode\r
- - the number of half PWM period in center-aligned mode\r
- GP timers: this parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.\r
- Advanced timers: this parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */\r
-\r
- uint32_t AutoReloadPreload; /*!< Specifies the auto-reload preload.\r
- This parameter can be a value of @ref TIM_AutoReloadPreload */\r
-} TIM_Base_InitTypeDef;\r
-\r
-/**\r
- * @brief TIM Output Compare Configuration Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t OCMode; /*!< Specifies the TIM mode.\r
- This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */\r
-\r
- uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register.\r
- This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\r
-\r
- uint32_t OCPolarity; /*!< Specifies the output polarity.\r
- This parameter can be a value of @ref TIM_Output_Compare_Polarity */\r
-\r
- uint32_t OCNPolarity; /*!< Specifies the complementary output polarity.\r
- This parameter can be a value of @ref TIM_Output_Compare_N_Polarity\r
- @note This parameter is valid only for timer instances supporting break feature. */\r
-\r
- uint32_t OCFastMode; /*!< Specifies the Fast mode state.\r
- This parameter can be a value of @ref TIM_Output_Fast_State\r
- @note This parameter is valid only in PWM1 and PWM2 mode. */\r
-\r
-\r
- uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.\r
- This parameter can be a value of @ref TIM_Output_Compare_Idle_State\r
- @note This parameter is valid only for timer instances supporting break feature. */\r
-\r
- uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.\r
- This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State\r
- @note This parameter is valid only for timer instances supporting break feature. */\r
-} TIM_OC_InitTypeDef;\r
-\r
-/**\r
- * @brief TIM One Pulse Mode Configuration Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t OCMode; /*!< Specifies the TIM mode.\r
- This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */\r
-\r
- uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register.\r
- This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\r
-\r
- uint32_t OCPolarity; /*!< Specifies the output polarity.\r
- This parameter can be a value of @ref TIM_Output_Compare_Polarity */\r
-\r
- uint32_t OCNPolarity; /*!< Specifies the complementary output polarity.\r
- This parameter can be a value of @ref TIM_Output_Compare_N_Polarity\r
- @note This parameter is valid only for timer instances supporting break feature. */\r
-\r
- uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.\r
- This parameter can be a value of @ref TIM_Output_Compare_Idle_State\r
- @note This parameter is valid only for timer instances supporting break feature. */\r
-\r
- uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.\r
- This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State\r
- @note This parameter is valid only for timer instances supporting break feature. */\r
-\r
- uint32_t ICPolarity; /*!< Specifies the active edge of the input signal.\r
- This parameter can be a value of @ref TIM_Input_Capture_Polarity */\r
-\r
- uint32_t ICSelection; /*!< Specifies the input.\r
- This parameter can be a value of @ref TIM_Input_Capture_Selection */\r
-\r
- uint32_t ICFilter; /*!< Specifies the input capture filter.\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-} TIM_OnePulse_InitTypeDef;\r
-\r
-/**\r
- * @brief TIM Input Capture Configuration Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t ICPolarity; /*!< Specifies the active edge of the input signal.\r
- This parameter can be a value of @ref TIM_Input_Capture_Polarity */\r
-\r
- uint32_t ICSelection; /*!< Specifies the input.\r
- This parameter can be a value of @ref TIM_Input_Capture_Selection */\r
-\r
- uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler.\r
- This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\r
-\r
- uint32_t ICFilter; /*!< Specifies the input capture filter.\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-} TIM_IC_InitTypeDef;\r
-\r
-/**\r
- * @brief TIM Encoder Configuration Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t EncoderMode; /*!< Specifies the active edge of the input signal.\r
- This parameter can be a value of @ref TIM_Encoder_Mode */\r
-\r
- uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.\r
- This parameter can be a value of @ref TIM_Input_Capture_Polarity */\r
-\r
- uint32_t IC1Selection; /*!< Specifies the input.\r
- This parameter can be a value of @ref TIM_Input_Capture_Selection */\r
-\r
- uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler.\r
- This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\r
-\r
- uint32_t IC1Filter; /*!< Specifies the input capture filter.\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-\r
- uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.\r
- This parameter can be a value of @ref TIM_Input_Capture_Polarity */\r
-\r
- uint32_t IC2Selection; /*!< Specifies the input.\r
- This parameter can be a value of @ref TIM_Input_Capture_Selection */\r
-\r
- uint32_t IC2Prescaler; /*!< Specifies the Input Capture Prescaler.\r
- This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\r
-\r
- uint32_t IC2Filter; /*!< Specifies the input capture filter.\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-} TIM_Encoder_InitTypeDef;\r
-\r
-/**\r
- * @brief Clock Configuration Handle Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t ClockSource; /*!< TIM clock sources\r
- This parameter can be a value of @ref TIM_Clock_Source */\r
- uint32_t ClockPolarity; /*!< TIM clock polarity\r
- This parameter can be a value of @ref TIM_Clock_Polarity */\r
- uint32_t ClockPrescaler; /*!< TIM clock prescaler\r
- This parameter can be a value of @ref TIM_Clock_Prescaler */\r
- uint32_t ClockFilter; /*!< TIM clock filter\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-} TIM_ClockConfigTypeDef;\r
-\r
-/**\r
- * @brief TIM Clear Input Configuration Handle Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t ClearInputState; /*!< TIM clear Input state\r
- This parameter can be ENABLE or DISABLE */\r
- uint32_t ClearInputSource; /*!< TIM clear Input sources\r
- This parameter can be a value of @ref TIM_ClearInput_Source */\r
- uint32_t ClearInputPolarity; /*!< TIM Clear Input polarity\r
- This parameter can be a value of @ref TIM_ClearInput_Polarity */\r
- uint32_t ClearInputPrescaler; /*!< TIM Clear Input prescaler\r
- This parameter must be 0: When OCRef clear feature is used with ETR source, ETR prescaler must be off */\r
- uint32_t ClearInputFilter; /*!< TIM Clear Input filter\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-} TIM_ClearInputConfigTypeDef;\r
-\r
-/**\r
- * @brief TIM Master configuration Structure definition\r
- * @note Advanced timers provide TRGO2 internal line which is redirected\r
- * to the ADC\r
- */\r
-typedef struct\r
-{\r
- uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection\r
- This parameter can be a value of @ref TIM_Master_Mode_Selection */\r
- uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection\r
- This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */\r
- uint32_t MasterSlaveMode; /*!< Master/slave mode selection\r
- This parameter can be a value of @ref TIM_Master_Slave_Mode */\r
-} TIM_MasterConfigTypeDef;\r
-\r
-/**\r
- * @brief TIM Slave configuration Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t SlaveMode; /*!< Slave mode selection\r
- This parameter can be a value of @ref TIM_Slave_Mode */\r
- uint32_t InputTrigger; /*!< Input Trigger source\r
- This parameter can be a value of @ref TIM_Trigger_Selection */\r
- uint32_t TriggerPolarity; /*!< Input Trigger polarity\r
- This parameter can be a value of @ref TIM_Trigger_Polarity */\r
- uint32_t TriggerPrescaler; /*!< Input trigger prescaler\r
- This parameter can be a value of @ref TIM_Trigger_Prescaler */\r
- uint32_t TriggerFilter; /*!< Input trigger filter\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-\r
-} TIM_SlaveConfigTypeDef;\r
-\r
-/**\r
- * @brief TIM Break input(s) and Dead time configuration Structure definition\r
- * @note 2 break inputs can be configured (BKIN and BKIN2) with configurable\r
- * filter and polarity.\r
- */\r
-typedef struct\r
-{\r
- uint32_t OffStateRunMode; /*!< TIM off state in run mode\r
- This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */\r
- uint32_t OffStateIDLEMode; /*!< TIM off state in IDLE mode\r
- This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */\r
- uint32_t LockLevel; /*!< TIM Lock level\r
- This parameter can be a value of @ref TIM_Lock_level */\r
- uint32_t DeadTime; /*!< TIM dead Time\r
- This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */\r
- uint32_t BreakState; /*!< TIM Break State\r
- This parameter can be a value of @ref TIM_Break_Input_enable_disable */\r
- uint32_t BreakPolarity; /*!< TIM Break input polarity\r
- This parameter can be a value of @ref TIM_Break_Polarity */\r
- uint32_t BreakFilter; /*!< Specifies the break input filter.\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
- uint32_t Break2State; /*!< TIM Break2 State\r
- This parameter can be a value of @ref TIM_Break2_Input_enable_disable */\r
- uint32_t Break2Polarity; /*!< TIM Break2 input polarity\r
- This parameter can be a value of @ref TIM_Break2_Polarity */\r
- uint32_t Break2Filter; /*!< TIM break2 input filter.\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
- uint32_t AutomaticOutput; /*!< TIM Automatic Output Enable state\r
- This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */\r
-} TIM_BreakDeadTimeConfigTypeDef;\r
-\r
-/**\r
- * @brief HAL State structures definition\r
- */\r
-typedef enum\r
-{\r
- HAL_TIM_STATE_RESET = 0x00U, /*!< Peripheral not yet initialized or disabled */\r
- HAL_TIM_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */\r
- HAL_TIM_STATE_BUSY = 0x02U, /*!< An internal process is ongoing */\r
- HAL_TIM_STATE_TIMEOUT = 0x03U, /*!< Timeout state */\r
- HAL_TIM_STATE_ERROR = 0x04U /*!< Reception process is ongoing */\r
-} HAL_TIM_StateTypeDef;\r
-\r
-/**\r
- * @brief HAL Active channel structures definition\r
- */\r
-typedef enum\r
-{\r
- HAL_TIM_ACTIVE_CHANNEL_1 = 0x01U, /*!< The active channel is 1 */\r
- HAL_TIM_ACTIVE_CHANNEL_2 = 0x02U, /*!< The active channel is 2 */\r
- HAL_TIM_ACTIVE_CHANNEL_3 = 0x04U, /*!< The active channel is 3 */\r
- HAL_TIM_ACTIVE_CHANNEL_4 = 0x08U, /*!< The active channel is 4 */\r
- HAL_TIM_ACTIVE_CHANNEL_5 = 0x10U, /*!< The active channel is 5 */\r
- HAL_TIM_ACTIVE_CHANNEL_6 = 0x20U, /*!< The active channel is 6 */\r
- HAL_TIM_ACTIVE_CHANNEL_CLEARED = 0x00U /*!< All active channels cleared */\r
-} HAL_TIM_ActiveChannel;\r
-\r
-/**\r
- * @brief TIM Time Base Handle Structure definition\r
- */\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
-typedef struct __TIM_HandleTypeDef\r
-#else\r
-typedef struct\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-{\r
- TIM_TypeDef *Instance; /*!< Register base address */\r
- TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */\r
- HAL_TIM_ActiveChannel Channel; /*!< Active channel */\r
- DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array\r
- This array is accessed by a @ref DMA_Handle_index */\r
- HAL_LockTypeDef Lock; /*!< Locking object */\r
- __IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp Init Callback */\r
- void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp DeInit Callback */\r
- void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp Init Callback */\r
- void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp DeInit Callback */\r
- void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp Init Callback */\r
- void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp DeInit Callback */\r
- void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp Init Callback */\r
- void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp DeInit Callback */\r
- void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp Init Callback */\r
- void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp DeInit Callback */\r
- void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp Init Callback */\r
- void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp DeInit Callback */\r
- void (* HallSensor_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Hall Sensor Msp Init Callback */\r
- void (* HallSensor_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Hall Sensor Msp DeInit Callback */\r
- void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed Callback */\r
- void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed half complete Callback */\r
- void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger Callback */\r
- void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger half complete Callback */\r
- void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture Callback */\r
- void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture half complete Callback */\r
- void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Output Compare Delay Elapsed Callback */\r
- void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished Callback */\r
- void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished half complete Callback */\r
- void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Error Callback */\r
- void (* CommutationCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Commutation Callback */\r
- void (* CommutationHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Commutation half complete Callback */\r
- void (* BreakCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Break Callback */\r
- void (* Break2Callback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Break2 Callback */\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-} TIM_HandleTypeDef;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
-/**\r
- * @brief HAL TIM Callback ID enumeration definition\r
- */\r
-typedef enum\r
-{\r
- HAL_TIM_BASE_MSPINIT_CB_ID = 0x00U /*!< TIM Base MspInit Callback ID */\r
- ,HAL_TIM_BASE_MSPDEINIT_CB_ID = 0x01U /*!< TIM Base MspDeInit Callback ID */\r
- ,HAL_TIM_IC_MSPINIT_CB_ID = 0x02U /*!< TIM IC MspInit Callback ID */\r
- ,HAL_TIM_IC_MSPDEINIT_CB_ID = 0x03U /*!< TIM IC MspDeInit Callback ID */\r
- ,HAL_TIM_OC_MSPINIT_CB_ID = 0x04U /*!< TIM OC MspInit Callback ID */\r
- ,HAL_TIM_OC_MSPDEINIT_CB_ID = 0x05U /*!< TIM OC MspDeInit Callback ID */\r
- ,HAL_TIM_PWM_MSPINIT_CB_ID = 0x06U /*!< TIM PWM MspInit Callback ID */\r
- ,HAL_TIM_PWM_MSPDEINIT_CB_ID = 0x07U /*!< TIM PWM MspDeInit Callback ID */\r
- ,HAL_TIM_ONE_PULSE_MSPINIT_CB_ID = 0x08U /*!< TIM One Pulse MspInit Callback ID */\r
- ,HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID = 0x09U /*!< TIM One Pulse MspDeInit Callback ID */\r
- ,HAL_TIM_ENCODER_MSPINIT_CB_ID = 0x0AU /*!< TIM Encoder MspInit Callback ID */\r
- ,HAL_TIM_ENCODER_MSPDEINIT_CB_ID = 0x0BU /*!< TIM Encoder MspDeInit Callback ID */\r
- ,HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID = 0x0CU /*!< TIM Hall Sensor MspDeInit Callback ID */\r
- ,HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID = 0x0DU /*!< TIM Hall Sensor MspDeInit Callback ID */\r
- ,HAL_TIM_PERIOD_ELAPSED_CB_ID = 0x0EU /*!< TIM Period Elapsed Callback ID */\r
- ,HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID = 0x0FU /*!< TIM Period Elapsed half complete Callback ID */\r
- ,HAL_TIM_TRIGGER_CB_ID = 0x10U /*!< TIM Trigger Callback ID */\r
- ,HAL_TIM_TRIGGER_HALF_CB_ID = 0x11U /*!< TIM Trigger half complete Callback ID */\r
-\r
- ,HAL_TIM_IC_CAPTURE_CB_ID = 0x12U /*!< TIM Input Capture Callback ID */\r
- ,HAL_TIM_IC_CAPTURE_HALF_CB_ID = 0x13U /*!< TIM Input Capture half complete Callback ID */\r
- ,HAL_TIM_OC_DELAY_ELAPSED_CB_ID = 0x14U /*!< TIM Output Compare Delay Elapsed Callback ID */\r
- ,HAL_TIM_PWM_PULSE_FINISHED_CB_ID = 0x15U /*!< TIM PWM Pulse Finished Callback ID */\r
- ,HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U /*!< TIM PWM Pulse Finished half complete Callback ID */\r
- ,HAL_TIM_ERROR_CB_ID = 0x17U /*!< TIM Error Callback ID */\r
- ,HAL_TIM_COMMUTATION_CB_ID = 0x18U /*!< TIM Commutation Callback ID */\r
- ,HAL_TIM_COMMUTATION_HALF_CB_ID = 0x19U /*!< TIM Commutation half complete Callback ID */\r
- ,HAL_TIM_BREAK_CB_ID = 0x1AU /*!< TIM Break Callback ID */\r
- ,HAL_TIM_BREAK2_CB_ID = 0x1BU /*!< TIM Break2 Callback ID */\r
-} HAL_TIM_CallbackIDTypeDef;\r
-\r
-/**\r
- * @brief HAL TIM Callback pointer definition\r
- */\r
-typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to the TIM callback function */\r
-\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of exported types -----------------------------------------------------*/\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup TIM_Exported_Constants TIM Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup TIM_ClearInput_Source TIM Clear Input Source\r
- * @{\r
- */\r
-#define TIM_CLEARINPUTSOURCE_NONE 0x00000000U /*!< OCREF_CLR is disabled */\r
-#define TIM_CLEARINPUTSOURCE_ETR 0x00000001U /*!< OCREF_CLR is connected to ETRF input */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_DMA_Base_address TIM DMA Base Address\r
- * @{\r
- */\r
-#define TIM_DMABASE_CR1 0x00000000U\r
-#define TIM_DMABASE_CR2 0x00000001U\r
-#define TIM_DMABASE_SMCR 0x00000002U\r
-#define TIM_DMABASE_DIER 0x00000003U\r
-#define TIM_DMABASE_SR 0x00000004U\r
-#define TIM_DMABASE_EGR 0x00000005U\r
-#define TIM_DMABASE_CCMR1 0x00000006U\r
-#define TIM_DMABASE_CCMR2 0x00000007U\r
-#define TIM_DMABASE_CCER 0x00000008U\r
-#define TIM_DMABASE_CNT 0x00000009U\r
-#define TIM_DMABASE_PSC 0x0000000AU\r
-#define TIM_DMABASE_ARR 0x0000000BU\r
-#define TIM_DMABASE_RCR 0x0000000CU\r
-#define TIM_DMABASE_CCR1 0x0000000DU\r
-#define TIM_DMABASE_CCR2 0x0000000EU\r
-#define TIM_DMABASE_CCR3 0x0000000FU\r
-#define TIM_DMABASE_CCR4 0x00000010U\r
-#define TIM_DMABASE_BDTR 0x00000011U\r
-#define TIM_DMABASE_DCR 0x00000012U\r
-#define TIM_DMABASE_DMAR 0x00000013U\r
-#define TIM_DMABASE_OR 0x00000014U\r
-#define TIM_DMABASE_CCMR3 0x00000015U\r
-#define TIM_DMABASE_CCR5 0x00000016U\r
-#define TIM_DMABASE_CCR6 0x00000017U\r
-#if defined(TIM_BREAK_INPUT_SUPPORT)\r
-#define TIM_DMABASE_AF1 0x00000018U\r
-#define TIM_DMABASE_AF2 0x00000019U\r
-#endif /* TIM_BREAK_INPUT_SUPPORT */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Event_Source TIM Event Source\r
- * @{\r
- */\r
-#define TIM_EVENTSOURCE_UPDATE TIM_EGR_UG /*!< Reinitialize the counter and generates an update of the registers */\r
-#define TIM_EVENTSOURCE_CC1 TIM_EGR_CC1G /*!< A capture/compare event is generated on channel 1 */\r
-#define TIM_EVENTSOURCE_CC2 TIM_EGR_CC2G /*!< A capture/compare event is generated on channel 2 */\r
-#define TIM_EVENTSOURCE_CC3 TIM_EGR_CC3G /*!< A capture/compare event is generated on channel 3 */\r
-#define TIM_EVENTSOURCE_CC4 TIM_EGR_CC4G /*!< A capture/compare event is generated on channel 4 */\r
-#define TIM_EVENTSOURCE_COM TIM_EGR_COMG /*!< A commutation event is generated */\r
-#define TIM_EVENTSOURCE_TRIGGER TIM_EGR_TG /*!< A trigger event is generated */\r
-#define TIM_EVENTSOURCE_BREAK TIM_EGR_BG /*!< A break event is generated */\r
-#define TIM_EVENTSOURCE_BREAK2 TIM_EGR_B2G /*!< A break 2 event is generated */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Input_Channel_Polarity TIM Input Channel polarity\r
- * @{\r
- */\r
-#define TIM_INPUTCHANNELPOLARITY_RISING 0x00000000U /*!< Polarity for TIx source */\r
-#define TIM_INPUTCHANNELPOLARITY_FALLING TIM_CCER_CC1P /*!< Polarity for TIx source */\r
-#define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< Polarity for TIx source */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_ETR_Polarity TIM ETR Polarity\r
- * @{\r
- */\r
-#define TIM_ETRPOLARITY_INVERTED TIM_SMCR_ETP /*!< Polarity for ETR source */\r
-#define TIM_ETRPOLARITY_NONINVERTED 0x00000000U /*!< Polarity for ETR source */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler\r
- * @{\r
- */\r
-#define TIM_ETRPRESCALER_DIV1 0x00000000U /*!< No prescaler is used */\r
-#define TIM_ETRPRESCALER_DIV2 TIM_SMCR_ETPS_0 /*!< ETR input source is divided by 2 */\r
-#define TIM_ETRPRESCALER_DIV4 TIM_SMCR_ETPS_1 /*!< ETR input source is divided by 4 */\r
-#define TIM_ETRPRESCALER_DIV8 TIM_SMCR_ETPS /*!< ETR input source is divided by 8 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Counter_Mode TIM Counter Mode\r
- * @{\r
- */\r
-#define TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as up-counter */\r
-#define TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as down-counter */\r
-#define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0 /*!< Center-aligned mode 1 */\r
-#define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1 /*!< Center-aligned mode 2 */\r
-#define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS /*!< Center-aligned mode 3 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_ClockDivision TIM Clock Division\r
- * @{\r
- */\r
-#define TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< Clock division: tDTS=tCK_INT */\r
-#define TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< Clock division: tDTS=2*tCK_INT */\r
-#define TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< Clock division: tDTS=4*tCK_INT */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Compare_State TIM Output Compare State\r
- * @{\r
- */\r
-#define TIM_OUTPUTSTATE_DISABLE 0x00000000U /*!< Capture/Compare 1 output disabled */\r
-#define TIM_OUTPUTSTATE_ENABLE TIM_CCER_CC1E /*!< Capture/Compare 1 output enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_AutoReloadPreload TIM Auto-Reload Preload\r
- * @{\r
- */\r
-#define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U /*!< TIMx_ARR register is not buffered */\r
-#define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE /*!< TIMx_ARR register is buffered */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Fast_State TIM Output Fast State\r
- * @{\r
- */\r
-#define TIM_OCFAST_DISABLE 0x00000000U /*!< Output Compare fast disable */\r
-#define TIM_OCFAST_ENABLE TIM_CCMR1_OC1FE /*!< Output Compare fast enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State\r
- * @{\r
- */\r
-#define TIM_OUTPUTNSTATE_DISABLE 0x00000000U /*!< OCxN is disabled */\r
-#define TIM_OUTPUTNSTATE_ENABLE TIM_CCER_CC1NE /*!< OCxN is enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity\r
- * @{\r
- */\r
-#define TIM_OCPOLARITY_HIGH 0x00000000U /*!< Capture/Compare output polarity */\r
-#define TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< Capture/Compare output polarity */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Compare_N_Polarity TIM Complementary Output Compare Polarity\r
- * @{\r
- */\r
-#define TIM_OCNPOLARITY_HIGH 0x00000000U /*!< Capture/Compare complementary output polarity */\r
-#define TIM_OCNPOLARITY_LOW TIM_CCER_CC1NP /*!< Capture/Compare complementary output polarity */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Compare_Idle_State TIM Output Compare Idle State\r
- * @{\r
- */\r
-#define TIM_OCIDLESTATE_SET TIM_CR2_OIS1 /*!< Output Idle state: OCx=1 when MOE=0 */\r
-#define TIM_OCIDLESTATE_RESET 0x00000000U /*!< Output Idle state: OCx=0 when MOE=0 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Compare_N_Idle_State TIM Complementary Output Compare Idle State\r
- * @{\r
- */\r
-#define TIM_OCNIDLESTATE_SET TIM_CR2_OIS1N /*!< Complementary output Idle state: OCxN=1 when MOE=0 */\r
-#define TIM_OCNIDLESTATE_RESET 0x00000000U /*!< Complementary output Idle state: OCxN=0 when MOE=0 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity\r
- * @{\r
- */\r
-#define TIM_ICPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Capture triggered by rising edge on timer input */\r
-#define TIM_ICPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Capture triggered by falling edge on timer input */\r
-#define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Capture triggered by both rising and falling edges on timer input*/\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection\r
- * @{\r
- */\r
-#define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0 /*!< TIM Input 1, 2, 3 or 4 is selected to be\r
- connected to IC1, IC2, IC3 or IC4, respectively */\r
-#define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1 /*!< TIM Input 1, 2, 3 or 4 is selected to be\r
- connected to IC2, IC1, IC4 or IC3, respectively */\r
-#define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler\r
- * @{\r
- */\r
-#define TIM_ICPSC_DIV1 0x00000000U /*!< Capture performed each time an edge is detected on the capture input */\r
-#define TIM_ICPSC_DIV2 TIM_CCMR1_IC1PSC_0 /*!< Capture performed once every 2 events */\r
-#define TIM_ICPSC_DIV4 TIM_CCMR1_IC1PSC_1 /*!< Capture performed once every 4 events */\r
-#define TIM_ICPSC_DIV8 TIM_CCMR1_IC1PSC /*!< Capture performed once every 8 events */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode\r
- * @{\r
- */\r
-#define TIM_OPMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */\r
-#define TIM_OPMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Encoder_Mode TIM Encoder Mode\r
- * @{\r
- */\r
-#define TIM_ENCODERMODE_TI1 TIM_SMCR_SMS_0 /*!< Quadrature encoder mode 1, x2 mode, counts up/down on TI1FP1 edge depending on TI2FP2 level */\r
-#define TIM_ENCODERMODE_TI2 TIM_SMCR_SMS_1 /*!< Quadrature encoder mode 2, x2 mode, counts up/down on TI2FP2 edge depending on TI1FP1 level. */\r
-#define TIM_ENCODERMODE_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Quadrature encoder mode 3, x4 mode, counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Interrupt_definition TIM interrupt Definition\r
- * @{\r
- */\r
-#define TIM_IT_UPDATE TIM_DIER_UIE /*!< Update interrupt */\r
-#define TIM_IT_CC1 TIM_DIER_CC1IE /*!< Capture/Compare 1 interrupt */\r
-#define TIM_IT_CC2 TIM_DIER_CC2IE /*!< Capture/Compare 2 interrupt */\r
-#define TIM_IT_CC3 TIM_DIER_CC3IE /*!< Capture/Compare 3 interrupt */\r
-#define TIM_IT_CC4 TIM_DIER_CC4IE /*!< Capture/Compare 4 interrupt */\r
-#define TIM_IT_COM TIM_DIER_COMIE /*!< Commutation interrupt */\r
-#define TIM_IT_TRIGGER TIM_DIER_TIE /*!< Trigger interrupt */\r
-#define TIM_IT_BREAK TIM_DIER_BIE /*!< Break interrupt */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Commutation_Source TIM Commutation Source\r
- * @{\r
- */\r
-#define TIM_COMMUTATION_TRGI TIM_CR2_CCUS /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit or when an rising edge occurs on trigger input */\r
-#define TIM_COMMUTATION_SOFTWARE 0x00000000U /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_DMA_sources TIM DMA Sources\r
- * @{\r
- */\r
-#define TIM_DMA_UPDATE TIM_DIER_UDE /*!< DMA request is triggered by the update event */\r
-#define TIM_DMA_CC1 TIM_DIER_CC1DE /*!< DMA request is triggered by the capture/compare macth 1 event */\r
-#define TIM_DMA_CC2 TIM_DIER_CC2DE /*!< DMA request is triggered by the capture/compare macth 2 event event */\r
-#define TIM_DMA_CC3 TIM_DIER_CC3DE /*!< DMA request is triggered by the capture/compare macth 3 event event */\r
-#define TIM_DMA_CC4 TIM_DIER_CC4DE /*!< DMA request is triggered by the capture/compare macth 4 event event */\r
-#define TIM_DMA_COM TIM_DIER_COMDE /*!< DMA request is triggered by the commutation event */\r
-#define TIM_DMA_TRIGGER TIM_DIER_TDE /*!< DMA request is triggered by the trigger event */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Flag_definition TIM Flag Definition\r
- * @{\r
- */\r
-#define TIM_FLAG_UPDATE TIM_SR_UIF /*!< Update interrupt flag */\r
-#define TIM_FLAG_CC1 TIM_SR_CC1IF /*!< Capture/Compare 1 interrupt flag */\r
-#define TIM_FLAG_CC2 TIM_SR_CC2IF /*!< Capture/Compare 2 interrupt flag */\r
-#define TIM_FLAG_CC3 TIM_SR_CC3IF /*!< Capture/Compare 3 interrupt flag */\r
-#define TIM_FLAG_CC4 TIM_SR_CC4IF /*!< Capture/Compare 4 interrupt flag */\r
-#define TIM_FLAG_CC5 TIM_SR_CC5IF /*!< Capture/Compare 5 interrupt flag */\r
-#define TIM_FLAG_CC6 TIM_SR_CC6IF /*!< Capture/Compare 6 interrupt flag */\r
-#define TIM_FLAG_COM TIM_SR_COMIF /*!< Commutation interrupt flag */\r
-#define TIM_FLAG_TRIGGER TIM_SR_TIF /*!< Trigger interrupt flag */\r
-#define TIM_FLAG_BREAK TIM_SR_BIF /*!< Break interrupt flag */\r
-#define TIM_FLAG_BREAK2 TIM_SR_B2IF /*!< Break 2 interrupt flag */\r
-#define TIM_FLAG_SYSTEM_BREAK TIM_SR_SBIF /*!< System Break interrupt flag */\r
-#define TIM_FLAG_CC1OF TIM_SR_CC1OF /*!< Capture 1 overcapture flag */\r
-#define TIM_FLAG_CC2OF TIM_SR_CC2OF /*!< Capture 2 overcapture flag */\r
-#define TIM_FLAG_CC3OF TIM_SR_CC3OF /*!< Capture 3 overcapture flag */\r
-#define TIM_FLAG_CC4OF TIM_SR_CC4OF /*!< Capture 4 overcapture flag */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Channel TIM Channel\r
- * @{\r
- */\r
-#define TIM_CHANNEL_1 0x00000000U /*!< Capture/compare channel 1 identifier */\r
-#define TIM_CHANNEL_2 0x00000004U /*!< Capture/compare channel 2 identifier */\r
-#define TIM_CHANNEL_3 0x00000008U /*!< Capture/compare channel 3 identifier */\r
-#define TIM_CHANNEL_4 0x0000000CU /*!< Capture/compare channel 4 identifier */\r
-#define TIM_CHANNEL_5 0x00000010U /*!< Compare channel 5 identifier */\r
-#define TIM_CHANNEL_6 0x00000014U /*!< Compare channel 6 identifier */\r
-#define TIM_CHANNEL_ALL 0x0000003CU /*!< Global Capture/compare channel identifier */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Clock_Source TIM Clock Source\r
- * @{\r
- */\r
-#define TIM_CLOCKSOURCE_ETRMODE2 TIM_SMCR_ETPS_1 /*!< External clock source mode 2 */\r
-#define TIM_CLOCKSOURCE_INTERNAL TIM_SMCR_ETPS_0 /*!< Internal clock source */\r
-#define TIM_CLOCKSOURCE_ITR0 TIM_TS_ITR0 /*!< External clock source mode 1 (ITR0) */\r
-#define TIM_CLOCKSOURCE_ITR1 TIM_TS_ITR1 /*!< External clock source mode 1 (ITR1) */\r
-#define TIM_CLOCKSOURCE_ITR2 TIM_TS_ITR2 /*!< External clock source mode 1 (ITR2) */\r
-#define TIM_CLOCKSOURCE_ITR3 TIM_TS_ITR3 /*!< External clock source mode 1 (ITR3) */\r
-#define TIM_CLOCKSOURCE_TI1ED TIM_TS_TI1F_ED /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */\r
-#define TIM_CLOCKSOURCE_TI1 TIM_TS_TI1FP1 /*!< External clock source mode 1 (TTI1FP1) */\r
-#define TIM_CLOCKSOURCE_TI2 TIM_TS_TI2FP2 /*!< External clock source mode 1 (TTI2FP2) */\r
-#define TIM_CLOCKSOURCE_ETRMODE1 TIM_TS_ETRF /*!< External clock source mode 1 (ETRF) */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Clock_Polarity TIM Clock Polarity\r
- * @{\r
- */\r
-#define TIM_CLOCKPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx clock sources */\r
-#define TIM_CLOCKPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx clock sources */\r
-#define TIM_CLOCKPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIx clock sources */\r
-#define TIM_CLOCKPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIx clock sources */\r
-#define TIM_CLOCKPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIx clock sources */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler\r
- * @{\r
- */\r
-#define TIM_CLOCKPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */\r
-#define TIM_CLOCKPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */\r
-#define TIM_CLOCKPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */\r
-#define TIM_CLOCKPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity\r
- * @{\r
- */\r
-#define TIM_CLEARINPUTPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx pin */\r
-#define TIM_CLEARINPUTPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx pin */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler\r
- * @{\r
- */\r
-#define TIM_CLEARINPUTPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */\r
-#define TIM_CLEARINPUTPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */\r
-#define TIM_CLEARINPUTPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */\r
-#define TIM_CLEARINPUTPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state TIM OSSR OffState Selection for Run mode state\r
- * @{\r
- */\r
-#define TIM_OSSR_ENABLE TIM_BDTR_OSSR /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer) */\r
-#define TIM_OSSR_DISABLE 0x00000000U /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state TIM OSSI OffState Selection for Idle mode state\r
- * @{\r
- */\r
-#define TIM_OSSI_ENABLE TIM_BDTR_OSSI /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer) */\r
-#define TIM_OSSI_DISABLE 0x00000000U /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */\r
-/**\r
- * @}\r
- */\r
-/** @defgroup TIM_Lock_level TIM Lock level\r
- * @{\r
- */\r
-#define TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF */\r
-#define TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */\r
-#define TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */\r
-#define TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Break_Input_enable_disable TIM Break Input Enable\r
- * @{\r
- */\r
-#define TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break input BRK is enabled */\r
-#define TIM_BREAK_DISABLE 0x00000000U /*!< Break input BRK is disabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Break_Polarity TIM Break Input Polarity\r
- * @{\r
- */\r
-#define TIM_BREAKPOLARITY_LOW 0x00000000U /*!< Break input BRK is active low */\r
-#define TIM_BREAKPOLARITY_HIGH TIM_BDTR_BKP /*!< Break input BRK is active high */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Break2_Input_enable_disable TIM Break input 2 Enable\r
- * @{\r
- */\r
-#define TIM_BREAK2_DISABLE 0x00000000U /*!< Break input BRK2 is disabled */\r
-#define TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break input BRK2 is enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Break2_Polarity TIM Break Input 2 Polarity\r
- * @{\r
- */\r
-#define TIM_BREAK2POLARITY_LOW 0x00000000U /*!< Break input BRK2 is active low */\r
-#define TIM_BREAK2POLARITY_HIGH TIM_BDTR_BK2P /*!< Break input BRK2 is active high */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_AOE_Bit_Set_Reset TIM Automatic Output Enable\r
- * @{\r
- */\r
-#define TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */\r
-#define TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event \r
- (if none of the break inputs BRK and BRK2 is active) */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Group_Channel5 Group Channel 5 and Channel 1, 2 or 3\r
- * @{\r
- */\r
-#define TIM_GROUPCH5_NONE 0x00000000U /* !< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */\r
-#define TIM_GROUPCH5_OC1REFC TIM_CCR5_GC5C1 /* !< OC1REFC is the logical AND of OC1REFC and OC5REF */\r
-#define TIM_GROUPCH5_OC2REFC TIM_CCR5_GC5C2 /* !< OC2REFC is the logical AND of OC2REFC and OC5REF */\r
-#define TIM_GROUPCH5_OC3REFC TIM_CCR5_GC5C3 /* !< OC3REFC is the logical AND of OC3REFC and OC5REF */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection\r
- * @{\r
- */\r
-#define TIM_TRGO_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO) */\r
-#define TIM_TRGO_ENABLE TIM_CR2_MMS_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO) */\r
-#define TIM_TRGO_UPDATE TIM_CR2_MMS_1 /*!< Update event is used as trigger output (TRGO) */\r
-#define TIM_TRGO_OC1 (TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO) */\r
-#define TIM_TRGO_OC1REF TIM_CR2_MMS_2 /*!< OC1REF signal is used as trigger output (TRGO) */\r
-#define TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0) /*!< OC2REF signal is used as trigger output(TRGO) */\r
-#define TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1) /*!< OC3REF signal is used as trigger output(TRGO) */\r
-#define TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output(TRGO) */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Master_Mode_Selection_2 TIM Master Mode Selection 2 (TRGO2)\r
- * @{\r
- */\r
-#define TIM_TRGO2_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_ENABLE TIM_CR2_MMS2_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_UPDATE TIM_CR2_MMS2_1 /*!< Update event is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC1 (TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC1REF TIM_CR2_MMS2_2 /*!< OC1REF signal is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC2REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0) /*!< OC2REF signal is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC3REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1) /*!< OC3REF signal is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC4REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC4REF signal is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC5REF TIM_CR2_MMS2_3 /*!< OC5REF signal is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC6REF (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_0) /*!< OC6REF signal is used as trigger output (TRGO2) */\r
-#define TIM_TRGO2_OC4REF_RISINGFALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1) /*!< OC4REF rising or falling edges generate pulses on TRGO2 */\r
-#define TIM_TRGO2_OC6REF_RISINGFALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC6REF rising or falling edges generate pulses on TRGO2 */\r
-#define TIM_TRGO2_OC4REF_RISING_OC6REF_RISING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2) /*!< OC4REF or OC6REF rising edges generate pulses on TRGO2 */\r
-#define TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0) /*!< OC4REF rising or OC6REF falling edges generate pulses on TRGO2 */\r
-#define TIM_TRGO2_OC5REF_RISING_OC6REF_RISING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 |TIM_CR2_MMS2_1) /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2 */\r
-#define TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Master_Slave_Mode TIM Master/Slave Mode\r
- * @{\r
- */\r
-#define TIM_MASTERSLAVEMODE_ENABLE TIM_SMCR_MSM /*!< No action */\r
-#define TIM_MASTERSLAVEMODE_DISABLE 0x00000000U /*!< Master/slave mode is selected */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Slave_Mode TIM Slave mode\r
- * @{\r
- */\r
-#define TIM_SLAVEMODE_DISABLE 0x00000000U /*!< Slave mode disabled */\r
-#define TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2 /*!< Reset Mode */\r
-#define TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0) /*!< Gated Mode */\r
-#define TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1) /*!< Trigger Mode */\r
-#define TIM_SLAVEMODE_EXTERNAL1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< External Clock Mode 1 */\r
-#define TIM_SLAVEMODE_COMBINED_RESETTRIGGER TIM_SMCR_SMS_3 /*!< Combined reset + trigger mode */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM Modes\r
- * @{\r
- */\r
-#define TIM_OCMODE_TIMING 0x00000000U /*!< Frozen */\r
-#define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!< Set channel to active level on match */\r
-#define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!< Set channel to inactive level on match */\r
-#define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< Toggle */\r
-#define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!< PWM mode 1 */\r
-#define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2 */\r
-#define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!< Force active level */\r
-#define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!< Force inactive level */\r
-#define TIM_OCMODE_RETRIGERRABLE_OPM1 TIM_CCMR1_OC1M_3 /*!< Retrigerrable OPM mode 1 */\r
-#define TIM_OCMODE_RETRIGERRABLE_OPM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0) /*!< Retrigerrable OPM mode 2 */\r
-#define TIM_OCMODE_COMBINED_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2) /*!< Combined PWM mode 1 */\r
-#define TIM_OCMODE_COMBINED_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_2) /*!< Combined PWM mode 2 */\r
-#define TIM_OCMODE_ASSYMETRIC_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2) /*!< Asymmetric PWM mode 1 */\r
-#define TIM_OCMODE_ASSYMETRIC_PWM2 TIM_CCMR1_OC1M /*!< Asymmetric PWM mode 2 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Trigger_Selection TIM Trigger Selection\r
- * @{\r
- */\r
-#define TIM_TS_ITR0 0x00000000U /*!< Internal Trigger 0 (ITR0) */\r
-#define TIM_TS_ITR1 TIM_SMCR_TS_0 /*!< Internal Trigger 1 (ITR1) */\r
-#define TIM_TS_ITR2 TIM_SMCR_TS_1 /*!< Internal Trigger 2 (ITR2) */\r
-#define TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1) /*!< Internal Trigger 3 (ITR3) */\r
-#define TIM_TS_TI1F_ED TIM_SMCR_TS_2 /*!< TI1 Edge Detector (TI1F_ED) */\r
-#define TIM_TS_TI1FP1 (TIM_SMCR_TS_0 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 1 (TI1FP1) */\r
-#define TIM_TS_TI2FP2 (TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 2 (TI2FP2) */\r
-#define TIM_TS_ETRF (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered External Trigger input (ETRF) */\r
-#define TIM_TS_NONE 0x0000FFFFU /*!< No trigger selected */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity\r
- * @{\r
- */\r
-#define TIM_TRIGGERPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx trigger sources */\r
-#define TIM_TRIGGERPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx trigger sources */\r
-#define TIM_TRIGGERPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIxFPx or TI1_ED trigger sources */\r
-#define TIM_TRIGGERPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIxFPx or TI1_ED trigger sources */\r
-#define TIM_TRIGGERPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIxFPx or TI1_ED trigger sources */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler\r
- * @{\r
- */\r
-#define TIM_TRIGGERPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */\r
-#define TIM_TRIGGERPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */\r
-#define TIM_TRIGGERPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */\r
-#define TIM_TRIGGERPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_TI1_Selection TIM TI1 Input Selection\r
- * @{\r
- */\r
-#define TIM_TI1SELECTION_CH1 0x00000000U /*!< The TIMx_CH1 pin is connected to TI1 input */\r
-#define TIM_TI1SELECTION_XORCOMBINATION TIM_CR2_TI1S /*!< The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length\r
- * @{\r
- */\r
-#define TIM_DMABURSTLENGTH_1TRANSFER 0x00000000U /*!< The transfer is done to 1 register starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_2TRANSFERS 0x00000100U /*!< The transfer is done to 2 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_3TRANSFERS 0x00000200U /*!< The transfer is done to 3 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U /*!< The transfer is done to 4 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_5TRANSFERS 0x00000400U /*!< The transfer is done to 5 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_6TRANSFERS 0x00000500U /*!< The transfer is done to 6 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_7TRANSFERS 0x00000600U /*!< The transfer is done to 7 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_8TRANSFERS 0x00000700U /*!< The transfer is done to 8 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_9TRANSFERS 0x00000800U /*!< The transfer is done to 9 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_10TRANSFERS 0x00000900U /*!< The transfer is done to 10 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_11TRANSFERS 0x00000A00U /*!< The transfer is done to 11 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_12TRANSFERS 0x00000B00U /*!< The transfer is done to 12 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_13TRANSFERS 0x00000C00U /*!< The transfer is done to 13 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_14TRANSFERS 0x00000D00U /*!< The transfer is done to 14 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_15TRANSFERS 0x00000E00U /*!< The transfer is done to 15 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_16TRANSFERS 0x00000F00U /*!< The transfer is done to 16 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_17TRANSFERS 0x00001000U /*!< The transfer is done to 17 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-#define TIM_DMABURSTLENGTH_18TRANSFERS 0x00001100U /*!< The transfer is done to 18 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup DMA_Handle_index TIM DMA Handle Index\r
- * @{\r
- */\r
-#define TIM_DMA_ID_UPDATE ((uint16_t) 0x0000) /*!< Index of the DMA handle used for Update DMA requests */\r
-#define TIM_DMA_ID_CC1 ((uint16_t) 0x0001) /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */\r
-#define TIM_DMA_ID_CC2 ((uint16_t) 0x0002) /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */\r
-#define TIM_DMA_ID_CC3 ((uint16_t) 0x0003) /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */\r
-#define TIM_DMA_ID_CC4 ((uint16_t) 0x0004) /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */\r
-#define TIM_DMA_ID_COMMUTATION ((uint16_t) 0x0005) /*!< Index of the DMA handle used for Commutation DMA requests */\r
-#define TIM_DMA_ID_TRIGGER ((uint16_t) 0x0006) /*!< Index of the DMA handle used for Trigger DMA requests */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup Channel_CC_State TIM Capture/Compare Channel State\r
- * @{\r
- */\r
-#define TIM_CCx_ENABLE 0x00000001U /*!< Input or output channel is enabled */\r
-#define TIM_CCx_DISABLE 0x00000000U /*!< Input or output channel is disabled */\r
-#define TIM_CCxN_ENABLE 0x00000004U /*!< Complementary output channel is enabled */\r
-#define TIM_CCxN_DISABLE 0x00000000U /*!< Complementary output channel is enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Break_System TIM Break System\r
- * @{\r
- */\r
-#define TIM_BREAK_SYSTEM_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC error signal with Break Input of TIM1/8/15/16/17 */\r
-#define TIM_BREAK_SYSTEM_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection with TIM1/8/15/16/17 Break Input and also the PVDE and PLS bits of the Power Control Interface */\r
-#define TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM_PARITY error signal with Break Input of TIM1/8/15/16/17 */\r
-#define TIM_BREAK_SYSTEM_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP output of CortexM4 with Break Input of TIM1/8/15/16/17 */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of exported constants -------------------------------------------------*/\r
-\r
-/* Exported macros -----------------------------------------------------------*/\r
-/** @defgroup TIM_Exported_Macros TIM Exported Macros\r
- * @{\r
- */\r
-\r
-/** @brief Reset TIM handle state.\r
- * @param __HANDLE__ TIM handle.\r
- * @retval None\r
- */\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
-#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \\r
- (__HANDLE__)->State = HAL_TIM_STATE_RESET; \\r
- (__HANDLE__)->Base_MspInitCallback = NULL; \\r
- (__HANDLE__)->Base_MspDeInitCallback = NULL; \\r
- (__HANDLE__)->IC_MspInitCallback = NULL; \\r
- (__HANDLE__)->IC_MspDeInitCallback = NULL; \\r
- (__HANDLE__)->OC_MspInitCallback = NULL; \\r
- (__HANDLE__)->OC_MspDeInitCallback = NULL; \\r
- (__HANDLE__)->PWM_MspInitCallback = NULL; \\r
- (__HANDLE__)->PWM_MspDeInitCallback = NULL; \\r
- (__HANDLE__)->OnePulse_MspInitCallback = NULL; \\r
- (__HANDLE__)->OnePulse_MspDeInitCallback = NULL; \\r
- (__HANDLE__)->Encoder_MspInitCallback = NULL; \\r
- (__HANDLE__)->Encoder_MspDeInitCallback = NULL; \\r
- (__HANDLE__)->HallSensor_MspInitCallback = NULL; \\r
- (__HANDLE__)->HallSensor_MspDeInitCallback = NULL; \\r
- } while(0)\r
-#else\r
-#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_TIM_STATE_RESET)\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @brief Enable the TIM peripheral.\r
- * @param __HANDLE__ TIM handle\r
- * @retval None\r
- */\r
-#define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN))\r
-\r
-/**\r
- * @brief Enable the TIM main Output.\r
- * @param __HANDLE__ TIM handle\r
- * @retval None\r
- */\r
-#define __HAL_TIM_MOE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->BDTR|=(TIM_BDTR_MOE))\r
-\r
-/**\r
- * @brief Disable the TIM peripheral.\r
- * @param __HANDLE__ TIM handle\r
- * @retval None\r
- */\r
-#define __HAL_TIM_DISABLE(__HANDLE__) \\r
- do { \\r
- if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \\r
- { \\r
- if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \\r
- { \\r
- (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \\r
- } \\r
- } \\r
- } while(0)\r
-\r
-/**\r
- * @brief Disable the TIM main Output.\r
- * @param __HANDLE__ TIM handle\r
- * @retval None\r
- * @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled\r
- */\r
-#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \\r
- do { \\r
- if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \\r
- { \\r
- if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \\r
- { \\r
- (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \\r
- } \\r
- } \\r
- } while(0)\r
-\r
-/**\r
- * @brief Disable the TIM main Output.\r
- * @param __HANDLE__ TIM handle\r
- * @retval None\r
- * @note The Main Output Enable of a timer instance is disabled unconditionally\r
- */\r
-#define __HAL_TIM_MOE_DISABLE_UNCONDITIONALLY(__HANDLE__) (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE)\r
-\r
-/** @brief Enable the specified TIM interrupt.\r
- * @param __HANDLE__ specifies the TIM Handle.\r
- * @param __INTERRUPT__ specifies the TIM interrupt source to enable.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_IT_UPDATE: Update interrupt\r
- * @arg TIM_IT_CC1: Capture/Compare 1 interrupt\r
- * @arg TIM_IT_CC2: Capture/Compare 2 interrupt\r
- * @arg TIM_IT_CC3: Capture/Compare 3 interrupt\r
- * @arg TIM_IT_CC4: Capture/Compare 4 interrupt\r
- * @arg TIM_IT_COM: Commutation interrupt\r
- * @arg TIM_IT_TRIGGER: Trigger interrupt\r
- * @arg TIM_IT_BREAK: Break interrupt\r
- * @retval None\r
- */\r
-#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__))\r
-\r
-/** @brief Disable the specified TIM interrupt.\r
- * @param __HANDLE__ specifies the TIM Handle.\r
- * @param __INTERRUPT__ specifies the TIM interrupt source to disable.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_IT_UPDATE: Update interrupt\r
- * @arg TIM_IT_CC1: Capture/Compare 1 interrupt\r
- * @arg TIM_IT_CC2: Capture/Compare 2 interrupt\r
- * @arg TIM_IT_CC3: Capture/Compare 3 interrupt\r
- * @arg TIM_IT_CC4: Capture/Compare 4 interrupt\r
- * @arg TIM_IT_COM: Commutation interrupt\r
- * @arg TIM_IT_TRIGGER: Trigger interrupt\r
- * @arg TIM_IT_BREAK: Break interrupt\r
- * @retval None\r
- */\r
-#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__))\r
-\r
-/** @brief Enable the specified DMA request.\r
- * @param __HANDLE__ specifies the TIM Handle.\r
- * @param __DMA__ specifies the TIM DMA request to enable.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_DMA_UPDATE: Update DMA request\r
- * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request\r
- * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request\r
- * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request\r
- * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request\r
- * @arg TIM_DMA_COM: Commutation DMA request\r
- * @arg TIM_DMA_TRIGGER: Trigger DMA request\r
- * @retval None\r
- */\r
-#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER |= (__DMA__))\r
-\r
-/** @brief Disable the specified DMA request.\r
- * @param __HANDLE__ specifies the TIM Handle.\r
- * @param __DMA__ specifies the TIM DMA request to disable.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_DMA_UPDATE: Update DMA request\r
- * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request\r
- * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request\r
- * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request\r
- * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request\r
- * @arg TIM_DMA_COM: Commutation DMA request\r
- * @arg TIM_DMA_TRIGGER: Trigger DMA request\r
- * @retval None\r
- */\r
-#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER &= ~(__DMA__))\r
-\r
-/** @brief Check whether the specified TIM interrupt flag is set or not.\r
- * @param __HANDLE__ specifies the TIM Handle.\r
- * @param __FLAG__ specifies the TIM interrupt flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_FLAG_UPDATE: Update interrupt flag\r
- * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag\r
- * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag\r
- * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag\r
- * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag\r
- * @arg TIM_FLAG_CC5: Compare 5 interrupt flag\r
- * @arg TIM_FLAG_CC6: Compare 6 interrupt flag\r
- * @arg TIM_FLAG_COM: Commutation interrupt flag\r
- * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag\r
- * @arg TIM_FLAG_BREAK: Break interrupt flag\r
- * @arg TIM_FLAG_BREAK2: Break 2 interrupt flag\r
- * @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag\r
- * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag\r
- * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag\r
- * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag\r
- * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag\r
- * @retval The new state of __FLAG__ (TRUE or FALSE).\r
- */\r
-#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__))\r
-\r
-/** @brief Clear the specified TIM interrupt flag.\r
- * @param __HANDLE__ specifies the TIM Handle.\r
- * @param __FLAG__ specifies the TIM interrupt flag to clear.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_FLAG_UPDATE: Update interrupt flag\r
- * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag\r
- * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag\r
- * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag\r
- * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag\r
- * @arg TIM_FLAG_CC5: Compare 5 interrupt flag\r
- * @arg TIM_FLAG_CC6: Compare 6 interrupt flag\r
- * @arg TIM_FLAG_COM: Commutation interrupt flag\r
- * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag\r
- * @arg TIM_FLAG_BREAK: Break interrupt flag\r
- * @arg TIM_FLAG_BREAK2: Break 2 interrupt flag\r
- * @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag\r
- * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag\r
- * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag\r
- * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag\r
- * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag\r
- * @retval The new state of __FLAG__ (TRUE or FALSE).\r
- */\r
-#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))\r
-\r
-/**\r
- * @brief Check whether the specified TIM interrupt source is enabled or not.\r
- * @param __HANDLE__ TIM handle\r
- * @param __INTERRUPT__ specifies the TIM interrupt source to check.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_IT_UPDATE: Update interrupt\r
- * @arg TIM_IT_CC1: Capture/Compare 1 interrupt\r
- * @arg TIM_IT_CC2: Capture/Compare 2 interrupt\r
- * @arg TIM_IT_CC3: Capture/Compare 3 interrupt\r
- * @arg TIM_IT_CC4: Capture/Compare 4 interrupt\r
- * @arg TIM_IT_COM: Commutation interrupt\r
- * @arg TIM_IT_TRIGGER: Trigger interrupt\r
- * @arg TIM_IT_BREAK: Break interrupt\r
- * @retval The state of TIM_IT (SET or RESET).\r
- */\r
-#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)\r
-\r
-/** @brief Clear the TIM interrupt pending bits.\r
- * @param __HANDLE__ TIM handle\r
- * @param __INTERRUPT__ specifies the interrupt pending bit to clear.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_IT_UPDATE: Update interrupt\r
- * @arg TIM_IT_CC1: Capture/Compare 1 interrupt\r
- * @arg TIM_IT_CC2: Capture/Compare 2 interrupt\r
- * @arg TIM_IT_CC3: Capture/Compare 3 interrupt\r
- * @arg TIM_IT_CC4: Capture/Compare 4 interrupt\r
- * @arg TIM_IT_COM: Commutation interrupt\r
- * @arg TIM_IT_TRIGGER: Trigger interrupt\r
- * @arg TIM_IT_BREAK: Break interrupt\r
- * @retval None\r
- */\r
-#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))\r
-\r
-/**\r
- * @brief Indicates whether or not the TIM Counter is used as downcounter.\r
- * @param __HANDLE__ TIM handle.\r
- * @retval False (Counter used as upcounter) or True (Counter used as downcounter)\r
- * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode or Encoder\r
-mode.\r
- */\r
-#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))\r
-\r
-/**\r
- * @brief Set the TIM Prescaler on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __PRESC__ specifies the Prescaler new value.\r
- * @retval None\r
- */\r
-#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__))\r
-\r
-/**\r
- * @brief Set the TIM Counter Register value on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __COUNTER__ specifies the Counter register new value.\r
- * @retval None\r
- */\r
-#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__))\r
-\r
-/**\r
- * @brief Get the TIM Counter Register value on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)\r
- */\r
-#define __HAL_TIM_GET_COUNTER(__HANDLE__) \\r
- ((__HANDLE__)->Instance->CNT)\r
-\r
-/**\r
- * @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __AUTORELOAD__ specifies the Counter register new value.\r
- * @retval None\r
- */\r
-#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \\r
- do{ \\r
- (__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \\r
- (__HANDLE__)->Init.Period = (__AUTORELOAD__); \\r
- } while(0)\r
-\r
-/**\r
- * @brief Get the TIM Autoreload Register value on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)\r
- */\r
-#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) \\r
- ((__HANDLE__)->Instance->ARR)\r
-\r
-/**\r
- * @brief Set the TIM Clock Division value on runtime without calling another time any Init function.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CKD__ specifies the clock division value.\r
- * This parameter can be one of the following value:\r
- * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT\r
- * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT\r
- * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT\r
- * @retval None\r
- */\r
-#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \\r
- do{ \\r
- (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \\r
- (__HANDLE__)->Instance->CR1 |= (__CKD__); \\r
- (__HANDLE__)->Init.ClockDivision = (__CKD__); \\r
- } while(0)\r
-\r
-/**\r
- * @brief Get the TIM Clock Division value on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @retval The clock division can be one of the following values:\r
- * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT\r
- * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT\r
- * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT\r
- */\r
-#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) \\r
- ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)\r
-\r
-/**\r
- * @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CHANNEL__ TIM Channels to be configured.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @param __ICPSC__ specifies the Input Capture4 prescaler new value.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICPSC_DIV1: no prescaler\r
- * @arg TIM_ICPSC_DIV2: capture is done once every 2 events\r
- * @arg TIM_ICPSC_DIV4: capture is done once every 4 events\r
- * @arg TIM_ICPSC_DIV8: capture is done once every 8 events\r
- * @retval None\r
- */\r
-#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \\r
- do{ \\r
- TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \\r
- TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \\r
- } while(0)\r
-\r
-/**\r
- * @brief Get the TIM Input Capture prescaler on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CHANNEL__ TIM Channels to be configured.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: get input capture 1 prescaler value\r
- * @arg TIM_CHANNEL_2: get input capture 2 prescaler value\r
- * @arg TIM_CHANNEL_3: get input capture 3 prescaler value\r
- * @arg TIM_CHANNEL_4: get input capture 4 prescaler value\r
- * @retval The input capture prescaler can be one of the following values:\r
- * @arg TIM_ICPSC_DIV1: no prescaler\r
- * @arg TIM_ICPSC_DIV2: capture is done once every 2 events\r
- * @arg TIM_ICPSC_DIV4: capture is done once every 4 events\r
- * @arg TIM_ICPSC_DIV8: capture is done once every 8 events\r
- */\r
-#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__) \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\\r
- (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U)\r
-\r
-/**\r
- * @brief Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CHANNEL__ TIM Channels to be configured.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @param __COMPARE__ specifies the Capture Compare register new value.\r
- * @retval None\r
- */\r
-#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \\r
-(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\\r
- ((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))\r
-\r
-/**\r
- * @brief Get the TIM Capture Compare Register value on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CHANNEL__ TIM Channel associated with the capture compare register\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: get capture/compare 1 register value\r
- * @arg TIM_CHANNEL_2: get capture/compare 2 register value\r
- * @arg TIM_CHANNEL_3: get capture/compare 3 register value\r
- * @arg TIM_CHANNEL_4: get capture/compare 4 register value\r
- * @arg TIM_CHANNEL_5: get capture/compare 5 register value\r
- * @arg TIM_CHANNEL_6: get capture/compare 6 register value\r
- * @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)\r
- */\r
-#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \\r
-(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\\r
- ((__HANDLE__)->Instance->CCR6))\r
-\r
-/**\r
- * @brief Set the TIM Output compare preload.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CHANNEL__ TIM Channels to be configured.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval None\r
- */\r
-#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\\r
- ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))\r
-\r
-/**\r
- * @brief Reset the TIM Output compare preload.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CHANNEL__ TIM Channels to be configured.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval None\r
- */\r
-#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \\r
- (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC1PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC2PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC3PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC4PE) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC5PE) :\\r
- ((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC6PE))\r
-\r
-/**\r
- * @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.\r
- * @param __HANDLE__ TIM handle.\r
- * @note When the URS bit of the TIMx_CR1 register is set, only counter\r
- * overflow/underflow generates an update interrupt or DMA request (if\r
- * enabled)\r
- * @retval None\r
- */\r
-#define __HAL_TIM_URS_ENABLE(__HANDLE__) \\r
- ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)\r
-\r
-/**\r
- * @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.\r
- * @param __HANDLE__ TIM handle.\r
- * @note When the URS bit of the TIMx_CR1 register is reset, any of the\r
- * following events generate an update interrupt or DMA request (if\r
- * enabled):\r
- * _ Counter overflow underflow\r
- * _ Setting the UG bit\r
- * _ Update generation through the slave mode controller\r
- * @retval None\r
- */\r
-#define __HAL_TIM_URS_DISABLE(__HANDLE__) \\r
- ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)\r
-\r
-/**\r
- * @brief Set the TIM Capture x input polarity on runtime.\r
- * @param __HANDLE__ TIM handle.\r
- * @param __CHANNEL__ TIM Channels to be configured.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @param __POLARITY__ Polarity for TIx source\r
- * @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge\r
- * @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge\r
- * @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge\r
- * @retval None\r
- */\r
-#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \\r
- do{ \\r
- TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \\r
- TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \\r
- }while(0)\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of exported macros ----------------------------------------------------*/\r
-\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @defgroup TIM_Private_Constants TIM Private Constants\r
- * @{\r
- */\r
-/* The counter of a timer instance is disabled only if all the CCx and CCxN\r
- channels have been disabled */\r
-#define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E))\r
-#define TIM_CCER_CCxNE_MASK ((uint32_t)(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE))\r
-/**\r
- * @}\r
- */\r
-/* End of private constants --------------------------------------------------*/\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup TIM_Private_Macros TIM Private Macros\r
- * @{\r
- */\r
-#define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_NONE) || \\r
- ((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))\r
-\r
-#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)\r
-#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \\r
- ((__BASE__) == TIM_DMABASE_CR2) || \\r
- ((__BASE__) == TIM_DMABASE_SMCR) || \\r
- ((__BASE__) == TIM_DMABASE_DIER) || \\r
- ((__BASE__) == TIM_DMABASE_SR) || \\r
- ((__BASE__) == TIM_DMABASE_EGR) || \\r
- ((__BASE__) == TIM_DMABASE_CCMR1) || \\r
- ((__BASE__) == TIM_DMABASE_CCMR2) || \\r
- ((__BASE__) == TIM_DMABASE_CCER) || \\r
- ((__BASE__) == TIM_DMABASE_CNT) || \\r
- ((__BASE__) == TIM_DMABASE_PSC) || \\r
- ((__BASE__) == TIM_DMABASE_ARR) || \\r
- ((__BASE__) == TIM_DMABASE_RCR) || \\r
- ((__BASE__) == TIM_DMABASE_CCR1) || \\r
- ((__BASE__) == TIM_DMABASE_CCR2) || \\r
- ((__BASE__) == TIM_DMABASE_CCR3) || \\r
- ((__BASE__) == TIM_DMABASE_CCR4) || \\r
- ((__BASE__) == TIM_DMABASE_BDTR) || \\r
- ((__BASE__) == TIM_DMABASE_OR) || \\r
- ((__BASE__) == TIM_DMABASE_CCMR3) || \\r
- ((__BASE__) == TIM_DMABASE_CCR5) || \\r
- ((__BASE__) == TIM_DMABASE_CCR6) || \\r
- ((__BASE__) == TIM_DMABASE_AF1) || \\r
- ((__BASE__) == TIM_DMABASE_AF2))\r
-#else\r
-#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \\r
- ((__BASE__) == TIM_DMABASE_CR2) || \\r
- ((__BASE__) == TIM_DMABASE_SMCR) || \\r
- ((__BASE__) == TIM_DMABASE_DIER) || \\r
- ((__BASE__) == TIM_DMABASE_SR) || \\r
- ((__BASE__) == TIM_DMABASE_EGR) || \\r
- ((__BASE__) == TIM_DMABASE_CCMR1) || \\r
- ((__BASE__) == TIM_DMABASE_CCMR2) || \\r
- ((__BASE__) == TIM_DMABASE_CCER) || \\r
- ((__BASE__) == TIM_DMABASE_CNT) || \\r
- ((__BASE__) == TIM_DMABASE_PSC) || \\r
- ((__BASE__) == TIM_DMABASE_ARR) || \\r
- ((__BASE__) == TIM_DMABASE_RCR) || \\r
- ((__BASE__) == TIM_DMABASE_CCR1) || \\r
- ((__BASE__) == TIM_DMABASE_CCR2) || \\r
- ((__BASE__) == TIM_DMABASE_CCR3) || \\r
- ((__BASE__) == TIM_DMABASE_CCR4) || \\r
- ((__BASE__) == TIM_DMABASE_BDTR) || \\r
- ((__BASE__) == TIM_DMABASE_OR) || \\r
- ((__BASE__) == TIM_DMABASE_CCMR3) || \\r
- ((__BASE__) == TIM_DMABASE_CCR5) || \\r
- ((__BASE__) == TIM_DMABASE_CCR6))\r
-#endif /* TIM_AF1_BKINE && TIM_AF1_BKINE */\r
-\r
-#define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFE00U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))\r
-\r
-#define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP) || \\r
- ((__MODE__) == TIM_COUNTERMODE_DOWN) || \\r
- ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1) || \\r
- ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \\r
- ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))\r
-\r
-#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \\r
- ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \\r
- ((__DIV__) == TIM_CLOCKDIVISION_DIV4))\r
-\r
-#define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \\r
- ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE))\r
-\r
-#define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \\r
- ((__STATE__) == TIM_OCFAST_ENABLE))\r
-\r
-#define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \\r
- ((__POLARITY__) == TIM_OCPOLARITY_LOW))\r
-\r
-#define IS_TIM_OCN_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCNPOLARITY_HIGH) || \\r
- ((__POLARITY__) == TIM_OCNPOLARITY_LOW))\r
-\r
-#define IS_TIM_OCIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCIDLESTATE_SET) || \\r
- ((__STATE__) == TIM_OCIDLESTATE_RESET))\r
-\r
-#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \\r
- ((__STATE__) == TIM_OCNIDLESTATE_RESET))\r
-\r
-#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \\r
- ((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \\r
- ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))\r
-\r
-#define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \\r
- ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \\r
- ((__SELECTION__) == TIM_ICSELECTION_TRC))\r
-\r
-#define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \\r
- ((__PRESCALER__) == TIM_ICPSC_DIV2) || \\r
- ((__PRESCALER__) == TIM_ICPSC_DIV4) || \\r
- ((__PRESCALER__) == TIM_ICPSC_DIV8))\r
-\r
-#define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \\r
- ((__MODE__) == TIM_OPMODE_REPETITIVE))\r
-\r
-#define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \\r
- ((__MODE__) == TIM_ENCODERMODE_TI2) || \\r
- ((__MODE__) == TIM_ENCODERMODE_TI12))\r
-\r
-#define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFF80FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))\r
-\r
-#define IS_TIM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_4) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_5) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_6) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_ALL))\r
-\r
-#define IS_TIM_OPM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2))\r
-\r
-#define IS_TIM_COMPLEMENTARY_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_2) || \\r
- ((__CHANNEL__) == TIM_CHANNEL_3))\r
-\r
-#define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_TI1) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_TI2) || \\r
- ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1))\r
-\r
-#define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED) || \\r
- ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \\r
- ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING) || \\r
- ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING) || \\r
- ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE))\r
-\r
-#define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \\r
- ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \\r
- ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \\r
- ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8))\r
-\r
-#define IS_TIM_CLOCKFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)\r
-\r
-#define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \\r
- ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED))\r
-\r
-#define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \\r
- ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \\r
- ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \\r
- ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8))\r
-\r
-#define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)\r
-\r
-#define IS_TIM_OSSR_STATE(__STATE__) (((__STATE__) == TIM_OSSR_ENABLE) || \\r
- ((__STATE__) == TIM_OSSR_DISABLE))\r
-\r
-#define IS_TIM_OSSI_STATE(__STATE__) (((__STATE__) == TIM_OSSI_ENABLE) || \\r
- ((__STATE__) == TIM_OSSI_DISABLE))\r
-\r
-#define IS_TIM_LOCK_LEVEL(__LEVEL__) (((__LEVEL__) == TIM_LOCKLEVEL_OFF) || \\r
- ((__LEVEL__) == TIM_LOCKLEVEL_1) || \\r
- ((__LEVEL__) == TIM_LOCKLEVEL_2) || \\r
- ((__LEVEL__) == TIM_LOCKLEVEL_3))\r
-\r
-#define IS_TIM_BREAK_FILTER(__BRKFILTER__) ((__BRKFILTER__) <= 0xFUL)\r
-\r
-\r
-#define IS_TIM_BREAK_STATE(__STATE__) (((__STATE__) == TIM_BREAK_ENABLE) || \\r
- ((__STATE__) == TIM_BREAK_DISABLE))\r
-\r
-#define IS_TIM_BREAK_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKPOLARITY_LOW) || \\r
- ((__POLARITY__) == TIM_BREAKPOLARITY_HIGH))\r
-\r
-#define IS_TIM_BREAK2_STATE(__STATE__) (((__STATE__) == TIM_BREAK2_ENABLE) || \\r
- ((__STATE__) == TIM_BREAK2_DISABLE))\r
-\r
-#define IS_TIM_BREAK2_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAK2POLARITY_LOW) || \\r
- ((__POLARITY__) == TIM_BREAK2POLARITY_HIGH))\r
-\r
-#define IS_TIM_AUTOMATIC_OUTPUT_STATE(__STATE__) (((__STATE__) == TIM_AUTOMATICOUTPUT_ENABLE) || \\r
- ((__STATE__) == TIM_AUTOMATICOUTPUT_DISABLE))\r
-\r
-#define IS_TIM_GROUPCH5(__OCREF__) ((((__OCREF__) & 0x1FFFFFFFU) == 0x00000000U))\r
-\r
-#define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \\r
- ((__SOURCE__) == TIM_TRGO_ENABLE) || \\r
- ((__SOURCE__) == TIM_TRGO_UPDATE) || \\r
- ((__SOURCE__) == TIM_TRGO_OC1) || \\r
- ((__SOURCE__) == TIM_TRGO_OC1REF) || \\r
- ((__SOURCE__) == TIM_TRGO_OC2REF) || \\r
- ((__SOURCE__) == TIM_TRGO_OC3REF) || \\r
- ((__SOURCE__) == TIM_TRGO_OC4REF))\r
-\r
-#define IS_TIM_TRGO2_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO2_RESET) || \\r
- ((__SOURCE__) == TIM_TRGO2_ENABLE) || \\r
- ((__SOURCE__) == TIM_TRGO2_UPDATE) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC1) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC1REF) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC2REF) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC3REF) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC3REF) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC4REF) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC5REF) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC6REF) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC4REF_RISINGFALLING) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC6REF_RISINGFALLING) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_RISING) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_RISING) || \\r
- ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING))\r
-\r
-#define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \\r
- ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE))\r
-\r
-#define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE) || \\r
- ((__MODE__) == TIM_SLAVEMODE_RESET) || \\r
- ((__MODE__) == TIM_SLAVEMODE_GATED) || \\r
- ((__MODE__) == TIM_SLAVEMODE_TRIGGER) || \\r
- ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1) || \\r
- ((__MODE__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))\r
-\r
-#define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1) || \\r
- ((__MODE__) == TIM_OCMODE_PWM2) || \\r
- ((__MODE__) == TIM_OCMODE_COMBINED_PWM1) || \\r
- ((__MODE__) == TIM_OCMODE_COMBINED_PWM2) || \\r
- ((__MODE__) == TIM_OCMODE_ASSYMETRIC_PWM1) || \\r
- ((__MODE__) == TIM_OCMODE_ASSYMETRIC_PWM2))\r
-\r
-#define IS_TIM_OC_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_TIMING) || \\r
- ((__MODE__) == TIM_OCMODE_ACTIVE) || \\r
- ((__MODE__) == TIM_OCMODE_INACTIVE) || \\r
- ((__MODE__) == TIM_OCMODE_TOGGLE) || \\r
- ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE) || \\r
- ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE) || \\r
- ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM1) || \\r
- ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM2))\r
-\r
-#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \\r
- ((__SELECTION__) == TIM_TS_ITR1) || \\r
- ((__SELECTION__) == TIM_TS_ITR2) || \\r
- ((__SELECTION__) == TIM_TS_ITR3) || \\r
- ((__SELECTION__) == TIM_TS_TI1F_ED) || \\r
- ((__SELECTION__) == TIM_TS_TI1FP1) || \\r
- ((__SELECTION__) == TIM_TS_TI2FP2) || \\r
- ((__SELECTION__) == TIM_TS_ETRF))\r
-\r
-#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \\r
- ((__SELECTION__) == TIM_TS_ITR1) || \\r
- ((__SELECTION__) == TIM_TS_ITR2) || \\r
- ((__SELECTION__) == TIM_TS_ITR3) || \\r
- ((__SELECTION__) == TIM_TS_NONE))\r
-\r
-#define IS_TIM_TRIGGERPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED ) || \\r
- ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \\r
- ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING ) || \\r
- ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING ) || \\r
- ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE ))\r
-\r
-#define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \\r
- ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \\r
- ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \\r
- ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8))\r
-\r
-#define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)\r
-\r
-#define IS_TIM_TI1SELECTION(__TI1SELECTION__) (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \\r
- ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION))\r
-\r
-#define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \\r
- ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS))\r
-\r
-#define IS_TIM_IC_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)\r
-\r
-#define IS_TIM_DEADTIME(__DEADTIME__) ((__DEADTIME__) <= 0xFFU)\r
-\r
-#define IS_TIM_BREAK_SYSTEM(__CONFIG__) (((__CONFIG__) == TIM_BREAK_SYSTEM_ECC) || \\r
- ((__CONFIG__) == TIM_BREAK_SYSTEM_PVD) || \\r
- ((__CONFIG__) == TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR) || \\r
- ((__CONFIG__) == TIM_BREAK_SYSTEM_LOCKUP))\r
-\r
-#define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) (((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER) || \\r
- ((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))\r
-\r
-#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \\r
-(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\\r
- ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))\r
-\r
-#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \\r
-(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC1PSC) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC2PSC) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC3PSC) :\\r
- ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC4PSC))\r
-\r
-#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \\r
-(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\\r
- ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))\r
-\r
-#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \\r
-(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\\r
- ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\\r
- ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of private macros -----------------------------------------------------*/\r
-\r
-/* Include TIM HAL Extended module */\r
-#include "stm32f7xx_hal_tim_ex.h"\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup TIM_Exported_Functions TIM Exported Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup TIM_Exported_Functions_Group1 TIM Time Base functions\r
- * @brief Time Base functions\r
- * @{\r
- */\r
-/* Time Base functions ********************************************************/\r
-HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim);\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIM_Exported_Functions_Group2 TIM Output Compare functions\r
- * @brief TIM Output Compare functions\r
- * @{\r
- */\r
-/* Timer Output Compare functions *********************************************/\r
-HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim);\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIM_Exported_Functions_Group3 TIM PWM functions\r
- * @brief TIM PWM functions\r
- * @{\r
- */\r
-/* Timer PWM functions ********************************************************/\r
-HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim);\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIM_Exported_Functions_Group4 TIM Input Capture functions\r
- * @brief TIM Input Capture functions\r
- * @{\r
- */\r
-/* Timer Input Capture functions **********************************************/\r
-HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim);\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIM_Exported_Functions_Group5 TIM One Pulse functions\r
- * @brief TIM One Pulse functions\r
- * @{\r
- */\r
-/* Timer One Pulse functions **************************************************/\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode);\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim);\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIM_Exported_Functions_Group6 TIM Encoder functions\r
- * @brief TIM Encoder functions\r
- * @{\r
- */\r
-/* Timer Encoder functions ****************************************************/\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig);\r
-HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim);\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIM_Exported_Functions_Group7 TIM IRQ handler management\r
- * @brief IRQ handler management\r
- * @{\r
- */\r
-/* Interrupt Handler functions ***********************************************/\r
-void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions\r
- * @brief Peripheral Control functions\r
- * @{\r
- */\r
-/* Control functions *********************************************************/\r
-HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel);\r
-HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);\r
-HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);\r
-HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);\r
-HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \\r
- uint32_t *BurstBuffer, uint32_t BurstLength);\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \\r
- uint32_t *BurstBuffer, uint32_t BurstLength);\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);\r
-HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);\r
-uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions\r
- * @brief TIM Callbacks functions\r
- * @{\r
- */\r
-/* Callback in non blocking modes (Interrupt and DMA) *************************/\r
-void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);\r
-\r
-/* Callbacks Register/UnRegister functions ***********************************/\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
-HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback);\r
-HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions\r
- * @brief Peripheral State functions\r
- * @{\r
- */\r
-/* Peripheral State functions ************************************************/\r
-HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);\r
-HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim);\r
-HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim);\r
-HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim);\r
-HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim);\r
-HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of exported functions -------------------------------------------------*/\r
-\r
-/* Private functions----------------------------------------------------------*/\r
-/** @defgroup TIM_Private_Functions TIM Private Functions\r
-* @{\r
-*/\r
-void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);\r
-void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);\r
-void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\r
-void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler,\r
- uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter);\r
-\r
-void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma);\r
-void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma);\r
-void TIM_DMAError(DMA_HandleTypeDef *hdma);\r
-void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma);\r
-void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma);\r
-void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
-void TIM_ResetCallback(TIM_HandleTypeDef *htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
-/**\r
-* @}\r
-*/\r
-/* End of private functions --------------------------------------------------*/\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* STM32F7xx_HAL_TIM_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_tim_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of TIM HAL Extended module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef STM32F7xx_HAL_TIM_EX_H\r
-#define STM32F7xx_HAL_TIM_EX_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup TIMEx\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup TIMEx_Exported_Types TIM Extended Exported Types\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief TIM Hall sensor Configuration Structure definition\r
- */\r
-\r
-typedef struct\r
-{\r
- uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.\r
- This parameter can be a value of @ref TIM_Input_Capture_Polarity */\r
-\r
- uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler.\r
- This parameter can be a value of @ref TIM_Input_Capture_Prescaler */\r
-\r
- uint32_t IC1Filter; /*!< Specifies the input capture filter.\r
- This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */\r
-\r
- uint32_t Commutation_Delay; /*!< Specifies the pulse value to be loaded into the Capture Compare Register.\r
- This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */\r
-} TIM_HallSensor_InitTypeDef;\r
-#if defined(TIM_BREAK_INPUT_SUPPORT)\r
-\r
-/**\r
- * @brief TIM Break/Break2 input configuration\r
- */\r
-typedef struct\r
-{\r
- uint32_t Source; /*!< Specifies the source of the timer break input.\r
- This parameter can be a value of @ref TIMEx_Break_Input_Source */\r
- uint32_t Enable; /*!< Specifies whether or not the break input source is enabled.\r
- This parameter can be a value of @ref TIMEx_Break_Input_Source_Enable */\r
- uint32_t Polarity; /*!< Specifies the break input source polarity.\r
- This parameter can be a value of @ref TIMEx_Break_Input_Source_Polarity\r
- Not relevant when analog watchdog output of the DFSDM1 used as break input source */\r
-}\r
-TIMEx_BreakInputConfigTypeDef;\r
-\r
-#endif /* TIM_BREAK_INPUT_SUPPORT */\r
-/**\r
- * @}\r
- */\r
-/* End of exported types -----------------------------------------------------*/\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup TIMEx_Exported_Constants TIM Extended Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup TIMEx_Remap TIM Extended Remapping\r
- * @{\r
- */\r
-#define TIM_TIM2_TIM8_TRGO (0x00000000U)\r
-#define TIM_TIM2_ETH_PTP (0x00000400U)\r
-#define TIM_TIM2_USBFS_SOF (0x00000800U)\r
-#define TIM_TIM2_USBHS_SOF (0x00000C00U)\r
-#define TIM_TIM5_GPIO (0x00000000U)\r
-#define TIM_TIM5_LSI (0x00000040U)\r
-#define TIM_TIM5_LSE (0x00000080U)\r
-#define TIM_TIM5_RTC (0x000000C0U)\r
-#define TIM_TIM11_GPIO (0x00000000U)\r
-#define TIM_TIM11_SPDIFRX (0x00000001U)\r
-#define TIM_TIM11_HSE (0x00000002U)\r
-#define TIM_TIM11_MCO1 (0x00000003U)\r
-/**\r
- * @}\r
- */\r
-#if defined(TIM_BREAK_INPUT_SUPPORT)\r
-\r
-/** @defgroup TIMEx_Break_Input TIM Extended Break input\r
- * @{\r
- */\r
-#define TIM_BREAKINPUT_BRK 0x00000001U /* !< Timer break input */\r
-#define TIM_BREAKINPUT_BRK2 0x00000002U /* !< Timer break2 input */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Break_Input_Source TIM Extended Break input source\r
- * @{\r
- */\r
-#define TIM_BREAKINPUTSOURCE_BKIN ((uint32_t)0x00000001U) /* !< An external source (GPIO) is connected to the BKIN pin */\r
-#define TIM_BREAKINPUTSOURCE_DFSDM1 ((uint32_t)0x00000008U) /* !< The analog watchdog output of the DFSDM1 peripheral is connected to the break input */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Break_Input_Source_Enable TIM Extended Break input source enabling\r
- * @{\r
- */\r
-#define TIM_BREAKINPUTSOURCE_DISABLE 0x00000000U /* !< Break input source is disabled */\r
-#define TIM_BREAKINPUTSOURCE_ENABLE 0x00000001U /* !< Break input source is enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Break_Input_Source_Polarity TIM Extended Break input polarity\r
- * @{\r
- */\r
-#define TIM_BREAKINPUTSOURCE_POLARITY_LOW 0x00000001U /* !< Break input source is active low */\r
-#define TIM_BREAKINPUTSOURCE_POLARITY_HIGH 0x00000000U /* !< Break input source is active_high */\r
-/**\r
- * @}\r
- */\r
-#endif /* TIM_BREAK_INPUT_SUPPORT */\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of exported constants -------------------------------------------------*/\r
-\r
-/* Exported macro ------------------------------------------------------------*/\r
-/** @defgroup TIMEx_Exported_Macros TIM Extended Exported Macros\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of exported macro -----------------------------------------------------*/\r
-\r
-/* Private macro -------------------------------------------------------------*/\r
-/** @defgroup TIMEx_Private_Macros TIM Extended Private Macros\r
- * @{\r
- */\r
-#define IS_TIM_REMAP(__TIM_REMAP__) (((__TIM_REMAP__) == TIM_TIM2_TIM8_TRGO)||\\r
- ((__TIM_REMAP__) == TIM_TIM2_ETH_PTP) ||\\r
- ((__TIM_REMAP__) == TIM_TIM2_USBFS_SOF)||\\r
- ((__TIM_REMAP__) == TIM_TIM2_USBHS_SOF)||\\r
- ((__TIM_REMAP__) == TIM_TIM5_GPIO) ||\\r
- ((__TIM_REMAP__) == TIM_TIM5_LSI) ||\\r
- ((__TIM_REMAP__) == TIM_TIM5_LSE) ||\\r
- ((__TIM_REMAP__) == TIM_TIM5_RTC) ||\\r
- ((__TIM_REMAP__) == TIM_TIM11_GPIO) ||\\r
- ((__TIM_REMAP__) == TIM_TIM11_SPDIFRX) ||\\r
- ((__TIM_REMAP__) == TIM_TIM11_HSE) ||\\r
- ((__TIM_REMAP__) == TIM_TIM11_MCO1))\r
-#if defined(TIM_BREAK_INPUT_SUPPORT)\r
-\r
-#define IS_TIM_BREAKINPUT(__BREAKINPUT__) (((__BREAKINPUT__) == TIM_BREAKINPUT_BRK) || \\r
- ((__BREAKINPUT__) == TIM_BREAKINPUT_BRK2))\r
-\r
-#define IS_TIM_BREAKINPUTSOURCE(__SOURCE__) (((__SOURCE__) == TIM_BREAKINPUTSOURCE_BKIN) || \\r
- ((__SOURCE__) == TIM_BREAKINPUTSOURCE_DFSDM))\r
-\r
-#define IS_TIM_BREAKINPUTSOURCE_STATE(__STATE__) (((__STATE__) == TIM_BREAKINPUTSOURCE_DISABLE) || \\r
- ((__STATE__) == TIM_BREAKINPUTSOURCE_ENABLE))\r
-\r
-#define IS_TIM_BREAKINPUTSOURCE_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_LOW) || \\r
- ((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_HIGH))\r
-#endif /* TIM_BREAK_INPUT_SUPPORT */\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of private macro ------------------------------------------------------*/\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup TIMEx_Exported_Functions TIM Extended Exported Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions\r
- * @brief Timer Hall Sensor functions\r
- * @{\r
- */\r
-/* Timer Hall Sensor functions **********************************************/\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);\r
-\r
-void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim);\r
-void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim);\r
-\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim);\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim);\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim);\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions\r
- * @brief Timer Complementary Output Compare functions\r
- * @{\r
- */\r
-/* Timer Complementary Output Compare functions *****************************/\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions\r
- * @brief Timer Complementary PWM functions\r
- * @{\r
- */\r
-/* Timer Complementary PWM functions ****************************************/\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/* Non-Blocking mode: DMA */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions\r
- * @brief Timer Complementary One Pulse functions\r
- * @{\r
- */\r
-/* Timer Complementary One Pulse functions **********************************/\r
-/* Blocking mode: Polling */\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-\r
-/* Non-Blocking mode: Interrupt */\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions\r
- * @brief Peripheral Control functions\r
- * @{\r
- */\r
-/* Extended Control functions ************************************************/\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);\r
-HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig);\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);\r
-#if defined(TIM_BREAK_INPUT_SUPPORT)\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput, TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);\r
-#endif /* TIM_BREAK_INPUT_SUPPORT */\r
-HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);\r
-HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions\r
- * @brief Extended Callbacks functions\r
- * @{\r
- */\r
-/* Extended Callback **********************************************************/\r
-void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim);\r
-void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim);\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions\r
- * @brief Extended Peripheral State functions\r
- * @{\r
- */\r
-/* Extended Peripheral State functions ***************************************/\r
-HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim);\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* End of exported functions -------------------------------------------------*/\r
-\r
-/* Private functions----------------------------------------------------------*/\r
-/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions\r
- * @{\r
- */\r
-void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);\r
-void TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma);\r
-/**\r
- * @}\r
- */\r
-/* End of private functions --------------------------------------------------*/\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-\r
-#endif /* STM32F7xx_HAL_TIM_EX_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_uart.h\r
- * @author MCD Application Team\r
- * @brief Header file of UART HAL module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef STM32F7xx_HAL_UART_H\r
-#define STM32F7xx_HAL_UART_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup UART\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup UART_Exported_Types UART Exported Types\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief UART Init Structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t BaudRate; /*!< This member configures the UART communication baud rate.\r
- The baud rate register is computed using the following formula:\r
- - If oversampling is 16 or in LIN mode,\r
- Baud Rate Register = ((uart_ker_ck) / ((huart->Init.BaudRate)))\r
- - If oversampling is 8,\r
- Baud Rate Register[15:4] = ((2 * uart_ker_ck) / ((huart->Init.BaudRate)))[15:4]\r
- Baud Rate Register[3] = 0\r
- Baud Rate Register[2:0] = (((2 * uart_ker_ck) / ((huart->Init.BaudRate)))[3:0]) >> 1\r
- where uart_ker_ck is the UART input clock */\r
-\r
- uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.\r
- This parameter can be a value of @ref UARTEx_Word_Length. */\r
-\r
- uint32_t StopBits; /*!< Specifies the number of stop bits transmitted.\r
- This parameter can be a value of @ref UART_Stop_Bits. */\r
-\r
- uint32_t Parity; /*!< Specifies the parity mode.\r
- This parameter can be a value of @ref UART_Parity\r
- @note When parity is enabled, the computed parity is inserted\r
- at the MSB position of the transmitted data (9th bit when\r
- the word length is set to 9 data bits; 8th bit when the\r
- word length is set to 8 data bits). */\r
-\r
- uint32_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.\r
- This parameter can be a value of @ref UART_Mode. */\r
-\r
- uint32_t HwFlowCtl; /*!< Specifies whether the hardware flow control mode is enabled\r
- or disabled.\r
- This parameter can be a value of @ref UART_Hardware_Flow_Control. */\r
-\r
- uint32_t OverSampling; /*!< Specifies whether the Over sampling 8 is enabled or disabled, to achieve higher speed (up to f_PCLK/8).\r
- This parameter can be a value of @ref UART_Over_Sampling. */\r
-\r
- uint32_t OneBitSampling; /*!< Specifies whether a single sample or three samples' majority vote is selected.\r
- Selecting the single sample method increases the receiver tolerance to clock\r
- deviations. This parameter can be a value of @ref UART_OneBit_Sampling. */\r
-\r
-\r
-} UART_InitTypeDef;\r
-\r
-/**\r
- * @brief UART Advanced Features initialization structure definition\r
- */\r
-typedef struct\r
-{\r
- uint32_t AdvFeatureInit; /*!< Specifies which advanced UART features is initialized. Several\r
- Advanced Features may be initialized at the same time .\r
- This parameter can be a value of @ref UART_Advanced_Features_Initialization_Type. */\r
-\r
- uint32_t TxPinLevelInvert; /*!< Specifies whether the TX pin active level is inverted.\r
- This parameter can be a value of @ref UART_Tx_Inv. */\r
-\r
- uint32_t RxPinLevelInvert; /*!< Specifies whether the RX pin active level is inverted.\r
- This parameter can be a value of @ref UART_Rx_Inv. */\r
-\r
- uint32_t DataInvert; /*!< Specifies whether data are inverted (positive/direct logic\r
- vs negative/inverted logic).\r
- This parameter can be a value of @ref UART_Data_Inv. */\r
-\r
- uint32_t Swap; /*!< Specifies whether TX and RX pins are swapped.\r
- This parameter can be a value of @ref UART_Rx_Tx_Swap. */\r
-\r
- uint32_t OverrunDisable; /*!< Specifies whether the reception overrun detection is disabled.\r
- This parameter can be a value of @ref UART_Overrun_Disable. */\r
-\r
- uint32_t DMADisableonRxError; /*!< Specifies whether the DMA is disabled in case of reception error.\r
- This parameter can be a value of @ref UART_DMA_Disable_on_Rx_Error. */\r
-\r
- uint32_t AutoBaudRateEnable; /*!< Specifies whether auto Baud rate detection is enabled.\r
- This parameter can be a value of @ref UART_AutoBaudRate_Enable. */\r
-\r
- uint32_t AutoBaudRateMode; /*!< If auto Baud rate detection is enabled, specifies how the rate\r
- detection is carried out.\r
- This parameter can be a value of @ref UART_AutoBaud_Rate_Mode. */\r
-\r
- uint32_t MSBFirst; /*!< Specifies whether MSB is sent first on UART line.\r
- This parameter can be a value of @ref UART_MSB_First. */\r
-} UART_AdvFeatureInitTypeDef;\r
-\r
-\r
-\r
-/**\r
- * @brief HAL UART State definition\r
- * @note HAL UART State value is a combination of 2 different substates: gState and RxState (see @ref UART_State_Definition).\r
- * - gState contains UART state information related to global Handle management\r
- * and also information related to Tx operations.\r
- * gState value coding follow below described bitmap :\r
- * b7-b6 Error information\r
- * 00 : No Error\r
- * 01 : (Not Used)\r
- * 10 : Timeout\r
- * 11 : Error\r
- * b5 Peripheral initialization status\r
- * 0 : Reset (Peripheral not initialized)\r
- * 1 : Init done (Peripheral not initialized. HAL UART Init function already called)\r
- * b4-b3 (not used)\r
- * xx : Should be set to 00\r
- * b2 Intrinsic process state\r
- * 0 : Ready\r
- * 1 : Busy (Peripheral busy with some configuration or internal operations)\r
- * b1 (not used)\r
- * x : Should be set to 0\r
- * b0 Tx state\r
- * 0 : Ready (no Tx operation ongoing)\r
- * 1 : Busy (Tx operation ongoing)\r
- * - RxState contains information related to Rx operations.\r
- * RxState value coding follow below described bitmap :\r
- * b7-b6 (not used)\r
- * xx : Should be set to 00\r
- * b5 Peripheral initialization status\r
- * 0 : Reset (Peripheral not initialized)\r
- * 1 : Init done (Peripheral not initialized)\r
- * b4-b2 (not used)\r
- * xxx : Should be set to 000\r
- * b1 Rx state\r
- * 0 : Ready (no Rx operation ongoing)\r
- * 1 : Busy (Rx operation ongoing)\r
- * b0 (not used)\r
- * x : Should be set to 0.\r
- */\r
-typedef uint32_t HAL_UART_StateTypeDef;\r
-\r
-/**\r
- * @brief UART clock sources definition\r
- */\r
-typedef enum\r
-{\r
- UART_CLOCKSOURCE_PCLK1 = 0x00U, /*!< PCLK1 clock source */\r
- UART_CLOCKSOURCE_PCLK2 = 0x01U, /*!< PCLK2 clock source */\r
- UART_CLOCKSOURCE_HSI = 0x02U, /*!< HSI clock source */\r
- UART_CLOCKSOURCE_SYSCLK = 0x04U, /*!< SYSCLK clock source */\r
- UART_CLOCKSOURCE_LSE = 0x08U, /*!< LSE clock source */\r
- UART_CLOCKSOURCE_UNDEFINED = 0x10U /*!< Undefined clock source */\r
-} UART_ClockSourceTypeDef;\r
-\r
-/**\r
- * @brief UART handle Structure definition\r
- */\r
-typedef struct __UART_HandleTypeDef\r
-{\r
- USART_TypeDef *Instance; /*!< UART registers base address */\r
-\r
- UART_InitTypeDef Init; /*!< UART communication parameters */\r
-\r
- UART_AdvFeatureInitTypeDef AdvancedInit; /*!< UART Advanced Features initialization parameters */\r
-\r
- uint8_t *pTxBuffPtr; /*!< Pointer to UART Tx transfer Buffer */\r
-\r
- uint16_t TxXferSize; /*!< UART Tx Transfer size */\r
-\r
- __IO uint16_t TxXferCount; /*!< UART Tx Transfer Counter */\r
-\r
- uint8_t *pRxBuffPtr; /*!< Pointer to UART Rx transfer Buffer */\r
-\r
- uint16_t RxXferSize; /*!< UART Rx Transfer size */\r
-\r
- __IO uint16_t RxXferCount; /*!< UART Rx Transfer Counter */\r
-\r
- uint16_t Mask; /*!< UART Rx RDR register mask */\r
-\r
-\r
- void (*RxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */\r
-\r
- void (*TxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */\r
-\r
- DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */\r
-\r
- DMA_HandleTypeDef *hdmarx; /*!< UART Rx DMA Handle parameters */\r
-\r
- HAL_LockTypeDef Lock; /*!< Locking object */\r
-\r
- __IO HAL_UART_StateTypeDef gState; /*!< UART state information related to global Handle management\r
- and also related to Tx operations.\r
- This parameter can be a value of @ref HAL_UART_StateTypeDef */\r
-\r
- __IO HAL_UART_StateTypeDef RxState; /*!< UART state information related to Rx operations.\r
- This parameter can be a value of @ref HAL_UART_StateTypeDef */\r
-\r
- __IO uint32_t ErrorCode; /*!< UART Error code */\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- void (* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Tx Half Complete Callback */\r
- void (* TxCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Tx Complete Callback */\r
- void (* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Rx Half Complete Callback */\r
- void (* RxCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Rx Complete Callback */\r
- void (* ErrorCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Error Callback */\r
- void (* AbortCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Complete Callback */\r
- void (* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Transmit Complete Callback */\r
- void (* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Receive Complete Callback */\r
- void (* WakeupCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Wakeup Callback */\r
-\r
- void (* MspInitCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Msp Init callback */\r
- void (* MspDeInitCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Msp DeInit callback */\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-\r
-} UART_HandleTypeDef;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
-/**\r
- * @brief HAL UART Callback ID enumeration definition\r
- */\r
-typedef enum\r
-{\r
- HAL_UART_TX_HALFCOMPLETE_CB_ID = 0x00U, /*!< UART Tx Half Complete Callback ID */\r
- HAL_UART_TX_COMPLETE_CB_ID = 0x01U, /*!< UART Tx Complete Callback ID */\r
- HAL_UART_RX_HALFCOMPLETE_CB_ID = 0x02U, /*!< UART Rx Half Complete Callback ID */\r
- HAL_UART_RX_COMPLETE_CB_ID = 0x03U, /*!< UART Rx Complete Callback ID */\r
- HAL_UART_ERROR_CB_ID = 0x04U, /*!< UART Error Callback ID */\r
- HAL_UART_ABORT_COMPLETE_CB_ID = 0x05U, /*!< UART Abort Complete Callback ID */\r
- HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x06U, /*!< UART Abort Transmit Complete Callback ID */\r
- HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID = 0x07U, /*!< UART Abort Receive Complete Callback ID */\r
- HAL_UART_WAKEUP_CB_ID = 0x08U, /*!< UART Wakeup Callback ID */\r
-\r
- HAL_UART_MSPINIT_CB_ID = 0x0BU, /*!< UART MspInit callback ID */\r
- HAL_UART_MSPDEINIT_CB_ID = 0x0CU /*!< UART MspDeInit callback ID */\r
-\r
-} HAL_UART_CallbackIDTypeDef;\r
-\r
-/**\r
- * @brief HAL UART Callback pointer definition\r
- */\r
-typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer to an UART callback function */\r
-\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup UART_Exported_Constants UART Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup UART_State_Definition UART State Code Definition\r
- * @{\r
- */\r
-#define HAL_UART_STATE_RESET 0x00000000U /*!< Peripheral is not initialized\r
- Value is allowed for gState and RxState */\r
-#define HAL_UART_STATE_READY 0x00000020U /*!< Peripheral Initialized and ready for use\r
- Value is allowed for gState and RxState */\r
-#define HAL_UART_STATE_BUSY 0x00000024U /*!< an internal process is ongoing\r
- Value is allowed for gState only */\r
-#define HAL_UART_STATE_BUSY_TX 0x00000021U /*!< Data Transmission process is ongoing\r
- Value is allowed for gState only */\r
-#define HAL_UART_STATE_BUSY_RX 0x00000022U /*!< Data Reception process is ongoing\r
- Value is allowed for RxState only */\r
-#define HAL_UART_STATE_BUSY_TX_RX 0x00000023U /*!< Data Transmission and Reception process is ongoing\r
- Not to be used for neither gState nor RxState.\r
- Value is result of combination (Or) between gState and RxState values */\r
-#define HAL_UART_STATE_TIMEOUT 0x000000A0U /*!< Timeout state\r
- Value is allowed for gState only */\r
-#define HAL_UART_STATE_ERROR 0x000000E0U /*!< Error\r
- Value is allowed for gState only */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Error_Definition UART Error Definition\r
- * @{\r
- */\r
-#define HAL_UART_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */\r
-#define HAL_UART_ERROR_PE ((uint32_t)0x00000001U) /*!< Parity error */\r
-#define HAL_UART_ERROR_NE ((uint32_t)0x00000002U) /*!< Noise error */\r
-#define HAL_UART_ERROR_FE ((uint32_t)0x00000004U) /*!< Frame error */\r
-#define HAL_UART_ERROR_ORE ((uint32_t)0x00000008U) /*!< Overrun error */\r
-#define HAL_UART_ERROR_DMA ((uint32_t)0x00000010U) /*!< DMA transfer error */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
-#define HAL_UART_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U) /*!< Invalid Callback error */\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Stop_Bits UART Number of Stop Bits\r
- * @{\r
- */\r
-#define UART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< UART frame with 0.5 stop bit */\r
-#define UART_STOPBITS_1 0x00000000U /*!< UART frame with 1 stop bit */\r
-#define UART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< UART frame with 1.5 stop bits */\r
-#define UART_STOPBITS_2 USART_CR2_STOP_1 /*!< UART frame with 2 stop bits */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Parity UART Parity\r
- * @{\r
- */\r
-#define UART_PARITY_NONE 0x00000000U /*!< No parity */\r
-#define UART_PARITY_EVEN USART_CR1_PCE /*!< Even parity */\r
-#define UART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Odd parity */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Hardware_Flow_Control UART Hardware Flow Control\r
- * @{\r
- */\r
-#define UART_HWCONTROL_NONE 0x00000000U /*!< No hardware control */\r
-#define UART_HWCONTROL_RTS USART_CR3_RTSE /*!< Request To Send */\r
-#define UART_HWCONTROL_CTS USART_CR3_CTSE /*!< Clear To Send */\r
-#define UART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< Request and Clear To Send */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Mode UART Transfer Mode\r
- * @{\r
- */\r
-#define UART_MODE_RX USART_CR1_RE /*!< RX mode */\r
-#define UART_MODE_TX USART_CR1_TE /*!< TX mode */\r
-#define UART_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< RX and TX mode */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_State UART State\r
- * @{\r
- */\r
-#define UART_STATE_DISABLE 0x00000000U /*!< UART disabled */\r
-#define UART_STATE_ENABLE USART_CR1_UE /*!< UART enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Over_Sampling UART Over Sampling\r
- * @{\r
- */\r
-#define UART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */\r
-#define UART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_OneBit_Sampling UART One Bit Sampling Method\r
- * @{\r
- */\r
-#define UART_ONE_BIT_SAMPLE_DISABLE 0x00000000U /*!< One-bit sampling disable */\r
-#define UART_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT /*!< One-bit sampling enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_AutoBaud_Rate_Mode UART Advanced Feature AutoBaud Rate Mode\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT 0x00000000U /*!< Auto Baud rate detection on start bit */\r
-#define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE USART_CR2_ABRMODE_0 /*!< Auto Baud rate detection on falling edge */\r
-#define UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME USART_CR2_ABRMODE_1 /*!< Auto Baud rate detection on 0x7F frame detection */\r
-#define UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME USART_CR2_ABRMODE /*!< Auto Baud rate detection on 0x55 frame detection */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Receiver_TimeOut UART Receiver TimeOut\r
- * @{\r
- */\r
-#define UART_RECEIVER_TIMEOUT_DISABLE 0x00000000U /*!< UART receiver timeout disable */\r
-#define UART_RECEIVER_TIMEOUT_ENABLE USART_CR2_RTOEN /*!< UART receiver timeout enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_LIN UART Local Interconnection Network mode\r
- * @{\r
- */\r
-#define UART_LIN_DISABLE 0x00000000U /*!< Local Interconnect Network disable */\r
-#define UART_LIN_ENABLE USART_CR2_LINEN /*!< Local Interconnect Network enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_LIN_Break_Detection UART LIN Break Detection\r
- * @{\r
- */\r
-#define UART_LINBREAKDETECTLENGTH_10B 0x00000000U /*!< LIN 10-bit break detection length */\r
-#define UART_LINBREAKDETECTLENGTH_11B USART_CR2_LBDL /*!< LIN 11-bit break detection length */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_DMA_Tx UART DMA Tx\r
- * @{\r
- */\r
-#define UART_DMA_TX_DISABLE 0x00000000U /*!< UART DMA TX disabled */\r
-#define UART_DMA_TX_ENABLE USART_CR3_DMAT /*!< UART DMA TX enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_DMA_Rx UART DMA Rx\r
- * @{\r
- */\r
-#define UART_DMA_RX_DISABLE 0x00000000U /*!< UART DMA RX disabled */\r
-#define UART_DMA_RX_ENABLE USART_CR3_DMAR /*!< UART DMA RX enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Half_Duplex_Selection UART Half Duplex Selection\r
- * @{\r
- */\r
-#define UART_HALF_DUPLEX_DISABLE 0x00000000U /*!< UART half-duplex disabled */\r
-#define UART_HALF_DUPLEX_ENABLE USART_CR3_HDSEL /*!< UART half-duplex enabled */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_WakeUp_Methods UART WakeUp Methods\r
- * @{\r
- */\r
-#define UART_WAKEUPMETHOD_IDLELINE 0x00000000U /*!< UART wake-up on idle line */\r
-#define UART_WAKEUPMETHOD_ADDRESSMARK USART_CR1_WAKE /*!< UART wake-up on address mark */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Request_Parameters UART Request Parameters\r
- * @{\r
- */\r
-#define UART_AUTOBAUD_REQUEST USART_RQR_ABRRQ /*!< Auto-Baud Rate Request */\r
-#define UART_SENDBREAK_REQUEST USART_RQR_SBKRQ /*!< Send Break Request */\r
-#define UART_MUTE_MODE_REQUEST USART_RQR_MMRQ /*!< Mute Mode Request */\r
-#define UART_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ /*!< Receive Data flush Request */\r
-#define UART_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ /*!< Transmit data flush Request */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Advanced_Features_Initialization_Type UART Advanced Feature Initialization Type\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_NO_INIT 0x00000000U /*!< No advanced feature initialization */\r
-#define UART_ADVFEATURE_TXINVERT_INIT 0x00000001U /*!< TX pin active level inversion */\r
-#define UART_ADVFEATURE_RXINVERT_INIT 0x00000002U /*!< RX pin active level inversion */\r
-#define UART_ADVFEATURE_DATAINVERT_INIT 0x00000004U /*!< Binary data inversion */\r
-#define UART_ADVFEATURE_SWAP_INIT 0x00000008U /*!< TX/RX pins swap */\r
-#define UART_ADVFEATURE_RXOVERRUNDISABLE_INIT 0x00000010U /*!< RX overrun disable */\r
-#define UART_ADVFEATURE_DMADISABLEONERROR_INIT 0x00000020U /*!< DMA disable on Reception Error */\r
-#define UART_ADVFEATURE_AUTOBAUDRATE_INIT 0x00000040U /*!< Auto Baud rate detection initialization */\r
-#define UART_ADVFEATURE_MSBFIRST_INIT 0x00000080U /*!< Most significant bit sent/received first */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Tx_Inv UART Advanced Feature TX Pin Active Level Inversion\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_TXINV_DISABLE 0x00000000U /*!< TX pin active level inversion disable */\r
-#define UART_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV /*!< TX pin active level inversion enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Rx_Inv UART Advanced Feature RX Pin Active Level Inversion\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_RXINV_DISABLE 0x00000000U /*!< RX pin active level inversion disable */\r
-#define UART_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV /*!< RX pin active level inversion enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Data_Inv UART Advanced Feature Binary Data Inversion\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_DATAINV_DISABLE 0x00000000U /*!< Binary data inversion disable */\r
-#define UART_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV /*!< Binary data inversion enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Rx_Tx_Swap UART Advanced Feature RX TX Pins Swap\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_SWAP_DISABLE 0x00000000U /*!< TX/RX pins swap disable */\r
-#define UART_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP /*!< TX/RX pins swap enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Overrun_Disable UART Advanced Feature Overrun Disable\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_OVERRUN_ENABLE 0x00000000U /*!< RX overrun enable */\r
-#define UART_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS /*!< RX overrun disable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_AutoBaudRate_Enable UART Advanced Feature Auto BaudRate Enable\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_AUTOBAUDRATE_DISABLE 0x00000000U /*!< RX Auto Baud rate detection enable */\r
-#define UART_ADVFEATURE_AUTOBAUDRATE_ENABLE USART_CR2_ABREN /*!< RX Auto Baud rate detection disable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_DMA_Disable_on_Rx_Error UART Advanced Feature DMA Disable On Rx Error\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U /*!< DMA enable on Reception Error */\r
-#define UART_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE /*!< DMA disable on Reception Error */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_MSB_First UART Advanced Feature MSB First\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U /*!< Most significant bit sent/received first disable */\r
-#define UART_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST /*!< Most significant bit sent/received first enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Mute_Mode UART Advanced Feature Mute Mode Enable\r
- * @{\r
- */\r
-#define UART_ADVFEATURE_MUTEMODE_DISABLE 0x00000000U /*!< UART mute mode disable */\r
-#define UART_ADVFEATURE_MUTEMODE_ENABLE USART_CR1_MME /*!< UART mute mode enable */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_CR2_ADDRESS_LSB_POS UART Address-matching LSB Position In CR2 Register\r
- * @{\r
- */\r
-#define UART_CR2_ADDRESS_LSB_POS 24U /*!< UART address-matching LSB position in CR2 register */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_DriverEnable_Polarity UART DriverEnable Polarity\r
- * @{\r
- */\r
-#define UART_DE_POLARITY_HIGH 0x00000000U /*!< Driver enable signal is active high */\r
-#define UART_DE_POLARITY_LOW USART_CR3_DEP /*!< Driver enable signal is active low */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_CR1_DEAT_ADDRESS_LSB_POS UART Driver Enable Assertion Time LSB Position In CR1 Register\r
- * @{\r
- */\r
-#define UART_CR1_DEAT_ADDRESS_LSB_POS 21U /*!< UART Driver Enable assertion time LSB position in CR1 register */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_CR1_DEDT_ADDRESS_LSB_POS UART Driver Enable DeAssertion Time LSB Position In CR1 Register\r
- * @{\r
- */\r
-#define UART_CR1_DEDT_ADDRESS_LSB_POS 16U /*!< UART Driver Enable de-assertion time LSB position in CR1 register */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Interruption_Mask UART Interruptions Flag Mask\r
- * @{\r
- */\r
-#define UART_IT_MASK 0x001FU /*!< UART interruptions flags mask */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_TimeOut_Value UART polling-based communications time-out value\r
- * @{\r
- */\r
-#define HAL_UART_TIMEOUT_VALUE 0x1FFFFFFU /*!< UART polling-based communications time-out value */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Flags UART Status Flags\r
- * Elements values convention: 0xXXXX\r
- * - 0xXXXX : Flag mask in the ISR register\r
- * @{\r
- */\r
-#define UART_FLAG_TEACK USART_ISR_TEACK /*!< UART transmit enable acknowledge flag */\r
-#define UART_FLAG_RWU USART_ISR_RWU /*!< UART receiver wake-up from mute mode flag */\r
-#define UART_FLAG_SBKF USART_ISR_SBKF /*!< UART send break flag */\r
-#define UART_FLAG_CMF USART_ISR_CMF /*!< UART character match flag */\r
-#define UART_FLAG_BUSY USART_ISR_BUSY /*!< UART busy flag */\r
-#define UART_FLAG_ABRF USART_ISR_ABRF /*!< UART auto Baud rate flag */\r
-#define UART_FLAG_ABRE USART_ISR_ABRE /*!< UART auto Baud rate error */\r
-#define UART_FLAG_CTS USART_ISR_CTS /*!< UART clear to send flag */\r
-#define UART_FLAG_CTSIF USART_ISR_CTSIF /*!< UART clear to send interrupt flag */\r
-#define UART_FLAG_LBDF USART_ISR_LBDF /*!< UART LIN break detection flag */\r
-#define UART_FLAG_TXE USART_ISR_TXE /*!< UART transmit data register empty */\r
-#define UART_FLAG_TC USART_ISR_TC /*!< UART transmission complete */\r
-#define UART_FLAG_RXNE USART_ISR_RXNE /*!< UART read data register not empty */\r
-#define UART_FLAG_IDLE USART_ISR_IDLE /*!< UART idle flag */\r
-#define UART_FLAG_ORE USART_ISR_ORE /*!< UART overrun error */\r
-#define UART_FLAG_NE USART_ISR_NE /*!< UART noise error */\r
-#define UART_FLAG_FE USART_ISR_FE /*!< UART frame error */\r
-#define UART_FLAG_PE USART_ISR_PE /*!< UART parity error */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Interrupt_definition UART Interrupts Definition\r
- * Elements values convention: 000ZZZZZ0XXYYYYYb\r
- * - YYYYY : Interrupt source position in the XX register (5bits)\r
- * - XX : Interrupt source register (2bits)\r
- * - 01: CR1 register\r
- * - 10: CR2 register\r
- * - 11: CR3 register\r
- * - ZZZZZ : Flag position in the ISR register(5bits)\r
- * Elements values convention: 000000000XXYYYYYb\r
- * - YYYYY : Interrupt source position in the XX register (5bits)\r
- * - XX : Interrupt source register (2bits)\r
- * - 01: CR1 register\r
- * - 10: CR2 register\r
- * - 11: CR3 register\r
- * Elements values convention: 0000ZZZZ00000000b\r
- * - ZZZZ : Flag position in the ISR register(4bits)\r
- * @{\r
- */\r
-#define UART_IT_PE 0x0028U /*!< UART parity error interruption */\r
-#define UART_IT_TXE 0x0727U /*!< UART transmit data register empty interruption */\r
-#define UART_IT_TC 0x0626U /*!< UART transmission complete interruption */\r
-#define UART_IT_RXNE 0x0525U /*!< UART read data register not empty interruption */\r
-#define UART_IT_IDLE 0x0424U /*!< UART idle interruption */\r
-#define UART_IT_LBD 0x0846U /*!< UART LIN break detection interruption */\r
-#define UART_IT_CTS 0x096AU /*!< UART CTS interruption */\r
-#define UART_IT_CM 0x112EU /*!< UART character match interruption */\r
-\r
-#define UART_IT_ERR 0x0060U /*!< UART error interruption */\r
-\r
-#define UART_IT_ORE 0x0300U /*!< UART overrun error interruption */\r
-#define UART_IT_NE 0x0200U /*!< UART noise error interruption */\r
-#define UART_IT_FE 0x0100U /*!< UART frame error interruption */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_IT_CLEAR_Flags UART Interruption Clear Flags\r
- * @{\r
- */\r
-#define UART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */\r
-#define UART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */\r
-#define UART_CLEAR_NEF USART_ICR_NCF /*!< Noise Error detected Clear Flag */\r
-#define UART_CLEAR_OREF USART_ICR_ORECF /*!< Overrun Error Clear Flag */\r
-#define UART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */\r
-#define UART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */\r
-#define UART_CLEAR_LBDF USART_ICR_LBDCF /*!< LIN Break Detection Clear Flag */\r
-#define UART_CLEAR_CTSF USART_ICR_CTSCF /*!< CTS Interrupt Clear Flag */\r
-#define UART_CLEAR_CMF USART_ICR_CMCF /*!< Character Match Clear Flag */\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macros -----------------------------------------------------------*/\r
-/** @defgroup UART_Exported_Macros UART Exported Macros\r
- * @{\r
- */\r
-\r
-/** @brief Reset UART handle states.\r
- * @param __HANDLE__ UART handle.\r
- * @retval None\r
- */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
-#define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \\r
- (__HANDLE__)->gState = HAL_UART_STATE_RESET; \\r
- (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \\r
- (__HANDLE__)->MspInitCallback = NULL; \\r
- (__HANDLE__)->MspDeInitCallback = NULL; \\r
- } while(0U)\r
-#else\r
-#define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \\r
- (__HANDLE__)->gState = HAL_UART_STATE_RESET; \\r
- (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \\r
- } while(0U)\r
-#endif /*USE_HAL_UART_REGISTER_CALLBACKS */\r
-\r
-/** @brief Flush the UART Data registers.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \\r
- do{ \\r
- SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \\r
- SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \\r
- } while(0U)\r
-\r
-/** @brief Clear the specified UART pending flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __FLAG__ specifies the flag to check.\r
- * This parameter can be any combination of the following values:\r
- * @arg @ref UART_CLEAR_PEF Parity Error Clear Flag\r
- * @arg @ref UART_CLEAR_FEF Framing Error Clear Flag\r
- * @arg @ref UART_CLEAR_NEF Noise detected Clear Flag\r
- * @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag\r
- * @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag\r
- * @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag\r
- * @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag\r
- * @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag\r
- * @arg @ref UART_CLEAR_CMF Character Match Clear Flag\r
- * @retval None\r
- */\r
-#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))\r
-\r
-/** @brief Clear the UART PE pending flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_CLEAR_PEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_PEF)\r
-\r
-/** @brief Clear the UART FE pending flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_CLEAR_FEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_FEF)\r
-\r
-/** @brief Clear the UART NE pending flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_CLEAR_NEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_NEF)\r
-\r
-/** @brief Clear the UART ORE pending flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_CLEAR_OREFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_OREF)\r
-\r
-/** @brief Clear the UART IDLE pending flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_IDLEF)\r
-\r
-\r
-/** @brief Check whether the specified UART flag is set or not.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __FLAG__ specifies the flag to check.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_FLAG_TEACK Transmit enable acknowledge flag\r
- * @arg @ref UART_FLAG_RWU Receiver wake up flag (if the UART in mute mode)\r
- * @arg @ref UART_FLAG_SBKF Send Break flag\r
- * @arg @ref UART_FLAG_CMF Character match flag\r
- * @arg @ref UART_FLAG_BUSY Busy flag\r
- * @arg @ref UART_FLAG_ABRF Auto Baud rate detection flag\r
- * @arg @ref UART_FLAG_ABRE Auto Baud rate detection error flag\r
- * @arg @ref UART_FLAG_CTS CTS Change flag\r
- * @arg @ref UART_FLAG_LBDF LIN Break detection flag\r
- * @arg @ref UART_FLAG_TXE Transmit data register empty flag\r
- * @arg @ref UART_FLAG_TC Transmission Complete flag\r
- * @arg @ref UART_FLAG_RXNE Receive data register not empty flag\r
- * @arg @ref UART_FLAG_IDLE Idle Line detection flag\r
- * @arg @ref UART_FLAG_ORE Overrun Error flag\r
- * @arg @ref UART_FLAG_NE Noise Error flag\r
- * @arg @ref UART_FLAG_FE Framing Error flag\r
- * @arg @ref UART_FLAG_PE Parity Error flag\r
- * @retval The new state of __FLAG__ (TRUE or FALSE).\r
- */\r
-#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))\r
-\r
-/** @brief Enable the specified UART interrupt.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __INTERRUPT__ specifies the UART interrupt source to enable.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_IT_CM Character match interrupt\r
- * @arg @ref UART_IT_CTS CTS change interrupt\r
- * @arg @ref UART_IT_LBD LIN Break detection interrupt\r
- * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt\r
- * @arg @ref UART_IT_TC Transmission complete interrupt\r
- * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt\r
- * @arg @ref UART_IT_IDLE Idle line detection interrupt\r
- * @arg @ref UART_IT_PE Parity Error interrupt\r
- * @arg @ref UART_IT_ERR Error interrupt (frame error, noise error, overrun error)\r
- * @retval None\r
- */\r
-#define __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \\r
- ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \\r
- ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))))\r
-\r
-\r
-/** @brief Disable the specified UART interrupt.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __INTERRUPT__ specifies the UART interrupt source to disable.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_IT_CM Character match interrupt\r
- * @arg @ref UART_IT_CTS CTS change interrupt\r
- * @arg @ref UART_IT_LBD LIN Break detection interrupt\r
- * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt\r
- * @arg @ref UART_IT_TC Transmission complete interrupt\r
- * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt\r
- * @arg @ref UART_IT_IDLE Idle line detection interrupt\r
- * @arg @ref UART_IT_PE Parity Error interrupt\r
- * @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)\r
- * @retval None\r
- */\r
-#define __HAL_UART_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \\r
- ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \\r
- ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))))\r
-\r
-/** @brief Check whether the specified UART interrupt has occurred or not.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __INTERRUPT__ specifies the UART interrupt to check.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_IT_CM Character match interrupt\r
- * @arg @ref UART_IT_CTS CTS change interrupt\r
- * @arg @ref UART_IT_LBD LIN Break detection interrupt\r
- * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt\r
- * @arg @ref UART_IT_TC Transmission complete interrupt\r
- * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt\r
- * @arg @ref UART_IT_IDLE Idle line detection interrupt\r
- * @arg @ref UART_IT_PE Parity Error interrupt\r
- * @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)\r
- * @retval The new state of __INTERRUPT__ (SET or RESET).\r
- */\r
-#define __HAL_UART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR & (1U << ((__INTERRUPT__)>> 8U))) != RESET) ? SET : RESET)\r
-\r
-/** @brief Check whether the specified UART interrupt source is enabled or not.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __INTERRUPT__ specifies the UART interrupt source to check.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_IT_CM Character match interrupt\r
- * @arg @ref UART_IT_CTS CTS change interrupt\r
- * @arg @ref UART_IT_LBD LIN Break detection interrupt\r
- * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt\r
- * @arg @ref UART_IT_TC Transmission complete interrupt\r
- * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt\r
- * @arg @ref UART_IT_IDLE Idle line detection interrupt\r
- * @arg @ref UART_IT_PE Parity Error interrupt\r
- * @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)\r
- * @retval The new state of __INTERRUPT__ (SET or RESET).\r
- */\r
-#define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U) ? (__HANDLE__)->Instance->CR1 : \\r
- (((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U) ? (__HANDLE__)->Instance->CR2 : \\r
- (__HANDLE__)->Instance->CR3)) & (1U << (((uint16_t)(__INTERRUPT__)) & UART_IT_MASK))) != RESET) ? SET : RESET)\r
-\r
-/** @brief Clear the specified UART ISR flag, in setting the proper ICR register flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __IT_CLEAR__ specifies the interrupt clear register flag that needs to be set\r
- * to clear the corresponding interrupt\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_CLEAR_PEF Parity Error Clear Flag\r
- * @arg @ref UART_CLEAR_FEF Framing Error Clear Flag\r
- * @arg @ref UART_CLEAR_NEF Noise detected Clear Flag\r
- * @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag\r
- * @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag\r
- * @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag\r
- * @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag\r
- * @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag\r
- * @arg @ref UART_CLEAR_CMF Character Match Clear Flag\r
- * @retval None\r
- */\r
-#define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))\r
-\r
-/** @brief Set a specific UART request flag.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __REQ__ specifies the request flag to set\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_AUTOBAUD_REQUEST Auto-Baud Rate Request\r
- * @arg @ref UART_SENDBREAK_REQUEST Send Break Request\r
- * @arg @ref UART_MUTE_MODE_REQUEST Mute Mode Request\r
- * @arg @ref UART_RXDATA_FLUSH_REQUEST Receive Data flush Request\r
- * @arg @ref UART_TXDATA_FLUSH_REQUEST Transmit data flush Request\r
- * @retval None\r
- */\r
-#define __HAL_UART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__))\r
-\r
-/** @brief Enable the UART one bit sample method.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)\r
-\r
-/** @brief Disable the UART one bit sample method.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= ~USART_CR3_ONEBIT)\r
-\r
-/** @brief Enable UART.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)\r
-\r
-/** @brief Disable UART.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)\r
-\r
-/** @brief Enable CTS flow control.\r
- * @note This macro allows to enable CTS hardware flow control for a given UART instance,\r
- * without need to call HAL_UART_Init() function.\r
- * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\r
- * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need\r
- * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\r
- * - UART instance should have already been initialised (through call of HAL_UART_Init() )\r
- * - macro could only be called when corresponding UART instance is disabled (i.e. __HAL_UART_DISABLE(__HANDLE__))\r
- * and should be followed by an Enable macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__) \\r
- do{ \\r
- SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \\r
- (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE; \\r
- } while(0U)\r
-\r
-/** @brief Disable CTS flow control.\r
- * @note This macro allows to disable CTS hardware flow control for a given UART instance,\r
- * without need to call HAL_UART_Init() function.\r
- * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\r
- * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need\r
- * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\r
- * - UART instance should have already been initialised (through call of HAL_UART_Init() )\r
- * - macro could only be called when corresponding UART instance is disabled (i.e. __HAL_UART_DISABLE(__HANDLE__))\r
- * and should be followed by an Enable macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__) \\r
- do{ \\r
- CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \\r
- (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE); \\r
- } while(0U)\r
-\r
-/** @brief Enable RTS flow control.\r
- * @note This macro allows to enable RTS hardware flow control for a given UART instance,\r
- * without need to call HAL_UART_Init() function.\r
- * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\r
- * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need\r
- * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\r
- * - UART instance should have already been initialised (through call of HAL_UART_Init() )\r
- * - macro could only be called when corresponding UART instance is disabled (i.e. __HAL_UART_DISABLE(__HANDLE__))\r
- * and should be followed by an Enable macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__) \\r
- do{ \\r
- SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \\r
- (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE; \\r
- } while(0U)\r
-\r
-/** @brief Disable RTS flow control.\r
- * @note This macro allows to disable RTS hardware flow control for a given UART instance,\r
- * without need to call HAL_UART_Init() function.\r
- * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.\r
- * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need\r
- * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :\r
- * - UART instance should have already been initialised (through call of HAL_UART_Init() )\r
- * - macro could only be called when corresponding UART instance is disabled (i.e. __HAL_UART_DISABLE(__HANDLE__))\r
- * and should be followed by an Enable macro (i.e. __HAL_UART_ENABLE(__HANDLE__)).\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None\r
- */\r
-#define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__) \\r
- do{ \\r
- CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\\r
- (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE); \\r
- } while(0U)\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros --------------------------------------------------------*/\r
-/** @defgroup UART_Private_Macros UART Private Macros\r
- * @{\r
- */\r
-\r
-\r
-/** @brief BRR division operation to set BRR register in 8-bit oversampling mode.\r
- * @param __PCLK__ UART clock.\r
- * @param __BAUD__ Baud rate set by the user.\r
- * @retval Division result\r
- */\r
-#define UART_DIV_SAMPLING8(__PCLK__, __BAUD__) ((((__PCLK__)*2U) + ((__BAUD__)/2U)) / (__BAUD__))\r
-\r
-/** @brief BRR division operation to set BRR register in 16-bit oversampling mode.\r
- * @param __PCLK__ UART clock.\r
- * @param __BAUD__ Baud rate set by the user.\r
- * @retval Division result\r
- */\r
-#define UART_DIV_SAMPLING16(__PCLK__, __BAUD__) (((__PCLK__) + ((__BAUD__)/2U)) / (__BAUD__))\r
-\r
-\r
-/** @brief Check UART Baud rate.\r
- * @param __BAUDRATE__ Baudrate specified by the user.\r
- * The maximum Baud Rate is derived from the maximum clock on F7 (i.e. 216 MHz)\r
- * divided by the smallest oversampling used on the USART (i.e. 8)\r
- * @retval SET (__BAUDRATE__ is valid) or RESET (__BAUDRATE__ is invalid)\r
- */\r
-#define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 27000001U)\r
-\r
-/** @brief Check UART assertion time.\r
- * @param __TIME__ 5-bit value assertion time.\r
- * @retval Test result (TRUE or FALSE).\r
- */\r
-#define IS_UART_ASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU)\r
-\r
-/** @brief Check UART deassertion time.\r
- * @param __TIME__ 5-bit value deassertion time.\r
- * @retval Test result (TRUE or FALSE).\r
- */\r
-#define IS_UART_DEASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU)\r
-\r
-/**\r
- * @brief Ensure that UART frame number of stop bits is valid.\r
- * @param __STOPBITS__ UART frame number of stop bits.\r
- * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid)\r
- */\r
-#define IS_UART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_0_5) || \\r
- ((__STOPBITS__) == UART_STOPBITS_1) || \\r
- ((__STOPBITS__) == UART_STOPBITS_1_5) || \\r
- ((__STOPBITS__) == UART_STOPBITS_2))\r
-\r
-\r
-/**\r
- * @brief Ensure that UART frame parity is valid.\r
- * @param __PARITY__ UART frame parity.\r
- * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid)\r
- */\r
-#define IS_UART_PARITY(__PARITY__) (((__PARITY__) == UART_PARITY_NONE) || \\r
- ((__PARITY__) == UART_PARITY_EVEN) || \\r
- ((__PARITY__) == UART_PARITY_ODD))\r
-\r
-/**\r
- * @brief Ensure that UART hardware flow control is valid.\r
- * @param __CONTROL__ UART hardware flow control.\r
- * @retval SET (__CONTROL__ is valid) or RESET (__CONTROL__ is invalid)\r
- */\r
-#define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)\\r
- (((__CONTROL__) == UART_HWCONTROL_NONE) || \\r
- ((__CONTROL__) == UART_HWCONTROL_RTS) || \\r
- ((__CONTROL__) == UART_HWCONTROL_CTS) || \\r
- ((__CONTROL__) == UART_HWCONTROL_RTS_CTS))\r
-\r
-/**\r
- * @brief Ensure that UART communication mode is valid.\r
- * @param __MODE__ UART communication mode.\r
- * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)\r
- */\r
-#define IS_UART_MODE(__MODE__) ((((__MODE__) & (~((uint32_t)(UART_MODE_TX_RX)))) == 0x00U) && ((__MODE__) != 0x00U))\r
-\r
-/**\r
- * @brief Ensure that UART state is valid.\r
- * @param __STATE__ UART state.\r
- * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid)\r
- */\r
-#define IS_UART_STATE(__STATE__) (((__STATE__) == UART_STATE_DISABLE) || \\r
- ((__STATE__) == UART_STATE_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART oversampling is valid.\r
- * @param __SAMPLING__ UART oversampling.\r
- * @retval SET (__SAMPLING__ is valid) or RESET (__SAMPLING__ is invalid)\r
- */\r
-#define IS_UART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == UART_OVERSAMPLING_16) || \\r
- ((__SAMPLING__) == UART_OVERSAMPLING_8))\r
-\r
-/**\r
- * @brief Ensure that UART frame sampling is valid.\r
- * @param __ONEBIT__ UART frame sampling.\r
- * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid)\r
- */\r
-#define IS_UART_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == UART_ONE_BIT_SAMPLE_DISABLE) || \\r
- ((__ONEBIT__) == UART_ONE_BIT_SAMPLE_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART auto Baud rate detection mode is valid.\r
- * @param __MODE__ UART auto Baud rate detection mode.\r
- * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__) (((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT) || \\r
- ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE) || \\r
- ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME) || \\r
- ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME))\r
-\r
-/**\r
- * @brief Ensure that UART receiver timeout setting is valid.\r
- * @param __TIMEOUT__ UART receiver timeout setting.\r
- * @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid)\r
- */\r
-#define IS_UART_RECEIVER_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_DISABLE) || \\r
- ((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART LIN state is valid.\r
- * @param __LIN__ UART LIN state.\r
- * @retval SET (__LIN__ is valid) or RESET (__LIN__ is invalid)\r
- */\r
-#define IS_UART_LIN(__LIN__) (((__LIN__) == UART_LIN_DISABLE) || \\r
- ((__LIN__) == UART_LIN_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART LIN break detection length is valid.\r
- * @param __LENGTH__ UART LIN break detection length.\r
- * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)\r
- */\r
-#define IS_UART_LIN_BREAK_DETECT_LENGTH(__LENGTH__) (((__LENGTH__) == UART_LINBREAKDETECTLENGTH_10B) || \\r
- ((__LENGTH__) == UART_LINBREAKDETECTLENGTH_11B))\r
-\r
-/**\r
- * @brief Ensure that UART DMA TX state is valid.\r
- * @param __DMATX__ UART DMA TX state.\r
- * @retval SET (__DMATX__ is valid) or RESET (__DMATX__ is invalid)\r
- */\r
-#define IS_UART_DMA_TX(__DMATX__) (((__DMATX__) == UART_DMA_TX_DISABLE) || \\r
- ((__DMATX__) == UART_DMA_TX_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART DMA RX state is valid.\r
- * @param __DMARX__ UART DMA RX state.\r
- * @retval SET (__DMARX__ is valid) or RESET (__DMARX__ is invalid)\r
- */\r
-#define IS_UART_DMA_RX(__DMARX__) (((__DMARX__) == UART_DMA_RX_DISABLE) || \\r
- ((__DMARX__) == UART_DMA_RX_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART half-duplex state is valid.\r
- * @param __HDSEL__ UART half-duplex state.\r
- * @retval SET (__HDSEL__ is valid) or RESET (__HDSEL__ is invalid)\r
- */\r
-#define IS_UART_HALF_DUPLEX(__HDSEL__) (((__HDSEL__) == UART_HALF_DUPLEX_DISABLE) || \\r
- ((__HDSEL__) == UART_HALF_DUPLEX_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART wake-up method is valid.\r
- * @param __WAKEUP__ UART wake-up method .\r
- * @retval SET (__WAKEUP__ is valid) or RESET (__WAKEUP__ is invalid)\r
- */\r
-#define IS_UART_WAKEUPMETHOD(__WAKEUP__) (((__WAKEUP__) == UART_WAKEUPMETHOD_IDLELINE) || \\r
- ((__WAKEUP__) == UART_WAKEUPMETHOD_ADDRESSMARK))\r
-\r
-/**\r
- * @brief Ensure that UART request parameter is valid.\r
- * @param __PARAM__ UART request parameter.\r
- * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid)\r
- */\r
-#define IS_UART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == UART_AUTOBAUD_REQUEST) || \\r
- ((__PARAM__) == UART_SENDBREAK_REQUEST) || \\r
- ((__PARAM__) == UART_MUTE_MODE_REQUEST) || \\r
- ((__PARAM__) == UART_RXDATA_FLUSH_REQUEST) || \\r
- ((__PARAM__) == UART_TXDATA_FLUSH_REQUEST))\r
-\r
-/**\r
- * @brief Ensure that UART advanced features initialization is valid.\r
- * @param __INIT__ UART advanced features initialization.\r
- * @retval SET (__INIT__ is valid) or RESET (__INIT__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (UART_ADVFEATURE_NO_INIT | \\r
- UART_ADVFEATURE_TXINVERT_INIT | \\r
- UART_ADVFEATURE_RXINVERT_INIT | \\r
- UART_ADVFEATURE_DATAINVERT_INIT | \\r
- UART_ADVFEATURE_SWAP_INIT | \\r
- UART_ADVFEATURE_RXOVERRUNDISABLE_INIT | \\r
- UART_ADVFEATURE_DMADISABLEONERROR_INIT | \\r
- UART_ADVFEATURE_AUTOBAUDRATE_INIT | \\r
- UART_ADVFEATURE_MSBFIRST_INIT))\r
-\r
-/**\r
- * @brief Ensure that UART frame TX inversion setting is valid.\r
- * @param __TXINV__ UART frame TX inversion setting.\r
- * @retval SET (__TXINV__ is valid) or RESET (__TXINV__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == UART_ADVFEATURE_TXINV_DISABLE) || \\r
- ((__TXINV__) == UART_ADVFEATURE_TXINV_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART frame RX inversion setting is valid.\r
- * @param __RXINV__ UART frame RX inversion setting.\r
- * @retval SET (__RXINV__ is valid) or RESET (__RXINV__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == UART_ADVFEATURE_RXINV_DISABLE) || \\r
- ((__RXINV__) == UART_ADVFEATURE_RXINV_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART frame data inversion setting is valid.\r
- * @param __DATAINV__ UART frame data inversion setting.\r
- * @retval SET (__DATAINV__ is valid) or RESET (__DATAINV__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == UART_ADVFEATURE_DATAINV_DISABLE) || \\r
- ((__DATAINV__) == UART_ADVFEATURE_DATAINV_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART frame RX/TX pins swap setting is valid.\r
- * @param __SWAP__ UART frame RX/TX pins swap setting.\r
- * @retval SET (__SWAP__ is valid) or RESET (__SWAP__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == UART_ADVFEATURE_SWAP_DISABLE) || \\r
- ((__SWAP__) == UART_ADVFEATURE_SWAP_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART frame overrun setting is valid.\r
- * @param __OVERRUN__ UART frame overrun setting.\r
- * @retval SET (__OVERRUN__ is valid) or RESET (__OVERRUN__ is invalid)\r
- */\r
-#define IS_UART_OVERRUN(__OVERRUN__) (((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_ENABLE) || \\r
- ((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_DISABLE))\r
-\r
-/**\r
- * @brief Ensure that UART auto Baud rate state is valid.\r
- * @param __AUTOBAUDRATE__ UART auto Baud rate state.\r
- * @retval SET (__AUTOBAUDRATE__ is valid) or RESET (__AUTOBAUDRATE__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_AUTOBAUDRATE(__AUTOBAUDRATE__) (((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_DISABLE) || \\r
- ((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART DMA enabling or disabling on error setting is valid.\r
- * @param __DMA__ UART DMA enabling or disabling on error setting.\r
- * @retval SET (__DMA__ is valid) or RESET (__DMA__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == UART_ADVFEATURE_DMA_ENABLEONRXERROR) || \\r
- ((__DMA__) == UART_ADVFEATURE_DMA_DISABLEONRXERROR))\r
-\r
-/**\r
- * @brief Ensure that UART frame MSB first setting is valid.\r
- * @param __MSBFIRST__ UART frame MSB first setting.\r
- * @retval SET (__MSBFIRST__ is valid) or RESET (__MSBFIRST__ is invalid)\r
- */\r
-#define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \\r
- ((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART mute mode state is valid.\r
- * @param __MUTE__ UART mute mode state.\r
- * @retval SET (__MUTE__ is valid) or RESET (__MUTE__ is invalid)\r
- */\r
-#define IS_UART_MUTE_MODE(__MUTE__) (((__MUTE__) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \\r
- ((__MUTE__) == UART_ADVFEATURE_MUTEMODE_ENABLE))\r
-\r
-/**\r
- * @brief Ensure that UART driver enable polarity is valid.\r
- * @param __POLARITY__ UART driver enable polarity.\r
- * @retval SET (__POLARITY__ is valid) or RESET (__POLARITY__ is invalid)\r
- */\r
-#define IS_UART_DE_POLARITY(__POLARITY__) (((__POLARITY__) == UART_DE_POLARITY_HIGH) || \\r
- ((__POLARITY__) == UART_DE_POLARITY_LOW))\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Include UART HAL Extended module */\r
-#include "stm32f7xx_hal_uart_ex.h"\r
-\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup UART_Exported_Functions UART Exported Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup UART_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @{\r
- */\r
-\r
-/* Initialization and de-initialization functions ****************************/\r
-HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength);\r
-HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod);\r
-HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart);\r
-void HAL_UART_MspInit(UART_HandleTypeDef *huart);\r
-void HAL_UART_MspDeInit(UART_HandleTypeDef *huart);\r
-\r
-/* Callbacks Register/UnRegister functions ***********************************/\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
-HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID, pUART_CallbackTypeDef pCallback);\r
-HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup UART_Exported_Functions_Group2 IO operation functions\r
- * @{\r
- */\r
-\r
-/* IO operation functions *****************************************************/\r
-HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);\r
-HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);\r
-HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);\r
-/* Transfer Abort functions */\r
-HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart);\r
-\r
-void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);\r
-void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);\r
-void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);\r
-void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);\r
-void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);\r
-void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart);\r
-void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart);\r
-void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart);\r
-void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup UART_Exported_Functions_Group3 Peripheral Control functions\r
- * @{\r
- */\r
-\r
-/* Peripheral Control functions ************************************************/\r
-HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart);\r
-void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup UART_Exported_Functions_Group4 Peripheral State and Error functions\r
- * @{\r
- */\r
-\r
-/* Peripheral State and Errors functions **************************************************/\r
-HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart);\r
-uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private functions -----------------------------------------------------------*/\r
-/** @addtogroup UART_Private_Functions UART Private Functions\r
- * @{\r
- */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
-void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart);\r
-HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout);\r
-void UART_AdvFeatureConfig(UART_HandleTypeDef *huart);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* STM32F7xx_HAL_UART_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_uart_ex.h\r
- * @author MCD Application Team\r
- * @brief Header file of UART HAL Extended module.\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef STM32F7xx_HAL_UART_EX_H\r
-#define STM32F7xx_HAL_UART_EX_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal_def.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup UARTEx\r
- * @{\r
- */\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/** @defgroup UARTEx_Exported_Types UARTEx Exported Types\r
- * @{\r
- */\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported constants --------------------------------------------------------*/\r
-/** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants\r
- * @{\r
- */\r
-\r
-/** @defgroup UARTEx_Word_Length UARTEx Word Length\r
- * @{\r
- */\r
-#define UART_WORDLENGTH_7B USART_CR1_M1 /*!< 7-bit long UART frame */\r
-#define UART_WORDLENGTH_8B 0x00000000U /*!< 8-bit long UART frame */\r
-#define UART_WORDLENGTH_9B USART_CR1_M0 /*!< 9-bit long UART frame */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UARTEx_WakeUp_Address_Length UARTEx WakeUp Address Length\r
- * @{\r
- */\r
-#define UART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit long wake-up address */\r
-#define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit long wake-up address */\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported macros -----------------------------------------------------------*/\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @addtogroup UARTEx_Exported_Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup UARTEx_Exported_Functions_Group1\r
- * @{\r
- */\r
-\r
-/* Initialization and de-initialization functions ****************************/\r
-HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup UARTEx_Exported_Functions_Group2\r
- * @{\r
- */\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup UARTEx_Exported_Functions_Group3\r
- * @{\r
- */\r
-\r
-/* Peripheral Control functions **********************************************/\r
-HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/** @defgroup UARTEx_Private_Macros UARTEx Private Macros\r
- * @{\r
- */\r
-\r
-/** @brief Report the UART clock source.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @param __CLOCKSOURCE__ output variable.\r
- * @retval UART clocking source, written in __CLOCKSOURCE__.\r
- */\r
-#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \\r
- do { \\r
- if((__HANDLE__)->Instance == USART1) \\r
- { \\r
- switch(__HAL_RCC_GET_USART1_SOURCE()) \\r
- { \\r
- case RCC_USART1CLKSOURCE_PCLK2: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \\r
- break; \\r
- case RCC_USART1CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_USART1CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_USART1CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else if((__HANDLE__)->Instance == USART2) \\r
- { \\r
- switch(__HAL_RCC_GET_USART2_SOURCE()) \\r
- { \\r
- case RCC_USART2CLKSOURCE_PCLK1: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \\r
- break; \\r
- case RCC_USART2CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_USART2CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_USART2CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else if((__HANDLE__)->Instance == USART3) \\r
- { \\r
- switch(__HAL_RCC_GET_USART3_SOURCE()) \\r
- { \\r
- case RCC_USART3CLKSOURCE_PCLK1: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \\r
- break; \\r
- case RCC_USART3CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_USART3CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_USART3CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else if((__HANDLE__)->Instance == UART4) \\r
- { \\r
- switch(__HAL_RCC_GET_UART4_SOURCE()) \\r
- { \\r
- case RCC_UART4CLKSOURCE_PCLK1: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \\r
- break; \\r
- case RCC_UART4CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_UART4CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_UART4CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else if ((__HANDLE__)->Instance == UART5) \\r
- { \\r
- switch(__HAL_RCC_GET_UART5_SOURCE()) \\r
- { \\r
- case RCC_UART5CLKSOURCE_PCLK1: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \\r
- break; \\r
- case RCC_UART5CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_UART5CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_UART5CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else if((__HANDLE__)->Instance == USART6) \\r
- { \\r
- switch(__HAL_RCC_GET_USART6_SOURCE()) \\r
- { \\r
- case RCC_USART6CLKSOURCE_PCLK2: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \\r
- break; \\r
- case RCC_USART6CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_USART6CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_USART6CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else if ((__HANDLE__)->Instance == UART7) \\r
- { \\r
- switch(__HAL_RCC_GET_UART7_SOURCE()) \\r
- { \\r
- case RCC_UART7CLKSOURCE_PCLK1: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \\r
- break; \\r
- case RCC_UART7CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_UART7CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_UART7CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else if ((__HANDLE__)->Instance == UART8) \\r
- { \\r
- switch(__HAL_RCC_GET_UART8_SOURCE()) \\r
- { \\r
- case RCC_UART8CLKSOURCE_PCLK1: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \\r
- break; \\r
- case RCC_UART8CLKSOURCE_HSI: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \\r
- break; \\r
- case RCC_UART8CLKSOURCE_SYSCLK: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \\r
- break; \\r
- case RCC_UART8CLKSOURCE_LSE: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \\r
- break; \\r
- default: \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- break; \\r
- } \\r
- } \\r
- else \\r
- { \\r
- (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \\r
- } \\r
- } while(0U)\r
-\r
-/** @brief Report the UART mask to apply to retrieve the received data\r
- * according to the word length and to the parity bits activation.\r
- * @note If PCE = 1, the parity bit is not included in the data extracted\r
- * by the reception API().\r
- * This masking operation is not carried out in the case of\r
- * DMA transfers.\r
- * @param __HANDLE__ specifies the UART Handle.\r
- * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field.\r
- */\r
-#define UART_MASK_COMPUTATION(__HANDLE__) \\r
- do { \\r
- if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \\r
- { \\r
- if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \\r
- { \\r
- (__HANDLE__)->Mask = 0x01FFU ; \\r
- } \\r
- else \\r
- { \\r
- (__HANDLE__)->Mask = 0x00FFU ; \\r
- } \\r
- } \\r
- else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \\r
- { \\r
- if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \\r
- { \\r
- (__HANDLE__)->Mask = 0x00FFU ; \\r
- } \\r
- else \\r
- { \\r
- (__HANDLE__)->Mask = 0x007FU ; \\r
- } \\r
- } \\r
- else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \\r
- { \\r
- if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \\r
- { \\r
- (__HANDLE__)->Mask = 0x007FU ; \\r
- } \\r
- else \\r
- { \\r
- (__HANDLE__)->Mask = 0x003FU ; \\r
- } \\r
- } \\r
- else \\r
- { \\r
- (__HANDLE__)->Mask = 0x0000U; \\r
- } \\r
-} while(0U)\r
-\r
-/**\r
- * @brief Ensure that UART frame length is valid.\r
- * @param __LENGTH__ UART frame length.\r
- * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)\r
- */\r
-#define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \\r
- ((__LENGTH__) == UART_WORDLENGTH_8B) || \\r
- ((__LENGTH__) == UART_WORDLENGTH_9B))\r
-\r
-/**\r
- * @brief Ensure that UART wake-up address length is valid.\r
- * @param __ADDRESS__ UART wake-up address length.\r
- * @retval SET (__ADDRESS__ is valid) or RESET (__ADDRESS__ is invalid)\r
- */\r
-#define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \\r
- ((__ADDRESS__) == UART_ADDRESS_DETECT_7B))\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private functions ---------------------------------------------------------*/\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* STM32F7xx_HAL_UART_EX_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal.c\r
- * @author MCD Application Team\r
- * @brief HAL module driver.\r
- * This is the common part of the HAL initialization\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..]\r
- The common HAL driver contains a set of generic and common APIs that can be\r
- used by the PPP peripheral drivers and the user to start using the HAL. \r
- [..]\r
- The HAL contains two APIs' categories: \r
- (+) Common HAL APIs\r
- (+) Services HAL APIs\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup HAL HAL\r
- * @brief HAL module driver.\r
- * @{\r
- */\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @addtogroup HAL_Private_Constants\r
- * @{\r
- */\r
-/**\r
- * @brief STM32F7xx HAL Driver version number V1.2.7\r
- */\r
-#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */\r
-#define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */\r
-#define __STM32F7xx_HAL_VERSION_SUB2 (0x07) /*!< [15:8] sub2 version */\r
-#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */ \r
-#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\\r
- |(__STM32F7xx_HAL_VERSION_SUB1 << 16)\\r
- |(__STM32F7xx_HAL_VERSION_SUB2 << 8 )\\r
- |(__STM32F7xx_HAL_VERSION_RC))\r
- \r
-#define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF)\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Exported variables ---------------------------------------------------------*/\r
-/** @addtogroup HAL_Exported_Variables\r
- * @{\r
- */\r
-__IO uint32_t uwTick;\r
-uint32_t uwTickPrio = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */\r
-HAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT; /* 1KHz */\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-\r
-/** @defgroup HAL_Exported_Functions HAL Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup HAL_Exported_Functions_Group1 Initialization and de-initialization Functions \r
- * @brief Initialization and de-initialization functions\r
- *\r
-@verbatim \r
- ===============================================================================\r
- ##### Initialization and Configuration functions #####\r
- ===============================================================================\r
- [..] This section provides functions allowing to:\r
- (+) Initializes the Flash interface the NVIC allocation and initial clock \r
- configuration. It initializes the systick also when timeout is needed \r
- and the backup domain when enabled.\r
- (+) De-Initializes common part of the HAL.\r
- (+) Configure the time base source to have 1ms time base with a dedicated \r
- Tick interrupt priority. \r
- (++) SysTick timer is used by default as source of time base, but user\r
- can eventually implement his proper time base source (a general purpose \r
- timer for example or other time source), keeping in mind that Time base \r
- duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and \r
- handled in milliseconds basis.\r
- (++) Time base configuration function (HAL_InitTick ()) is called automatically \r
- at the beginning of the program after reset by HAL_Init() or at any time \r
- when clock is configured, by HAL_RCC_ClockConfig(). \r
- (++) Source of time base is configured to generate interrupts at regular \r
- time intervals. Care must be taken if HAL_Delay() is called from a \r
- peripheral ISR process, the Tick interrupt line must have higher priority \r
- (numerically lower) than the peripheral interrupt. Otherwise the caller \r
- ISR process will be blocked. \r
- (++) functions affecting time base configurations are declared as __weak \r
- to make override possible in case of other implementations in user file.\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief This function is used to initialize the HAL Library; it must be the first \r
- * instruction to be executed in the main program (before to call any other\r
- * HAL function), it performs the following:\r
- * Configure the Flash prefetch, and instruction cache through ART accelerator.\r
- * Configures the SysTick to generate an interrupt each 1 millisecond,\r
- * which is clocked by the HSI (at this stage, the clock is not yet\r
- * configured and thus the system is running from the internal HSI at 16 MHz).\r
- * Set NVIC Group Priority to 4.\r
- * Calls the HAL_MspInit() callback function defined in user file \r
- * "stm32f7xx_hal_msp.c" to do the global low level hardware initialization \r
- * \r
- * @note SysTick is used as time base for the HAL_Delay() function, the application\r
- * need to ensure that the SysTick time base is always set to 1 millisecond\r
- * to have correct HAL operation.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_Init(void)\r
-{\r
- /* Configure Instruction cache through ART accelerator */ \r
-#if (ART_ACCLERATOR_ENABLE != 0)\r
- __HAL_FLASH_ART_ENABLE();\r
-#endif /* ART_ACCLERATOR_ENABLE */\r
-\r
- /* Configure Flash prefetch */\r
-#if (PREFETCH_ENABLE != 0U)\r
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();\r
-#endif /* PREFETCH_ENABLE */\r
-\r
- /* Set Interrupt Group Priority */\r
- HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);\r
-\r
- /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */\r
- HAL_InitTick(TICK_INT_PRIORITY);\r
- \r
- /* Init the low level hardware */\r
- HAL_MspInit();\r
- \r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief This function de-Initializes common part of the HAL and stops the systick.\r
- * This function is optional. \r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DeInit(void)\r
-{\r
- /* Reset of all peripherals */\r
- __HAL_RCC_APB1_FORCE_RESET();\r
- __HAL_RCC_APB1_RELEASE_RESET();\r
-\r
- __HAL_RCC_APB2_FORCE_RESET();\r
- __HAL_RCC_APB2_RELEASE_RESET();\r
-\r
- __HAL_RCC_AHB1_FORCE_RESET();\r
- __HAL_RCC_AHB1_RELEASE_RESET();\r
-\r
- __HAL_RCC_AHB2_FORCE_RESET();\r
- __HAL_RCC_AHB2_RELEASE_RESET();\r
-\r
- __HAL_RCC_AHB3_FORCE_RESET();\r
- __HAL_RCC_AHB3_RELEASE_RESET();\r
-\r
- /* De-Init the low level hardware */\r
- HAL_MspDeInit();\r
- \r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initialize the MSP.\r
- * @retval None\r
- */\r
-__weak void HAL_MspInit(void)\r
-{\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the MSP.\r
- * @retval None\r
- */\r
-__weak void HAL_MspDeInit(void)\r
-{\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_MspDeInit could be implemented in the user file\r
- */ \r
-}\r
-\r
-/**\r
- * @brief This function configures the source of the time base.\r
- * The time source is configured to have 1ms time base with a dedicated \r
- * Tick interrupt priority.\r
- * @note This function is called automatically at the beginning of program after\r
- * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig().\r
- * @note In the default implementation, SysTick timer is the source of time base. \r
- * It is used to generate interrupts at regular time intervals. \r
- * Care must be taken if HAL_Delay() is called from a peripheral ISR process, \r
- * The SysTick interrupt must have higher priority (numerically lower)\r
- * than the peripheral interrupt. Otherwise the caller ISR process will be blocked.\r
- * The function is declared as __weak to be overwritten in case of other\r
- * implementation in user file.\r
- * @param TickPriority Tick interrupt priority.\r
- * @retval HAL status\r
- */\r
-__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)\r
-{\r
- /* Configure the SysTick to have interrupt in 1ms time basis*/\r
- if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Configure the SysTick IRQ priority */\r
- if (TickPriority < (1UL << __NVIC_PRIO_BITS))\r
- {\r
- HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);\r
- uwTickPrio = TickPriority;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup HAL_Exported_Functions_Group2 HAL Control functions \r
- * @brief HAL Control functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### HAL Control functions #####\r
- ===============================================================================\r
- [..] This section provides functions allowing to:\r
- (+) Provide a tick value in millisecond\r
- (+) Provide a blocking delay in millisecond\r
- (+) Suspend the time base source interrupt\r
- (+) Resume the time base source interrupt\r
- (+) Get the HAL API driver version\r
- (+) Get the device identifier\r
- (+) Get the device revision identifier\r
- (+) Enable/Disable Debug module during SLEEP mode\r
- (+) Enable/Disable Debug module during STOP mode\r
- (+) Enable/Disable Debug module during STANDBY mode\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief This function is called to increment a global variable "uwTick"\r
- * used as application time base.\r
- * @note In the default implementation, this variable is incremented each 1ms\r
- * in SysTick ISR.\r
- * @note This function is declared as __weak to be overwritten in case of other \r
- * implementations in user file.\r
- * @retval None\r
- */\r
-__weak void HAL_IncTick(void)\r
-{\r
- uwTick += uwTickFreq;\r
-}\r
-\r
-/**\r
- * @brief Provides a tick value in millisecond.\r
- * @note This function is declared as __weak to be overwritten in case of other \r
- * implementations in user file.\r
- * @retval tick value\r
- */\r
-__weak uint32_t HAL_GetTick(void)\r
-{\r
- return uwTick;\r
-}\r
-\r
-/**\r
- * @brief This function returns a tick priority.\r
- * @retval tick priority\r
- */\r
-uint32_t HAL_GetTickPrio(void)\r
-{\r
- return uwTickPrio;\r
-}\r
-\r
-/**\r
- * @brief Set new tick Freq.\r
- * @retval Status\r
- */\r
-HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- assert_param(IS_TICKFREQ(Freq));\r
-\r
- if (uwTickFreq != Freq)\r
- {\r
- uwTickFreq = Freq;\r
-\r
- /* Apply the new tick Freq */\r
- status = HAL_InitTick(uwTickPrio);\r
- }\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Return tick frequency.\r
- * @retval tick period in Hz\r
- */\r
-HAL_TickFreqTypeDef HAL_GetTickFreq(void)\r
-{\r
- return uwTickFreq;\r
-}\r
-\r
-/**\r
- * @brief This function provides minimum delay (in milliseconds) based\r
- * on variable incremented.\r
- * @note In the default implementation , SysTick timer is the source of time base.\r
- * It is used to generate interrupts at regular time intervals where uwTick\r
- * is incremented.\r
- * @note This function is declared as __weak to be overwritten in case of other\r
- * implementations in user file.\r
- * @param Delay specifies the delay time length, in milliseconds.\r
- * @retval None\r
- */\r
-__weak void HAL_Delay(uint32_t Delay)\r
-{\r
- uint32_t tickstart = HAL_GetTick();\r
- uint32_t wait = Delay;\r
-\r
- /* Add a freq to guarantee minimum wait */\r
- if (wait < HAL_MAX_DELAY)\r
- {\r
- wait += (uint32_t)(uwTickFreq);\r
- }\r
-\r
- while ((HAL_GetTick() - tickstart) < wait)\r
- {\r
- }\r
-}\r
-\r
-/**\r
- * @brief Suspend Tick increment.\r
- * @note In the default implementation , SysTick timer is the source of time base. It is\r
- * used to generate interrupts at regular time intervals. Once HAL_SuspendTick()\r
- * is called, the SysTick interrupt will be disabled and so Tick increment \r
- * is suspended.\r
- * @note This function is declared as __weak to be overwritten in case of other\r
- * implementations in user file.\r
- * @retval None\r
- */\r
-__weak void HAL_SuspendTick(void)\r
-{\r
- /* Disable SysTick Interrupt */\r
- SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;\r
-}\r
-\r
-/**\r
- * @brief Resume Tick increment.\r
- * @note In the default implementation , SysTick timer is the source of time base. It is\r
- * used to generate interrupts at regular time intervals. Once HAL_ResumeTick()\r
- * is called, the SysTick interrupt will be enabled and so Tick increment \r
- * is resumed.\r
- * @note This function is declared as __weak to be overwritten in case of other\r
- * implementations in user file.\r
- * @retval None\r
- */\r
-__weak void HAL_ResumeTick(void)\r
-{\r
- /* Enable SysTick Interrupt */\r
- SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;\r
-}\r
-\r
-/**\r
- * @brief Returns the HAL revision\r
- * @retval version : 0xXYZR (8bits for each decimal, R for RC)\r
- */\r
-uint32_t HAL_GetHalVersion(void)\r
-{\r
- return __STM32F7xx_HAL_VERSION;\r
-}\r
-\r
-/**\r
- * @brief Returns the device revision identifier.\r
- * @retval Device revision identifier\r
- */\r
-uint32_t HAL_GetREVID(void)\r
-{\r
- return((DBGMCU->IDCODE) >> 16U);\r
-}\r
-\r
-/**\r
- * @brief Returns the device identifier.\r
- * @retval Device identifier\r
- */\r
-uint32_t HAL_GetDEVID(void)\r
-{\r
- return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK);\r
-}\r
-\r
-/**\r
- * @brief Returns first word of the unique device identifier (UID based on 96 bits)\r
- * @retval Device identifier\r
- */\r
-uint32_t HAL_GetUIDw0(void)\r
-{\r
- return(READ_REG(*((uint32_t *)UID_BASE)));\r
-}\r
-\r
-/**\r
- * @brief Returns second word of the unique device identifier (UID based on 96 bits)\r
- * @retval Device identifier\r
- */\r
-uint32_t HAL_GetUIDw1(void)\r
-{\r
- return(READ_REG(*((uint32_t *)(UID_BASE + 4U))));\r
-}\r
-\r
-/**\r
- * @brief Returns third word of the unique device identifier (UID based on 96 bits)\r
- * @retval Device identifier\r
- */\r
-uint32_t HAL_GetUIDw2(void)\r
-{\r
- return(READ_REG(*((uint32_t *)(UID_BASE + 8U))));\r
-}\r
-\r
-/**\r
- * @brief Enable the Debug Module during SLEEP mode\r
- * @retval None\r
- */\r
-void HAL_DBGMCU_EnableDBGSleepMode(void)\r
-{\r
- SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);\r
-}\r
-\r
-/**\r
- * @brief Disable the Debug Module during SLEEP mode\r
- * @retval None\r
- */\r
-void HAL_DBGMCU_DisableDBGSleepMode(void)\r
-{\r
- CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);\r
-}\r
-\r
-/**\r
- * @brief Enable the Debug Module during STOP mode\r
- * @retval None\r
- */\r
-void HAL_DBGMCU_EnableDBGStopMode(void)\r
-{\r
- SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);\r
-}\r
-\r
-/**\r
- * @brief Disable the Debug Module during STOP mode\r
- * @retval None\r
- */\r
-void HAL_DBGMCU_DisableDBGStopMode(void)\r
-{\r
- CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);\r
-}\r
-\r
-/**\r
- * @brief Enable the Debug Module during STANDBY mode\r
- * @retval None\r
- */\r
-void HAL_DBGMCU_EnableDBGStandbyMode(void)\r
-{\r
- SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);\r
-}\r
-\r
-/**\r
- * @brief Disable the Debug Module during STANDBY mode\r
- * @retval None\r
- */\r
-void HAL_DBGMCU_DisableDBGStandbyMode(void)\r
-{\r
- CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);\r
-}\r
-\r
-/**\r
- * @brief Enables the I/O Compensation Cell.\r
- * @note The I/O compensation cell can be used only when the device supply\r
- * voltage ranges from 2.4 to 3.6 V. \r
- * @retval None\r
- */\r
-void HAL_EnableCompensationCell(void)\r
-{\r
- SYSCFG->CMPCR |= SYSCFG_CMPCR_CMP_PD;\r
-}\r
-\r
-/**\r
- * @brief Power-down the I/O Compensation Cell.\r
- * @note The I/O compensation cell can be used only when the device supply\r
- * voltage ranges from 2.4 to 3.6 V. \r
- * @retval None\r
- */\r
-void HAL_DisableCompensationCell(void)\r
-{\r
- SYSCFG->CMPCR &= (uint32_t)~((uint32_t)SYSCFG_CMPCR_CMP_PD);\r
-}\r
-\r
-/**\r
- * @brief Enables the FMC Memory Mapping Swapping.\r
- * \r
- * @note SDRAM is accessible at 0x60000000 \r
- * and NOR/RAM is accessible at 0xC0000000 \r
- *\r
- * @retval None\r
- */\r
-void HAL_EnableFMCMemorySwapping(void)\r
-{\r
- SYSCFG->MEMRMP |= SYSCFG_MEMRMP_SWP_FMC_0;\r
-}\r
-\r
-/**\r
- * @brief Disables the FMC Memory Mapping Swapping\r
- * \r
- * @note SDRAM is accessible at 0xC0000000 (default mapping) \r
- * and NOR/RAM is accessible at 0x60000000 (default mapping) \r
- * \r
- * @retval None\r
- */\r
-void HAL_DisableFMCMemorySwapping(void)\r
-{\r
-\r
- SYSCFG->MEMRMP &= (uint32_t)~((uint32_t)SYSCFG_MEMRMP_SWP_FMC);\r
-}\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
-/**\r
-* @brief Enable the Internal FLASH Bank Swapping.\r
-* \r
-* @note This function can be used only for STM32F77xx/STM32F76xx devices. \r
-*\r
-* @note Flash Bank2 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM)) \r
-* and Flash Bank1 mapped at 0x08100000 (AXI) (aliased at 0x00300000 (TCM)) \r
-*\r
-* @retval None\r
-*/\r
-void HAL_EnableMemorySwappingBank(void)\r
-{\r
- SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB);\r
-}\r
-\r
-/**\r
-* @brief Disable the Internal FLASH Bank Swapping.\r
-* \r
-* @note This function can be used only for STM32F77xx/STM32F76xx devices. \r
-*\r
-* @note The default state : Flash Bank1 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM)) \r
-* and Flash Bank2 mapped at 0x08100000 (AXI)( aliased at 0x00300000 (TCM)) \r
-* \r
-* @retval None\r
-*/\r
-void HAL_DisableMemorySwappingBank(void)\r
-{\r
- CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB);\r
-}\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_cortex.c\r
- * @author MCD Application Team\r
- * @brief CORTEX HAL module driver.\r
- * This file provides firmware functions to manage the following \r
- * functionalities of the CORTEX:\r
- * + Initialization and de-initialization functions\r
- * + Peripheral Control functions \r
- *\r
- @verbatim \r
- ==============================================================================\r
- ##### How to use this driver #####\r
- ==============================================================================\r
-\r
- [..] \r
- *** How to configure Interrupts using CORTEX HAL driver ***\r
- ===========================================================\r
- [..] \r
- This section provides functions allowing to configure the NVIC interrupts (IRQ).\r
- The Cortex-M4 exceptions are managed by CMSIS functions.\r
- \r
- (#) Configure the NVIC Priority Grouping using HAL_NVIC_SetPriorityGrouping()\r
- function according to the following table.\r
- (#) Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority(). \r
- (#) Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ().\r
- (#) please refer to programming manual for details in how to configure priority. \r
- \r
- -@- When the NVIC_PRIORITYGROUP_0 is selected, IRQ preemption is no more possible. \r
- The pending IRQ priority will be managed only by the sub priority.\r
- \r
- -@- IRQ priority order (sorted by highest to lowest priority):\r
- (+@) Lowest preemption priority\r
- (+@) Lowest sub priority\r
- (+@) Lowest hardware priority (IRQ number)\r
- \r
- [..] \r
- *** How to configure Systick using CORTEX HAL driver ***\r
- ========================================================\r
- [..]\r
- Setup SysTick Timer for time base.\r
- \r
- (+) The HAL_SYSTICK_Config() function calls the SysTick_Config() function which\r
- is a CMSIS function that:\r
- (++) Configures the SysTick Reload register with value passed as function parameter.\r
- (++) Configures the SysTick IRQ priority to the lowest value (0x0F).\r
- (++) Resets the SysTick Counter register.\r
- (++) Configures the SysTick Counter clock source to be Core Clock Source (HCLK).\r
- (++) Enables the SysTick Interrupt.\r
- (++) Starts the SysTick Counter.\r
- \r
- (+) You can change the SysTick Clock source to be HCLK_Div8 by calling the macro\r
- __HAL_CORTEX_SYSTICKCLK_CONFIG(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the\r
- HAL_SYSTICK_Config() function call. The __HAL_CORTEX_SYSTICKCLK_CONFIG() macro is defined\r
- inside the stm32f7xx_hal_cortex.h file.\r
-\r
- (+) You can change the SysTick IRQ priority by calling the\r
- HAL_NVIC_SetPriority(SysTick_IRQn,...) function just after the HAL_SYSTICK_Config() function \r
- call. The HAL_NVIC_SetPriority() call the NVIC_SetPriority() function which is a CMSIS function.\r
-\r
- (+) To adjust the SysTick time base, use the following formula:\r
- \r
- Reload Value = SysTick Counter Clock (Hz) x Desired Time base (s)\r
- (++) Reload Value is the parameter to be passed for HAL_SYSTICK_Config() function\r
- (++) Reload Value should not exceed 0xFFFFFF\r
- \r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup CORTEX CORTEX\r
- * @brief CORTEX HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_CORTEX_MODULE_ENABLED\r
-\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/* Private macros ------------------------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions\r
- * @{\r
- */\r
-\r
-\r
-/** @defgroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @brief Initialization and Configuration functions \r
- *\r
-@verbatim \r
- ==============================================================================\r
- ##### Initialization and de-initialization functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides the CORTEX HAL driver functions allowing to configure Interrupts\r
- Systick functionalities \r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-\r
-/**\r
- * @brief Sets the priority grouping field (preemption priority and subpriority)\r
- * using the required unlock sequence.\r
- * @param PriorityGroup The priority grouping bits length. \r
- * This parameter can be one of the following values:\r
- * @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority\r
- * 4 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority\r
- * 3 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority\r
- * 2 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority\r
- * 1 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority\r
- * 0 bits for subpriority\r
- * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. \r
- * The pending IRQ priority will be managed only by the subpriority. \r
- * @retval None\r
- */\r
-void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));\r
- \r
- /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */\r
- NVIC_SetPriorityGrouping(PriorityGroup);\r
-}\r
-\r
-/**\r
- * @brief Sets the priority of an interrupt.\r
- * @param IRQn External interrupt number.\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @param PreemptPriority The preemption priority for the IRQn channel.\r
- * This parameter can be a value between 0 and 15\r
- * A lower priority value indicates a higher priority \r
- * @param SubPriority the subpriority level for the IRQ channel.\r
- * This parameter can be a value between 0 and 15\r
- * A lower priority value indicates a higher priority. \r
- * @retval None\r
- */\r
-void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)\r
-{ \r
- uint32_t prioritygroup = 0x00;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));\r
- assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));\r
- \r
- prioritygroup = NVIC_GetPriorityGrouping();\r
- \r
- NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));\r
-}\r
-\r
-/**\r
- * @brief Enables a device specific interrupt in the NVIC interrupt controller.\r
- * @note To configure interrupts priority correctly, the NVIC_PriorityGroupConfig()\r
- * function should be called before. \r
- * @param IRQn External interrupt number.\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @retval None\r
- */\r
-void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\r
- \r
- /* Enable interrupt */\r
- NVIC_EnableIRQ(IRQn);\r
-}\r
-\r
-/**\r
- * @brief Disables a device specific interrupt in the NVIC interrupt controller.\r
- * @param IRQn External interrupt number.\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @retval None\r
- */\r
-void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\r
- \r
- /* Disable interrupt */\r
- NVIC_DisableIRQ(IRQn);\r
-}\r
-\r
-/**\r
- * @brief Initiates a system reset request to reset the MCU.\r
- * @retval None\r
- */\r
-void HAL_NVIC_SystemReset(void)\r
-{\r
- /* System Reset */\r
- NVIC_SystemReset();\r
-}\r
-\r
-/**\r
- * @brief Initializes the System Timer and its interrupt, and starts the System Tick Timer.\r
- * Counter is in free running mode to generate periodic interrupts.\r
- * @param TicksNumb Specifies the ticks Number of ticks between two interrupts.\r
- * @retval status: - 0 Function succeeded.\r
- * - 1 Function failed.\r
- */\r
-uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)\r
-{\r
- return SysTick_Config(TicksNumb);\r
-}\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions\r
- * @brief Cortex control functions \r
- *\r
-@verbatim \r
- ==============================================================================\r
- ##### Peripheral Control functions #####\r
- ============================================================================== \r
- [..]\r
- This subsection provides a set of functions allowing to control the CORTEX\r
- (NVIC, SYSTICK, MPU) functionalities. \r
- \r
- \r
-@endverbatim\r
- * @{\r
- */\r
-\r
-#if (__MPU_PRESENT == 1)\r
-/**\r
- * @brief Disables the MPU\r
- * @retval None\r
- */\r
-void HAL_MPU_Disable(void)\r
-{\r
- /* Make sure outstanding transfers are done */\r
- __DMB();\r
-\r
- /* Disable fault exceptions */\r
- SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;\r
- \r
- /* Disable the MPU and clear the control register*/\r
- MPU->CTRL = 0;\r
-}\r
-\r
-/**\r
- * @brief Enables the MPU\r
- * @param MPU_Control Specifies the control mode of the MPU during hard fault, \r
- * NMI, FAULTMASK and privileged access to the default memory \r
- * This parameter can be one of the following values:\r
- * @arg MPU_HFNMI_PRIVDEF_NONE\r
- * @arg MPU_HARDFAULT_NMI\r
- * @arg MPU_PRIVILEGED_DEFAULT\r
- * @arg MPU_HFNMI_PRIVDEF\r
- * @retval None\r
- */\r
-void HAL_MPU_Enable(uint32_t MPU_Control)\r
-{\r
- /* Enable the MPU */\r
- MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk;\r
- \r
- /* Enable fault exceptions */\r
- SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;\r
- \r
- /* Ensure MPU setting take effects */\r
- __DSB();\r
- __ISB();\r
-}\r
-\r
-/**\r
- * @brief Initializes and configures the Region and the memory to be protected.\r
- * @param MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains\r
- * the initialization and configuration information.\r
- * @retval None\r
- */\r
-void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number));\r
- assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable));\r
-\r
- /* Set the Region number */\r
- MPU->RNR = MPU_Init->Number;\r
-\r
- if ((MPU_Init->Enable) != RESET)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec));\r
- assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission));\r
- assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField));\r
- assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable));\r
- assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable));\r
- assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable));\r
- assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable));\r
- assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size));\r
- \r
- MPU->RBAR = MPU_Init->BaseAddress;\r
- MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) |\r
- ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) |\r
- ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) |\r
- ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) |\r
- ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) |\r
- ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) |\r
- ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) |\r
- ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) |\r
- ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos);\r
- }\r
- else\r
- {\r
- MPU->RBAR = 0x00;\r
- MPU->RASR = 0x00;\r
- }\r
-}\r
-#endif /* __MPU_PRESENT */\r
-\r
-/**\r
- * @brief Gets the priority grouping field from the NVIC Interrupt Controller.\r
- * @retval Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field)\r
- */\r
-uint32_t HAL_NVIC_GetPriorityGrouping(void)\r
-{\r
- /* Get the PRIGROUP[10:8] field value */\r
- return NVIC_GetPriorityGrouping();\r
-}\r
-\r
-/**\r
- * @brief Gets the priority of an interrupt.\r
- * @param IRQn External interrupt number.\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @param PriorityGroup the priority grouping bits length.\r
- * This parameter can be one of the following values:\r
- * @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority\r
- * 4 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority\r
- * 3 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority\r
- * 2 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority\r
- * 1 bits for subpriority\r
- * @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority\r
- * 0 bits for subpriority\r
- * @param pPreemptPriority Pointer on the Preemptive priority value (starting from 0).\r
- * @param pSubPriority Pointer on the Subpriority value (starting from 0).\r
- * @retval None\r
- */\r
-void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));\r
- /* Get priority for Cortex-M system or device specific interrupts */\r
- NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority);\r
-}\r
-\r
-/**\r
- * @brief Sets Pending bit of an external interrupt.\r
- * @param IRQn External interrupt number\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @retval None\r
- */\r
-void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\r
- \r
- /* Set interrupt pending */\r
- NVIC_SetPendingIRQ(IRQn);\r
-}\r
-\r
-/**\r
- * @brief Gets Pending Interrupt (reads the pending register in the NVIC \r
- * and returns the pending bit for the specified interrupt).\r
- * @param IRQn External interrupt number.\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @retval status: - 0 Interrupt status is not pending.\r
- * - 1 Interrupt status is pending.\r
- */\r
-uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\r
- \r
- /* Return 1 if pending else 0 */\r
- return NVIC_GetPendingIRQ(IRQn);\r
-}\r
-\r
-/**\r
- * @brief Clears the pending bit of an external interrupt.\r
- * @param IRQn External interrupt number.\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @retval None\r
- */\r
-void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\r
- \r
- /* Clear pending interrupt */\r
- NVIC_ClearPendingIRQ(IRQn);\r
-}\r
-\r
-/**\r
- * @brief Gets active interrupt ( reads the active register in NVIC and returns the active bit).\r
- * @param IRQn External interrupt number\r
- * This parameter can be an enumerator of IRQn_Type enumeration\r
- * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f7xxxx.h))\r
- * @retval status: - 0 Interrupt status is not pending.\r
- * - 1 Interrupt status is pending.\r
- */\r
-uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_NVIC_DEVICE_IRQ(IRQn));\r
- \r
- /* Return 1 if active else 0 */\r
- return NVIC_GetActive(IRQn);\r
-}\r
-\r
-/**\r
- * @brief Configures the SysTick clock source.\r
- * @param CLKSource specifies the SysTick clock source.\r
- * This parameter can be one of the following values:\r
- * @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source.\r
- * @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source.\r
- * @retval None\r
- */\r
-void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource));\r
- if (CLKSource == SYSTICK_CLKSOURCE_HCLK)\r
- {\r
- SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;\r
- }\r
- else\r
- {\r
- SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK;\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles SYSTICK interrupt request.\r
- * @retval None\r
- */\r
-void HAL_SYSTICK_IRQHandler(void)\r
-{\r
- HAL_SYSTICK_Callback();\r
-}\r
-\r
-/**\r
- * @brief SYSTICK callback.\r
- * @retval None\r
- */\r
-__weak void HAL_SYSTICK_Callback(void)\r
-{\r
- /* NOTE : This function Should not be modified, when the callback is needed,\r
- the HAL_SYSTICK_Callback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_CORTEX_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_dma.c\r
- * @author MCD Application Team\r
- * @brief DMA HAL module driver.\r
- * \r
- * This file provides firmware functions to manage the following \r
- * functionalities of the Direct Memory Access (DMA) peripheral:\r
- * + Initialization and de-initialization functions\r
- * + IO operation functions\r
- * + Peripheral State and errors functions\r
- @verbatim \r
- ==============================================================================\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..]\r
- (#) Enable and configure the peripheral to be connected to the DMA Stream\r
- (except for internal SRAM/FLASH memories: no initialization is \r
- necessary) please refer to Reference manual for connection between peripherals\r
- and DMA requests.\r
-\r
- (#) For a given Stream, program the required configuration through the following parameters:\r
- Transfer Direction, Source and Destination data formats, \r
- Circular, Normal or peripheral flow control mode, Stream Priority level, \r
- Source and Destination Increment mode, FIFO mode and its Threshold (if needed), \r
- Burst mode for Source and/or Destination (if needed) using HAL_DMA_Init() function.\r
-\r
- -@- Prior to HAL_DMA_Init() the clock must be enabled for DMA through the following macros:\r
- __HAL_RCC_DMA1_CLK_ENABLE() or __HAL_RCC_DMA2_CLK_ENABLE().\r
-\r
- *** Polling mode IO operation ***\r
- =================================\r
- [..]\r
- (+) Use HAL_DMA_Start() to start DMA transfer after the configuration of Source \r
- address and destination address and the Length of data to be transferred.\r
- (+) Use HAL_DMA_PollForTransfer() to poll for the end of current transfer, in this \r
- case a fixed Timeout can be configured by User depending from his application.\r
- (+) Use HAL_DMA_Abort() function to abort the current transfer.\r
-\r
- *** Interrupt mode IO operation ***\r
- ===================================\r
- [..]\r
- (+) Configure the DMA interrupt priority using HAL_NVIC_SetPriority()\r
- (+) Enable the DMA IRQ handler using HAL_NVIC_EnableIRQ()\r
- (+) Select Callbacks functions using HAL_DMA_RegisterCallback()\r
- (+) Use HAL_DMA_Start_IT() to start DMA transfer after the configuration of \r
- Source address and destination address and the Length of data to be transferred. In this \r
- case the DMA interrupt is configured \r
- (+) Use HAL_DMA_IRQHandler() called under DMA_IRQHandler() Interrupt subroutine\r
- (+) At the end of data transfer HAL_DMA_IRQHandler() function is executed and user can \r
- add his own function by customization of function pointer XferCpltCallback and \r
- XferErrorCallback (i.e a member of DMA handle structure).\r
- [..]\r
- (#) Use HAL_DMA_GetState() function to return the DMA state and HAL_DMA_GetError() in case of error \r
- detection.\r
-\r
- (#) Use HAL_DMA_Abort_IT() function to abort the current transfer\r
-\r
- -@- In Memory-to-Memory transfer mode, Circular mode is not allowed.\r
-\r
- -@- The FIFO is used mainly to reduce bus usage and to allow data packing/unpacking: it is\r
- possible to set different Data Sizes for the Peripheral and the Memory (ie. you can set\r
- Half-Word data size for the peripheral to access its data register and set Word data size\r
- for the Memory to gain in access time. Each two half words will be packed and written in\r
- a single access to a Word in the Memory).\r
-\r
- -@- When FIFO is disabled, it is not allowed to configure different Data Sizes for Source\r
- and Destination. In this case the Peripheral Data Size will be applied to both Source\r
- and Destination.\r
-\r
- *** DMA HAL driver macros list ***\r
- =============================================\r
- [..]\r
- Below the list of most used macros in DMA HAL driver.\r
- \r
- (+) __HAL_DMA_ENABLE: Enable the specified DMA Stream.\r
- (+) __HAL_DMA_DISABLE: Disable the specified DMA Stream.\r
- (+) __HAL_DMA_GET_IT_SOURCE: Check whether the specified DMA Stream interrupt has occurred or not. \r
-\r
- [..]\r
- (@) You can refer to the DMA HAL driver header file for more useful macros\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup DMA DMA\r
- * @brief DMA HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_DMA_MODULE_ENABLED\r
-\r
-/* Private types -------------------------------------------------------------*/\r
-typedef struct\r
-{\r
- __IO uint32_t ISR; /*!< DMA interrupt status register */\r
- __IO uint32_t Reserved0;\r
- __IO uint32_t IFCR; /*!< DMA interrupt flag clear register */\r
-} DMA_Base_Registers;\r
-\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private constants ---------------------------------------------------------*/\r
-/** @addtogroup DMA_Private_Constants\r
- * @{\r
- */\r
- #define HAL_TIMEOUT_DMA_ABORT ((uint32_t)5) /* 5 ms */\r
-/**\r
- * @}\r
- */\r
-/* Private macros ------------------------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @addtogroup DMA_Private_Functions\r
- * @{\r
- */\r
-static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\r
-static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma);\r
-static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma);\r
-\r
-/**\r
- * @}\r
- */ \r
-\r
-/* Exported functions ---------------------------------------------------------*/\r
-/** @addtogroup DMA_Exported_Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup DMA_Exported_Functions_Group1\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Initialization and de-initialization functions #####\r
- ===============================================================================\r
- [..]\r
- This section provides functions allowing to initialize the DMA Stream source\r
- and destination addresses, incrementation and data sizes, transfer direction, \r
- circular/normal mode selection, memory-to-memory mode selection and Stream priority value.\r
- [..]\r
- The HAL_DMA_Init() function follows the DMA configuration procedures as described in\r
- reference manual.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
- \r
-/**\r
- * @brief Initialize the DMA according to the specified\r
- * parameters in the DMA_InitTypeDef and create the associated handle.\r
- * @param hdma Pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)\r
-{\r
- uint32_t tmp = 0U;\r
- uint32_t tickstart = HAL_GetTick();\r
- DMA_Base_Registers *regs;\r
-\r
- /* Check the DMA peripheral state */\r
- if(hdma == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_DMA_STREAM_ALL_INSTANCE(hdma->Instance));\r
- assert_param(IS_DMA_CHANNEL(hdma->Init.Channel));\r
- assert_param(IS_DMA_DIRECTION(hdma->Init.Direction));\r
- assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc));\r
- assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc));\r
- assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment));\r
- assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment));\r
- assert_param(IS_DMA_MODE(hdma->Init.Mode));\r
- assert_param(IS_DMA_PRIORITY(hdma->Init.Priority));\r
- assert_param(IS_DMA_FIFO_MODE_STATE(hdma->Init.FIFOMode));\r
- /* Check the memory burst, peripheral burst and FIFO threshold parameters only\r
- when FIFO mode is enabled */\r
- if(hdma->Init.FIFOMode != DMA_FIFOMODE_DISABLE)\r
- {\r
- assert_param(IS_DMA_FIFO_THRESHOLD(hdma->Init.FIFOThreshold));\r
- assert_param(IS_DMA_MEMORY_BURST(hdma->Init.MemBurst));\r
- assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst));\r
- }\r
- \r
- /* Allocate lock resource */\r
- __HAL_UNLOCK(hdma);\r
-\r
- /* Change DMA peripheral state */\r
- hdma->State = HAL_DMA_STATE_BUSY;\r
- \r
- /* Disable the peripheral */\r
- __HAL_DMA_DISABLE(hdma);\r
- \r
- /* Check if the DMA Stream is effectively disabled */\r
- while((hdma->Instance->CR & DMA_SxCR_EN) != RESET)\r
- {\r
- /* Check for the Timeout */\r
- if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT)\r
- {\r
- /* Update error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;\r
- \r
- /* Change the DMA state */\r
- hdma->State = HAL_DMA_STATE_TIMEOUT;\r
- \r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- \r
- /* Get the CR register value */\r
- tmp = hdma->Instance->CR;\r
-\r
- /* Clear CHSEL, MBURST, PBURST, PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, CT and DBM bits */\r
- tmp &= ((uint32_t)~(DMA_SxCR_CHSEL | DMA_SxCR_MBURST | DMA_SxCR_PBURST | \\r
- DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \\r
- DMA_SxCR_MINC | DMA_SxCR_PINC | DMA_SxCR_CIRC | \\r
- DMA_SxCR_DIR | DMA_SxCR_CT | DMA_SxCR_DBM));\r
-\r
- /* Prepare the DMA Stream configuration */\r
- tmp |= hdma->Init.Channel | hdma->Init.Direction |\r
- hdma->Init.PeriphInc | hdma->Init.MemInc |\r
- hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment |\r
- hdma->Init.Mode | hdma->Init.Priority;\r
-\r
- /* the Memory burst and peripheral burst are not used when the FIFO is disabled */\r
- if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE)\r
- {\r
- /* Get memory burst and peripheral burst */\r
- tmp |= hdma->Init.MemBurst | hdma->Init.PeriphBurst;\r
- }\r
- \r
- /* Write to DMA Stream CR register */\r
- hdma->Instance->CR = tmp; \r
-\r
- /* Get the FCR register value */\r
- tmp = hdma->Instance->FCR;\r
-\r
- /* Clear Direct mode and FIFO threshold bits */\r
- tmp &= (uint32_t)~(DMA_SxFCR_DMDIS | DMA_SxFCR_FTH);\r
-\r
- /* Prepare the DMA Stream FIFO configuration */\r
- tmp |= hdma->Init.FIFOMode;\r
-\r
- /* The FIFO threshold is not used when the FIFO mode is disabled */\r
- if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE)\r
- {\r
- /* Get the FIFO threshold */\r
- tmp |= hdma->Init.FIFOThreshold;\r
- \r
- /* Check compatibility between FIFO threshold level and size of the memory burst */\r
- /* for INCR4, INCR8, INCR16 bursts */\r
- if (hdma->Init.MemBurst != DMA_MBURST_SINGLE)\r
- {\r
- if (DMA_CheckFifoParam(hdma) != HAL_OK)\r
- {\r
- /* Update error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_PARAM;\r
- \r
- /* Change the DMA state */\r
- hdma->State = HAL_DMA_STATE_READY;\r
- \r
- return HAL_ERROR; \r
- }\r
- }\r
- }\r
- \r
- /* Write to DMA Stream FCR */\r
- hdma->Instance->FCR = tmp;\r
-\r
- /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate\r
- DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */\r
- regs = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma);\r
- \r
- /* Clear all interrupt flags */\r
- regs->IFCR = 0x3FU << hdma->StreamIndex;\r
-\r
- /* Initialize the error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_NONE;\r
- \r
- /* Initialize the DMA state */\r
- hdma->State = HAL_DMA_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the DMA peripheral \r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma)\r
-{\r
- DMA_Base_Registers *regs;\r
-\r
- /* Check the DMA peripheral state */\r
- if(hdma == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
- \r
- /* Check the DMA peripheral state */\r
- if(hdma->State == HAL_DMA_STATE_BUSY)\r
- {\r
- /* Return error status */\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_DMA_STREAM_ALL_INSTANCE(hdma->Instance));\r
-\r
- /* Disable the selected DMA Streamx */\r
- __HAL_DMA_DISABLE(hdma);\r
-\r
- /* Reset DMA Streamx control register */\r
- hdma->Instance->CR = 0U;\r
-\r
- /* Reset DMA Streamx number of data to transfer register */\r
- hdma->Instance->NDTR = 0U;\r
-\r
- /* Reset DMA Streamx peripheral address register */\r
- hdma->Instance->PAR = 0U;\r
-\r
- /* Reset DMA Streamx memory 0 address register */\r
- hdma->Instance->M0AR = 0U;\r
- \r
- /* Reset DMA Streamx memory 1 address register */\r
- hdma->Instance->M1AR = 0U;\r
- \r
- /* Reset DMA Streamx FIFO control register */\r
- hdma->Instance->FCR = (uint32_t)0x00000021U;\r
- \r
- /* Get DMA steam Base Address */ \r
- regs = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma);\r
- \r
- /* Clear all interrupt flags at correct offset within the register */\r
- regs->IFCR = 0x3FU << hdma->StreamIndex;\r
- \r
- /* Clean all callbacks */\r
- hdma->XferCpltCallback = NULL;\r
- hdma->XferHalfCpltCallback = NULL;\r
- hdma->XferM1CpltCallback = NULL;\r
- hdma->XferM1HalfCpltCallback = NULL;\r
- hdma->XferErrorCallback = NULL;\r
- hdma->XferAbortCallback = NULL; \r
-\r
- /* Reset the error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_NONE;\r
-\r
- /* Reset the DMA state */\r
- hdma->State = HAL_DMA_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(hdma);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup DMA_Exported_Functions_Group2\r
- *\r
-@verbatim \r
- ===============================================================================\r
- ##### IO operation functions #####\r
- ===============================================================================\r
- [..] This section provides functions allowing to:\r
- (+) Configure the source, destination address and data length and Start DMA transfer\r
- (+) Configure the source, destination address and data length and \r
- Start DMA transfer with interrupt\r
- (+) Abort DMA transfer\r
- (+) Poll for transfer complete\r
- (+) Handle DMA interrupt request \r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Starts the DMA Transfer.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @param SrcAddress The source memory Buffer address\r
- * @param DstAddress The destination memory Buffer address\r
- * @param DataLength The length of data to be transferred from source to destination\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_DMA_BUFFER_SIZE(DataLength));\r
-\r
- /* Process locked */\r
- __HAL_LOCK(hdma);\r
-\r
- if(HAL_DMA_STATE_READY == hdma->State)\r
- {\r
- /* Change DMA peripheral state */\r
- hdma->State = HAL_DMA_STATE_BUSY;\r
- \r
- /* Initialize the error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_NONE;\r
- \r
- /* Configure the source, destination address and the data length */\r
- DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_DMA_ENABLE(hdma);\r
- }\r
- else\r
- {\r
- /* Process unlocked */\r
- __HAL_UNLOCK(hdma);\r
- \r
- /* Return error status */\r
- status = HAL_BUSY;\r
- } \r
- return status; \r
-}\r
-\r
-/**\r
- * @brief Start the DMA Transfer with interrupt enabled.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @param SrcAddress The source memory Buffer address\r
- * @param DstAddress The destination memory Buffer address\r
- * @param DataLength The length of data to be transferred from source to destination\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* calculate DMA base and stream number */\r
- DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_DMA_BUFFER_SIZE(DataLength));\r
- \r
- /* Process locked */\r
- __HAL_LOCK(hdma);\r
- \r
- if(HAL_DMA_STATE_READY == hdma->State)\r
- {\r
- /* Change DMA peripheral state */\r
- hdma->State = HAL_DMA_STATE_BUSY;\r
- \r
- /* Initialize the error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_NONE;\r
- \r
- /* Configure the source, destination address and the data length */\r
- DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);\r
- \r
- /* Clear all interrupt flags at correct offset within the register */\r
- regs->IFCR = 0x3FU << hdma->StreamIndex;\r
- \r
- /* Enable Common interrupts*/\r
- hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME;\r
- hdma->Instance->FCR |= DMA_IT_FE;\r
- \r
- if(hdma->XferHalfCpltCallback != NULL)\r
- {\r
- hdma->Instance->CR |= DMA_IT_HT;\r
- }\r
- \r
- /* Enable the Peripheral */\r
- __HAL_DMA_ENABLE(hdma);\r
- }\r
- else\r
- {\r
- /* Process unlocked */\r
- __HAL_UNLOCK(hdma); \r
- \r
- /* Return error status */\r
- status = HAL_BUSY;\r
- }\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Aborts the DMA Transfer.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * \r
- * @note After disabling a DMA Stream, a check for wait until the DMA Stream is \r
- * effectively disabled is added. If a Stream is disabled \r
- * while a data transfer is ongoing, the current data will be transferred\r
- * and the Stream will be effectively disabled only after the transfer of\r
- * this single data is finished. \r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)\r
-{\r
- /* calculate DMA base and stream number */\r
- DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress;\r
- \r
- uint32_t tickstart = HAL_GetTick();\r
- \r
- if(hdma->State != HAL_DMA_STATE_BUSY)\r
- {\r
- hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;\r
- \r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
- \r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- /* Disable all the transfer interrupts */\r
- hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME);\r
- hdma->Instance->FCR &= ~(DMA_IT_FE);\r
- \r
- if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))\r
- {\r
- hdma->Instance->CR &= ~(DMA_IT_HT);\r
- }\r
- \r
- /* Disable the stream */\r
- __HAL_DMA_DISABLE(hdma);\r
- \r
- /* Check if the DMA Stream is effectively disabled */\r
- while((hdma->Instance->CR & DMA_SxCR_EN) != RESET)\r
- {\r
- /* Check for the Timeout */\r
- if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT)\r
- {\r
- /* Update error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;\r
- \r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
- \r
- /* Change the DMA state */\r
- hdma->State = HAL_DMA_STATE_TIMEOUT;\r
- \r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- \r
- /* Clear all interrupt flags at correct offset within the register */\r
- regs->IFCR = 0x3FU << hdma->StreamIndex;\r
- \r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
- \r
- /* Change the DMA state*/\r
- hdma->State = HAL_DMA_STATE_READY;\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Aborts the DMA Transfer in Interrupt mode.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)\r
-{\r
- if(hdma->State != HAL_DMA_STATE_BUSY)\r
- {\r
- hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- /* Set Abort State */\r
- hdma->State = HAL_DMA_STATE_ABORT;\r
- \r
- /* Disable the stream */\r
- __HAL_DMA_DISABLE(hdma);\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Polling for transfer complete.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @param CompleteLevel Specifies the DMA level complete.\r
- * @note The polling mode is kept in this version for legacy. it is recommanded to use the IT model instead.\r
- * This model could be used for debug purpose.\r
- * @note The HAL_DMA_PollForTransfer API cannot be used in circular and double buffering mode (automatic circular mode). \r
- * @param Timeout Timeout duration.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK; \r
- uint32_t mask_cpltlevel;\r
- uint32_t tickstart = HAL_GetTick(); \r
- uint32_t tmpisr;\r
- \r
- /* calculate DMA base and stream number */\r
- DMA_Base_Registers *regs;\r
-\r
- if(HAL_DMA_STATE_BUSY != hdma->State)\r
- {\r
- /* No transfer ongoing */\r
- hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;\r
- __HAL_UNLOCK(hdma);\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Polling mode not supported in circular mode and double buffering mode */\r
- if ((hdma->Instance->CR & DMA_SxCR_CIRC) != RESET)\r
- {\r
- hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;\r
- return HAL_ERROR;\r
- }\r
- \r
- /* Get the level transfer complete flag */\r
- if(CompleteLevel == HAL_DMA_FULL_TRANSFER)\r
- {\r
- /* Transfer Complete flag */\r
- mask_cpltlevel = DMA_FLAG_TCIF0_4 << hdma->StreamIndex;\r
- }\r
- else\r
- {\r
- /* Half Transfer Complete flag */\r
- mask_cpltlevel = DMA_FLAG_HTIF0_4 << hdma->StreamIndex;\r
- }\r
- \r
- regs = (DMA_Base_Registers *)hdma->StreamBaseAddress;\r
- tmpisr = regs->ISR;\r
- \r
- while(((tmpisr & mask_cpltlevel) == RESET) && ((hdma->ErrorCode & HAL_DMA_ERROR_TE) == RESET))\r
- {\r
- /* Check for the Timeout (Not applicable in circular mode)*/\r
- if(Timeout != HAL_MAX_DELAY)\r
- {\r
- if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))\r
- {\r
- /* Update error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
- \r
- /* Change the DMA state */\r
- hdma->State = HAL_DMA_STATE_READY;\r
- \r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Get the ISR register value */\r
- tmpisr = regs->ISR;\r
-\r
- if((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- /* Update error code */\r
- hdma->ErrorCode |= HAL_DMA_ERROR_TE;\r
- \r
- /* Clear the transfer error flag */\r
- regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex;\r
- }\r
- \r
- if((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- /* Update error code */\r
- hdma->ErrorCode |= HAL_DMA_ERROR_FE;\r
- \r
- /* Clear the FIFO error flag */\r
- regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex;\r
- }\r
- \r
- if((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- /* Update error code */\r
- hdma->ErrorCode |= HAL_DMA_ERROR_DME;\r
- \r
- /* Clear the Direct Mode error flag */\r
- regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex;\r
- }\r
- }\r
- \r
- if(hdma->ErrorCode != HAL_DMA_ERROR_NONE)\r
- {\r
- if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET)\r
- {\r
- HAL_DMA_Abort(hdma);\r
- \r
- /* Clear the half transfer and transfer complete flags */\r
- regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex;\r
- \r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
-\r
- /* Change the DMA state */\r
- hdma->State= HAL_DMA_STATE_READY;\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- \r
- /* Get the level transfer complete flag */\r
- if(CompleteLevel == HAL_DMA_FULL_TRANSFER)\r
- {\r
- /* Clear the half transfer and transfer complete flags */\r
- regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex;\r
- \r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
-\r
- hdma->State = HAL_DMA_STATE_READY;\r
- }\r
- else\r
- {\r
- /* Clear the half transfer flag */\r
- regs->IFCR = (DMA_FLAG_HTIF0_4) << hdma->StreamIndex;\r
- }\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Handles DMA interrupt request.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @retval None\r
- */\r
-void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)\r
-{\r
- uint32_t tmpisr;\r
- __IO uint32_t count = 0;\r
- uint32_t timeout = SystemCoreClock / 9600;\r
-\r
- /* calculate DMA base and stream number */\r
- DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress;\r
-\r
- tmpisr = regs->ISR;\r
-\r
- /* Transfer Error Interrupt management ***************************************/\r
- if ((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != RESET)\r
- {\r
- /* Disable the transfer error interrupt */\r
- hdma->Instance->CR &= ~(DMA_IT_TE);\r
- \r
- /* Clear the transfer error flag */\r
- regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex;\r
- \r
- /* Update error code */\r
- hdma->ErrorCode |= HAL_DMA_ERROR_TE;\r
- }\r
- }\r
- /* FIFO Error Interrupt management ******************************************/\r
- if ((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_FE) != RESET)\r
- {\r
- /* Clear the FIFO error flag */\r
- regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex;\r
-\r
- /* Update error code */\r
- hdma->ErrorCode |= HAL_DMA_ERROR_FE;\r
- }\r
- }\r
- /* Direct Mode Error Interrupt management ***********************************/\r
- if ((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_DME) != RESET)\r
- {\r
- /* Clear the direct mode error flag */\r
- regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex;\r
-\r
- /* Update error code */\r
- hdma->ErrorCode |= HAL_DMA_ERROR_DME;\r
- }\r
- }\r
- /* Half Transfer Complete Interrupt management ******************************/\r
- if ((tmpisr & (DMA_FLAG_HTIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != RESET)\r
- {\r
- /* Clear the half transfer complete flag */\r
- regs->IFCR = DMA_FLAG_HTIF0_4 << hdma->StreamIndex;\r
- \r
- /* Multi_Buffering mode enabled */\r
- if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET)\r
- {\r
- /* Current memory buffer used is Memory 0 */\r
- if((hdma->Instance->CR & DMA_SxCR_CT) == RESET)\r
- {\r
- if(hdma->XferHalfCpltCallback != NULL)\r
- {\r
- /* Half transfer callback */\r
- hdma->XferHalfCpltCallback(hdma);\r
- }\r
- }\r
- /* Current memory buffer used is Memory 1 */\r
- else\r
- {\r
- if(hdma->XferM1HalfCpltCallback != NULL)\r
- {\r
- /* Half transfer callback */\r
- hdma->XferM1HalfCpltCallback(hdma);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */\r
- if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET)\r
- {\r
- /* Disable the half transfer interrupt */\r
- hdma->Instance->CR &= ~(DMA_IT_HT);\r
- }\r
- \r
- if(hdma->XferHalfCpltCallback != NULL)\r
- {\r
- /* Half transfer callback */\r
- hdma->XferHalfCpltCallback(hdma);\r
- }\r
- }\r
- }\r
- }\r
- /* Transfer Complete Interrupt management ***********************************/\r
- if ((tmpisr & (DMA_FLAG_TCIF0_4 << hdma->StreamIndex)) != RESET)\r
- {\r
- if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != RESET)\r
- {\r
- /* Clear the transfer complete flag */\r
- regs->IFCR = DMA_FLAG_TCIF0_4 << hdma->StreamIndex;\r
- \r
- if(HAL_DMA_STATE_ABORT == hdma->State)\r
- {\r
- /* Disable all the transfer interrupts */\r
- hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME);\r
- hdma->Instance->FCR &= ~(DMA_IT_FE);\r
- \r
- if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))\r
- {\r
- hdma->Instance->CR &= ~(DMA_IT_HT);\r
- }\r
-\r
- /* Clear all interrupt flags at correct offset within the register */\r
- regs->IFCR = 0x3FU << hdma->StreamIndex;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
-\r
- /* Change the DMA state */\r
- hdma->State = HAL_DMA_STATE_READY;\r
-\r
- if(hdma->XferAbortCallback != NULL)\r
- {\r
- hdma->XferAbortCallback(hdma);\r
- }\r
- return;\r
- }\r
-\r
- if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET)\r
- {\r
- /* Current memory buffer used is Memory 0 */\r
- if((hdma->Instance->CR & DMA_SxCR_CT) == RESET)\r
- {\r
- if(hdma->XferM1CpltCallback != NULL)\r
- {\r
- /* Transfer complete Callback for memory1 */\r
- hdma->XferM1CpltCallback(hdma);\r
- }\r
- }\r
- /* Current memory buffer used is Memory 1 */\r
- else\r
- {\r
- if(hdma->XferCpltCallback != NULL)\r
- {\r
- /* Transfer complete Callback for memory0 */\r
- hdma->XferCpltCallback(hdma);\r
- }\r
- }\r
- }\r
- /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */\r
- else\r
- {\r
- if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET)\r
- {\r
- /* Disable the transfer complete interrupt */\r
- hdma->Instance->CR &= ~(DMA_IT_TC);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
-\r
- /* Change the DMA state */\r
- hdma->State = HAL_DMA_STATE_READY;\r
- }\r
-\r
- if(hdma->XferCpltCallback != NULL)\r
- {\r
- /* Transfer complete callback */\r
- hdma->XferCpltCallback(hdma);\r
- }\r
- }\r
- }\r
- }\r
- \r
- /* manage error case */\r
- if(hdma->ErrorCode != HAL_DMA_ERROR_NONE)\r
- {\r
- if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET)\r
- {\r
- hdma->State = HAL_DMA_STATE_ABORT;\r
-\r
- /* Disable the stream */\r
- __HAL_DMA_DISABLE(hdma);\r
-\r
- do\r
- {\r
- if (++count > timeout)\r
- {\r
- break;\r
- }\r
- }\r
- while((hdma->Instance->CR & DMA_SxCR_EN) != RESET);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hdma);\r
-\r
- /* Change the DMA state */\r
- hdma->State = HAL_DMA_STATE_READY;\r
- }\r
-\r
- if(hdma->XferErrorCallback != NULL)\r
- {\r
- /* Transfer error callback */\r
- hdma->XferErrorCallback(hdma);\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @brief Register callbacks\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @param CallbackID User Callback identifer\r
- * a DMA_HandleTypeDef structure as parameter.\r
- * @param pCallback pointer to private callbacsk function which has pointer to \r
- * a DMA_HandleTypeDef structure as parameter.\r
- * @retval HAL status\r
- */ \r
-HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma))\r
-{\r
-\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Process locked */\r
- __HAL_LOCK(hdma);\r
-\r
- if(HAL_DMA_STATE_READY == hdma->State)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_DMA_XFER_CPLT_CB_ID:\r
- hdma->XferCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_DMA_XFER_HALFCPLT_CB_ID:\r
- hdma->XferHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_DMA_XFER_M1CPLT_CB_ID:\r
- hdma->XferM1CpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_DMA_XFER_M1HALFCPLT_CB_ID:\r
- hdma->XferM1HalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_DMA_XFER_ERROR_CB_ID:\r
- hdma->XferErrorCallback = pCallback;\r
- break;\r
-\r
- case HAL_DMA_XFER_ABORT_CB_ID:\r
- hdma->XferAbortCallback = pCallback;\r
- break;\r
-\r
- default:\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(hdma);\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief UnRegister callbacks\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @param CallbackID User Callback identifer\r
- * a HAL_DMA_CallbackIDTypeDef ENUM as parameter.\r
- * @retval HAL status\r
- */ \r
-HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Process locked */\r
- __HAL_LOCK(hdma);\r
- \r
- if(HAL_DMA_STATE_READY == hdma->State)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_DMA_XFER_CPLT_CB_ID:\r
- hdma->XferCpltCallback = NULL;\r
- break;\r
- \r
- case HAL_DMA_XFER_HALFCPLT_CB_ID:\r
- hdma->XferHalfCpltCallback = NULL;\r
- break;\r
- \r
- case HAL_DMA_XFER_M1CPLT_CB_ID:\r
- hdma->XferM1CpltCallback = NULL;\r
- break;\r
- \r
- case HAL_DMA_XFER_M1HALFCPLT_CB_ID:\r
- hdma->XferM1HalfCpltCallback = NULL;\r
- break;\r
- \r
- case HAL_DMA_XFER_ERROR_CB_ID:\r
- hdma->XferErrorCallback = NULL;\r
- break;\r
- \r
- case HAL_DMA_XFER_ABORT_CB_ID:\r
- hdma->XferAbortCallback = NULL;\r
- break; \r
- \r
- case HAL_DMA_XFER_ALL_CB_ID:\r
- hdma->XferCpltCallback = NULL;\r
- hdma->XferHalfCpltCallback = NULL;\r
- hdma->XferM1CpltCallback = NULL;\r
- hdma->XferM1HalfCpltCallback = NULL;\r
- hdma->XferErrorCallback = NULL;\r
- hdma->XferAbortCallback = NULL;\r
- break; \r
- \r
- default:\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- status = HAL_ERROR;\r
- }\r
- \r
- /* Release Lock */\r
- __HAL_UNLOCK(hdma);\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup DMA_Exported_Functions_Group3\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### State and Errors functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides functions allowing to\r
- (+) Check the DMA state\r
- (+) Get error code\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Returns the DMA state.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @retval HAL state\r
- */\r
-HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma)\r
-{\r
- return hdma->State;\r
-}\r
-\r
-/**\r
- * @brief Return the DMA error code\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @retval DMA Error Code\r
- */\r
-uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)\r
-{\r
- return hdma->ErrorCode;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup DMA_Private_Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Sets the DMA Transfer parameter.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream.\r
- * @param SrcAddress The source memory Buffer address\r
- * @param DstAddress The destination memory Buffer address\r
- * @param DataLength The length of data to be transferred from source to destination\r
- * @retval HAL status\r
- */\r
-static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\r
-{\r
- /* Clear DBM bit */\r
- hdma->Instance->CR &= (uint32_t)(~DMA_SxCR_DBM);\r
-\r
- /* Configure DMA Stream data length */\r
- hdma->Instance->NDTR = DataLength;\r
-\r
- /* Memory to Peripheral */\r
- if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)\r
- {\r
- /* Configure DMA Stream destination address */\r
- hdma->Instance->PAR = DstAddress;\r
-\r
- /* Configure DMA Stream source address */\r
- hdma->Instance->M0AR = SrcAddress;\r
- }\r
- /* Peripheral to Memory */\r
- else\r
- {\r
- /* Configure DMA Stream source address */\r
- hdma->Instance->PAR = SrcAddress;\r
-\r
- /* Configure DMA Stream destination address */\r
- hdma->Instance->M0AR = DstAddress;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Returns the DMA Stream base address depending on stream number\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @retval Stream base address\r
- */\r
-static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma)\r
-{\r
- uint32_t stream_number = (((uint32_t)hdma->Instance & 0xFFU) - 16U) / 24U;\r
- \r
- /* lookup table for necessary bitshift of flags within status registers */\r
- static const uint8_t flagBitshiftOffset[8U] = {0U, 6U, 16U, 22U, 0U, 6U, 16U, 22U};\r
- hdma->StreamIndex = flagBitshiftOffset[stream_number];\r
- \r
- if (stream_number > 3U)\r
- {\r
- /* return pointer to HISR and HIFCR */\r
- hdma->StreamBaseAddress = (((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU)) + 4U);\r
- }\r
- else\r
- {\r
- /* return pointer to LISR and LIFCR */\r
- hdma->StreamBaseAddress = ((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU));\r
- }\r
- \r
- return hdma->StreamBaseAddress;\r
-}\r
-\r
-/**\r
- * @brief Check compatibility between FIFO threshold level and size of the memory burst\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- uint32_t tmp = hdma->Init.FIFOThreshold;\r
- \r
- /* Memory Data size equal to Byte */\r
- if(hdma->Init.MemDataAlignment == DMA_MDATAALIGN_BYTE)\r
- {\r
- switch (tmp)\r
- {\r
- case DMA_FIFO_THRESHOLD_1QUARTERFULL:\r
- case DMA_FIFO_THRESHOLD_3QUARTERSFULL:\r
- if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1)\r
- {\r
- status = HAL_ERROR;\r
- }\r
- break;\r
- case DMA_FIFO_THRESHOLD_HALFFULL:\r
- if (hdma->Init.MemBurst == DMA_MBURST_INC16)\r
- {\r
- status = HAL_ERROR;\r
- }\r
- break;\r
- case DMA_FIFO_THRESHOLD_FULL:\r
- break;\r
- default:\r
- break;\r
- }\r
- }\r
- \r
- /* Memory Data size equal to Half-Word */\r
- else if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD)\r
- {\r
- switch (tmp)\r
- {\r
- case DMA_FIFO_THRESHOLD_1QUARTERFULL:\r
- case DMA_FIFO_THRESHOLD_3QUARTERSFULL:\r
- status = HAL_ERROR;\r
- break;\r
- case DMA_FIFO_THRESHOLD_HALFFULL:\r
- if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1)\r
- {\r
- status = HAL_ERROR;\r
- }\r
- break;\r
- case DMA_FIFO_THRESHOLD_FULL:\r
- if (hdma->Init.MemBurst == DMA_MBURST_INC16)\r
- {\r
- status = HAL_ERROR;\r
- }\r
- break; \r
- default:\r
- break;\r
- }\r
- }\r
- \r
- /* Memory Data size equal to Word */\r
- else\r
- {\r
- switch (tmp)\r
- {\r
- case DMA_FIFO_THRESHOLD_1QUARTERFULL:\r
- case DMA_FIFO_THRESHOLD_HALFFULL:\r
- case DMA_FIFO_THRESHOLD_3QUARTERSFULL:\r
- status = HAL_ERROR;\r
- break;\r
- case DMA_FIFO_THRESHOLD_FULL:\r
- if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1)\r
- {\r
- status = HAL_ERROR;\r
- }\r
- break;\r
- default:\r
- break;\r
- }\r
- } \r
- \r
- return status; \r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_DMA_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_dma_ex.c\r
- * @author MCD Application Team\r
- * @brief DMA Extension HAL module driver\r
- * This file provides firmware functions to manage the following \r
- * functionalities of the DMA Extension peripheral:\r
- * + Extended features functions\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..]\r
- The DMA Extension HAL driver can be used as follows:\r
- (+) Start a multi buffer transfer using the HAL_DMA_MultiBufferStart() function\r
- for polling mode or HAL_DMA_MultiBufferStart_IT() for interrupt mode.\r
-\r
- -@- In Memory-to-Memory transfer mode, Multi (Double) Buffer mode is not allowed.\r
- -@- When Multi (Double) Buffer mode is enabled, the transfer is circular by default.\r
- -@- In Multi (Double) buffer mode, it is possible to update the base address for \r
- the AHB memory port on the fly (DMA_SxM0AR or DMA_SxM1AR) when the stream is enabled.\r
- \r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup DMAEx DMAEx\r
- * @brief DMA Extended HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_DMA_MODULE_ENABLED\r
-\r
-/* Private types -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private Constants ---------------------------------------------------------*/\r
-/* Private macros ------------------------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @addtogroup DMAEx_Private_Functions\r
- * @{\r
- */\r
-\r
-static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions ---------------------------------------------------------*/\r
-\r
-/** @addtogroup DMAEx_Exported_Functions\r
- * @{\r
- */\r
-\r
-\r
-/** @addtogroup DMAEx_Exported_Functions_Group1\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Extended features functions #####\r
- =============================================================================== \r
- [..] This section provides functions allowing to:\r
- (+) Configure the source, destination address and data length and \r
- Start MultiBuffer DMA transfer\r
- (+) Configure the source, destination address and data length and \r
- Start MultiBuffer DMA transfer with interrupt\r
- (+) Change on the fly the memory0 or memory1 address.\r
- \r
-@endverbatim\r
- * @{\r
- */\r
-\r
-\r
-/**\r
- * @brief Starts the multi_buffer DMA Transfer.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @param SrcAddress The source memory Buffer address\r
- * @param DstAddress The destination memory Buffer address\r
- * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer \r
- * @param DataLength The length of data to be transferred from source to destination\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_DMA_BUFFER_SIZE(DataLength));\r
- \r
- /* Memory-to-memory transfer not supported in double buffering mode */\r
- if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY)\r
- {\r
- hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;\r
- status = HAL_ERROR;\r
- }\r
- else\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hdma);\r
- \r
- if(HAL_DMA_STATE_READY == hdma->State)\r
- {\r
- /* Change DMA peripheral state */\r
- hdma->State = HAL_DMA_STATE_BUSY; \r
- \r
- /* Enable the double buffer mode */\r
- hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM;\r
- \r
- /* Configure DMA Stream destination address */\r
- hdma->Instance->M1AR = SecondMemAddress;\r
- \r
- /* Configure the source, destination address and the data length */\r
- DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength);\r
- \r
- /* Enable the peripheral */\r
- __HAL_DMA_ENABLE(hdma);\r
- }\r
- else\r
- {\r
- /* Return error status */\r
- status = HAL_BUSY;\r
- }\r
- }\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Starts the multi_buffer DMA Transfer with interrupt enabled.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @param SrcAddress The source memory Buffer address\r
- * @param DstAddress The destination memory Buffer address\r
- * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer \r
- * @param DataLength The length of data to be transferred from source to destination\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_DMA_BUFFER_SIZE(DataLength));\r
- \r
- /* Memory-to-memory transfer not supported in double buffering mode */\r
- if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY)\r
- {\r
- hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;\r
- return HAL_ERROR;\r
- }\r
- \r
- /* Process locked */\r
- __HAL_LOCK(hdma);\r
- \r
- if(HAL_DMA_STATE_READY == hdma->State)\r
- {\r
- /* Change DMA peripheral state */\r
- hdma->State = HAL_DMA_STATE_BUSY;\r
- \r
- /* Initialize the error code */\r
- hdma->ErrorCode = HAL_DMA_ERROR_NONE;\r
- \r
- /* Enable the Double buffer mode */\r
- hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM;\r
- \r
- /* Configure DMA Stream destination address */\r
- hdma->Instance->M1AR = SecondMemAddress;\r
- \r
- /* Configure the source, destination address and the data length */\r
- DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength); \r
- \r
- /* Clear all flags */\r
- __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma));\r
- __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma));\r
- __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma));\r
- __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma));\r
- __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma));\r
- \r
- /* Enable Common interrupts*/\r
- hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME;\r
- hdma->Instance->FCR |= DMA_IT_FE;\r
- \r
- if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))\r
- {\r
- hdma->Instance->CR |= DMA_IT_HT;\r
- }\r
- \r
- /* Enable the peripheral */\r
- __HAL_DMA_ENABLE(hdma); \r
- }\r
- else\r
- { \r
- /* Process unlocked */\r
- __HAL_UNLOCK(hdma); \r
- \r
- /* Return error status */\r
- status = HAL_BUSY;\r
- } \r
- return status; \r
-}\r
-\r
-/**\r
- * @brief Change the memory0 or memory1 address on the fly.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @param Address The new address\r
- * @param memory the memory to be changed, This parameter can be one of \r
- * the following values:\r
- * MEMORY0 /\r
- * MEMORY1\r
- * @note The MEMORY0 address can be changed only when the current transfer use\r
- * MEMORY1 and the MEMORY1 address can be changed only when the current \r
- * transfer use MEMORY0.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory)\r
-{\r
- if(memory == MEMORY0)\r
- {\r
- /* change the memory0 address */\r
- hdma->Instance->M0AR = Address;\r
- }\r
- else\r
- {\r
- /* change the memory1 address */\r
- hdma->Instance->M1AR = Address;\r
- }\r
- \r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup DMAEx_Private_Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Set the DMA Transfer parameter.\r
- * @param hdma pointer to a DMA_HandleTypeDef structure that contains\r
- * the configuration information for the specified DMA Stream. \r
- * @param SrcAddress The source memory Buffer address\r
- * @param DstAddress The destination memory Buffer address\r
- * @param DataLength The length of data to be transferred from source to destination\r
- * @retval HAL status\r
- */\r
-static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)\r
-{\r
- /* Configure DMA Stream data length */\r
- hdma->Instance->NDTR = DataLength;\r
- \r
- /* Peripheral to Memory */\r
- if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)\r
- {\r
- /* Configure DMA Stream destination address */\r
- hdma->Instance->PAR = DstAddress;\r
- \r
- /* Configure DMA Stream source address */\r
- hdma->Instance->M0AR = SrcAddress;\r
- }\r
- /* Memory to Peripheral */\r
- else\r
- {\r
- /* Configure DMA Stream source address */\r
- hdma->Instance->PAR = SrcAddress;\r
- \r
- /* Configure DMA Stream destination address */\r
- hdma->Instance->M0AR = DstAddress;\r
- }\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_DMA_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32F7xx_hal_exti.c\r
- * @author MCD Application Team\r
- * @brief EXTI HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities of the Extended Interrupts and events controller (EXTI) peripheral:\r
- * + Initialization and de-initialization functions\r
- * + IO operation functions\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### EXTI Peripheral features #####\r
- ==============================================================================\r
- [..]\r
- (+) Each Exti line can be configured within this driver.\r
-\r
- (+) Exti line can be configured in 3 different modes\r
- (++) Interrupt\r
- (++) Event\r
- (++) Both of them\r
-\r
- (+) Configurable Exti lines can be configured with 3 different triggers\r
- (++) Rising\r
- (++) Falling\r
- (++) Both of them\r
-\r
- (+) When set in interrupt mode, configurable Exti lines have two different\r
- interrupts pending registers which allow to distinguish which transition\r
- occurs:\r
- (++) Rising edge pending interrupt\r
- (++) Falling\r
-\r
- (+) Exti lines 0 to 15 are linked to gpio pin number 0 to 15. Gpio port can\r
- be selected through multiplexer.\r
-\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..]\r
-\r
- (#) Configure the EXTI line using HAL_EXTI_SetConfigLine().\r
- (++) Choose the interrupt line number by setting "Line" member from\r
- EXTI_ConfigTypeDef structure.\r
- (++) Configure the interrupt and/or event mode using "Mode" member from\r
- EXTI_ConfigTypeDef structure.\r
- (++) For configurable lines, configure rising and/or falling trigger\r
- "Trigger" member from EXTI_ConfigTypeDef structure.\r
- (++) For Exti lines linked to gpio, choose gpio port using "GPIOSel"\r
- member from GPIO_InitTypeDef structure.\r
-\r
- (#) Get current Exti configuration of a dedicated line using\r
- HAL_EXTI_GetConfigLine().\r
- (++) Provide exiting handle as parameter.\r
- (++) Provide pointer on EXTI_ConfigTypeDef structure as second parameter.\r
-\r
- (#) Clear Exti configuration of a dedicated line using HAL_EXTI_GetConfigLine().\r
- (++) Provide exiting handle as parameter.\r
-\r
- (#) Register callback to treat Exti interrupts using HAL_EXTI_RegisterCallback().\r
- (++) Provide exiting handle as first parameter.\r
- (++) Provide which callback will be registered using one value from\r
- EXTI_CallbackIDTypeDef.\r
- (++) Provide callback function pointer.\r
-\r
- (#) Get interrupt pending bit using HAL_EXTI_GetPending().\r
-\r
- (#) Clear interrupt pending bit using HAL_EXTI_GetPending().\r
-\r
- (#) Generate software interrupt using HAL_EXTI_GenerateSWI().\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2018 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-#include "stm32f7xx_hal_exti.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @addtogroup EXTI\r
- * @{\r
- */\r
-/** MISRA C:2012 deviation rule has been granted for following rule:\r
- * Rule-18.1_b - Medium: Array `EXTICR' 1st subscript interval [0,7] may be out\r
- * of bounds [0,3] in following API :\r
- * HAL_EXTI_SetConfigLine\r
- * HAL_EXTI_GetConfigLine\r
- * HAL_EXTI_ClearConfigLine\r
- */\r
-\r
-#ifdef HAL_EXTI_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private defines ------------------------------------------------------------*/\r
-/** @defgroup EXTI_Private_Constants EXTI Private Constants\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @addtogroup EXTI_Exported_Functions\r
- * @{\r
- */\r
-\r
-/** @addtogroup EXTI_Exported_Functions_Group1\r
- * @brief Configuration functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Configuration functions #####\r
- ===============================================================================\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Set configuration of a dedicated Exti line.\r
- * @param hexti Exti handle.\r
- * @param pExtiConfig Pointer on EXTI configuration to be set.\r
- * @retval HAL Status.\r
- */\r
-HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)\r
-{\r
- uint32_t regval;\r
-\r
- /* Check null pointer */\r
- if ((hexti == NULL) || (pExtiConfig == NULL))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check parameters */\r
- assert_param(IS_EXTI_LINE(pExtiConfig->Line));\r
- assert_param(IS_EXTI_MODE(pExtiConfig->Mode));\r
- assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger)); \r
- \r
- /* Assign line number to handle */\r
- hexti->Line = pExtiConfig->Line;\r
- \r
- /* Clear EXTI line configuration */\r
- EXTI->IMR &= ~pExtiConfig->Line;\r
- EXTI->EMR &= ~pExtiConfig->Line;\r
- \r
- /* Select the Mode for the selected external interrupts */\r
- regval = (uint32_t)EXTI_BASE;\r
- regval += pExtiConfig->Mode;\r
- *(__IO uint32_t *) regval |= pExtiConfig->Line;\r
- \r
- /* Clear Rising Falling edge configuration */\r
- EXTI->RTSR &= ~pExtiConfig->Line;\r
- EXTI->FTSR &= ~pExtiConfig->Line;\r
- \r
- /* Select the trigger for the selected external interrupts */\r
- if (pExtiConfig->Trigger == EXTI_TRIGGER_RISING_FALLING)\r
- {\r
- /* Rising Falling edge */\r
- EXTI->RTSR |= pExtiConfig->Line;\r
- EXTI->FTSR |= pExtiConfig->Line;\r
- }\r
- else\r
- {\r
- regval = (uint32_t)EXTI_BASE;\r
- regval += pExtiConfig->Trigger;\r
- *(__IO uint32_t *) regval |= pExtiConfig->Line;\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Get configuration of a dedicated Exti line.\r
- * @param hexti Exti handle.\r
- * @param pExtiConfig Pointer on structure to store Exti configuration.\r
- * @retval HAL Status.\r
- */\r
-HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)\r
-{\r
- /* Check null pointer */\r
- if ((hexti == NULL) || (pExtiConfig == NULL))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameter */\r
- assert_param(IS_EXTI_LINE(hexti->Line));\r
-\r
- /* Store handle line number to configuration structure */\r
- pExtiConfig->Line = hexti->Line;\r
-\r
- /* Get EXTI mode to configiguration structure */\r
- if ((EXTI->IMR & hexti->Line) == hexti->Line)\r
- {\r
- pExtiConfig->Mode = EXTI_MODE_INTERRUPT;\r
- }\r
- else if ((EXTI->EMR & hexti->Line) == hexti->Line)\r
- {\r
- pExtiConfig->Mode = EXTI_MODE_EVENT;\r
- }\r
- else\r
- {\r
- /* No MODE selected */\r
- pExtiConfig->Mode = 0x0Bu;\r
- }\r
-\r
- /* Get EXTI Trigger to configiguration structure */\r
- if ((EXTI->RTSR & hexti->Line) == hexti->Line)\r
- {\r
- if ((EXTI->FTSR & hexti->Line) == hexti->Line)\r
- {\r
- pExtiConfig->Trigger = EXTI_TRIGGER_RISING_FALLING;\r
- }\r
- else\r
- {\r
- pExtiConfig->Trigger = EXTI_TRIGGER_RISING;\r
- }\r
- }\r
- else if ((EXTI->FTSR & hexti->Line) == hexti->Line)\r
- {\r
- pExtiConfig->Trigger = EXTI_TRIGGER_FALLING;\r
- }\r
- else\r
- {\r
- /* No Trigger selected */\r
- pExtiConfig->Trigger = 0x00u;\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Clear whole configuration of a dedicated Exti line.\r
- * @param hexti Exti handle.\r
- * @retval HAL Status.\r
- */\r
-HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)\r
-{\r
- /* Check null pointer */\r
- if (hexti == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameter */\r
- assert_param(IS_EXTI_LINE(hexti->Line));\r
-\r
- /* 1] Clear interrupt mode */\r
- EXTI->IMR = (EXTI->IMR & ~hexti->Line);\r
-\r
- /* 2] Clear event mode */\r
- EXTI->EMR = (EXTI->EMR & ~hexti->Line);\r
-\r
- /* 3] Clear triggers */\r
- EXTI->RTSR = (EXTI->RTSR & ~hexti->Line);\r
- EXTI->FTSR = (EXTI->FTSR & ~hexti->Line);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Register callback for a dedicated Exti line.\r
- * @param hexti Exti handle.\r
- * @param CallbackID User callback identifier.\r
- * This parameter can be one of @arg @ref EXTI_CallbackIDTypeDef values.\r
- * @param pPendingCbfn function pointer to be stored as callback.\r
- * @retval HAL Status.\r
- */\r
-HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void))\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- switch (CallbackID)\r
- {\r
- case HAL_EXTI_COMMON_CB_ID:\r
- hexti->PendingCallback = pPendingCbfn;\r
- break;\r
-\r
- default:\r
- status = HAL_ERROR;\r
- break;\r
- }\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Store line number as handle private field.\r
- * @param hexti Exti handle.\r
- * @param ExtiLine Exti line number.\r
- * This parameter can be from 0 to @ref EXTI_LINE_NB.\r
- * @retval HAL Status.\r
- */\r
-HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_EXTI_LINE(ExtiLine));\r
-\r
- /* Check null pointer */\r
- if (hexti == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- /* Store line number as handle private field */\r
- hexti->Line = ExtiLine;\r
-\r
- return HAL_OK;\r
- }\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup EXTI_Exported_Functions_Group2\r
- * @brief EXTI IO functions.\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### IO operation functions #####\r
- ===============================================================================\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Handle EXTI interrupt request.\r
- * @param hexti Exti handle.\r
- * @retval none.\r
- */\r
-void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)\r
-{\r
- __IO uint32_t *regaddr;\r
- uint32_t regval;\r
-\r
- /* Get pending bit */\r
- regaddr = (&EXTI->PR);\r
- regval = (*regaddr & hexti->Line);\r
-\r
- if (regval != 0x00u)\r
- {\r
- /* Clear pending bit */\r
- *regaddr = hexti->Line;\r
-\r
- /* Call callback */\r
- if (hexti->PendingCallback != NULL)\r
- {\r
- hexti->PendingCallback();\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @brief Get interrupt pending bit of a dedicated line.\r
- * @param hexti Exti handle.\r
- * @param Edge Specify which pending edge as to be checked.\r
- * This parameter can be one of the following values:\r
- * @arg @ref EXTI_TRIGGER_RISING_FALLING\r
- * This parameter is kept for compatibility with other series.\r
- * @retval 1 if interrupt is pending else 0.\r
- */\r
-uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)\r
-{\r
- __IO uint32_t *regaddr;\r
- uint32_t regval;\r
-\r
- /* Check parameters */\r
- assert_param(IS_EXTI_LINE(hexti->Line));\r
- assert_param(IS_EXTI_PENDING_EDGE(Edge));\r
-\r
- /* Get pending bit */\r
- regaddr = &EXTI->PR;\r
-\r
- /* return 1 if bit is set else 0 */\r
- regval = ((*regaddr & hexti->Line) >> POSITION_VAL(hexti->Line));\r
-\r
- return regval;\r
-}\r
-\r
-/**\r
- * @brief Clear interrupt pending bit of a dedicated line.\r
- * @param hexti Exti handle.\r
- * @param Edge Specify which pending edge as to be clear.\r
- * This parameter can be one of the following values:\r
- * @arg @ref EXTI_TRIGGER_RISING_FALLING\r
- * This parameter is kept for compatibility with other series.\r
- * @retval None.\r
- */\r
-void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)\r
-{\r
- /* Check parameters */\r
- assert_param(IS_EXTI_LINE(hexti->Line));\r
- assert_param(IS_EXTI_PENDING_EDGE(Edge));\r
- \r
- /* Clear Pending bit */\r
- EXTI->PR = hexti->Line;\r
-}\r
-\r
-/**\r
- * @brief Generate a software interrupt for a dedicated line.\r
- * @param hexti Exti handle.\r
- * @retval None.\r
- */\r
-void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)\r
-{\r
- /* Check parameters */\r
- assert_param(IS_EXTI_LINE(hexti->Line));\r
-\r
- EXTI->SWIER = hexti->Line;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_EXTI_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_flash.c\r
- * @author MCD Application Team\r
- * @brief FLASH HAL module driver.\r
- * This file provides firmware functions to manage the following \r
- * functionalities of the internal FLASH memory:\r
- * + Program operations functions\r
- * + Memory Control functions \r
- * + Peripheral Errors functions\r
- * \r
- @verbatim\r
- ==============================================================================\r
- ##### FLASH peripheral features #####\r
- ==============================================================================\r
- \r
- [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses \r
- to the Flash memory. It implements the erase and program Flash memory operations \r
- and the read and write protection mechanisms.\r
- \r
- [..] The Flash memory interface accelerates code execution with a system of instruction\r
- prefetch and cache lines. \r
-\r
- [..] The FLASH main features are:\r
- (+) Flash memory read operations\r
- (+) Flash memory program/erase operations\r
- (+) Read / write protections\r
- (+) Prefetch on I-Code\r
- (+) 64 cache lines of 128 bits on I-Code\r
- (+) 8 cache lines of 128 bits on D-Code\r
- \r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..] \r
- This driver provides functions and macros to configure and program the FLASH \r
- memory of all STM32F7xx devices.\r
- \r
- (#) FLASH Memory IO Programming functions: \r
- (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and \r
- HAL_FLASH_Lock() functions\r
- (++) Program functions: byte, half word, word and double word\r
- (++) There Two modes of programming :\r
- (+++) Polling mode using HAL_FLASH_Program() function\r
- (+++) Interrupt mode using HAL_FLASH_Program_IT() function\r
- \r
- (#) Interrupts and flags management functions : \r
- (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler()\r
- (++) Wait for last FLASH operation according to its status\r
- (++) Get error flag status by calling HAL_SetErrorCode() \r
- [..] \r
- In addition to these functions, this driver includes a set of macros allowing\r
- to handle the following operations:\r
- (+) Set the latency\r
- (+) Enable/Disable the prefetch buffer\r
- (+) Enable/Disable the Instruction cache and the Data cache\r
- (+) Reset the Instruction cache and the Data cache\r
- (+) Enable/Disable the FLASH interrupts\r
- (+) Monitor the FLASH flags status\r
- [..] \r
- (@) For any Flash memory program operation (erase or program), the CPU clock frequency\r
- (HCLK) must be at least 1MHz. \r
- (@) The contents of the Flash memory are not guaranteed if a device reset occurs during \r
- a Flash memory operation.\r
- (@) Any attempt to read the Flash memory while it is being written or erased, causes the \r
- bus to stall. Read operations are processed correctly once the program operation has \r
- completed. This means that code or data fetches cannot be performed while a write/erase \r
- operation is ongoing.\r
- \r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup FLASH FLASH\r
- * @brief FLASH HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_FLASH_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @addtogroup FLASH_Private_Constants\r
- * @{\r
- */\r
-#define SECTOR_MASK ((uint32_t)0xFFFFFF07U)\r
-#define FLASH_TIMEOUT_VALUE ((uint32_t)50000U)/* 50 s */\r
-/**\r
- * @}\r
- */ \r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/** @addtogroup FLASH_Private_Variables\r
- * @{\r
- */\r
-/* Variable used for Erase sectors under interruption */\r
-FLASH_ProcessTypeDef pFlash;\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private function prototypes -----------------------------------------------*/\r
-/** @addtogroup FLASH_Private_Functions\r
- * @{\r
- */\r
-/* Program operations */\r
-static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data);\r
-static void FLASH_Program_Word(uint32_t Address, uint32_t Data);\r
-static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data);\r
-static void FLASH_Program_Byte(uint32_t Address, uint8_t Data);\r
-static void FLASH_SetErrorCode(void);\r
-\r
-HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @defgroup FLASH_Exported_Functions FLASH Exported Functions\r
- * @{\r
- */\r
- \r
-/** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions \r
- * @brief Programming operation functions \r
- *\r
-@verbatim \r
- ===============================================================================\r
- ##### Programming operation functions #####\r
- =============================================================================== \r
- [..]\r
- This subsection provides a set of functions allowing to manage the FLASH \r
- program operations.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Program byte, halfword, word or double word at a specified address\r
- * @param TypeProgram Indicate the way to program at a specified address.\r
- * This parameter can be a value of @ref FLASH_Type_Program\r
- * @param Address specifies the address to be programmed.\r
- * @param Data specifies the data to be programmed\r
- * \r
- * @retval HAL_StatusTypeDef HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)\r
-{\r
- HAL_StatusTypeDef status = HAL_ERROR;\r
- \r
- /* Process Locked */\r
- __HAL_LOCK(&pFlash);\r
-\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));\r
-\r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
- \r
- if(status == HAL_OK)\r
- {\r
- switch(TypeProgram)\r
- {\r
- case FLASH_TYPEPROGRAM_BYTE :\r
- {\r
- /*Program byte (8-bit) at a specified address.*/\r
- FLASH_Program_Byte(Address, (uint8_t) Data);\r
- break;\r
- }\r
- \r
- case FLASH_TYPEPROGRAM_HALFWORD :\r
- {\r
- /*Program halfword (16-bit) at a specified address.*/\r
- FLASH_Program_HalfWord(Address, (uint16_t) Data);\r
- break;\r
- }\r
- \r
- case FLASH_TYPEPROGRAM_WORD :\r
- {\r
- /*Program word (32-bit) at a specified address.*/\r
- FLASH_Program_Word(Address, (uint32_t) Data);\r
- break;\r
- }\r
- \r
- case FLASH_TYPEPROGRAM_DOUBLEWORD :\r
- {\r
- /*Program double word (64-bit) at a specified address.*/\r
- FLASH_Program_DoubleWord(Address, Data);\r
- break;\r
- }\r
- default :\r
- break;\r
- }\r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
- \r
- /* If the program operation is completed, disable the PG Bit */\r
- FLASH->CR &= (~FLASH_CR_PG);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(&pFlash);\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Program byte, halfword, word or double word at a specified address with interrupt enabled.\r
- * @param TypeProgram Indicate the way to program at a specified address.\r
- * This parameter can be a value of @ref FLASH_Type_Program\r
- * @param Address specifies the address to be programmed.\r
- * @param Data specifies the data to be programmed\r
- * \r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Process Locked */\r
- __HAL_LOCK(&pFlash);\r
-\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));\r
-\r
- /* Enable End of FLASH Operation interrupt */\r
- __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP);\r
- \r
- /* Enable Error source interrupt */\r
- __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR);\r
- \r
- /* Clear pending flags (if any) */ \r
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\\r
- FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); \r
-\r
- pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM;\r
- pFlash.Address = Address;\r
- \r
- switch(TypeProgram)\r
- {\r
- case FLASH_TYPEPROGRAM_BYTE :\r
- {\r
- /*Program byte (8-bit) at a specified address.*/\r
- FLASH_Program_Byte(Address, (uint8_t) Data);\r
- break;\r
- }\r
- \r
- case FLASH_TYPEPROGRAM_HALFWORD :\r
- {\r
- /*Program halfword (16-bit) at a specified address.*/\r
- FLASH_Program_HalfWord(Address, (uint16_t) Data);\r
- break;\r
- }\r
- \r
- case FLASH_TYPEPROGRAM_WORD :\r
- {\r
- /*Program word (32-bit) at a specified address.*/\r
- FLASH_Program_Word(Address, (uint32_t) Data);\r
- break;\r
- }\r
- \r
- case FLASH_TYPEPROGRAM_DOUBLEWORD :\r
- {\r
- /*Program double word (64-bit) at a specified address.*/\r
- FLASH_Program_DoubleWord(Address, Data);\r
- break;\r
- }\r
- default :\r
- break;\r
- }\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief This function handles FLASH interrupt request.\r
- * @retval None\r
- */\r
-void HAL_FLASH_IRQHandler(void)\r
-{\r
- uint32_t temp = 0;\r
- \r
- /* If the program operation is completed, disable the PG Bit */\r
- FLASH->CR &= (~FLASH_CR_PG);\r
-\r
- /* If the erase operation is completed, disable the SER Bit */\r
- FLASH->CR &= (~FLASH_CR_SER);\r
- FLASH->CR &= SECTOR_MASK; \r
-\r
- /* if the erase operation is completed, disable the MER Bit */\r
- FLASH->CR &= (~FLASH_MER_BIT);\r
-\r
- /* Check FLASH End of Operation flag */\r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET)\r
- {\r
- /* Clear FLASH End of Operation pending bit */\r
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);\r
- \r
- switch (pFlash.ProcedureOnGoing)\r
- {\r
- case FLASH_PROC_SECTERASE :\r
- {\r
- /* Nb of sector to erased can be decreased */\r
- pFlash.NbSectorsToErase--;\r
-\r
- /* Check if there are still sectors to erase */\r
- if(pFlash.NbSectorsToErase != 0)\r
- {\r
- temp = pFlash.Sector;\r
- /* Indicate user which sector has been erased */\r
- HAL_FLASH_EndOfOperationCallback(temp);\r
-\r
- /* Increment sector number */\r
- temp = ++pFlash.Sector;\r
- FLASH_Erase_Sector(temp, pFlash.VoltageForErase);\r
- }\r
- else\r
- {\r
- /* No more sectors to Erase, user callback can be called.*/\r
- /* Reset Sector and stop Erase sectors procedure */\r
- pFlash.Sector = temp = 0xFFFFFFFFU;\r
- /* FLASH EOP interrupt user callback */\r
- HAL_FLASH_EndOfOperationCallback(temp);\r
- /* Sector Erase procedure is completed */\r
- pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\r
- }\r
- break;\r
- }\r
- \r
- case FLASH_PROC_MASSERASE :\r
- {\r
- /* MassErase ended. Return the selected bank : in this product we don't have Banks */\r
- /* FLASH EOP interrupt user callback */\r
- HAL_FLASH_EndOfOperationCallback(0);\r
- /* MAss Erase procedure is completed */\r
- pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\r
- break;\r
- }\r
-\r
- case FLASH_PROC_PROGRAM :\r
- {\r
- /*Program ended. Return the selected address*/\r
- /* FLASH EOP interrupt user callback */\r
- HAL_FLASH_EndOfOperationCallback(pFlash.Address);\r
- /* Programming procedure is completed */\r
- pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\r
- break;\r
- }\r
- default :\r
- break;\r
- }\r
- }\r
- \r
- /* Check FLASH operation error flags */\r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET)\r
- {\r
- switch (pFlash.ProcedureOnGoing)\r
- {\r
- case FLASH_PROC_SECTERASE :\r
- {\r
- /* return the faulty sector */\r
- temp = pFlash.Sector;\r
- pFlash.Sector = 0xFFFFFFFFU;\r
- break;\r
- }\r
- case FLASH_PROC_MASSERASE :\r
- {\r
- /* No return in case of Mass Erase */\r
- temp = 0;\r
- break;\r
- }\r
- case FLASH_PROC_PROGRAM :\r
- {\r
- /*return the faulty address*/\r
- temp = pFlash.Address;\r
- break;\r
- }\r
- default :\r
- break;\r
- }\r
- /*Save the Error code*/\r
- FLASH_SetErrorCode();\r
-\r
- /* FLASH error interrupt user callback */\r
- HAL_FLASH_OperationErrorCallback(temp);\r
-\r
- /*Stop the procedure ongoing */\r
- pFlash.ProcedureOnGoing = FLASH_PROC_NONE;\r
- }\r
- \r
- if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE)\r
- {\r
- /* Disable End of FLASH Operation interrupt */\r
- __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP);\r
-\r
- /* Disable Error source interrupt */\r
- __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(&pFlash);\r
- }\r
- \r
-}\r
-\r
-/**\r
- * @brief FLASH end of operation interrupt callback\r
- * @param ReturnValue The value saved in this parameter depends on the ongoing procedure\r
- * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that \r
- * all the selected sectors have been erased)\r
- * - Program : Address which was selected for data program\r
- * - Mass Erase : No return value expected\r
- * @retval None\r
- */\r
-__weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(ReturnValue);\r
- /* NOTE : This function Should not be modified, when the callback is needed,\r
- the HAL_FLASH_EndOfOperationCallback could be implemented in the user file\r
- */ \r
-}\r
-\r
-/**\r
- * @brief FLASH operation error interrupt callback\r
- * @param ReturnValue The value saved in this parameter depends on the ongoing procedure\r
- * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that \r
- * all the selected sectors have been erased)\r
- * - Program : Address which was selected for data program\r
- * - Mass Erase : No return value expected\r
- * @retval None\r
- */\r
-__weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(ReturnValue);\r
- /* NOTE : This function Should not be modified, when the callback is needed,\r
- the HAL_FLASH_OperationErrorCallback could be implemented in the user file\r
- */ \r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions \r
- * @brief management functions \r
- *\r
-@verbatim \r
- ===============================================================================\r
- ##### Peripheral Control functions #####\r
- =============================================================================== \r
- [..]\r
- This subsection provides a set of functions allowing to control the FLASH \r
- memory operations.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Unlock the FLASH control register access\r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASH_Unlock(void)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)\r
- {\r
- /* Authorize the FLASH Registers access */\r
- WRITE_REG(FLASH->KEYR, FLASH_KEY1);\r
- WRITE_REG(FLASH->KEYR, FLASH_KEY2);\r
-\r
- /* Verify Flash is unlocked */\r
- if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)\r
- {\r
- status = HAL_ERROR;\r
- }\r
- }\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Locks the FLASH control register access\r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASH_Lock(void)\r
-{\r
- /* Set the LOCK Bit to lock the FLASH Registers access */\r
- FLASH->CR |= FLASH_CR_LOCK;\r
- \r
- return HAL_OK; \r
-}\r
-\r
-/**\r
- * @brief Unlock the FLASH Option Control Registers access.\r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)\r
-{\r
- if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET)\r
- {\r
- /* Authorizes the Option Byte register programming */\r
- FLASH->OPTKEYR = FLASH_OPT_KEY1;\r
- FLASH->OPTKEYR = FLASH_OPT_KEY2;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- } \r
- \r
- return HAL_OK; \r
-}\r
-\r
-/**\r
- * @brief Lock the FLASH Option Control Registers access.\r
- * @retval HAL Status \r
- */\r
-HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)\r
-{\r
- /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */\r
- FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK;\r
- \r
- return HAL_OK; \r
-}\r
-\r
-/**\r
- * @brief Launch the option byte loading.\r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)\r
-{\r
- /* Set the OPTSTRT bit in OPTCR register */\r
- FLASH->OPTCR |= FLASH_OPTCR_OPTSTRT;\r
-\r
- /* Wait for last operation to be completed */\r
- return(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)); \r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions \r
- * @brief Peripheral Errors functions \r
- *\r
-@verbatim \r
- ===============================================================================\r
- ##### Peripheral Errors functions #####\r
- =============================================================================== \r
- [..]\r
- This subsection permits to get in run-time Errors of the FLASH peripheral.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Get the specific FLASH error flag.\r
- * @retval FLASH_ErrorCode: The returned value can be:\r
- * @arg FLASH_ERROR_ERS: FLASH Erasing Sequence error flag \r
- * @arg FLASH_ERROR_PGP: FLASH Programming Parallelism error flag \r
- * @arg FLASH_ERROR_PGA: FLASH Programming Alignment error flag\r
- * @arg FLASH_ERROR_WRP: FLASH Write protected error flag\r
- * @arg FLASH_ERROR_OPERATION: FLASH operation Error flag \r
- */\r
-uint32_t HAL_FLASH_GetError(void)\r
-{ \r
- return pFlash.ErrorCode;\r
-} \r
- \r
-/**\r
- * @}\r
- */ \r
-\r
-/**\r
- * @brief Wait for a FLASH operation to complete.\r
- * @param Timeout maximum flash operationtimeout\r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)\r
-{ \r
- uint32_t tickstart = 0;\r
- \r
- /* Clear Error Code */\r
- pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;\r
- \r
- /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.\r
- Even if the FLASH operation fails, the BUSY flag will be reset and an error\r
- flag will be set */\r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
-\r
- while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) \r
- { \r
- if(Timeout != HAL_MAX_DELAY)\r
- {\r
- if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- } \r
- }\r
- \r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET)\r
- {\r
- /*Save the error code*/\r
- FLASH_SetErrorCode();\r
- return HAL_ERROR;\r
- }\r
- \r
- /* Check FLASH End of Operation flag */\r
- if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET)\r
- {\r
- /* Clear FLASH End of Operation pending bit */\r
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);\r
- }\r
-\r
- /* If there is an error flag set */\r
- return HAL_OK;\r
- \r
-} \r
-\r
-/**\r
- * @brief Program a double word (64-bit) at a specified address.\r
- * @note This function must be used when the device voltage range is from\r
- * 2.7V to 3.6V and an External Vpp is present.\r
- *\r
- * @note If an erase and a program operations are requested simultaneously, \r
- * the erase operation is performed before the program one.\r
- * \r
- * @param Address specifies the address to be programmed.\r
- * @param Data specifies the data to be programmed.\r
- * @retval None\r
- */\r
-static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_ADDRESS(Address));\r
- \r
- /* If the previous operation is completed, proceed to program the new data */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD;\r
- FLASH->CR |= FLASH_CR_PG;\r
-\r
- /* Program the double-word */\r
- *(__IO uint32_t*)Address = (uint32_t)Data;\r
- *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32);\r
-\r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
-}\r
-\r
-\r
-/**\r
- * @brief Program word (32-bit) at a specified address.\r
- * @note This function must be used when the device voltage range is from\r
- * 2.7V to 3.6V.\r
- *\r
- * @note If an erase and a program operations are requested simultaneously, \r
- * the erase operation is performed before the program one.\r
- * \r
- * @param Address specifies the address to be programmed.\r
- * @param Data specifies the data to be programmed.\r
- * @retval None\r
- */\r
-static void FLASH_Program_Word(uint32_t Address, uint32_t Data)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_ADDRESS(Address));\r
- \r
- /* If the previous operation is completed, proceed to program the new data */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- FLASH->CR |= FLASH_PSIZE_WORD;\r
- FLASH->CR |= FLASH_CR_PG;\r
-\r
- *(__IO uint32_t*)Address = Data;\r
- \r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
-}\r
-\r
-/**\r
- * @brief Program a half-word (16-bit) at a specified address.\r
- * @note This function must be used when the device voltage range is from\r
- * 2.7V to 3.6V.\r
- *\r
- * @note If an erase and a program operations are requested simultaneously, \r
- * the erase operation is performed before the program one.\r
- * \r
- * @param Address specifies the address to be programmed.\r
- * @param Data specifies the data to be programmed.\r
- * @retval None\r
- */\r
-static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_ADDRESS(Address));\r
- \r
- /* If the previous operation is completed, proceed to program the new data */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- FLASH->CR |= FLASH_PSIZE_HALF_WORD;\r
- FLASH->CR |= FLASH_CR_PG;\r
-\r
- *(__IO uint16_t*)Address = Data;\r
-\r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
- \r
-}\r
-\r
-/**\r
- * @brief Program byte (8-bit) at a specified address.\r
- * @note This function must be used when the device voltage range is from\r
- * 2.7V to 3.6V.\r
- *\r
- * @note If an erase and a program operations are requested simultaneously, \r
- * the erase operation is performed before the program one.\r
- * \r
- * @param Address specifies the address to be programmed.\r
- * @param Data specifies the data to be programmed.\r
- * @retval None\r
- */\r
-static void FLASH_Program_Byte(uint32_t Address, uint8_t Data)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_ADDRESS(Address));\r
- \r
- /* If the previous operation is completed, proceed to program the new data */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- FLASH->CR |= FLASH_PSIZE_BYTE;\r
- FLASH->CR |= FLASH_CR_PG;\r
-\r
- *(__IO uint8_t*)Address = Data;\r
-\r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
-}\r
-\r
-/**\r
- * @brief Set the specific FLASH error flag.\r
- * @retval None\r
- */\r
-static void FLASH_SetErrorCode(void)\r
-{\r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET)\r
- {\r
- pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION;\r
- }\r
- \r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET)\r
- {\r
- pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP;\r
- }\r
- \r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET)\r
- {\r
- pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA;\r
- }\r
- \r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET)\r
- {\r
- pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP;\r
- }\r
- \r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ERSERR) != RESET)\r
- {\r
- pFlash.ErrorCode |= HAL_FLASH_ERROR_ERS;\r
- }\r
- \r
-#if defined (FLASH_OPTCR2_PCROP)\r
- if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET)\r
- { \r
- pFlash.ErrorCode |= HAL_FLASH_ERROR_RD;\r
- } \r
-#endif /* FLASH_OPTCR2_PCROP */\r
- \r
- /* Clear error programming flags */\r
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_FLASH_MODULE_ENABLED */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_flash_ex.c\r
- * @author MCD Application Team\r
- * @brief Extended FLASH HAL module driver.\r
- * This file provides firmware functions to manage the following \r
- * functionalities of the FLASH extension peripheral:\r
- * + Extended programming operations functions\r
- * \r
- @verbatim\r
- ==============================================================================\r
- ##### Flash Extension features #####\r
- ==============================================================================\r
- \r
- [..] Comparing to other previous devices, the FLASH interface for STM32F76xx/STM32F77xx \r
- devices contains the following additional features \r
- \r
- (+) Capacity up to 2 Mbyte with dual bank architecture supporting read-while-write\r
- capability (RWW)\r
- (+) Dual bank memory organization \r
- (+) Dual boot mode\r
- \r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..] This driver provides functions to configure and program the FLASH memory \r
- of all STM32F7xx devices. It includes\r
- (#) FLASH Memory Erase functions: \r
- (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and \r
- HAL_FLASH_Lock() functions\r
- (++) Erase function: Erase sector, erase all sectors\r
- (++) There are two modes of erase :\r
- (+++) Polling Mode using HAL_FLASHEx_Erase()\r
- (+++) Interrupt Mode using HAL_FLASHEx_Erase_IT()\r
- \r
- (#) Option Bytes Programming functions: Use HAL_FLASHEx_OBProgram() to :\r
- (++) Set/Reset the write protection\r
- (++) Set the Read protection Level\r
- (++) Set the BOR level\r
- (++) Program the user Option Bytes\r
- \r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup FLASHEx FLASHEx\r
- * @brief FLASH HAL Extension module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_FLASH_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @addtogroup FLASHEx_Private_Constants\r
- * @{\r
- */ \r
-#define SECTOR_MASK 0xFFFFFF07U\r
-#define FLASH_TIMEOUT_VALUE 50000U/* 50 s */\r
-/**\r
- * @}\r
- */\r
- \r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/** @addtogroup FLASHEx_Private_Variables\r
- * @{\r
- */ \r
-extern FLASH_ProcessTypeDef pFlash;\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private function prototypes -----------------------------------------------*/\r
-/** @addtogroup FLASHEx_Private_Functions\r
- * @{\r
- */\r
-/* Option bytes control */\r
-static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WRPSector);\r
-static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WRPSector);\r
-static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t Level);\r
-static HAL_StatusTypeDef FLASH_OB_BOR_LevelConfig(uint8_t Level);\r
-static HAL_StatusTypeDef FLASH_OB_BootAddressConfig(uint32_t BootOption, uint32_t Address);\r
-static uint32_t FLASH_OB_GetUser(void);\r
-static uint32_t FLASH_OB_GetWRP(void);\r
-static uint8_t FLASH_OB_GetRDP(void);\r
-static uint32_t FLASH_OB_GetBOR(void);\r
-static uint32_t FLASH_OB_GetBootAddress(uint32_t BootOption);\r
-\r
-#if defined (FLASH_OPTCR_nDBANK)\r
-static void FLASH_MassErase(uint8_t VoltageRange, uint32_t Banks);\r
-static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, \\r
- uint32_t Iwdgstdby, uint32_t NDBank, uint32_t NDBoot);\r
-#else\r
-static void FLASH_MassErase(uint8_t VoltageRange);\r
-static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, uint32_t Iwdgstdby);\r
-#endif /* FLASH_OPTCR_nDBANK */\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
-static HAL_StatusTypeDef FLASH_OB_PCROP_Config(uint32_t PCROPSector);\r
-static HAL_StatusTypeDef FLASH_OB_PCROP_RDP_Config(uint32_t Pcrop_Rdp);\r
-static uint32_t FLASH_OB_GetPCROP(void);\r
-static uint32_t FLASH_OB_GetPCROPRDP(void);\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-\r
-extern HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup FLASHEx_Exported_Functions_Group1 Extended IO operation functions\r
- * @brief Extended IO operation functions \r
- *\r
-@verbatim \r
- ===============================================================================\r
- ##### Extended programming operation functions #####\r
- =============================================================================== \r
- [..]\r
- This subsection provides a set of functions allowing to manage the Extension FLASH \r
- programming operations Operations.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Perform a mass erase or erase the specified FLASH memory sectors \r
- * @param[in] pEraseInit pointer to an FLASH_EraseInitTypeDef structure that\r
- * contains the configuration information for the erasing.\r
- * \r
- * @param[out] SectorError pointer to variable that\r
- * contains the configuration information on faulty sector in case of error \r
- * (0xFFFFFFFF means that all the sectors have been correctly erased)\r
- * \r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError)\r
-{\r
- HAL_StatusTypeDef status = HAL_ERROR;\r
- uint32_t index = 0;\r
- \r
- /* Process Locked */\r
- __HAL_LOCK(&pFlash);\r
-\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));\r
-\r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
-\r
- if(status == HAL_OK)\r
- {\r
- /*Initialization of SectorError variable*/\r
- *SectorError = 0xFFFFFFFFU;\r
- \r
- if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)\r
- {\r
- /*Mass erase to be done*/\r
-#if defined (FLASH_OPTCR_nDBANK) \r
- FLASH_MassErase((uint8_t) pEraseInit->VoltageRange, pEraseInit->Banks);\r
-#else\r
- FLASH_MassErase((uint8_t) pEraseInit->VoltageRange); \r
-#endif /* FLASH_OPTCR_nDBANK */\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
- \r
- /* if the erase operation is completed, disable the MER Bit */\r
- FLASH->CR &= (~FLASH_MER_BIT);\r
- }\r
- else\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_NBSECTORS(pEraseInit->NbSectors + pEraseInit->Sector));\r
-\r
- /* Erase by sector by sector to be done*/\r
- for(index = pEraseInit->Sector; index < (pEraseInit->NbSectors + pEraseInit->Sector); index++)\r
- {\r
- FLASH_Erase_Sector(index, (uint8_t) pEraseInit->VoltageRange);\r
-\r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
- \r
- /* If the erase operation is completed, disable the SER Bit and SNB Bits */\r
- CLEAR_BIT(FLASH->CR, (FLASH_CR_SER | FLASH_CR_SNB)); \r
-\r
- if(status != HAL_OK) \r
- {\r
- /* In case of error, stop erase procedure and return the faulty sector*/\r
- *SectorError = index;\r
- break;\r
- }\r
- }\r
- }\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(&pFlash);\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Perform a mass erase or erase the specified FLASH memory sectors with interrupt enabled\r
- * @param pEraseInit pointer to an FLASH_EraseInitTypeDef structure that\r
- * contains the configuration information for the erasing.\r
- * \r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(&pFlash);\r
-\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));\r
-\r
- /* Enable End of FLASH Operation interrupt */\r
- __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP);\r
- \r
- /* Enable Error source interrupt */\r
- __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR);\r
- \r
- /* Clear pending flags (if any) */ \r
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\\r
- FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); \r
- \r
- if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)\r
- {\r
- /*Mass erase to be done*/\r
- pFlash.ProcedureOnGoing = FLASH_PROC_MASSERASE;\r
-#if defined (FLASH_OPTCR_nDBANK) \r
- FLASH_MassErase((uint8_t) pEraseInit->VoltageRange, pEraseInit->Banks);\r
-#else\r
- FLASH_MassErase((uint8_t) pEraseInit->VoltageRange); \r
-#endif /* FLASH_OPTCR_nDBANK */ \r
- }\r
- else\r
- {\r
- /* Erase by sector to be done*/\r
-\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_NBSECTORS(pEraseInit->NbSectors + pEraseInit->Sector));\r
-\r
- pFlash.ProcedureOnGoing = FLASH_PROC_SECTERASE;\r
- pFlash.NbSectorsToErase = pEraseInit->NbSectors;\r
- pFlash.Sector = pEraseInit->Sector;\r
- pFlash.VoltageForErase = (uint8_t)pEraseInit->VoltageRange;\r
-\r
- /*Erase 1st sector and wait for IT*/\r
- FLASH_Erase_Sector(pEraseInit->Sector, pEraseInit->VoltageRange);\r
- }\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Program option bytes\r
- * @param pOBInit pointer to an FLASH_OBInitStruct structure that\r
- * contains the configuration information for the programming.\r
- * \r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit)\r
-{\r
- HAL_StatusTypeDef status = HAL_ERROR;\r
- \r
- /* Process Locked */\r
- __HAL_LOCK(&pFlash);\r
-\r
- /* Check the parameters */\r
- assert_param(IS_OPTIONBYTE(pOBInit->OptionType));\r
-\r
- /* Write protection configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP)\r
- {\r
- assert_param(IS_WRPSTATE(pOBInit->WRPState));\r
- if(pOBInit->WRPState == OB_WRPSTATE_ENABLE)\r
- {\r
- /*Enable of Write protection on the selected Sector*/\r
- status = FLASH_OB_EnableWRP(pOBInit->WRPSector);\r
- }\r
- else\r
- {\r
- /*Disable of Write protection on the selected Sector*/\r
- status = FLASH_OB_DisableWRP(pOBInit->WRPSector);\r
- }\r
- }\r
-\r
- /* Read protection configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_RDP) == OPTIONBYTE_RDP)\r
- {\r
- status = FLASH_OB_RDP_LevelConfig(pOBInit->RDPLevel);\r
- }\r
-\r
- /* USER configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_USER) == OPTIONBYTE_USER)\r
- {\r
-#if defined (FLASH_OPTCR_nDBANK)\r
- status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_WWDG_SW, \r
- pOBInit->USERConfig & OB_IWDG_SW,\r
- pOBInit->USERConfig & OB_STOP_NO_RST,\r
- pOBInit->USERConfig & OB_STDBY_NO_RST, \r
- pOBInit->USERConfig & OB_IWDG_STOP_ACTIVE,\r
- pOBInit->USERConfig & OB_IWDG_STDBY_ACTIVE,\r
- pOBInit->USERConfig & OB_NDBANK_SINGLE_BANK,\r
- pOBInit->USERConfig & OB_DUAL_BOOT_DISABLE);\r
-#else\r
- status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_WWDG_SW, \r
- pOBInit->USERConfig & OB_IWDG_SW,\r
- pOBInit->USERConfig & OB_STOP_NO_RST,\r
- pOBInit->USERConfig & OB_STDBY_NO_RST, \r
- pOBInit->USERConfig & OB_IWDG_STOP_ACTIVE,\r
- pOBInit->USERConfig & OB_IWDG_STDBY_ACTIVE); \r
-#endif /* FLASH_OPTCR_nDBANK */\r
- }\r
- \r
- /* BOR Level configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_BOR) == OPTIONBYTE_BOR)\r
- {\r
- status = FLASH_OB_BOR_LevelConfig(pOBInit->BORLevel);\r
- }\r
- \r
- /* Boot 0 Address configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_BOOTADDR_0) == OPTIONBYTE_BOOTADDR_0)\r
- {\r
- status = FLASH_OB_BootAddressConfig(OPTIONBYTE_BOOTADDR_0, pOBInit->BootAddr0);\r
- }\r
- \r
- /* Boot 1 Address configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_BOOTADDR_1) == OPTIONBYTE_BOOTADDR_1)\r
- {\r
- status = FLASH_OB_BootAddressConfig(OPTIONBYTE_BOOTADDR_1, pOBInit->BootAddr1);\r
- }\r
- \r
-#if defined (FLASH_OPTCR2_PCROP)\r
- /* PCROP configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_PCROP) == OPTIONBYTE_PCROP)\r
- {\r
- status = FLASH_OB_PCROP_Config(pOBInit->PCROPSector);\r
- }\r
- \r
- /* PCROP_RDP configuration */\r
- if((pOBInit->OptionType & OPTIONBYTE_PCROP_RDP) == OPTIONBYTE_PCROP_RDP)\r
- {\r
- status = FLASH_OB_PCROP_RDP_Config(pOBInit->PCROPRdp);\r
- }\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(&pFlash);\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Get the Option byte configuration\r
- * @param pOBInit pointer to an FLASH_OBInitStruct structure that\r
- * contains the configuration information for the programming.\r
- * \r
- * @retval None\r
- */\r
-void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit)\r
-{\r
- pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\\r
- OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1;\r
-\r
- /*Get WRP*/\r
- pOBInit->WRPSector = FLASH_OB_GetWRP();\r
-\r
- /*Get RDP Level*/\r
- pOBInit->RDPLevel = FLASH_OB_GetRDP();\r
-\r
- /*Get USER*/\r
- pOBInit->USERConfig = FLASH_OB_GetUser();\r
-\r
- /*Get BOR Level*/\r
- pOBInit->BORLevel = FLASH_OB_GetBOR();\r
- \r
- /*Get Boot Address when Boot pin = 0 */\r
- pOBInit->BootAddr0 = FLASH_OB_GetBootAddress(OPTIONBYTE_BOOTADDR_0);\r
- \r
- /*Get Boot Address when Boot pin = 1 */\r
- pOBInit->BootAddr1 = FLASH_OB_GetBootAddress(OPTIONBYTE_BOOTADDR_1);\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
- /*Get PCROP Sectors */\r
- pOBInit->PCROPSector = FLASH_OB_GetPCROP();\r
- \r
- /*Get PCROP_RDP Value */\r
- pOBInit->PCROPRdp = FLASH_OB_GetPCROPRDP();\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-}\r
-/**\r
- * @}\r
- */\r
-\r
-#if defined (FLASH_OPTCR_nDBANK)\r
-/**\r
- * @brief Full erase of FLASH memory sectors \r
- * @param VoltageRange The device voltage range which defines the erase parallelism. \r
- * This parameter can be one of the following values:\r
- * @arg VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, \r
- * the operation will be done by byte (8-bit) \r
- * @arg VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V,\r
- * the operation will be done by half word (16-bit)\r
- * @arg VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V,\r
- * the operation will be done by word (32-bit)\r
- * @arg VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, \r
- * the operation will be done by double word (64-bit)\r
- * @param Banks Banks to be erased\r
- * This parameter can be one of the following values:\r
- * @arg FLASH_BANK_1: Bank1 to be erased\r
- * @arg FLASH_BANK_2: Bank2 to be erased\r
- * @arg FLASH_BANK_BOTH: Bank1 and Bank2 to be erased\r
- *\r
- * @retval HAL Status\r
- */\r
-static void FLASH_MassErase(uint8_t VoltageRange, uint32_t Banks)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_VOLTAGERANGE(VoltageRange));\r
- assert_param(IS_FLASH_BANK(Banks));\r
-\r
- /* if the previous operation is completed, proceed to erase all sectors */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- if(Banks == FLASH_BANK_BOTH)\r
- {\r
- /* bank1 & bank2 will be erased*/\r
- FLASH->CR |= FLASH_MER_BIT;\r
- }\r
- else if(Banks == FLASH_BANK_2)\r
- {\r
- /*Only bank2 will be erased*/\r
- FLASH->CR |= FLASH_CR_MER2;\r
- }\r
- else\r
- {\r
- /*Only bank1 will be erased*/\r
- FLASH->CR |= FLASH_CR_MER1; \r
- }\r
- FLASH->CR |= FLASH_CR_STRT | ((uint32_t)VoltageRange <<8);\r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
-}\r
-\r
-/**\r
- * @brief Erase the specified FLASH memory sector\r
- * @param Sector FLASH sector to erase\r
- * The value of this parameter depend on device used within the same series \r
- * @param VoltageRange The device voltage range which defines the erase parallelism. \r
- * This parameter can be one of the following values:\r
- * @arg FLASH_VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, \r
- * the operation will be done by byte (8-bit) \r
- * @arg FLASH_VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V,\r
- * the operation will be done by half word (16-bit)\r
- * @arg FLASH_VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V,\r
- * the operation will be done by word (32-bit)\r
- * @arg FLASH_VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, \r
- * the operation will be done by double word (64-bit)\r
- * \r
- * @retval None\r
- */\r
-void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange)\r
-{\r
- uint32_t tmp_psize = 0;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_SECTOR(Sector));\r
- assert_param(IS_VOLTAGERANGE(VoltageRange));\r
- \r
- if(VoltageRange == FLASH_VOLTAGE_RANGE_1)\r
- {\r
- tmp_psize = FLASH_PSIZE_BYTE;\r
- }\r
- else if(VoltageRange == FLASH_VOLTAGE_RANGE_2)\r
- {\r
- tmp_psize = FLASH_PSIZE_HALF_WORD;\r
- }\r
- else if(VoltageRange == FLASH_VOLTAGE_RANGE_3)\r
- {\r
- tmp_psize = FLASH_PSIZE_WORD;\r
- }\r
- else\r
- {\r
- tmp_psize = FLASH_PSIZE_DOUBLE_WORD;\r
- }\r
- \r
- /* Need to add offset of 4 when sector higher than FLASH_SECTOR_11 */\r
- if(Sector > FLASH_SECTOR_11) \r
- {\r
- Sector += 4;\r
- } \r
-\r
- /* If the previous operation is completed, proceed to erase the sector */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- FLASH->CR |= tmp_psize;\r
- CLEAR_BIT(FLASH->CR, FLASH_CR_SNB);\r
- FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos);\r
- FLASH->CR |= FLASH_CR_STRT;\r
- \r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
-}\r
-\r
-/**\r
- * @brief Return the FLASH Write Protection Option Bytes value.\r
- * @retval uint32_t FLASH Write Protection Option Bytes value\r
- */\r
-static uint32_t FLASH_OB_GetWRP(void)\r
-{\r
- /* Return the FLASH write protection Register value */\r
- return ((uint32_t)(FLASH->OPTCR & 0x0FFF0000));\r
-}\r
-\r
-/**\r
- * @brief Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. \r
- * @param Wwdg Selects the IWDG mode\r
- * This parameter can be one of the following values:\r
- * @arg OB_WWDG_SW: Software WWDG selected\r
- * @arg OB_WWDG_HW: Hardware WWDG selected\r
- * @param Iwdg Selects the WWDG mode\r
- * This parameter can be one of the following values:\r
- * @arg OB_IWDG_SW: Software IWDG selected\r
- * @arg OB_IWDG_HW: Hardware IWDG selected\r
- * @param Stop Reset event when entering STOP mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_STOP_NO_RST: No reset generated when entering in STOP\r
- * @arg OB_STOP_RST: Reset generated when entering in STOP\r
- * @param Stdby Reset event when entering Standby mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_STDBY_NO_RST: No reset generated when entering in STANDBY\r
- * @arg OB_STDBY_RST: Reset generated when entering in STANDBY\r
- * @param Iwdgstop Independent watchdog counter freeze in Stop mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_IWDG_STOP_FREEZE: Freeze IWDG counter in STOP\r
- * @arg OB_IWDG_STOP_ACTIVE: IWDG counter active in STOP\r
- * @param Iwdgstdby Independent watchdog counter freeze in standby mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_IWDG_STDBY_FREEZE: Freeze IWDG counter in STANDBY\r
- * @arg OB_IWDG_STDBY_ACTIVE: IWDG counter active in STANDBY\r
- * @param NDBank Flash Single Bank mode enabled.\r
- * This parameter can be one of the following values:\r
- * @arg OB_NDBANK_SINGLE_BANK: enable 256 bits mode (Flash is a single bank)\r
- * @arg OB_NDBANK_DUAL_BANK: disable 256 bits mode (Flash is a dual bank in 128 bits mode) \r
- * @param NDBoot Flash Dual boot mode disable.\r
- * This parameter can be one of the following values:\r
- * @arg OB_DUAL_BOOT_DISABLE: Disable Dual Boot\r
- * @arg OB_DUAL_BOOT_ENABLE: Enable Dual Boot\r
-\r
- * @retval HAL Status\r
- */\r
-static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, \\r
- uint32_t Iwdgstdby, uint32_t NDBank, uint32_t NDBoot)\r
-{\r
- uint32_t useroptionmask = 0x00;\r
- uint32_t useroptionvalue = 0x00;\r
-\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_OB_WWDG_SOURCE(Wwdg));\r
- assert_param(IS_OB_IWDG_SOURCE(Iwdg));\r
- assert_param(IS_OB_STOP_SOURCE(Stop));\r
- assert_param(IS_OB_STDBY_SOURCE(Stdby));\r
- assert_param(IS_OB_IWDG_STOP_FREEZE(Iwdgstop));\r
- assert_param(IS_OB_IWDG_STDBY_FREEZE(Iwdgstdby));\r
- assert_param(IS_OB_NDBANK(NDBank));\r
- assert_param(IS_OB_NDBOOT(NDBoot));\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
- \r
- if(status == HAL_OK)\r
- {\r
- useroptionmask = (FLASH_OPTCR_WWDG_SW | FLASH_OPTCR_IWDG_SW | FLASH_OPTCR_nRST_STOP | \\r
- FLASH_OPTCR_nRST_STDBY | FLASH_OPTCR_IWDG_STOP | FLASH_OPTCR_IWDG_STDBY | \\r
- FLASH_OPTCR_nDBOOT | FLASH_OPTCR_nDBANK);\r
- \r
- useroptionvalue = (Iwdg | Wwdg | Stop | Stdby | Iwdgstop | Iwdgstdby | NDBoot | NDBank);\r
- \r
- /* Update User Option Byte */ \r
- MODIFY_REG(FLASH->OPTCR, useroptionmask, useroptionvalue);\r
- }\r
- \r
- return status; \r
-}\r
-\r
-/**\r
- * @brief Return the FLASH User Option Byte value.\r
- * @retval uint32_t FLASH User Option Bytes values: WWDG_SW(Bit4), IWDG_SW(Bit5), nRST_STOP(Bit6), \r
- * nRST_STDBY(Bit7), nDBOOT(Bit28), nDBANK(Bit29), IWDG_STDBY(Bit30) and IWDG_STOP(Bit31).\r
- */\r
-static uint32_t FLASH_OB_GetUser(void)\r
-{\r
- /* Return the User Option Byte */\r
- return ((uint32_t)(FLASH->OPTCR & 0xF00000F0U));\r
-}\r
-#else\r
-\r
-/**\r
- * @brief Full erase of FLASH memory sectors \r
- * @param VoltageRange The device voltage range which defines the erase parallelism. \r
- * This parameter can be one of the following values:\r
- * @arg VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, \r
- * the operation will be done by byte (8-bit) \r
- * @arg VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V,\r
- * the operation will be done by half word (16-bit)\r
- * @arg VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V,\r
- * the operation will be done by word (32-bit)\r
- * @arg VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, \r
- * the operation will be done by double word (64-bit)\r
- *\r
- * @retval HAL Status\r
- */\r
-static void FLASH_MassErase(uint8_t VoltageRange)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_VOLTAGERANGE(VoltageRange));\r
-\r
- /* if the previous operation is completed, proceed to erase all sectors */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- FLASH->CR |= FLASH_CR_MER;\r
- FLASH->CR |= FLASH_CR_STRT | ((uint32_t)VoltageRange <<8);\r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
-}\r
-\r
-/**\r
- * @brief Erase the specified FLASH memory sector\r
- * @param Sector FLASH sector to erase\r
- * The value of this parameter depend on device used within the same series \r
- * @param VoltageRange The device voltage range which defines the erase parallelism. \r
- * This parameter can be one of the following values:\r
- * @arg FLASH_VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, \r
- * the operation will be done by byte (8-bit) \r
- * @arg FLASH_VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V,\r
- * the operation will be done by half word (16-bit)\r
- * @arg FLASH_VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V,\r
- * the operation will be done by word (32-bit)\r
- * @arg FLASH_VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, \r
- * the operation will be done by double word (64-bit)\r
- * \r
- * @retval None\r
- */\r
-void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange)\r
-{\r
- uint32_t tmp_psize = 0;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_FLASH_SECTOR(Sector));\r
- assert_param(IS_VOLTAGERANGE(VoltageRange));\r
- \r
- if(VoltageRange == FLASH_VOLTAGE_RANGE_1)\r
- {\r
- tmp_psize = FLASH_PSIZE_BYTE;\r
- }\r
- else if(VoltageRange == FLASH_VOLTAGE_RANGE_2)\r
- {\r
- tmp_psize = FLASH_PSIZE_HALF_WORD;\r
- }\r
- else if(VoltageRange == FLASH_VOLTAGE_RANGE_3)\r
- {\r
- tmp_psize = FLASH_PSIZE_WORD;\r
- }\r
- else\r
- {\r
- tmp_psize = FLASH_PSIZE_DOUBLE_WORD;\r
- }\r
-\r
- /* If the previous operation is completed, proceed to erase the sector */\r
- FLASH->CR &= CR_PSIZE_MASK;\r
- FLASH->CR |= tmp_psize;\r
- FLASH->CR &= SECTOR_MASK;\r
- FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos);\r
- FLASH->CR |= FLASH_CR_STRT;\r
- \r
- /* Data synchronous Barrier (DSB) Just after the write operation\r
- This will force the CPU to respect the sequence of instruction (no optimization).*/\r
- __DSB();\r
-}\r
-\r
-/**\r
- * @brief Return the FLASH Write Protection Option Bytes value.\r
- * @retval uint32_t FLASH Write Protection Option Bytes value\r
- */\r
-static uint32_t FLASH_OB_GetWRP(void)\r
-{\r
- /* Return the FLASH write protection Register value */\r
- return ((uint32_t)(FLASH->OPTCR & 0x00FF0000));\r
-}\r
-\r
-/**\r
- * @brief Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. \r
- * @param Wwdg Selects the IWDG mode\r
- * This parameter can be one of the following values:\r
- * @arg OB_WWDG_SW: Software WWDG selected\r
- * @arg OB_WWDG_HW: Hardware WWDG selected\r
- * @param Iwdg Selects the WWDG mode\r
- * This parameter can be one of the following values:\r
- * @arg OB_IWDG_SW: Software IWDG selected\r
- * @arg OB_IWDG_HW: Hardware IWDG selected\r
- * @param Stop Reset event when entering STOP mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_STOP_NO_RST: No reset generated when entering in STOP\r
- * @arg OB_STOP_RST: Reset generated when entering in STOP\r
- * @param Stdby Reset event when entering Standby mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_STDBY_NO_RST: No reset generated when entering in STANDBY\r
- * @arg OB_STDBY_RST: Reset generated when entering in STANDBY\r
- * @param Iwdgstop Independent watchdog counter freeze in Stop mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_IWDG_STOP_FREEZE: Freeze IWDG counter in STOP\r
- * @arg OB_IWDG_STOP_ACTIVE: IWDG counter active in STOP\r
- * @param Iwdgstdby Independent watchdog counter freeze in standby mode.\r
- * This parameter can be one of the following values:\r
- * @arg OB_IWDG_STDBY_FREEZE: Freeze IWDG counter in STANDBY\r
- * @arg OB_IWDG_STDBY_ACTIVE: IWDG counter active in STANDBY \r
- * @retval HAL Status\r
- */\r
-static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, uint32_t Iwdgstdby)\r
-{\r
- uint32_t useroptionmask = 0x00;\r
- uint32_t useroptionvalue = 0x00;\r
-\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_OB_WWDG_SOURCE(Wwdg));\r
- assert_param(IS_OB_IWDG_SOURCE(Iwdg));\r
- assert_param(IS_OB_STOP_SOURCE(Stop));\r
- assert_param(IS_OB_STDBY_SOURCE(Stdby));\r
- assert_param(IS_OB_IWDG_STOP_FREEZE(Iwdgstop));\r
- assert_param(IS_OB_IWDG_STDBY_FREEZE(Iwdgstdby));\r
-\r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
- \r
- if(status == HAL_OK)\r
- {\r
- useroptionmask = (FLASH_OPTCR_WWDG_SW | FLASH_OPTCR_IWDG_SW | FLASH_OPTCR_nRST_STOP | \\r
- FLASH_OPTCR_nRST_STDBY | FLASH_OPTCR_IWDG_STOP | FLASH_OPTCR_IWDG_STDBY);\r
- \r
- useroptionvalue = (Iwdg | Wwdg | Stop | Stdby | Iwdgstop | Iwdgstdby);\r
- \r
- /* Update User Option Byte */ \r
- MODIFY_REG(FLASH->OPTCR, useroptionmask, useroptionvalue);\r
- }\r
- \r
- return status; \r
-\r
-}\r
-\r
-/**\r
- * @brief Return the FLASH User Option Byte value.\r
- * @retval uint32_t FLASH User Option Bytes values: WWDG_SW(Bit4), IWDG_SW(Bit5), nRST_STOP(Bit6), \r
- * nRST_STDBY(Bit7), IWDG_STDBY(Bit30) and IWDG_STOP(Bit31).\r
- */\r
-static uint32_t FLASH_OB_GetUser(void)\r
-{\r
- /* Return the User Option Byte */\r
- return ((uint32_t)(FLASH->OPTCR & 0xC00000F0U));\r
-}\r
-#endif /* FLASH_OPTCR_nDBANK */\r
-\r
-/**\r
- * @brief Enable the write protection of the desired bank1 or bank2 sectors\r
- *\r
- * @note When the memory read protection level is selected (RDP level = 1), \r
- * it is not possible to program or erase the flash sector i if CortexM7 \r
- * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 \r
- * \r
- * @param WRPSector specifies the sector(s) to be write protected.\r
- * This parameter can be one of the following values:\r
- * @arg WRPSector: A value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_7 (for STM32F74xxx/STM32F75xxx devices)\r
- * or a value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_11 (in Single Bank mode for STM32F76xxx/STM32F77xxx devices)\r
- * or a value between OB_WRP_DB_SECTOR_0 and OB_WRP_DB_SECTOR_23 (in Dual Bank mode for STM32F76xxx/STM32F77xxx devices)\r
- * @arg OB_WRP_SECTOR_All\r
- *\r
- * @retval HAL FLASH State \r
- */\r
-static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WRPSector)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_OB_WRP_SECTOR(WRPSector));\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
-\r
- if(status == HAL_OK)\r
- {\r
- /*Write protection enabled on sectors */\r
- FLASH->OPTCR &= (~WRPSector); \r
- }\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Disable the write protection of the desired bank1 or bank 2 sectors\r
- *\r
- * @note When the memory read protection level is selected (RDP level = 1), \r
- * it is not possible to program or erase the flash sector i if CortexM4 \r
- * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 \r
- * \r
- * @param WRPSector specifies the sector(s) to be write protected.\r
- * This parameter can be one of the following values:\r
- * @arg WRPSector: A value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_7 (for STM32F74xxx/STM32F75xxx devices)\r
- * or a value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_11 (in Single Bank mode for STM32F76xxx/STM32F77xxx devices)\r
- * or a value between OB_WRP_DB_SECTOR_0 and OB_WRP_DB_SECTOR_23 (in Dual Bank mode for STM32F76xxx/STM32F77xxx devices) \r
- * @arg OB_WRP_Sector_All\r
- *\r
- *\r
- * @retval HAL Status \r
- */\r
-static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WRPSector)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_OB_WRP_SECTOR(WRPSector));\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
-\r
- if(status == HAL_OK)\r
- {\r
- /* Write protection disabled on sectors */\r
- FLASH->OPTCR |= (WRPSector); \r
- }\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Set the read protection level.\r
- * @param Level specifies the read protection level.\r
- * This parameter can be one of the following values:\r
- * @arg OB_RDP_LEVEL_0: No protection\r
- * @arg OB_RDP_LEVEL_1: Read protection of the memory\r
- * @arg OB_RDP_LEVEL_2: Full chip protection\r
- * \r
- * @note WARNING: When enabling OB_RDP level 2 it's no more possible to go back to level 1 or 0\r
- * \r
- * @retval HAL Status\r
- */\r
-static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t Level)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_OB_RDP_LEVEL(Level));\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
-\r
- if(status == HAL_OK)\r
- { \r
- *(__IO uint8_t*)OPTCR_BYTE1_ADDRESS = Level;\r
- }\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Set the BOR Level. \r
- * @param Level specifies the Option Bytes BOR Reset Level.\r
- * This parameter can be one of the following values:\r
- * @arg OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V\r
- * @arg OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V\r
- * @arg OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V\r
- * @arg OB_BOR_OFF: Supply voltage ranges from 1.62 to 2.1 V\r
- * @retval HAL Status\r
- */\r
-static HAL_StatusTypeDef FLASH_OB_BOR_LevelConfig(uint8_t Level)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_OB_BOR_LEVEL(Level));\r
-\r
- /* Set the BOR Level */\r
- MODIFY_REG(FLASH->OPTCR, FLASH_OPTCR_BOR_LEV, Level);\r
- \r
- return HAL_OK;\r
- \r
-}\r
-\r
-/**\r
- * @brief Configure Boot base address.\r
- * \r
- * @param BootOption specifies Boot base address depending from Boot pin = 0 or pin = 1\r
- * This parameter can be one of the following values:\r
- * @arg OPTIONBYTE_BOOTADDR_0 : Boot address based when Boot pin = 0 \r
- * @arg OPTIONBYTE_BOOTADDR_1 : Boot address based when Boot pin = 1 \r
- * @param Address specifies Boot base address\r
- * This parameter can be one of the following values:\r
- * @arg OB_BOOTADDR_ITCM_RAM : Boot from ITCM RAM (0x00000000) \r
- * @arg OB_BOOTADDR_SYSTEM : Boot from System memory bootloader (0x00100000) \r
- * @arg OB_BOOTADDR_ITCM_FLASH : Boot from Flash on ITCM interface (0x00200000) \r
- * @arg OB_BOOTADDR_AXIM_FLASH : Boot from Flash on AXIM interface (0x08000000) \r
- * @arg OB_BOOTADDR_DTCM_RAM : Boot from DTCM RAM (0x20000000) \r
- * @arg OB_BOOTADDR_SRAM1 : Boot from SRAM1 (0x20010000) \r
- * @arg OB_BOOTADDR_SRAM2 : Boot from SRAM2 (0x2004C000) \r
- * \r
- * @retval HAL Status\r
- */\r
-static HAL_StatusTypeDef FLASH_OB_BootAddressConfig(uint32_t BootOption, uint32_t Address)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_OB_BOOT_ADDRESS(Address));\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
- \r
- if(status == HAL_OK)\r
- {\r
- if(BootOption == OPTIONBYTE_BOOTADDR_0)\r
- { \r
- MODIFY_REG(FLASH->OPTCR1, FLASH_OPTCR1_BOOT_ADD0, Address);\r
- }\r
- else\r
- {\r
- MODIFY_REG(FLASH->OPTCR1, FLASH_OPTCR1_BOOT_ADD1, (Address << 16));\r
- }\r
- }\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Returns the FLASH Read Protection level.\r
- * @retval FlagStatus FLASH ReadOut Protection Status:\r
- * This parameter can be one of the following values:\r
- * @arg OB_RDP_LEVEL_0: No protection\r
- * @arg OB_RDP_LEVEL_1: Read protection of the memory\r
- * @arg OB_RDP_LEVEL_2: Full chip protection\r
- */\r
-static uint8_t FLASH_OB_GetRDP(void)\r
-{\r
- uint8_t readstatus = OB_RDP_LEVEL_0;\r
- \r
- if ((*(__IO uint8_t*)(OPTCR_BYTE1_ADDRESS)) == OB_RDP_LEVEL_0)\r
- {\r
- readstatus = OB_RDP_LEVEL_0;\r
- }\r
- else if ((*(__IO uint8_t*)(OPTCR_BYTE1_ADDRESS)) == OB_RDP_LEVEL_2)\r
- {\r
- readstatus = OB_RDP_LEVEL_2;\r
- }\r
- else \r
- {\r
- readstatus = OB_RDP_LEVEL_1;\r
- }\r
-\r
- return readstatus;\r
-}\r
-\r
-/**\r
- * @brief Returns the FLASH BOR level.\r
- * @retval uint32_t The FLASH BOR level:\r
- * - OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V\r
- * - OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V\r
- * - OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V\r
- * - OB_BOR_OFF : Supply voltage ranges from 1.62 to 2.1 V \r
- */\r
-static uint32_t FLASH_OB_GetBOR(void)\r
-{\r
- /* Return the FLASH BOR level */\r
- return ((uint32_t)(FLASH->OPTCR & 0x0C));\r
-}\r
-\r
-/**\r
- * @brief Configure Boot base address.\r
- * \r
- * @param BootOption specifies Boot base address depending from Boot pin = 0 or pin = 1\r
- * This parameter can be one of the following values:\r
- * @arg OPTIONBYTE_BOOTADDR_0 : Boot address based when Boot pin = 0 \r
- * @arg OPTIONBYTE_BOOTADDR_1 : Boot address based when Boot pin = 1 \r
- * \r
- * @retval uint32_t Boot Base Address:\r
- * - OB_BOOTADDR_ITCM_RAM : Boot from ITCM RAM (0x00000000) \r
- * - OB_BOOTADDR_SYSTEM : Boot from System memory bootloader (0x00100000) \r
- * - OB_BOOTADDR_ITCM_FLASH : Boot from Flash on ITCM interface (0x00200000) \r
- * - OB_BOOTADDR_AXIM_FLASH : Boot from Flash on AXIM interface (0x08000000) \r
- * - OB_BOOTADDR_DTCM_RAM : Boot from DTCM RAM (0x20000000) \r
- * - OB_BOOTADDR_SRAM1 : Boot from SRAM1 (0x20010000) \r
- * - OB_BOOTADDR_SRAM2 : Boot from SRAM2 (0x2004C000) \r
- */\r
-static uint32_t FLASH_OB_GetBootAddress(uint32_t BootOption)\r
-{ \r
- uint32_t Address = 0;\r
- \r
- /* Return the Boot base Address */\r
- if(BootOption == OPTIONBYTE_BOOTADDR_0)\r
- { \r
- Address = FLASH->OPTCR1 & FLASH_OPTCR1_BOOT_ADD0;\r
- }\r
- else\r
- {\r
- Address = ((FLASH->OPTCR1 & FLASH_OPTCR1_BOOT_ADD1) >> 16);\r
- }\r
-\r
- return Address;\r
-}\r
-\r
-#if defined (FLASH_OPTCR2_PCROP)\r
-/**\r
- * @brief Set the PCROP protection for sectors.\r
- * @param PCROPSector specifies the sector(s) to be PCROP protected.\r
- * This parameter can be one of the following values:\r
- * @arg OB_PCROP_SECTOR_x: A value between OB_PCROP_SECTOR_0 and OB_PCROP_SECTOR_7\r
- * @arg OB_PCROP_SECTOR_ALL\r
- * \r
- * @retval HAL Status\r
- */\r
-static HAL_StatusTypeDef FLASH_OB_PCROP_Config(uint32_t PCROPSector)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_OB_PCROP_SECTOR(PCROPSector));\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
-\r
- if(status == HAL_OK)\r
- { \r
- MODIFY_REG(FLASH->OPTCR2, FLASH_OPTCR2_PCROP, PCROPSector);\r
- }\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Set the PCROP_RDP value\r
- * @param Pcrop_Rdp specifies the PCROP_RDP bit value.\r
- * \r
- * @retval HAL Status\r
- */\r
-static HAL_StatusTypeDef FLASH_OB_PCROP_RDP_Config(uint32_t Pcrop_Rdp)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_OB_PCROP_RDP_VALUE(Pcrop_Rdp));\r
- \r
- /* Wait for last operation to be completed */\r
- status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);\r
-\r
- if(status == HAL_OK)\r
- { \r
- MODIFY_REG(FLASH->OPTCR2, FLASH_OPTCR2_PCROP_RDP, Pcrop_Rdp);\r
- }\r
- \r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Return the FLASH PCROP Protection Option Bytes value.\r
- * @retval uint32_t FLASH PCROP Protection Option Bytes value\r
- */\r
-static uint32_t FLASH_OB_GetPCROP(void)\r
-{\r
- /* Return the FLASH write protection Register value */\r
- return ((uint32_t)(FLASH->OPTCR2 & FLASH_OPTCR2_PCROP));\r
-}\r
-\r
-/**\r
- * @brief Return the FLASH PCROP_RDP option byte value.\r
- * @retval uint32_t FLASH PCROP_RDP option byte value\r
- */\r
-static uint32_t FLASH_OB_GetPCROPRDP(void)\r
-{\r
- /* Return the FLASH write protection Register value */\r
- return ((uint32_t)(FLASH->OPTCR2 & FLASH_OPTCR2_PCROP_RDP));\r
-}\r
-#endif /* FLASH_OPTCR2_PCROP */\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-#endif /* HAL_FLASH_MODULE_ENABLED */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_gpio.c\r
- * @author MCD Application Team\r
- * @brief GPIO HAL module driver.\r
- * This file provides firmware functions to manage the following \r
- * functionalities of the General Purpose Input/Output (GPIO) peripheral:\r
- * + Initialization and de-initialization functions\r
- * + IO operation functions\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### GPIO Peripheral features #####\r
- ==============================================================================\r
- [..] \r
- Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each\r
- port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software\r
- in several modes:\r
- (+) Input mode \r
- (+) Analog mode\r
- (+) Output mode\r
- (+) Alternate function mode\r
- (+) External interrupt/event lines\r
-\r
- [..] \r
- During and just after reset, the alternate functions and external interrupt \r
- lines are not active and the I/O ports are configured in input floating mode.\r
- \r
- [..] \r
- All GPIO pins have weak internal pull-up and pull-down resistors, which can be \r
- activated or not.\r
-\r
- [..]\r
- In Output or Alternate mode, each IO can be configured on open-drain or push-pull\r
- type and the IO speed can be selected depending on the VDD value.\r
-\r
- [..] \r
- All ports have external interrupt/event capability. To use external interrupt \r
- lines, the port must be configured in input mode. All available GPIO pins are \r
- connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.\r
- \r
- [..]\r
- The external interrupt/event controller consists of up to 23 edge detectors \r
- (16 lines are connected to GPIO) for generating event/interrupt requests (each \r
- input line can be independently configured to select the type (interrupt or event) \r
- and the corresponding trigger event (rising or falling or both). Each line can \r
- also be masked independently. \r
-\r
- ##### How to use this driver #####\r
- ============================================================================== \r
- [..]\r
- (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE(). \r
-\r
- (#) Configure the GPIO pin(s) using HAL_GPIO_Init().\r
- (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure\r
- (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef \r
- structure.\r
- (++) In case of Output or alternate function mode selection: the speed is \r
- configured through "Speed" member from GPIO_InitTypeDef structure.\r
- (++) In alternate mode is selection, the alternate function connected to the IO\r
- is configured through "Alternate" member from GPIO_InitTypeDef structure.\r
- (++) Analog mode is required when a pin is to be used as ADC channel \r
- or DAC output.\r
- (++) In case of external interrupt/event selection the "Mode" member from \r
- GPIO_InitTypeDef structure select the type (interrupt or event) and \r
- the corresponding trigger event (rising or falling or both).\r
-\r
- (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority \r
- mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using\r
- HAL_NVIC_EnableIRQ().\r
- \r
- (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().\r
- \r
- (#) To set/reset the level of a pin configured in output mode use \r
- HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().\r
- \r
- (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().\r
-\r
- \r
- (#) During and just after reset, the alternate functions are not \r
- active and the GPIO pins are configured in input floating mode (except JTAG\r
- pins).\r
- \r
- (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose \r
- (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has \r
- priority over the GPIO function.\r
- \r
- (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as \r
- general purpose PH0 and PH1, respectively, when the HSE oscillator is off. \r
- The HSE has priority over the GPIO function.\r
- \r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup GPIO GPIO\r
- * @brief GPIO HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_GPIO_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @addtogroup GPIO_Private_Constants GPIO Private Constants\r
- * @{\r
- */\r
-#define GPIO_MODE ((uint32_t)0x00000003U)\r
-#define EXTI_MODE ((uint32_t)0x10000000U)\r
-#define GPIO_MODE_IT ((uint32_t)0x00010000U)\r
-#define GPIO_MODE_EVT ((uint32_t)0x00020000U)\r
-#define RISING_EDGE ((uint32_t)0x00100000U)\r
-#define FALLING_EDGE ((uint32_t)0x00200000U)\r
-#define GPIO_OUTPUT_TYPE ((uint32_t)0x00000010U)\r
-\r
-#define GPIO_NUMBER ((uint32_t)16U)\r
-/**\r
- * @}\r
- */\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @defgroup GPIO_Exported_Functions GPIO Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup GPIO_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @brief Initialization and Configuration functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Initialization and de-initialization functions #####\r
- ===============================================================================\r
- [..]\r
- This section provides functions allowing to initialize and de-initialize the GPIOs\r
- to be ready for use.\r
- \r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init.\r
- * @param GPIOx where x can be (A..K) to select the GPIO peripheral.\r
- * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains\r
- * the configuration information for the specified GPIO peripheral.\r
- * @retval None\r
- */\r
-void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)\r
-{\r
- uint32_t position = 0x00;\r
- uint32_t ioposition = 0x00;\r
- uint32_t iocurrent = 0x00;\r
- uint32_t temp = 0x00;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));\r
- assert_param(IS_GPIO_PIN(GPIO_Init->Pin));\r
- assert_param(IS_GPIO_MODE(GPIO_Init->Mode));\r
- assert_param(IS_GPIO_PULL(GPIO_Init->Pull));\r
-\r
- /* Configure the port pins */\r
- for(position = 0; position < GPIO_NUMBER; position++)\r
- {\r
- /* Get the IO position */\r
- ioposition = ((uint32_t)0x01) << position;\r
- /* Get the current IO position */\r
- iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;\r
-\r
- if(iocurrent == ioposition)\r
- {\r
- /*--------------------- GPIO Mode Configuration ------------------------*/\r
- /* In case of Alternate function mode selection */\r
- if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))\r
- {\r
- /* Check the Alternate function parameter */\r
- assert_param(IS_GPIO_AF(GPIO_Init->Alternate));\r
- \r
- /* Configure Alternate function mapped with the current IO */\r
- temp = GPIOx->AFR[position >> 3];\r
- temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;\r
- temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));\r
- GPIOx->AFR[position >> 3] = temp;\r
- }\r
-\r
- /* Configure IO Direction mode (Input, Output, Alternate or Analog) */\r
- temp = GPIOx->MODER;\r
- temp &= ~(GPIO_MODER_MODER0 << (position * 2));\r
- temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));\r
- GPIOx->MODER = temp;\r
-\r
- /* In case of Output or Alternate function mode selection */\r
- if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||\r
- (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))\r
- {\r
- /* Check the Speed parameter */\r
- assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));\r
- /* Configure the IO Speed */\r
- temp = GPIOx->OSPEEDR; \r
- temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));\r
- temp |= (GPIO_Init->Speed << (position * 2));\r
- GPIOx->OSPEEDR = temp;\r
-\r
- /* Configure the IO Output Type */\r
- temp = GPIOx->OTYPER;\r
- temp &= ~(GPIO_OTYPER_OT_0 << position) ;\r
- temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4) << position);\r
- GPIOx->OTYPER = temp;\r
- }\r
-\r
- /* Activate the Pull-up or Pull down resistor for the current IO */\r
- temp = GPIOx->PUPDR;\r
- temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));\r
- temp |= ((GPIO_Init->Pull) << (position * 2));\r
- GPIOx->PUPDR = temp;\r
-\r
- /*--------------------- EXTI Mode Configuration ------------------------*/\r
- /* Configure the External Interrupt or event for the current IO */\r
- if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)\r
- {\r
- /* Enable SYSCFG Clock */\r
- __HAL_RCC_SYSCFG_CLK_ENABLE();\r
-\r
- temp = SYSCFG->EXTICR[position >> 2];\r
- temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03)));\r
- temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));\r
- SYSCFG->EXTICR[position >> 2] = temp;\r
-\r
- /* Clear EXTI line configuration */\r
- temp = EXTI->IMR;\r
- temp &= ~((uint32_t)iocurrent);\r
- if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)\r
- {\r
- temp |= iocurrent;\r
- }\r
- EXTI->IMR = temp;\r
-\r
- temp = EXTI->EMR;\r
- temp &= ~((uint32_t)iocurrent);\r
- if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)\r
- {\r
- temp |= iocurrent;\r
- }\r
- EXTI->EMR = temp;\r
-\r
- /* Clear Rising Falling edge configuration */\r
- temp = EXTI->RTSR;\r
- temp &= ~((uint32_t)iocurrent);\r
- if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)\r
- {\r
- temp |= iocurrent;\r
- }\r
- EXTI->RTSR = temp;\r
-\r
- temp = EXTI->FTSR;\r
- temp &= ~((uint32_t)iocurrent);\r
- if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)\r
- {\r
- temp |= iocurrent;\r
- }\r
- EXTI->FTSR = temp;\r
- }\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @brief De-initializes the GPIOx peripheral registers to their default reset values.\r
- * @param GPIOx where x can be (A..K) to select the GPIO peripheral.\r
- * @param GPIO_Pin specifies the port bit to be written.\r
- * This parameter can be one of GPIO_PIN_x where x can be (0..15).\r
- * @retval None\r
- */\r
-void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)\r
-{\r
- uint32_t position;\r
- uint32_t ioposition = 0x00;\r
- uint32_t iocurrent = 0x00;\r
- uint32_t tmp = 0x00;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));\r
- \r
- /* Configure the port pins */\r
- for(position = 0; position < GPIO_NUMBER; position++)\r
- {\r
- /* Get the IO position */\r
- ioposition = ((uint32_t)0x01) << position;\r
- /* Get the current IO position */\r
- iocurrent = (GPIO_Pin) & ioposition;\r
-\r
- if(iocurrent == ioposition)\r
- {\r
- /*------------------------- EXTI Mode Configuration --------------------*/\r
- tmp = SYSCFG->EXTICR[position >> 2];\r
- tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));\r
- if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))\r
- {\r
- /* Configure the External Interrupt or event for the current IO */\r
- tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));\r
- SYSCFG->EXTICR[position >> 2] &= ~tmp;\r
-\r
- /* Clear EXTI line configuration */\r
- EXTI->IMR &= ~((uint32_t)iocurrent);\r
- EXTI->EMR &= ~((uint32_t)iocurrent);\r
-\r
- /* Clear Rising Falling edge configuration */\r
- EXTI->RTSR &= ~((uint32_t)iocurrent);\r
- EXTI->FTSR &= ~((uint32_t)iocurrent);\r
- }\r
- /*------------------------- GPIO Mode Configuration --------------------*/\r
- /* Configure IO Direction in Input Floating Mode */\r
- GPIOx->MODER &= ~(GPIO_MODER_MODER0 << (position * 2));\r
-\r
- /* Configure the default Alternate Function in current IO */\r
- GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;\r
-\r
- /* Configure the default value for IO Speed */\r
- GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));\r
-\r
- /* Configure the default value IO Output Type */\r
- GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;\r
-\r
- /* Deactivate the Pull-up and Pull-down resistor for the current IO */\r
- GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup GPIO_Exported_Functions_Group2 IO operation functions \r
- * @brief GPIO Read and Write\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### IO operation functions #####\r
- ===============================================================================\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Reads the specified input port pin.\r
- * @param GPIOx where x can be (A..K) to select the GPIO peripheral.\r
- * @param GPIO_Pin specifies the port bit to read.\r
- * This parameter can be GPIO_PIN_x where x can be (0..15).\r
- * @retval The input port pin value.\r
- */\r
-GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)\r
-{\r
- GPIO_PinState bitstatus;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_GPIO_PIN(GPIO_Pin));\r
-\r
- if((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)\r
- {\r
- bitstatus = GPIO_PIN_SET;\r
- }\r
- else\r
- {\r
- bitstatus = GPIO_PIN_RESET;\r
- }\r
- return bitstatus;\r
-}\r
-\r
-/**\r
- * @brief Sets or clears the selected data port bit.\r
- *\r
- * @note This function uses GPIOx_BSRR register to allow atomic read/modify\r
- * accesses. In this way, there is no risk of an IRQ occurring between\r
- * the read and the modify access.\r
- *\r
- * @param GPIOx where x can be (A..K) to select the GPIO peripheral.\r
- * @param GPIO_Pin specifies the port bit to be written.\r
- * This parameter can be one of GPIO_PIN_x where x can be (0..15).\r
- * @param PinState specifies the value to be written to the selected bit.\r
- * This parameter can be one of the GPIO_PinState enum values:\r
- * @arg GPIO_PIN_RESET: to clear the port pin\r
- * @arg GPIO_PIN_SET: to set the port pin\r
- * @retval None\r
- */\r
-void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_GPIO_PIN(GPIO_Pin));\r
- assert_param(IS_GPIO_PIN_ACTION(PinState));\r
-\r
- if(PinState != GPIO_PIN_RESET)\r
- {\r
- GPIOx->BSRR = GPIO_Pin;\r
- }\r
- else\r
- {\r
- GPIOx->BSRR = (uint32_t)GPIO_Pin << 16;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Toggles the specified GPIO pins.\r
- * @param GPIOx Where x can be (A..I) to select the GPIO peripheral.\r
- * @param GPIO_Pin Specifies the pins to be toggled.\r
- * @retval None\r
- */\r
-void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_GPIO_PIN(GPIO_Pin));\r
-\r
- if ((GPIOx->ODR & GPIO_Pin) == GPIO_Pin)\r
- {\r
- GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;\r
- }\r
- else\r
- {\r
- GPIOx->BSRR = GPIO_Pin;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Locks GPIO Pins configuration registers.\r
- * @note The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR,\r
- * GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH.\r
- * @note The configuration of the locked GPIO pins can no longer be modified\r
- * until the next reset.\r
- * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32F7 family\r
- * @param GPIO_Pin specifies the port bit to be locked.\r
- * This parameter can be any combination of GPIO_PIN_x where x can be (0..15).\r
- * @retval None\r
- */\r
-HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)\r
-{\r
- __IO uint32_t tmp = GPIO_LCKR_LCKK;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_GPIO_PIN(GPIO_Pin));\r
-\r
- /* Apply lock key write sequence */\r
- tmp |= GPIO_Pin;\r
- /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */\r
- GPIOx->LCKR = tmp;\r
- /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */\r
- GPIOx->LCKR = GPIO_Pin;\r
- /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */\r
- GPIOx->LCKR = tmp;\r
- /* Read LCKK bit*/\r
- tmp = GPIOx->LCKR;\r
-\r
- if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET)\r
- {\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles EXTI interrupt request.\r
- * @param GPIO_Pin Specifies the pins connected EXTI line\r
- * @retval None\r
- */\r
-void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)\r
-{\r
- /* EXTI line interrupt detected */\r
- if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)\r
- {\r
- __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);\r
- HAL_GPIO_EXTI_Callback(GPIO_Pin);\r
- }\r
-}\r
-\r
-/**\r
- * @brief EXTI line detection callbacks.\r
- * @param GPIO_Pin Specifies the pins connected EXTI line\r
- * @retval None\r
- */\r
-__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(GPIO_Pin);\r
- \r
- /* NOTE: This function Should not be modified, when the callback is needed,\r
- the HAL_GPIO_EXTI_Callback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_GPIO_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_i2c.c\r
- * @author MCD Application Team\r
- * @brief I2C HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities of the Inter Integrated Circuit (I2C) peripheral:\r
- * + Initialization and de-initialization functions\r
- * + IO operation functions\r
- * + Peripheral State and Errors functions\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..]\r
- The I2C HAL driver can be used as follows:\r
-\r
- (#) Declare a I2C_HandleTypeDef handle structure, for example:\r
- I2C_HandleTypeDef hi2c;\r
-\r
- (#)Initialize the I2C low level resources by implementing the @ref HAL_I2C_MspInit() API:\r
- (##) Enable the I2Cx interface clock\r
- (##) I2C pins configuration\r
- (+++) Enable the clock for the I2C GPIOs\r
- (+++) Configure I2C pins as alternate function open-drain\r
- (##) NVIC configuration if you need to use interrupt process\r
- (+++) Configure the I2Cx interrupt priority\r
- (+++) Enable the NVIC I2C IRQ Channel\r
- (##) DMA Configuration if you need to use DMA process\r
- (+++) Declare a DMA_HandleTypeDef handle structure for the transmit or receive stream\r
- (+++) Enable the DMAx interface clock using\r
- (+++) Configure the DMA handle parameters\r
- (+++) Configure the DMA Tx or Rx stream\r
- (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle\r
- (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on\r
- the DMA Tx or Rx stream\r
-\r
- (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addressing mode,\r
- Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure.\r
-\r
- (#) Initialize the I2C registers by calling the @ref HAL_I2C_Init(), configures also the low level Hardware\r
- (GPIO, CLOCK, NVIC...etc) by calling the customized @ref HAL_I2C_MspInit(&hi2c) API.\r
-\r
- (#) To check if target device is ready for communication, use the function @ref HAL_I2C_IsDeviceReady()\r
-\r
- (#) For I2C IO and IO MEM operations, three operation modes are available within this driver :\r
-\r
- *** Polling mode IO operation ***\r
- =================================\r
- [..]\r
- (+) Transmit in master mode an amount of data in blocking mode using @ref HAL_I2C_Master_Transmit()\r
- (+) Receive in master mode an amount of data in blocking mode using @ref HAL_I2C_Master_Receive()\r
- (+) Transmit in slave mode an amount of data in blocking mode using @ref HAL_I2C_Slave_Transmit()\r
- (+) Receive in slave mode an amount of data in blocking mode using @ref HAL_I2C_Slave_Receive()\r
-\r
- *** Polling mode IO MEM operation ***\r
- =====================================\r
- [..]\r
- (+) Write an amount of data in blocking mode to a specific memory address using @ref HAL_I2C_Mem_Write()\r
- (+) Read an amount of data in blocking mode from a specific memory address using @ref HAL_I2C_Mem_Read()\r
-\r
-\r
- *** Interrupt mode IO operation ***\r
- ===================================\r
- [..]\r
- (+) Transmit in master mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Transmit_IT()\r
- (+) At transmission end of transfer, @ref HAL_I2C_MasterTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MasterTxCpltCallback()\r
- (+) Receive in master mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Receive_IT()\r
- (+) At reception end of transfer, @ref HAL_I2C_MasterRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MasterRxCpltCallback()\r
- (+) Transmit in slave mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Transmit_IT()\r
- (+) At transmission end of transfer, @ref HAL_I2C_SlaveTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_SlaveTxCpltCallback()\r
- (+) Receive in slave mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Receive_IT()\r
- (+) At reception end of transfer, @ref HAL_I2C_SlaveRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_SlaveRxCpltCallback()\r
- (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()\r
- (+) Abort a master I2C process communication with Interrupt using @ref HAL_I2C_Master_Abort_IT()\r
- (+) End of abort process, @ref HAL_I2C_AbortCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_AbortCpltCallback()\r
- (+) Discard a slave I2C process communication using @ref __HAL_I2C_GENERATE_NACK() macro.\r
- This action will inform Master to generate a Stop condition to discard the communication.\r
-\r
-\r
- *** Interrupt mode or DMA mode IO sequential operation ***\r
- ==========================================================\r
- [..]\r
- (@) These interfaces allow to manage a sequential transfer with a repeated start condition\r
- when a direction change during transfer\r
- [..]\r
- (+) A specific option field manage the different steps of a sequential transfer\r
- (+) Option field values are defined through @ref I2C_XFEROPTIONS and are listed below:\r
- (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functionnal is same as associated interfaces in no sequential mode\r
- (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start condition, address\r
- and data to transfer without a final stop condition\r
- (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a sequence with start condition, address\r
- and data to transfer without a final stop condition, an then permit a call the same master sequential interface\r
- several times (like @ref HAL_I2C_Master_Seq_Transmit_IT() then @ref HAL_I2C_Master_Seq_Transmit_IT()\r
- or @ref HAL_I2C_Master_Seq_Transmit_DMA() then @ref HAL_I2C_Master_Seq_Transmit_DMA())\r
- (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart condition, address\r
- and with new data to transfer if the direction change or manage only the new data to transfer\r
- if no direction change and without a final stop condition in both cases\r
- (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart condition, address\r
- and with new data to transfer if the direction change or manage only the new data to transfer\r
- if no direction change and with a final stop condition in both cases\r
- (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a restart condition after several call of the same master sequential\r
- interface several times (link with option I2C_FIRST_AND_NEXT_FRAME).\r
- Usage can, transfer several bytes one by one using HAL_I2C_Master_Seq_Transmit_IT(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME)\r
- or HAL_I2C_Master_Seq_Receive_IT(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME)\r
- or HAL_I2C_Master_Seq_Transmit_DMA(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME)\r
- or HAL_I2C_Master_Seq_Receive_DMA(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME).\r
- Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit or Receive sequence permit to call the oposite interface Receive or Transmit\r
- without stopping the communication and so generate a restart condition.\r
- (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart condition after each call of the same master sequential\r
- interface.\r
- Usage can, transfer several bytes one by one with a restart with slave address between each bytes using HAL_I2C_Master_Seq_Transmit_IT(option I2C_FIRST_FRAME then I2C_OTHER_FRAME)\r
- or HAL_I2C_Master_Seq_Receive_IT(option I2C_FIRST_FRAME then I2C_OTHER_FRAME)\r
- or HAL_I2C_Master_Seq_Transmit_DMA(option I2C_FIRST_FRAME then I2C_OTHER_FRAME)\r
- or HAL_I2C_Master_Seq_Receive_DMA(option I2C_FIRST_FRAME then I2C_OTHER_FRAME).\r
- Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to help automatic generation of STOP condition.\r
-\r
- (+) Differents sequential I2C interfaces are listed below:\r
- (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Seq_Transmit_IT()\r
- or using @ref HAL_I2C_Master_Seq_Transmit_DMA()\r
- (+++) At transmission end of current frame transfer, @ref HAL_I2C_MasterTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MasterTxCpltCallback()\r
- (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Seq_Receive_IT()\r
- or using @ref HAL_I2C_Master_Seq_Receive_DMA()\r
- (+++) At reception end of current frame transfer, @ref HAL_I2C_MasterRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MasterRxCpltCallback()\r
- (++) Abort a master IT or DMA I2C process communication with Interrupt using @ref HAL_I2C_Master_Abort_IT()\r
- (+++) End of abort process, @ref HAL_I2C_AbortCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_AbortCpltCallback()\r
- (++) Enable/disable the Address listen mode in slave I2C mode using @ref HAL_I2C_EnableListen_IT() @ref HAL_I2C_DisableListen_IT()\r
- (+++) When address slave I2C match, @ref HAL_I2C_AddrCallback() is executed and user can\r
- add his own code to check the Address Match Code and the transmission direction request by master (Write/Read).\r
- (+++) At Listen mode end @ref HAL_I2C_ListenCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_ListenCpltCallback()\r
- (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Seq_Transmit_IT()\r
- or using @ref HAL_I2C_Slave_Seq_Transmit_DMA()\r
- (+++) At transmission end of current frame transfer, @ref HAL_I2C_SlaveTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_SlaveTxCpltCallback()\r
- (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Seq_Receive_IT()\r
- or using @ref HAL_I2C_Slave_Seq_Receive_DMA()\r
- (+++) At reception end of current frame transfer, @ref HAL_I2C_SlaveRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_SlaveRxCpltCallback()\r
- (++) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()\r
- (++) Discard a slave I2C process communication using @ref __HAL_I2C_GENERATE_NACK() macro.\r
- This action will inform Master to generate a Stop condition to discard the communication.\r
-\r
- *** Interrupt mode IO MEM operation ***\r
- =======================================\r
- [..]\r
- (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address using\r
- @ref HAL_I2C_Mem_Write_IT()\r
- (+) At Memory end of write transfer, @ref HAL_I2C_MemTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MemTxCpltCallback()\r
- (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address using\r
- @ref HAL_I2C_Mem_Read_IT()\r
- (+) At Memory end of read transfer, @ref HAL_I2C_MemRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MemRxCpltCallback()\r
- (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()\r
-\r
- *** DMA mode IO operation ***\r
- ==============================\r
- [..]\r
- (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using\r
- @ref HAL_I2C_Master_Transmit_DMA()\r
- (+) At transmission end of transfer, @ref HAL_I2C_MasterTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MasterTxCpltCallback()\r
- (+) Receive in master mode an amount of data in non-blocking mode (DMA) using\r
- @ref HAL_I2C_Master_Receive_DMA()\r
- (+) At reception end of transfer, @ref HAL_I2C_MasterRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MasterRxCpltCallback()\r
- (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using\r
- @ref HAL_I2C_Slave_Transmit_DMA()\r
- (+) At transmission end of transfer, @ref HAL_I2C_SlaveTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_SlaveTxCpltCallback()\r
- (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using\r
- @ref HAL_I2C_Slave_Receive_DMA()\r
- (+) At reception end of transfer, @ref HAL_I2C_SlaveRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_SlaveRxCpltCallback()\r
- (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()\r
- (+) Abort a master I2C process communication with Interrupt using @ref HAL_I2C_Master_Abort_IT()\r
- (+) End of abort process, @ref HAL_I2C_AbortCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_AbortCpltCallback()\r
- (+) Discard a slave I2C process communication using @ref __HAL_I2C_GENERATE_NACK() macro.\r
- This action will inform Master to generate a Stop condition to discard the communication.\r
-\r
- *** DMA mode IO MEM operation ***\r
- =================================\r
- [..]\r
- (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using\r
- @ref HAL_I2C_Mem_Write_DMA()\r
- (+) At Memory end of write transfer, @ref HAL_I2C_MemTxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MemTxCpltCallback()\r
- (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using\r
- @ref HAL_I2C_Mem_Read_DMA()\r
- (+) At Memory end of read transfer, @ref HAL_I2C_MemRxCpltCallback() is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_MemRxCpltCallback()\r
- (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can\r
- add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()\r
-\r
-\r
- *** I2C HAL driver macros list ***\r
- ==================================\r
- [..]\r
- Below the list of most used macros in I2C HAL driver.\r
-\r
- (+) @ref __HAL_I2C_ENABLE: Enable the I2C peripheral\r
- (+) @ref __HAL_I2C_DISABLE: Disable the I2C peripheral\r
- (+) @ref __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode\r
- (+) @ref __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not\r
- (+) @ref __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag\r
- (+) @ref __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt\r
- (+) @ref __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt\r
-\r
- *** Callback registration ***\r
- =============================================\r
-\r
- The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1\r
- allows the user to configure dynamically the driver callbacks.\r
- Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()\r
- to register an interrupt callback.\r
-\r
- Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:\r
- (+) MasterTxCpltCallback : callback for Master transmission end of transfer.\r
- (+) MasterRxCpltCallback : callback for Master reception end of transfer.\r
- (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer.\r
- (+) SlaveRxCpltCallback : callback for Slave reception end of transfer.\r
- (+) ListenCpltCallback : callback for end of listen mode.\r
- (+) MemTxCpltCallback : callback for Memory transmission end of transfer.\r
- (+) MemRxCpltCallback : callback for Memory reception end of transfer.\r
- (+) ErrorCallback : callback for error detection.\r
- (+) AbortCpltCallback : callback for abort completion process.\r
- (+) MspInitCallback : callback for Msp Init.\r
- (+) MspDeInitCallback : callback for Msp DeInit.\r
- This function takes as parameters the HAL peripheral handle, the Callback ID\r
- and a pointer to the user callback function.\r
-\r
- For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().\r
-\r
- Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default\r
- weak function.\r
- @ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,\r
- and the Callback ID.\r
- This function allows to reset following callbacks:\r
- (+) MasterTxCpltCallback : callback for Master transmission end of transfer.\r
- (+) MasterRxCpltCallback : callback for Master reception end of transfer.\r
- (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer.\r
- (+) SlaveRxCpltCallback : callback for Slave reception end of transfer.\r
- (+) ListenCpltCallback : callback for end of listen mode.\r
- (+) MemTxCpltCallback : callback for Memory transmission end of transfer.\r
- (+) MemRxCpltCallback : callback for Memory reception end of transfer.\r
- (+) ErrorCallback : callback for error detection.\r
- (+) AbortCpltCallback : callback for abort completion process.\r
- (+) MspInitCallback : callback for Msp Init.\r
- (+) MspDeInitCallback : callback for Msp DeInit.\r
-\r
- For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().\r
-\r
- By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET\r
- all callbacks are set to the corresponding weak functions:\r
- examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().\r
- Exception done for MspInit and MspDeInit functions that are\r
- reset to the legacy weak functions in the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit() only when\r
- these callbacks are null (not registered beforehand).\r
- If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()\r
- keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.\r
-\r
- Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.\r
- Exception done MspInit/MspDeInit functions that can be registered/unregistered\r
- in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,\r
- thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.\r
- Then, the user first registers the MspInit/MspDeInit user callbacks\r
- using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()\r
- or @ref HAL_I2C_Init() function.\r
-\r
- When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or\r
- not defined, the callback registration feature is not available and all callbacks\r
- are set to the corresponding weak functions.\r
-\r
- [..]\r
- (@) You can refer to the I2C HAL driver header file for more useful macros\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup I2C I2C\r
- * @brief I2C HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_I2C_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-\r
-/** @defgroup I2C_Private_Define I2C Private Define\r
- * @{\r
- */\r
-#define TIMING_CLEAR_MASK (0xF0FFFFFFU) /*!< I2C TIMING clear register Mask */\r
-#define I2C_TIMEOUT_ADDR (10000U) /*!< 10 s */\r
-#define I2C_TIMEOUT_BUSY (25U) /*!< 25 ms */\r
-#define I2C_TIMEOUT_DIR (25U) /*!< 25 ms */\r
-#define I2C_TIMEOUT_RXNE (25U) /*!< 25 ms */\r
-#define I2C_TIMEOUT_STOPF (25U) /*!< 25 ms */\r
-#define I2C_TIMEOUT_TC (25U) /*!< 25 ms */\r
-#define I2C_TIMEOUT_TCR (25U) /*!< 25 ms */\r
-#define I2C_TIMEOUT_TXIS (25U) /*!< 25 ms */\r
-#define I2C_TIMEOUT_FLAG (25U) /*!< 25 ms */\r
-\r
-#define MAX_NBYTE_SIZE 255U\r
-#define SlaveAddr_SHIFT 7U\r
-#define SlaveAddr_MSK 0x06U\r
-\r
-/* Private define for @ref PreviousState usage */\r
-#define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | (uint32_t)HAL_I2C_STATE_BUSY_RX) & (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY)))) /*!< Mask State define, keep only RX and TX bits */\r
-#define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE)) /*!< Default Value */\r
-#define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER)) /*!< Master Busy TX, combinaison of State LSB and Mode enum */\r
-#define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER)) /*!< Master Busy RX, combinaison of State LSB and Mode enum */\r
-#define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE)) /*!< Slave Busy TX, combinaison of State LSB and Mode enum */\r
-#define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE)) /*!< Slave Busy RX, combinaison of State LSB and Mode enum */\r
-#define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MEM)) /*!< Memory Busy TX, combinaison of State LSB and Mode enum */\r
-#define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MEM)) /*!< Memory Busy RX, combinaison of State LSB and Mode enum */\r
-\r
-\r
-/* Private define to centralize the enable/disable of Interrupts */\r
-#define I2C_XFER_TX_IT (0x00000001U)\r
-#define I2C_XFER_RX_IT (0x00000002U)\r
-#define I2C_XFER_LISTEN_IT (0x00000004U)\r
-\r
-#define I2C_XFER_ERROR_IT (0x00000011U)\r
-#define I2C_XFER_CPLT_IT (0x00000012U)\r
-#define I2C_XFER_RELOAD_IT (0x00000012U)\r
-\r
-/* Private define Sequential Transfer Options default/reset value */\r
-#define I2C_NO_OPTION_FRAME (0xFFFF0000U)\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-\r
-/** @defgroup I2C_Private_Functions I2C Private Functions\r
- * @{\r
- */\r
-/* Private functions to handle DMA transfer */\r
-static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma);\r
-static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma);\r
-static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma);\r
-static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma);\r
-static void I2C_DMAError(DMA_HandleTypeDef *hdma);\r
-static void I2C_DMAAbort(DMA_HandleTypeDef *hdma);\r
-\r
-/* Private functions to handle IT transfer */\r
-static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\r
-static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);\r
-static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);\r
-static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\r
-static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\r
-static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);\r
-static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);\r
-\r
-/* Private functions to handle IT transfer */\r
-static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);\r
-static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);\r
-\r
-/* Private functions for I2C transfer IRQ handler */\r
-static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);\r
-static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);\r
-static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);\r
-static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);\r
-\r
-/* Private functions to handle flags during polling transfer */\r
-static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart);\r
-static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);\r
-static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);\r
-static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);\r
-static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);\r
-\r
-/* Private functions to centralize the enable/disable of Interrupts */\r
-static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);\r
-static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);\r
-\r
-/* Private function to flush TXDR register */\r
-static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);\r
-\r
-/* Private function to handle start, restart or stop a transfer */\r
-static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request);\r
-\r
-/* Private function to Convert Specific options */\r
-static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @defgroup I2C_Exported_Functions I2C Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @brief Initialization and Configuration functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Initialization and de-initialization functions #####\r
- ===============================================================================\r
- [..] This subsection provides a set of functions allowing to initialize and\r
- deinitialize the I2Cx peripheral:\r
-\r
- (+) User must Implement HAL_I2C_MspInit() function in which he configures\r
- all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ).\r
-\r
- (+) Call the function HAL_I2C_Init() to configure the selected device with\r
- the selected configuration:\r
- (++) Clock Timing\r
- (++) Own Address 1\r
- (++) Addressing mode (Master, Slave)\r
- (++) Dual Addressing mode\r
- (++) Own Address 2\r
- (++) Own Address 2 Mask\r
- (++) General call mode\r
- (++) Nostretch mode\r
-\r
- (+) Call the function HAL_I2C_DeInit() to restore the default configuration\r
- of the selected I2Cx peripheral.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Initializes the I2C according to the specified parameters\r
- * in the I2C_InitTypeDef and initialize the associated handle.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Check the I2C handle allocation */\r
- if (hi2c == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\r
- assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1));\r
- assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode));\r
- assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode));\r
- assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2));\r
- assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks));\r
- assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode));\r
- assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- hi2c->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- /* Init the I2C Callback settings */\r
- hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */\r
- hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */\r
- hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */\r
- hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */\r
- hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */\r
- hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */\r
- hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */\r
- hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */\r
- hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */\r
- hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */\r
-\r
- if (hi2c->MspInitCallback == NULL)\r
- {\r
- hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */\r
- }\r
-\r
- /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */\r
- hi2c->MspInitCallback(hi2c);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */\r
- HAL_I2C_MspInit(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY;\r
-\r
- /* Disable the selected I2C peripheral */\r
- __HAL_I2C_DISABLE(hi2c);\r
-\r
- /*---------------------------- I2Cx TIMINGR Configuration ------------------*/\r
- /* Configure I2Cx: Frequency range */\r
- hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK;\r
-\r
- /*---------------------------- I2Cx OAR1 Configuration ---------------------*/\r
- /* Disable Own Address1 before set the Own Address1 configuration */\r
- hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN;\r
-\r
- /* Configure I2Cx: Own Address1 and ack own address1 mode */\r
- if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT)\r
- {\r
- hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1);\r
- }\r
- else /* I2C_ADDRESSINGMODE_10BIT */\r
- {\r
- hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1);\r
- }\r
-\r
- /*---------------------------- I2Cx CR2 Configuration ----------------------*/\r
- /* Configure I2Cx: Addressing Master mode */\r
- if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)\r
- {\r
- hi2c->Instance->CR2 = (I2C_CR2_ADD10);\r
- }\r
- /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */\r
- hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK);\r
-\r
- /*---------------------------- I2Cx OAR2 Configuration ---------------------*/\r
- /* Disable Own Address2 before set the Own Address2 configuration */\r
- hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE;\r
-\r
- /* Configure I2Cx: Dual mode and Own Address2 */\r
- hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | (hi2c->Init.OwnAddress2Masks << 8));\r
-\r
- /*---------------------------- I2Cx CR1 Configuration ----------------------*/\r
- /* Configure I2Cx: Generalcall and NoStretch mode */\r
- hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode);\r
-\r
- /* Enable the selected I2C peripheral */\r
- __HAL_I2C_ENABLE(hi2c);\r
-\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->PreviousState = I2C_STATE_NONE;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitialize the I2C peripheral.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Check the I2C handle allocation */\r
- if (hi2c == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY;\r
-\r
- /* Disable the I2C Peripheral Clock */\r
- __HAL_I2C_DISABLE(hi2c);\r
-\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- if (hi2c->MspDeInitCallback == NULL)\r
- {\r
- hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */\r
- }\r
-\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\r
- hi2c->MspDeInitCallback(hi2c);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\r
- HAL_I2C_MspDeInit(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
-\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
- hi2c->State = HAL_I2C_STATE_RESET;\r
- hi2c->PreviousState = I2C_STATE_NONE;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initialize the I2C MSP.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitialize the I2C MSP.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
-/**\r
- * @brief Register a User I2C Callback\r
- * To be used instead of the weak predefined callback\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param CallbackID ID of the callback to be registered\r
- * This parameter can be one of the following values:\r
- * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID\r
- * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID\r
- * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID\r
- * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID\r
- * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID\r
- * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID\r
- * @param pCallback pointer to the Callback function\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, pI2C_CallbackTypeDef pCallback)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- if (pCallback == NULL)\r
- {\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- return HAL_ERROR;\r
- }\r
- /* Process locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if (HAL_I2C_STATE_READY == hi2c->State)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :\r
- hi2c->MasterTxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :\r
- hi2c->MasterRxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :\r
- hi2c->SlaveTxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :\r
- hi2c->SlaveRxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_LISTEN_COMPLETE_CB_ID :\r
- hi2c->ListenCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_MEM_TX_COMPLETE_CB_ID :\r
- hi2c->MemTxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_MEM_RX_COMPLETE_CB_ID :\r
- hi2c->MemRxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_ERROR_CB_ID :\r
- hi2c->ErrorCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_ABORT_CB_ID :\r
- hi2c->AbortCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_MSPINIT_CB_ID :\r
- hi2c->MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_MSPDEINIT_CB_ID :\r
- hi2c->MspDeInitCallback = pCallback;\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else if (HAL_I2C_STATE_RESET == hi2c->State)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_I2C_MSPINIT_CB_ID :\r
- hi2c->MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_I2C_MSPDEINIT_CB_ID :\r
- hi2c->MspDeInitCallback = pCallback;\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(hi2c);\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Unregister an I2C Callback\r
- * I2C callback is redirected to the weak predefined callback\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param CallbackID ID of the callback to be unregistered\r
- * This parameter can be one of the following values:\r
- * This parameter can be one of the following values:\r
- * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID\r
- * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID\r
- * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID\r
- * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID\r
- * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID\r
- * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID\r
- * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Process locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if (HAL_I2C_STATE_READY == hi2c->State)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :\r
- hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :\r
- hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :\r
- hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :\r
- hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_LISTEN_COMPLETE_CB_ID :\r
- hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_MEM_TX_COMPLETE_CB_ID :\r
- hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_MEM_RX_COMPLETE_CB_ID :\r
- hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_ERROR_CB_ID :\r
- hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */\r
- break;\r
-\r
- case HAL_I2C_ABORT_CB_ID :\r
- hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */\r
- break;\r
-\r
- case HAL_I2C_MSPINIT_CB_ID :\r
- hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */\r
- break;\r
-\r
- case HAL_I2C_MSPDEINIT_CB_ID :\r
- hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else if (HAL_I2C_STATE_RESET == hi2c->State)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_I2C_MSPINIT_CB_ID :\r
- hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */\r
- break;\r
-\r
- case HAL_I2C_MSPDEINIT_CB_ID :\r
- hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(hi2c);\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Register the Slave Address Match I2C Callback\r
- * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pCallback pointer to the Address Match Callback function\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- if (pCallback == NULL)\r
- {\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- return HAL_ERROR;\r
- }\r
- /* Process locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if (HAL_I2C_STATE_READY == hi2c->State)\r
- {\r
- hi2c->AddrCallback = pCallback;\r
- }\r
- else\r
- {\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(hi2c);\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief UnRegister the Slave Address Match I2C Callback\r
- * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined callback\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Process locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if (HAL_I2C_STATE_READY == hi2c->State)\r
- {\r
- hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */\r
- }\r
- else\r
- {\r
- /* Update the error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(hi2c);\r
- return status;\r
-}\r
-\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions\r
- * @brief Data transfers functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### IO operation functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides a set of functions allowing to manage the I2C data\r
- transfers.\r
-\r
- (#) There are two modes of transfer:\r
- (++) Blocking mode : The communication is performed in the polling mode.\r
- The status of all data processing is returned by the same function\r
- after finishing transfer.\r
- (++) No-Blocking mode : The communication is performed using Interrupts\r
- or DMA. These functions return the status of the transfer startup.\r
- The end of the data processing will be indicated through the\r
- dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when\r
- using DMA mode.\r
-\r
- (#) Blocking mode functions are :\r
- (++) HAL_I2C_Master_Transmit()\r
- (++) HAL_I2C_Master_Receive()\r
- (++) HAL_I2C_Slave_Transmit()\r
- (++) HAL_I2C_Slave_Receive()\r
- (++) HAL_I2C_Mem_Write()\r
- (++) HAL_I2C_Mem_Read()\r
- (++) HAL_I2C_IsDeviceReady()\r
-\r
- (#) No-Blocking mode functions with Interrupt are :\r
- (++) HAL_I2C_Master_Transmit_IT()\r
- (++) HAL_I2C_Master_Receive_IT()\r
- (++) HAL_I2C_Slave_Transmit_IT()\r
- (++) HAL_I2C_Slave_Receive_IT()\r
- (++) HAL_I2C_Mem_Write_IT()\r
- (++) HAL_I2C_Mem_Read_IT()\r
- (++) HAL_I2C_Master_Seq_Transmit_IT()\r
- (++) HAL_I2C_Master_Seq_Receive_IT()\r
- (++) HAL_I2C_Slave_Seq_Transmit_IT()\r
- (++) HAL_I2C_Slave_Seq_Receive_IT()\r
- (++) HAL_I2C_EnableListen_IT()\r
- (++) HAL_I2C_DisableListen_IT()\r
- (++) HAL_I2C_Master_Abort_IT()\r
-\r
- (#) No-Blocking mode functions with DMA are :\r
- (++) HAL_I2C_Master_Transmit_DMA()\r
- (++) HAL_I2C_Master_Receive_DMA()\r
- (++) HAL_I2C_Slave_Transmit_DMA()\r
- (++) HAL_I2C_Slave_Receive_DMA()\r
- (++) HAL_I2C_Mem_Write_DMA()\r
- (++) HAL_I2C_Mem_Read_DMA()\r
- (++) HAL_I2C_Master_Seq_Transmit_DMA()\r
- (++) HAL_I2C_Master_Seq_Receive_DMA()\r
- (++) HAL_I2C_Slave_Seq_Transmit_DMA()\r
- (++) HAL_I2C_Slave_Seq_Receive_DMA()\r
-\r
- (#) A set of Transfer Complete Callbacks are provided in non Blocking mode:\r
- (++) HAL_I2C_MasterTxCpltCallback()\r
- (++) HAL_I2C_MasterRxCpltCallback()\r
- (++) HAL_I2C_SlaveTxCpltCallback()\r
- (++) HAL_I2C_SlaveRxCpltCallback()\r
- (++) HAL_I2C_MemTxCpltCallback()\r
- (++) HAL_I2C_MemRxCpltCallback()\r
- (++) HAL_I2C_AddrCallback()\r
- (++) HAL_I2C_ListenCpltCallback()\r
- (++) HAL_I2C_ErrorCallback()\r
- (++) HAL_I2C_AbortCpltCallback()\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Transmits in master mode an amount of data in blocking mode.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint32_t tickstart;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_WRITE);\r
- }\r
-\r
- while (hi2c->XferCount > 0U)\r
- {\r
- /* Wait until TXIS flag is set */\r
- if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Write data to TXDR */\r
- hi2c->Instance->TXDR = *hi2c->pBuffPtr;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferCount--;\r
- hi2c->XferSize--;\r
-\r
- if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\r
- {\r
- /* Wait until TCR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\r
- }\r
- }\r
- }\r
-\r
- /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\r
- /* Wait until STOPF flag is set */\r
- if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receives in master mode an amount of data in blocking mode.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint32_t tickstart;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_GENERATE_START_READ);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);\r
- }\r
-\r
- while (hi2c->XferCount > 0U)\r
- {\r
- /* Wait until RXNE flag is set */\r
- if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferSize--;\r
- hi2c->XferCount--;\r
-\r
- if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\r
- {\r
- /* Wait until TCR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\r
- }\r
- }\r
- }\r
-\r
- /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\r
- /* Wait until STOPF flag is set */\r
- if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Transmits in slave mode an amount of data in blocking mode.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint32_t tickstart;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Wait until ADDR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear ADDR flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
-\r
- /* If 10bit addressing mode is selected */\r
- if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)\r
- {\r
- /* Wait until ADDR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear ADDR flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
- }\r
-\r
- /* Wait until DIR flag is set Transmitter mode */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- while (hi2c->XferCount > 0U)\r
- {\r
- /* Wait until TXIS flag is set */\r
- if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Write data to TXDR */\r
- hi2c->Instance->TXDR = *hi2c->pBuffPtr;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferCount--;\r
- }\r
-\r
- /* Wait until STOP flag is set */\r
- if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
-\r
- if (hi2c->ErrorCode == HAL_I2C_ERROR_AF)\r
- {\r
- /* Normal use case for Transmitter mode */\r
- /* A NACK is generated to confirm the end of transfer */\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
-\r
- /* Clear STOP flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Wait until BUSY flag is reset */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive in slave mode an amount of data in blocking mode\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint32_t tickstart;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Wait until ADDR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear ADDR flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
-\r
- /* Wait until DIR flag is reset Receiver mode */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- while (hi2c->XferCount > 0U)\r
- {\r
- /* Wait until RXNE flag is set */\r
- if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
-\r
- /* Store Last receive data if any */\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET)\r
- {\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferCount--;\r
- }\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferCount--;\r
- }\r
-\r
- /* Wait until STOP flag is set */\r
- if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear STOP flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Wait until BUSY flag is reset */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t xfermode;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
-\r
- /* Enable ERR, TC, STOP, NACK, TXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t xfermode;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
-\r
- /* Enable ERR, TC, STOP, NACK, RXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\r
-{\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Slave_ISR_IT;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
-\r
- /* Enable ERR, TC, STOP, NACK, TXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\r
-{\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Slave_ISR_IT;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
-\r
- /* Enable ERR, TC, STOP, NACK, RXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Transmit in master mode an amount of data in non-blocking mode with DMA\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t xfermode;\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_DMA;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- if (hi2c->XferSize > 0U)\r
- {\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmatx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmatx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE);\r
-\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR and NACK interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- else\r
- {\r
- /* Update Transfer ISR function pointer */\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and generate START condition */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_WRITE);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR, TC, STOP, NACK, TXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive in master mode an amount of data in non-blocking mode with DMA\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t xfermode;\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_DMA;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- if (hi2c->XferSize > 0U)\r
- {\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmarx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Send Slave Address */\r
- /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\r
-\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR and NACK interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- else\r
- {\r
- /* Update Transfer ISR function pointer */\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to read and generate START condition */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR, TC, STOP, NACK, TXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\r
-{\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Slave_ISR_DMA;\r
-\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmatx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmatx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR, STOP, NACK, ADDR interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive in slave mode an amount of data in non-blocking mode with DMA\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)\r
-{\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Slave_ISR_DMA;\r
-\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmarx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR, STOP, NACK, ADDR interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-/**\r
- * @brief Write an amount of data in blocking mode to a specific memory address\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MEM;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Send Slave Address and Memory Address */\r
- if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\r
- }\r
-\r
- do\r
- {\r
- /* Wait until TXIS flag is set */\r
- if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Write data to TXDR */\r
- hi2c->Instance->TXDR = *hi2c->pBuffPtr;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferCount--;\r
- hi2c->XferSize--;\r
-\r
- if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\r
- {\r
- /* Wait until TCR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\r
- }\r
- }\r
-\r
- }\r
- while (hi2c->XferCount > 0U);\r
-\r
- /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\r
- /* Wait until STOPF flag is reset */\r
- if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Read an amount of data in blocking mode from a specific memory address\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MEM;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Send Slave Address and Memory Address */\r
- if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK)\r
- {\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_GENERATE_START_READ);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);\r
- }\r
-\r
- do\r
- {\r
- /* Wait until RXNE flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferSize--;\r
- hi2c->XferCount--;\r
-\r
- if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\r
- {\r
- /* Wait until TCR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\r
- }\r
- }\r
- }\r
- while (hi2c->XferCount > 0U);\r
-\r
- /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\r
- /* Wait until STOPF flag is reset */\r
- if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-/**\r
- * @brief Write an amount of data in non-blocking mode with Interrupt to a specific memory address\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t tickstart;\r
- uint32_t xfermode;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MEM;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- /* Send Slave Address and Memory Address */\r
- if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)\r
- {\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
-\r
- /* Enable ERR, TC, STOP, NACK, TXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Read an amount of data in non-blocking mode with Interrupt from a specific memory address\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t tickstart;\r
- uint32_t xfermode;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MEM;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- /* Send Slave Address and Memory Address */\r
- if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)\r
- {\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
-\r
- /* Enable ERR, TC, STOP, NACK, RXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-/**\r
- * @brief Write an amount of data in non-blocking mode with DMA to a specific memory address\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t tickstart;\r
- uint32_t xfermode;\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MEM;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_DMA;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- /* Send Slave Address and Memory Address */\r
- if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)\r
- {\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- return HAL_ERROR;\r
- }\r
-\r
-\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmatx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmatx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);\r
-\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR and NACK interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Reads an amount of data in non-blocking mode with DMA from a specific memory address.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be read\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)\r
-{\r
- uint32_t tickstart;\r
- uint32_t xfermode;\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Init tickstart for timeout management*/\r
- tickstart = HAL_GetTick();\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MEM;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferISR = I2C_Master_ISR_DMA;\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
-\r
- /* Send Slave Address and Memory Address */\r
- if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)\r
- {\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- return HAL_ERROR;\r
- }\r
-\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmarx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);\r
-\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR and NACK interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Checks if target device is ready for communication.\r
- * @note This function is used with Memory devices\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param Trials Number of trials\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)\r
-{\r
- uint32_t tickstart;\r
-\r
- __IO uint32_t I2C_Trials = 0UL;\r
-\r
- FlagStatus tmp1;\r
- FlagStatus tmp2;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)\r
- {\r
- return HAL_BUSY;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- do\r
- {\r
- /* Generate Start */\r
- hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress);\r
-\r
- /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */\r
- /* Wait until STOPF flag is set or a NACK flag is set*/\r
- tickstart = HAL_GetTick();\r
-\r
- tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF);\r
- tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- while ((tmp1 == RESET) && (tmp2 == RESET))\r
- {\r
- if (Timeout != HAL_MAX_DELAY)\r
- {\r
- if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
-\r
- tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF);\r
- tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF);\r
- }\r
-\r
- /* Check if the NACKF flag has not been set */\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET)\r
- {\r
- /* Wait until STOPF flag is reset */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Device is ready */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- /* Wait until STOPF flag is reset */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Clear STOP Flag, auto generated with autoend*/\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
- }\r
-\r
- /* Check if the maximum allowed number of trials has been reached */\r
- if (I2C_Trials == Trials)\r
- {\r
- /* Generate Stop */\r
- hi2c->Instance->CR2 |= I2C_CR2_STOP;\r
-\r
- /* Wait until STOPF flag is reset */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
- }\r
-\r
- /* Increment Trials */\r
- I2C_Trials++;\r
- }\r
- while (I2C_Trials < Trials);\r
-\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with Interrupt.\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- uint32_t xfermode;\r
- uint32_t xferrequest = I2C_GENERATE_START_WRITE;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = hi2c->XferOptions;\r
- }\r
-\r
- /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */\r
- /* Mean Previous state is same as current state */\r
- if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\r
- {\r
- xferrequest = I2C_NO_STARTSTOP;\r
- }\r
- else\r
- {\r
- /* Convert OTHER_xxx XferOptions if any */\r
- I2C_ConvertOtherXferOptions(hi2c);\r
-\r
- /* Update xfermode accordingly if no reload is necessary */\r
- if (hi2c->XferCount < MAX_NBYTE_SIZE)\r
- {\r
- xfermode = hi2c->XferOptions;\r
- }\r
- }\r
-\r
- /* Send Slave Address and set NBYTES to write */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA.\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- uint32_t xfermode;\r
- uint32_t xferrequest = I2C_GENERATE_START_WRITE;\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Master_ISR_DMA;\r
-\r
- /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = hi2c->XferOptions;\r
- }\r
-\r
- /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */\r
- /* Mean Previous state is same as current state */\r
- if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\r
- {\r
- xferrequest = I2C_NO_STARTSTOP;\r
- }\r
- else\r
- {\r
- /* Convert OTHER_xxx XferOptions if any */\r
- I2C_ConvertOtherXferOptions(hi2c);\r
-\r
- /* Update xfermode accordingly if no reload is necessary */\r
- if (hi2c->XferCount < MAX_NBYTE_SIZE)\r
- {\r
- xfermode = hi2c->XferOptions;\r
- }\r
- }\r
-\r
- if (hi2c->XferSize > 0U)\r
- {\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmatx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmatx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Send Slave Address and set NBYTES to write */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\r
-\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR and NACK interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- else\r
- {\r
- /* Update Transfer ISR function pointer */\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to write and generate START condition */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_WRITE);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR, TC, STOP, NACK, TXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with Interrupt\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- uint32_t xfermode;\r
- uint32_t xferrequest = I2C_GENERATE_START_READ;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = hi2c->XferOptions;\r
- }\r
-\r
- /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */\r
- /* Mean Previous state is same as current state */\r
- if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\r
- {\r
- xferrequest = I2C_NO_STARTSTOP;\r
- }\r
- else\r
- {\r
- /* Convert OTHER_xxx XferOptions if any */\r
- I2C_ConvertOtherXferOptions(hi2c);\r
-\r
- /* Update xfermode accordingly if no reload is necessary */\r
- if (hi2c->XferCount < MAX_NBYTE_SIZE)\r
- {\r
- xfermode = hi2c->XferOptions;\r
- }\r
- }\r
-\r
- /* Send Slave Address and set NBYTES to read */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- uint32_t xfermode;\r
- uint32_t xferrequest = I2C_GENERATE_START_READ;\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX;\r
- hi2c->Mode = HAL_I2C_MODE_MASTER;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Master_ISR_DMA;\r
-\r
- /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- xfermode = hi2c->XferOptions;\r
- }\r
-\r
- /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */\r
- /* Mean Previous state is same as current state */\r
- if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))\r
- {\r
- xferrequest = I2C_NO_STARTSTOP;\r
- }\r
- else\r
- {\r
- /* Convert OTHER_xxx XferOptions if any */\r
- I2C_ConvertOtherXferOptions(hi2c);\r
-\r
- /* Update xfermode accordingly if no reload is necessary */\r
- if (hi2c->XferCount < MAX_NBYTE_SIZE)\r
- {\r
- xfermode = hi2c->XferOptions;\r
- }\r
- }\r
-\r
- if (hi2c->XferSize > 0U)\r
- {\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmarx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Send Slave Address and set NBYTES to read */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);\r
-\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR and NACK interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- else\r
- {\r
- /* Update Transfer ISR function pointer */\r
- hi2c->XferISR = I2C_Master_ISR_IT;\r
-\r
- /* Send Slave Address */\r
- /* Set NBYTES to read and generate START condition */\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR, TC, STOP, NACK, TXI interrupt */\r
- /* possible to enable all of these */\r
- /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);\r
- }\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with Interrupt\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\r
- /* and then toggle the HAL slave RX state to TX state */\r
- if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\r
- {\r
- /* Disable associated Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\r
-\r
- /* Abort DMA Xfer if any */\r
- if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\r
-\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Abort DMA RX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\r
- {\r
- /* Call Directly XferAbortCallback function in case of error */\r
- hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\r
- }\r
- }\r
- }\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Slave_ISR_IT;\r
-\r
- if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE)\r
- {\r
- /* Clear ADDR flag after prepare the transfer parameters */\r
- /* This action will generate an acknowledge to the Master */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* REnable ADDR interrupt */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with DMA\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);\r
-\r
- /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\r
- /* and then toggle the HAL slave RX state to TX state */\r
- if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\r
- {\r
- /* Disable associated Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\r
-\r
- if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\r
- {\r
- /* Abort DMA Xfer if any */\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\r
-\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Abort DMA RX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\r
- {\r
- /* Call Directly XferAbortCallback function in case of error */\r
- hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\r
- }\r
- }\r
- }\r
- }\r
- else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\r
- {\r
- if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\r
-\r
- /* Abort DMA Xfer if any */\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Abort DMA TX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\r
- {\r
- /* Call Directly XferAbortCallback function in case of error */\r
- hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Slave_ISR_DMA;\r
-\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmatx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmatx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmatx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Reset XferSize */\r
- hi2c->XferSize = 0;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE)\r
- {\r
- /* Clear ADDR flag after prepare the transfer parameters */\r
- /* This action will generate an acknowledge to the Master */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* Enable ERR, STOP, NACK, ADDR interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with Interrupt\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\r
- /* and then toggle the HAL slave TX state to RX state */\r
- if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\r
- {\r
- /* Disable associated Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\r
-\r
- /* Abort DMA Xfer if any */\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Abort DMA TX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\r
- {\r
- /* Call Directly XferAbortCallback function in case of error */\r
- hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\r
- }\r
- }\r
- }\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Slave_ISR_IT;\r
-\r
- if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT)\r
- {\r
- /* Clear ADDR flag after prepare the transfer parameters */\r
- /* This action will generate an acknowledge to the Master */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* REnable ADDR interrupt */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with DMA\r
- * @note This interface allow to manage repeated start condition when a direction change during transfer\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param pData Pointer to data buffer\r
- * @param Size Amount of data to be sent\r
- * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)\r
-{\r
- HAL_StatusTypeDef dmaxferstatus;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));\r
-\r
- if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Disable Interrupts, to prevent preemption during treatment in case of multicall */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */\r
- /* and then toggle the HAL slave TX state to RX state */\r
- if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\r
- {\r
- /* Disable associated Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\r
- {\r
- /* Abort DMA Xfer if any */\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\r
-\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Abort DMA TX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\r
- {\r
- /* Call Directly XferAbortCallback function in case of error */\r
- hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\r
- }\r
- }\r
- }\r
- }\r
- else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\r
- {\r
- if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\r
-\r
- /* Abort DMA Xfer if any */\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Abort DMA RX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\r
- {\r
- /* Call Directly XferAbortCallback function in case of error */\r
- hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_SLAVE;\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
-\r
- /* Enable Address Acknowledge */\r
- hi2c->Instance->CR2 &= ~I2C_CR2_NACK;\r
-\r
- /* Prepare transfer parameters */\r
- hi2c->pBuffPtr = pData;\r
- hi2c->XferCount = Size;\r
- hi2c->XferSize = hi2c->XferCount;\r
- hi2c->XferOptions = XferOptions;\r
- hi2c->XferISR = I2C_Slave_ISR_DMA;\r
-\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA transfer complete callback */\r
- hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt;\r
-\r
- /* Set the DMA error callback */\r
- hi2c->hdmarx->XferErrorCallback = I2C_DMAError;\r
-\r
- /* Set the unused DMA callbacks to NULL */\r
- hi2c->hdmarx->XferHalfCpltCallback = NULL;\r
- hi2c->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA stream */\r
- dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (dmaxferstatus == HAL_OK)\r
- {\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Reset XferSize */\r
- hi2c->XferSize = 0;\r
- }\r
- else\r
- {\r
- /* Update I2C state */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Update I2C error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
-\r
- if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT)\r
- {\r
- /* Clear ADDR flag after prepare the transfer parameters */\r
- /* This action will generate an acknowledge to the Master */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- /* REnable ADDR interrupt */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);\r
-\r
- /* Enable DMA Request */\r
- hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Enable the Address listen mode with Interrupt.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)\r
-{\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->XferISR = I2C_Slave_ISR_IT;\r
-\r
- /* Enable the Address Match interrupt */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Disable the Address listen mode with Interrupt.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Declaration of tmp to prevent undefined behavior of volatile usage */\r
- uint32_t tmp;\r
-\r
- /* Disable Address listen mode only if a transfer is not ongoing */\r
- if (hi2c->State == HAL_I2C_STATE_LISTEN)\r
- {\r
- tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK;\r
- hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode);\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Disable the Address Match interrupt */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Abort a master I2C IT or DMA process communication with Interrupt.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)\r
-{\r
- if (hi2c->Mode == HAL_I2C_MODE_MASTER)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- /* Disable Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- /* Set State at HAL_I2C_STATE_ABORT */\r
- hi2c->State = HAL_I2C_STATE_ABORT;\r
-\r
- /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */\r
- /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfer */\r
- I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Note : The I2C interrupts must be enabled after unlocking current process\r
- to avoid the risk of I2C interrupt handle execution before current\r
- process unlock */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- /* Wrong usage of abort function */\r
- /* This function should be used only in case of abort monitored by master device */\r
- return HAL_ERROR;\r
- }\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief This function handles I2C event interrupt request.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Get current IT Flags and IT sources value */\r
- uint32_t itflags = READ_REG(hi2c->Instance->ISR);\r
- uint32_t itsources = READ_REG(hi2c->Instance->CR1);\r
-\r
- /* I2C events treatment -------------------------------------*/\r
- if (hi2c->XferISR != NULL)\r
- {\r
- hi2c->XferISR(hi2c, itflags, itsources);\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles I2C error interrupt request.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)\r
-{\r
- uint32_t itflags = READ_REG(hi2c->Instance->ISR);\r
- uint32_t itsources = READ_REG(hi2c->Instance->CR1);\r
- uint32_t tmperror;\r
-\r
- /* I2C Bus error interrupt occurred ------------------------------------*/\r
- if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_BERR;\r
-\r
- /* Clear BERR flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR);\r
- }\r
-\r
- /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/\r
- if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_OVR;\r
-\r
- /* Clear OVR flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR);\r
- }\r
-\r
- /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/\r
- if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO;\r
-\r
- /* Clear ARLO flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO);\r
- }\r
-\r
- /* Store current volatile hi2c->ErrorCode, misra rule */\r
- tmperror = hi2c->ErrorCode;\r
-\r
- /* Call the Error Callback in case of Error detected */\r
- if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_NONE)\r
- {\r
- I2C_ITError(hi2c, tmperror);\r
- }\r
-}\r
-\r
-/**\r
- * @brief Master Tx Transfer completed callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_MasterTxCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Master Rx Transfer completed callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_MasterRxCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/** @brief Slave Tx Transfer completed callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Slave Rx Transfer completed callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Slave Address Match callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFERDIRECTION\r
- * @param AddrMatchCode Address Match Code\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
- UNUSED(TransferDirection);\r
- UNUSED(AddrMatchCode);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_AddrCallback() could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Listen Complete callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_ListenCpltCallback() could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Memory Tx Transfer completed callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_MemTxCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Memory Rx Transfer completed callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_MemRxCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief I2C error callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_ErrorCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief I2C abort callback.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval None\r
- */\r
-__weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(hi2c);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_I2C_AbortCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions\r
- * @brief Peripheral State, Mode and Error functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Peripheral State, Mode and Error functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection permit to get in run-time the status of the peripheral\r
- and the data flow.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Return the I2C handle state.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @retval HAL state\r
- */\r
-HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Return I2C handle state */\r
- return hi2c->State;\r
-}\r
-\r
-/**\r
- * @brief Returns the I2C Master, Slave, Memory or no mode.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for I2C module\r
- * @retval HAL mode\r
- */\r
-HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c)\r
-{\r
- return hi2c->Mode;\r
-}\r
-\r
-/**\r
-* @brief Return the I2C error code.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
-* @retval I2C Error Code\r
-*/\r
-uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c)\r
-{\r
- return hi2c->ErrorCode;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup I2C_Private_Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @param ITSources Interrupt sources enabled.\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)\r
-{\r
- uint16_t devaddress;\r
- uint32_t tmpITFlags = ITFlags;\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\r
- {\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Set corresponding Error Code */\r
- /* No need to generate STOP, it is automatically done */\r
- /* Error callback will be send during stop flag treatment */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
-\r
- /* Flush TX register */\r
- I2C_Flush_TXDR(hi2c);\r
- }\r
- else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))\r
- {\r
- /* Remove RXNE flag on temporary variable as read done */\r
- tmpITFlags &= ~I2C_FLAG_RXNE;\r
-\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferSize--;\r
- hi2c->XferCount--;\r
- }\r
- else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))\r
- {\r
- /* Write data to TXDR */\r
- hi2c->Instance->TXDR = *hi2c->pBuffPtr;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferSize--;\r
- hi2c->XferCount--;\r
- }\r
- else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\r
- {\r
- if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))\r
- {\r
- devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD);\r
-\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)\r
- {\r
- I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, hi2c->XferOptions, I2C_NO_STARTSTOP);\r
- }\r
- else\r
- {\r
- I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Call TxCpltCallback() if no stop mode is set */\r
- if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\r
- {\r
- /* Call I2C Master Sequential complete process */\r
- I2C_ITMasterSeqCplt(hi2c);\r
- }\r
- else\r
- {\r
- /* Wrong size Status regarding TCR flag event */\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\r
- }\r
- }\r
- }\r
- else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\r
- {\r
- if (hi2c->XferCount == 0U)\r
- {\r
- if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\r
- {\r
- /* Generate a stop condition in case of no transfer option */\r
- if (hi2c->XferOptions == I2C_NO_OPTION_FRAME)\r
- {\r
- /* Generate Stop */\r
- hi2c->Instance->CR2 |= I2C_CR2_STOP;\r
- }\r
- else\r
- {\r
- /* Call I2C Master Sequential complete process */\r
- I2C_ITMasterSeqCplt(hi2c);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Wrong size Status regarding TC flag event */\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\r
- }\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-\r
- if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\r
- {\r
- /* Call I2C Master complete process */\r
- I2C_ITMasterCplt(hi2c, tmpITFlags);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @param ITSources Interrupt sources enabled.\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)\r
-{\r
- uint32_t tmpoptions = hi2c->XferOptions;\r
- uint32_t tmpITFlags = ITFlags;\r
-\r
- /* Process locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\r
- {\r
- /* Check that I2C transfer finished */\r
- /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */\r
- /* Mean XferCount == 0*/\r
- /* So clear Flag NACKF only */\r
- if (hi2c->XferCount == 0U)\r
- {\r
- if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */\r
- {\r
- /* Call I2C Listen complete process */\r
- I2C_ITListenCplt(hi2c, tmpITFlags);\r
- }\r
- else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME))\r
- {\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Flush TX register */\r
- I2C_Flush_TXDR(hi2c);\r
-\r
- /* Last Byte is Transmitted */\r
- /* Call I2C Slave Sequential complete process */\r
- I2C_ITSlaveSeqCplt(hi2c);\r
- }\r
- else\r
- {\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
- }\r
- }\r
- else\r
- {\r
- /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Set ErrorCode corresponding to a Non-Acknowledge */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
-\r
- if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME))\r
- {\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, hi2c->ErrorCode);\r
- }\r
- }\r
- }\r
- else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))\r
- {\r
- if (hi2c->XferCount > 0U)\r
- {\r
- /* Remove RXNE flag on temporary variable as read done */\r
- tmpITFlags &= ~I2C_FLAG_RXNE;\r
-\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferSize--;\r
- hi2c->XferCount--;\r
- }\r
-\r
- if ((hi2c->XferCount == 0U) && \\r
- (tmpoptions != I2C_NO_OPTION_FRAME))\r
- {\r
- /* Call I2C Slave Sequential complete process */\r
- I2C_ITSlaveSeqCplt(hi2c);\r
- }\r
- }\r
- else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))\r
- {\r
- I2C_ITAddrCplt(hi2c, tmpITFlags);\r
- }\r
- else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))\r
- {\r
- /* Write data to TXDR only if XferCount not reach "0" */\r
- /* A TXIS flag can be set, during STOP treatment */\r
- /* Check if all Datas have already been sent */\r
- /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */\r
- if (hi2c->XferCount > 0U)\r
- {\r
- /* Write data to TXDR */\r
- hi2c->Instance->TXDR = *hi2c->pBuffPtr;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- hi2c->XferCount--;\r
- hi2c->XferSize--;\r
- }\r
- else\r
- {\r
- if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME))\r
- {\r
- /* Last Byte is Transmitted */\r
- /* Call I2C Slave Sequential complete process */\r
- I2C_ITSlaveSeqCplt(hi2c);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-\r
- /* Check if STOPF is set */\r
- if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\r
- {\r
- /* Call I2C Slave complete process */\r
- I2C_ITSlaveCplt(hi2c, tmpITFlags);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @param ITSources Interrupt sources enabled.\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)\r
-{\r
- uint16_t devaddress;\r
- uint32_t xfermode;\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\r
- {\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Set corresponding Error Code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
-\r
- /* No need to generate STOP, it is automatically done */\r
- /* But enable STOP interrupt, to treat it */\r
- /* Error callback will be send during stop flag treatment */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\r
-\r
- /* Flush TX register */\r
- I2C_Flush_TXDR(hi2c);\r
- }\r
- else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\r
- {\r
- /* Disable TC interrupt */\r
- __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI);\r
-\r
- if (hi2c->XferCount != 0U)\r
- {\r
- /* Recover Slave address */\r
- devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD);\r
-\r
- /* Prepare the new XferSize to transfer */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- xfermode = I2C_RELOAD_MODE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)\r
- {\r
- xfermode = hi2c->XferOptions;\r
- }\r
- else\r
- {\r
- xfermode = I2C_AUTOEND_MODE;\r
- }\r
- }\r
-\r
- /* Set the new XferSize in Nbytes register */\r
- I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);\r
-\r
- /* Update XferCount value */\r
- hi2c->XferCount -= hi2c->XferSize;\r
-\r
- /* Enable DMA Request */\r
- if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\r
- {\r
- hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;\r
- }\r
- else\r
- {\r
- hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;\r
- }\r
- }\r
- else\r
- {\r
- /* Call TxCpltCallback() if no stop mode is set */\r
- if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\r
- {\r
- /* Call I2C Master Sequential complete process */\r
- I2C_ITMasterSeqCplt(hi2c);\r
- }\r
- else\r
- {\r
- /* Wrong size Status regarding TCR flag event */\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\r
- }\r
- }\r
- }\r
- else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))\r
- {\r
- if (hi2c->XferCount == 0U)\r
- {\r
- if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)\r
- {\r
- /* Generate a stop condition in case of no transfer option */\r
- if (hi2c->XferOptions == I2C_NO_OPTION_FRAME)\r
- {\r
- /* Generate Stop */\r
- hi2c->Instance->CR2 |= I2C_CR2_STOP;\r
- }\r
- else\r
- {\r
- /* Call I2C Master Sequential complete process */\r
- I2C_ITMasterSeqCplt(hi2c);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Wrong size Status regarding TC flag event */\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);\r
- }\r
- }\r
- else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\r
- {\r
- /* Call I2C Master complete process */\r
- I2C_ITMasterCplt(hi2c, ITFlags);\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @param ITSources Interrupt sources enabled.\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)\r
-{\r
- uint32_t tmpoptions = hi2c->XferOptions;\r
- uint32_t treatdmanack = 0U;\r
-\r
- /* Process locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))\r
- {\r
- /* Check that I2C transfer finished */\r
- /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */\r
- /* Mean XferCount == 0 */\r
- /* So clear Flag NACKF only */\r
- if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) ||\r
- (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET))\r
- {\r
- /* Split check of hdmarx, for MISRA compliance */\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)\r
- {\r
- if (__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U)\r
- {\r
- treatdmanack = 1U;\r
- }\r
- }\r
- }\r
-\r
- /* Split check of hdmatx, for MISRA compliance */\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET)\r
- {\r
- if (__HAL_DMA_GET_COUNTER(hi2c->hdmatx) == 0U)\r
- {\r
- treatdmanack = 1U;\r
- }\r
- }\r
- }\r
-\r
- if (treatdmanack == 1U)\r
- {\r
- if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */\r
- {\r
- /* Call I2C Listen complete process */\r
- I2C_ITListenCplt(hi2c, ITFlags);\r
- }\r
- else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME))\r
- {\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Flush TX register */\r
- I2C_Flush_TXDR(hi2c);\r
-\r
- /* Last Byte is Transmitted */\r
- /* Call I2C Slave Sequential complete process */\r
- I2C_ITSlaveSeqCplt(hi2c);\r
- }\r
- else\r
- {\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
- }\r
- }\r
- else\r
- {\r
- /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Set ErrorCode corresponding to a Non-Acknowledge */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
-\r
- if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME))\r
- {\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, hi2c->ErrorCode);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Only Clear NACK Flag, no DMA treatment is pending */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
- }\r
- }\r
- else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))\r
- {\r
- I2C_ITAddrCplt(hi2c, ITFlags);\r
- }\r
- else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))\r
- {\r
- /* Call I2C Slave complete process */\r
- I2C_ITSlaveCplt(hi2c, ITFlags);\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Master sends target device address followed by internal memory address for write request.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param Timeout Timeout duration\r
- * @param Tickstart Tick start value\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)\r
-{\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE);\r
-\r
- /* Wait until TXIS flag is set */\r
- if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* If Memory address size is 8Bit */\r
- if (MemAddSize == I2C_MEMADD_SIZE_8BIT)\r
- {\r
- /* Send Memory Address */\r
- hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\r
- }\r
- /* If Memory address size is 16Bit */\r
- else\r
- {\r
- /* Send MSB of Memory Address */\r
- hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);\r
-\r
- /* Wait until TXIS flag is set */\r
- if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Send LSB of Memory Address */\r
- hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\r
- }\r
-\r
- /* Wait until TCR flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Master sends target device address followed by internal memory address for read request.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param DevAddress Target device address: The device 7 bits address value\r
- * in datasheet must be shifted to the left before calling the interface\r
- * @param MemAddress Internal memory address\r
- * @param MemAddSize Size of internal memory address\r
- * @param Timeout Timeout duration\r
- * @param Tickstart Tick start value\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)\r
-{\r
- I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE);\r
-\r
- /* Wait until TXIS flag is set */\r
- if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* If Memory address size is 8Bit */\r
- if (MemAddSize == I2C_MEMADD_SIZE_8BIT)\r
- {\r
- /* Send Memory Address */\r
- hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\r
- }\r
- /* If Memory address size is 16Bit */\r
- else\r
- {\r
- /* Send MSB of Memory Address */\r
- hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);\r
-\r
- /* Wait until TXIS flag is set */\r
- if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Send LSB of Memory Address */\r
- hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);\r
- }\r
-\r
- /* Wait until TC flag is set */\r
- if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief I2C Address complete process callback.\r
- * @param hi2c I2C handle.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @retval None\r
- */\r
-static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\r
-{\r
- uint8_t transferdirection;\r
- uint16_t slaveaddrcode;\r
- uint16_t ownadd1code;\r
- uint16_t ownadd2code;\r
-\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(ITFlags);\r
-\r
- /* In case of Listen state, need to inform upper layer of address match code event */\r
- if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)\r
- {\r
- transferdirection = I2C_GET_DIR(hi2c);\r
- slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c);\r
- ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c);\r
- ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c);\r
-\r
- /* If 10bits addressing mode is selected */\r
- if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)\r
- {\r
- if ((slaveaddrcode & SlaveAddr_MSK) == ((ownadd1code >> SlaveAddr_SHIFT) & SlaveAddr_MSK))\r
- {\r
- slaveaddrcode = ownadd1code;\r
- hi2c->AddrEventCount++;\r
- if (hi2c->AddrEventCount == 2U)\r
- {\r
- /* Reset Address Event counter */\r
- hi2c->AddrEventCount = 0U;\r
-\r
- /* Clear ADDR flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call Slave Addr callback */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);\r
-#else\r
- HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- }\r
- else\r
- {\r
- slaveaddrcode = ownadd2code;\r
-\r
- /* Disable ADDR Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call Slave Addr callback */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);\r
-#else\r
- HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- }\r
- /* else 7 bits addressing mode is selected */\r
- else\r
- {\r
- /* Disable ADDR Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call Slave Addr callback */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);\r
-#else\r
- HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- }\r
- /* Else clear address flag only */\r
- else\r
- {\r
- /* Clear ADDR flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- }\r
-}\r
-\r
-/**\r
- * @brief I2C Master sequential complete process.\r
- * @param hi2c I2C handle.\r
- * @retval None\r
- */\r
-static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Reset I2C handle mode */\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* No Generate Stop, to permit restart mode */\r
- /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */\r
- if (hi2c->State == HAL_I2C_STATE_BUSY_TX)\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Disable Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->MasterTxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_MasterTxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- /* hi2c->State == HAL_I2C_STATE_BUSY_RX */\r
- else\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Disable Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->MasterRxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_MasterRxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
-}\r
-\r
-/**\r
- * @brief I2C Slave sequential complete process.\r
- * @param hi2c I2C handle.\r
- * @retval None\r
- */\r
-static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* Reset I2C handle mode */\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)\r
- {\r
- /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX;\r
-\r
- /* Disable Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->SlaveTxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_SlaveTxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
-\r
- else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)\r
- {\r
- /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;\r
-\r
- /* Disable Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->SlaveRxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_SlaveRxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-}\r
-\r
-/**\r
- * @brief I2C Master complete process.\r
- * @param hi2c I2C handle.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @retval None\r
- */\r
-static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\r
-{\r
- uint32_t tmperror;\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- /* Reset handle parameters */\r
- hi2c->PreviousState = I2C_STATE_NONE;\r
- hi2c->XferISR = NULL;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
-\r
- if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET)\r
- {\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Set acknowledge error code */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
- }\r
-\r
- /* Flush TX register */\r
- I2C_Flush_TXDR(hi2c);\r
-\r
- /* Disable Interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_RX_IT);\r
-\r
- /* Store current volatile hi2c->ErrorCode, misra rule */\r
- tmperror = hi2c->ErrorCode;\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE))\r
- {\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, hi2c->ErrorCode);\r
- }\r
- /* hi2c->State == HAL_I2C_STATE_BUSY_TX */\r
- else if (hi2c->State == HAL_I2C_STATE_BUSY_TX)\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- if (hi2c->Mode == HAL_I2C_MODE_MEM)\r
- {\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->MemTxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_MemTxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- else\r
- {\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->MasterTxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_MasterTxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- }\r
- /* hi2c->State == HAL_I2C_STATE_BUSY_RX */\r
- else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- if (hi2c->Mode == HAL_I2C_MODE_MEM)\r
- {\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->MemRxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_MemRxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- else\r
- {\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->MasterRxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_MasterRxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-}\r
-\r
-/**\r
- * @brief I2C Slave complete process.\r
- * @param hi2c I2C handle.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @retval None\r
- */\r
-static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\r
-{\r
- uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1);\r
- uint32_t tmpITFlags = ITFlags;\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Disable all interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT);\r
-\r
- /* Disable Address Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- /* Flush TX register */\r
- I2C_Flush_TXDR(hi2c);\r
-\r
- /* If a DMA is ongoing, Update handle size context */\r
- if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET)\r
- {\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- hi2c->XferCount = (uint16_t)__HAL_DMA_GET_COUNTER(hi2c->hdmatx);\r
- }\r
- }\r
- else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET)\r
- {\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- hi2c->XferCount = (uint16_t)__HAL_DMA_GET_COUNTER(hi2c->hdmarx);\r
- }\r
- }\r
- else\r
- {\r
- /* Do nothing */\r
- }\r
-\r
- /* Store Last receive data if any */\r
- if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)\r
- {\r
- /* Remove RXNE flag on temporary variable as read done */\r
- tmpITFlags &= ~I2C_FLAG_RXNE;\r
-\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- if ((hi2c->XferSize > 0U))\r
- {\r
- hi2c->XferSize--;\r
- hi2c->XferCount--;\r
- }\r
- }\r
-\r
- /* All data are not transferred, so set error code accordingly */\r
- if (hi2c->XferCount != 0U)\r
- {\r
- /* Set ErrorCode corresponding to a Non-Acknowledge */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
- }\r
-\r
- hi2c->PreviousState = I2C_STATE_NONE;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
- hi2c->XferISR = NULL;\r
-\r
- if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE)\r
- {\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, hi2c->ErrorCode);\r
-\r
- /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */\r
- if (hi2c->State == HAL_I2C_STATE_LISTEN)\r
- {\r
- /* Call I2C Listen complete process */\r
- I2C_ITListenCplt(hi2c, tmpITFlags);\r
- }\r
- }\r
- else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)\r
- {\r
- /* Call the Sequential Complete callback, to inform upper layer of the end of Tranfer */\r
- I2C_ITSlaveSeqCplt(hi2c);\r
-\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->ListenCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_ListenCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->SlaveRxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_SlaveRxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- else\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->SlaveTxCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_SlaveTxCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
-}\r
-\r
-/**\r
- * @brief I2C Listen complete process.\r
- * @param hi2c I2C handle.\r
- * @param ITFlags Interrupt flags to handle.\r
- * @retval None\r
- */\r
-static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)\r
-{\r
- /* Reset handle parameters */\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->PreviousState = I2C_STATE_NONE;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
- hi2c->XferISR = NULL;\r
-\r
- /* Store Last receive data if any */\r
- if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET)\r
- {\r
- /* Read data from RXDR */\r
- *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;\r
-\r
- /* Increment Buffer pointer */\r
- hi2c->pBuffPtr++;\r
-\r
- if ((hi2c->XferSize > 0U))\r
- {\r
- hi2c->XferSize--;\r
- hi2c->XferCount--;\r
-\r
- /* Set ErrorCode corresponding to a Non-Acknowledge */\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
- }\r
- }\r
-\r
- /* Disable all Interrupts*/\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);\r
-\r
- /* Clear NACK Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->ListenCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_ListenCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief I2C interrupts error process.\r
- * @param hi2c I2C handle.\r
- * @param ErrorCode Error code to handle.\r
- * @retval None\r
- */\r
-static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode)\r
-{\r
- HAL_I2C_StateTypeDef tmpstate = hi2c->State;\r
-\r
- /* Reset handle parameters */\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
- hi2c->XferOptions = I2C_NO_OPTION_FRAME;\r
- hi2c->XferCount = 0U;\r
-\r
- /* Set new error code */\r
- hi2c->ErrorCode |= ErrorCode;\r
-\r
- /* Disable Interrupts */\r
- if ((tmpstate == HAL_I2C_STATE_LISTEN) ||\r
- (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) ||\r
- (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN))\r
- {\r
- /* Disable all interrupts, except interrupts related to LISTEN state */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT);\r
-\r
- /* keep HAL_I2C_STATE_LISTEN if set */\r
- hi2c->State = HAL_I2C_STATE_LISTEN;\r
- hi2c->PreviousState = I2C_STATE_NONE;\r
- hi2c->XferISR = I2C_Slave_ISR_IT;\r
- }\r
- else\r
- {\r
- /* Disable all interrupts */\r
- I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);\r
-\r
- /* If state is an abort treatment on goind, don't change state */\r
- /* This change will be do later */\r
- if (hi2c->State != HAL_I2C_STATE_ABORT)\r
- {\r
- /* Set HAL_I2C_STATE_READY */\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- }\r
- hi2c->PreviousState = I2C_STATE_NONE;\r
- hi2c->XferISR = NULL;\r
- }\r
-\r
- /* Abort DMA TX transfer if any */\r
- if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\r
-\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Abort DMA TX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)\r
- {\r
- /* Call Directly XferAbortCallback function in case of error */\r
- hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);\r
- }\r
- }\r
- }\r
- /* Abort DMA RX transfer if any */\r
- else if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)\r
- {\r
- hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\r
-\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- /* Set the I2C DMA Abort callback :\r
- will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */\r
- hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Abort DMA RX */\r
- if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)\r
- {\r
- /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */\r
- hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);\r
- }\r
- }\r
- }\r
- else if (hi2c->State == HAL_I2C_STATE_ABORT)\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->AbortCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_AbortCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- else\r
- {\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->ErrorCallback(hi2c);\r
-#else\r
- HAL_I2C_ErrorCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
-}\r
-\r
-/**\r
- * @brief I2C Tx data register flush process.\r
- * @param hi2c I2C handle.\r
- * @retval None\r
- */\r
-static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* If a pending TXIS flag is set */\r
- /* Write a dummy data in TXDR to clear it */\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET)\r
- {\r
- hi2c->Instance->TXDR = 0x00U;\r
- }\r
-\r
- /* Flush TX register if not empty */\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET)\r
- {\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE);\r
- }\r
-}\r
-\r
-/**\r
- * @brief DMA I2C master transmit process complete callback.\r
- * @param hdma DMA handle\r
- * @retval None\r
- */\r
-static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */\r
-\r
- /* Disable DMA Request */\r
- hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\r
-\r
- /* If last transfer, enable STOP interrupt */\r
- if (hi2c->XferCount == 0U)\r
- {\r
- /* Enable STOP interrupt */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\r
- }\r
- /* else prepare a new DMA transfer and enable TCReload interrupt */\r
- else\r
- {\r
- /* Update Buffer pointer */\r
- hi2c->pBuffPtr += hi2c->XferSize;\r
-\r
- /* Set the XferSize to transfer */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- }\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize) != HAL_OK)\r
- {\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);\r
- }\r
- else\r
- {\r
- /* Enable TC interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @brief DMA I2C slave transmit process complete callback.\r
- * @param hdma DMA handle\r
- * @retval None\r
- */\r
-static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */\r
- uint32_t tmpoptions = hi2c->XferOptions;\r
-\r
- if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME))\r
- {\r
- /* Disable DMA Request */\r
- hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;\r
-\r
- /* Last Byte is Transmitted */\r
- /* Call I2C Slave Sequential complete process */\r
- I2C_ITSlaveSeqCplt(hi2c);\r
- }\r
- else\r
- {\r
- /* No specific action, Master fully manage the generation of STOP condition */\r
- /* Mean that this generation can arrive at any time, at the end or during DMA process */\r
- /* So STOP condition should be manage through Interrupt treatment */\r
- }\r
-}\r
-\r
-/**\r
- * @brief DMA I2C master receive process complete callback.\r
- * @param hdma DMA handle\r
- * @retval None\r
- */\r
-static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */\r
-\r
- /* Disable DMA Request */\r
- hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\r
-\r
- /* If last transfer, enable STOP interrupt */\r
- if (hi2c->XferCount == 0U)\r
- {\r
- /* Enable STOP interrupt */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);\r
- }\r
- /* else prepare a new DMA transfer and enable TCReload interrupt */\r
- else\r
- {\r
- /* Update Buffer pointer */\r
- hi2c->pBuffPtr += hi2c->XferSize;\r
-\r
- /* Set the XferSize to transfer */\r
- if (hi2c->XferCount > MAX_NBYTE_SIZE)\r
- {\r
- hi2c->XferSize = MAX_NBYTE_SIZE;\r
- }\r
- else\r
- {\r
- hi2c->XferSize = hi2c->XferCount;\r
- }\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, hi2c->XferSize) != HAL_OK)\r
- {\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);\r
- }\r
- else\r
- {\r
- /* Enable TC interrupts */\r
- I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @brief DMA I2C slave receive process complete callback.\r
- * @param hdma DMA handle\r
- * @retval None\r
- */\r
-static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */\r
- uint32_t tmpoptions = hi2c->XferOptions;\r
-\r
- if ((__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U) && \\r
- (tmpoptions != I2C_NO_OPTION_FRAME))\r
- {\r
- /* Disable DMA Request */\r
- hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;\r
-\r
- /* Call I2C Slave Sequential complete process */\r
- I2C_ITSlaveSeqCplt(hi2c);\r
- }\r
- else\r
- {\r
- /* No specific action, Master fully manage the generation of STOP condition */\r
- /* Mean that this generation can arrive at any time, at the end or during DMA process */\r
- /* So STOP condition should be manage through Interrupt treatment */\r
- }\r
-}\r
-\r
-/**\r
- * @brief DMA I2C communication error callback.\r
- * @param hdma DMA handle\r
- * @retval None\r
- */\r
-static void I2C_DMAError(DMA_HandleTypeDef *hdma)\r
-{\r
- uint32_t treatdmaerror = 0U;\r
- I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */\r
-\r
- if (hi2c->hdmatx != NULL)\r
- {\r
- if (__HAL_DMA_GET_COUNTER(hi2c->hdmatx) == 0U)\r
- {\r
- treatdmaerror = 1U;\r
- }\r
- }\r
-\r
- if (hi2c->hdmarx != NULL)\r
- {\r
- if (__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U)\r
- {\r
- treatdmaerror = 1U;\r
- }\r
- }\r
-\r
- /* Check if a FIFO error is detected, if true normal use case, so no specific action to perform */\r
- if (!((HAL_DMA_GetError(hdma) == HAL_DMA_ERROR_FE)) && (treatdmaerror != 0U))\r
- {\r
- /* Disable Acknowledge */\r
- hi2c->Instance->CR2 |= I2C_CR2_NACK;\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
- I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);\r
- }\r
-}\r
-\r
-/**\r
- * @brief DMA I2C communication abort callback\r
- * (To be called at end of DMA Abort procedure).\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void I2C_DMAAbort(DMA_HandleTypeDef *hdma)\r
-{\r
- I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */\r
-\r
- /* Reset AbortCpltCallback */\r
- hi2c->hdmatx->XferAbortCallback = NULL;\r
- hi2c->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Check if come from abort from user */\r
- if (hi2c->State == HAL_I2C_STATE_ABORT)\r
- {\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->AbortCpltCallback(hi2c);\r
-#else\r
- HAL_I2C_AbortCpltCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
- else\r
- {\r
- /* Call the corresponding callback to inform upper layer of End of Transfer */\r
-#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)\r
- hi2c->ErrorCallback(hi2c);\r
-#else\r
- HAL_I2C_ErrorCallback(hi2c);\r
-#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */\r
- }\r
-}\r
-\r
-/**\r
- * @brief This function handles I2C Communication Timeout.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param Flag Specifies the I2C flag to check.\r
- * @param Status The new Flag status (SET or RESET).\r
- * @param Timeout Timeout duration\r
- * @param Tickstart Tick start value\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart)\r
-{\r
- while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)\r
- {\r
- /* Check for the Timeout */\r
- if (Timeout != HAL_MAX_DELAY)\r
- {\r
- if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
- return HAL_ERROR;\r
- }\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param Timeout Timeout duration\r
- * @param Tickstart Tick start value\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)\r
-{\r
- while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)\r
- {\r
- /* Check if a NACK is detected */\r
- if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check for the Timeout */\r
- if (Timeout != HAL_MAX_DELAY)\r
- {\r
- if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief This function handles I2C Communication Timeout for specific usage of STOP flag.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param Timeout Timeout duration\r
- * @param Tickstart Tick start value\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)\r
-{\r
- while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)\r
- {\r
- /* Check if a NACK is detected */\r
- if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check for the Timeout */\r
- if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param Timeout Timeout duration\r
- * @param Tickstart Tick start value\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)\r
-{\r
- while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)\r
- {\r
- /* Check if a NACK is detected */\r
- if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check if a STOPF is detected */\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET)\r
- {\r
- /* Check if an RXNE is pending */\r
- /* Store Last receive data if any */\r
- if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U))\r
- {\r
- /* Return HAL_OK */\r
- /* The Reading of data from RXDR will be done in caller function */\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- hi2c->ErrorCode = HAL_I2C_ERROR_NONE;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
-\r
- /* Check for the Timeout */\r
- if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief This function handles Acknowledge failed detection during an I2C Communication.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param Timeout Timeout duration\r
- * @param Tickstart Tick start value\r
- * @retval HAL status\r
- */\r
-static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)\r
-{\r
- if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET)\r
- {\r
- /* Wait until STOP Flag is reset */\r
- /* AutoEnd should be initiate after AF */\r
- while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)\r
- {\r
- /* Check for the Timeout */\r
- if (Timeout != HAL_MAX_DELAY)\r
- {\r
- if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\r
- {\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- }\r
-\r
- /* Clear NACKF Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);\r
-\r
- /* Clear STOP Flag */\r
- __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);\r
-\r
- /* Flush TX register */\r
- I2C_Flush_TXDR(hi2c);\r
-\r
- /* Clear Configuration Register 2 */\r
- I2C_RESET_CR2(hi2c);\r
-\r
- hi2c->ErrorCode |= HAL_I2C_ERROR_AF;\r
- hi2c->State = HAL_I2C_STATE_READY;\r
- hi2c->Mode = HAL_I2C_MODE_NONE;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_ERROR;\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag are set).\r
- * @param hi2c I2C handle.\r
- * @param DevAddress Specifies the slave address to be programmed.\r
- * @param Size Specifies the number of bytes to be programmed.\r
- * This parameter must be a value between 0 and 255.\r
- * @param Mode New state of the I2C START condition generation.\r
- * This parameter can be one of the following values:\r
- * @arg @ref I2C_RELOAD_MODE Enable Reload mode .\r
- * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode.\r
- * @arg @ref I2C_SOFTEND_MODE Enable Software end mode.\r
- * @param Request New state of the I2C START condition generation.\r
- * This parameter can be one of the following values:\r
- * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition.\r
- * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0).\r
- * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request.\r
- * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request.\r
- * @retval None\r
- */\r
-static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\r
- assert_param(IS_TRANSFER_MODE(Mode));\r
- assert_param(IS_TRANSFER_REQUEST(Request));\r
-\r
- /* update CR2 register */\r
- MODIFY_REG(hi2c->Instance->CR2, ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | I2C_CR2_START | I2C_CR2_STOP)), \\r
- (uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | (uint32_t)Mode | (uint32_t)Request));\r
-}\r
-\r
-/**\r
- * @brief Manage the enabling of Interrupts.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition.\r
- * @retval None\r
- */\r
-static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest)\r
-{\r
- uint32_t tmpisr = 0U;\r
-\r
- if ((hi2c->XferISR == I2C_Master_ISR_DMA) || \\r
- (hi2c->XferISR == I2C_Slave_ISR_DMA))\r
- {\r
- if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)\r
- {\r
- /* Enable ERR, STOP, NACK and ADDR interrupts */\r
- tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_ERROR_IT) == I2C_XFER_ERROR_IT)\r
- {\r
- /* Enable ERR and NACK interrupts */\r
- tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_CPLT_IT) == I2C_XFER_CPLT_IT)\r
- {\r
- /* Enable STOP interrupts */\r
- tmpisr |= I2C_IT_STOPI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_RELOAD_IT) == I2C_XFER_RELOAD_IT)\r
- {\r
- /* Enable TC interrupts */\r
- tmpisr |= I2C_IT_TCI;\r
- }\r
- }\r
- else\r
- {\r
- if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)\r
- {\r
- /* Enable ERR, STOP, NACK, and ADDR interrupts */\r
- tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)\r
- {\r
- /* Enable ERR, TC, STOP, NACK and RXI interrupts */\r
- tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)\r
- {\r
- /* Enable ERR, TC, STOP, NACK and TXI interrupts */\r
- tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_CPLT_IT) == I2C_XFER_CPLT_IT)\r
- {\r
- /* Enable STOP interrupts */\r
- tmpisr |= I2C_IT_STOPI;\r
- }\r
- }\r
-\r
- /* Enable interrupts only at the end */\r
- /* to avoid the risk of I2C interrupt handle execution before */\r
- /* all interrupts requested done */\r
- __HAL_I2C_ENABLE_IT(hi2c, tmpisr);\r
-}\r
-\r
-/**\r
- * @brief Manage the disabling of Interrupts.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2C.\r
- * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition.\r
- * @retval None\r
- */\r
-static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest)\r
-{\r
- uint32_t tmpisr = 0U;\r
-\r
- if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)\r
- {\r
- /* Disable TC and TXI interrupts */\r
- tmpisr |= I2C_IT_TCI | I2C_IT_TXI;\r
-\r
- if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN)\r
- {\r
- /* Disable NACK and STOP interrupts */\r
- tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\r
- }\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)\r
- {\r
- /* Disable TC and RXI interrupts */\r
- tmpisr |= I2C_IT_TCI | I2C_IT_RXI;\r
-\r
- if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN)\r
- {\r
- /* Disable NACK and STOP interrupts */\r
- tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\r
- }\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)\r
- {\r
- /* Disable ADDR, NACK and STOP interrupts */\r
- tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_ERROR_IT) == I2C_XFER_ERROR_IT)\r
- {\r
- /* Enable ERR and NACK interrupts */\r
- tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_CPLT_IT) == I2C_XFER_CPLT_IT)\r
- {\r
- /* Enable STOP interrupts */\r
- tmpisr |= I2C_IT_STOPI;\r
- }\r
-\r
- if ((InterruptRequest & I2C_XFER_RELOAD_IT) == I2C_XFER_RELOAD_IT)\r
- {\r
- /* Enable TC interrupts */\r
- tmpisr |= I2C_IT_TCI;\r
- }\r
-\r
- /* Disable interrupts only at the end */\r
- /* to avoid a breaking situation like at "t" time */\r
- /* all disable interrupts request are not done */\r
- __HAL_I2C_DISABLE_IT(hi2c, tmpisr);\r
-}\r
-\r
-/**\r
- * @brief Convert I2Cx OTHER_xxx XferOptions to functionnal XferOptions.\r
- * @param hi2c I2C handle.\r
- * @retval None\r
- */\r
-static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c)\r
-{\r
- /* if user set XferOptions to I2C_OTHER_FRAME */\r
- /* it request implicitly to generate a restart condition */\r
- /* set XferOptions to I2C_FIRST_FRAME */\r
- if (hi2c->XferOptions == I2C_OTHER_FRAME)\r
- {\r
- hi2c->XferOptions = I2C_FIRST_FRAME;\r
- }\r
- /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */\r
- /* it request implicitly to generate a restart condition */\r
- /* then generate a stop condition at the end of transfer */\r
- /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */\r
- else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME)\r
- {\r
- hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME;\r
- }\r
- else\r
- {\r
- /* Nothing to do */\r
- }\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_I2C_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_i2c_ex.c\r
- * @author MCD Application Team\r
- * @brief I2C Extended HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities of I2C Extended peripheral:\r
- * + Extended features functions\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### I2C peripheral Extended features #####\r
- ==============================================================================\r
-\r
- [..] Comparing to other previous devices, the I2C interface for STM32F7xx\r
- devices contains the following additional features\r
-\r
- (+) Possibility to disable or enable Analog Noise Filter\r
- (+) Use of a configured Digital Noise Filter\r
- (+) Disable or enable Fast Mode Plus\r
-\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..] This driver provides functions to:\r
- (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter()\r
- (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter()\r
- (#) Configure the enable or disable of fast mode plus driving capability using the functions :\r
- (++) HAL_I2CEx_EnableFastModePlus()\r
- (++) HAL_I2CEx_DisableFastModePlus()\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup I2CEx I2CEx\r
- * @brief I2C Extended HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_I2C_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-\r
-/** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup I2CEx_Exported_Functions_Group1 Extended features functions\r
- * @brief Extended features functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Extended features functions #####\r
- ===============================================================================\r
- [..] This section provides functions allowing to:\r
- (+) Configure Noise Filters\r
- (+) Configure Fast Mode Plus\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Configure I2C Analog noise filter.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2Cx peripheral.\r
- * @param AnalogFilter New state of the Analog filter.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\r
- assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY;\r
-\r
- /* Disable the selected I2C peripheral */\r
- __HAL_I2C_DISABLE(hi2c);\r
-\r
- /* Reset I2Cx ANOFF bit */\r
- hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF);\r
-\r
- /* Set analog filter bit*/\r
- hi2c->Instance->CR1 |= AnalogFilter;\r
-\r
- __HAL_I2C_ENABLE(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Configure I2C Digital noise filter.\r
- * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains\r
- * the configuration information for the specified I2Cx peripheral.\r
- * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter)\r
-{\r
- uint32_t tmpreg;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));\r
- assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter));\r
-\r
- if (hi2c->State == HAL_I2C_STATE_READY)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_BUSY;\r
-\r
- /* Disable the selected I2C peripheral */\r
- __HAL_I2C_DISABLE(hi2c);\r
-\r
- /* Get the old register value */\r
- tmpreg = hi2c->Instance->CR1;\r
-\r
- /* Reset I2Cx DNF bits [11:8] */\r
- tmpreg &= ~(I2C_CR1_DNF);\r
-\r
- /* Set I2Cx DNF coefficient */\r
- tmpreg |= DigitalFilter << 8U;\r
-\r
- /* Store the new register value */\r
- hi2c->Instance->CR1 = tmpreg;\r
-\r
- __HAL_I2C_ENABLE(hi2c);\r
-\r
- hi2c->State = HAL_I2C_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(hi2c);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-#if (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP)\r
-/**\r
- * @brief Enable the I2C fast mode plus driving capability.\r
- * @param ConfigFastModePlus Selects the pin.\r
- * This parameter can be one of the @ref I2CEx_FastModePlus values\r
- * @note For I2C1, fast mode plus driving capability can be enabled on all selected\r
- * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently\r
- * on each one of the following pins PB6, PB7, PB8 and PB9.\r
- * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability\r
- * can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter.\r
- * @note For all I2C2 pins fast mode plus driving capability can be enabled\r
- * only by using I2C_FASTMODEPLUS_I2C2 parameter.\r
- * @note For all I2C3 pins fast mode plus driving capability can be enabled\r
- * only by using I2C_FASTMODEPLUS_I2C3 parameter.\r
- * @note For all I2C4 pins fast mode plus driving capability can be enabled\r
- * only by using I2C_FASTMODEPLUS_I2C4 parameter.\r
- * @retval None\r
- */\r
-void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus)\r
-{\r
- /* Check the parameter */\r
- assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus));\r
-\r
- /* Enable SYSCFG clock */\r
- __HAL_RCC_SYSCFG_CLK_ENABLE();\r
-\r
- /* Enable fast mode plus driving capability for selected pin */\r
- SET_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus);\r
-}\r
-\r
-/**\r
- * @brief Disable the I2C fast mode plus driving capability.\r
- * @param ConfigFastModePlus Selects the pin.\r
- * This parameter can be one of the @ref I2CEx_FastModePlus values\r
- * @note For I2C1, fast mode plus driving capability can be disabled on all selected\r
- * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently\r
- * on each one of the following pins PB6, PB7, PB8 and PB9.\r
- * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability\r
- * can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter.\r
- * @note For all I2C2 pins fast mode plus driving capability can be disabled\r
- * only by using I2C_FASTMODEPLUS_I2C2 parameter.\r
- * @note For all I2C3 pins fast mode plus driving capability can be disabled\r
- * only by using I2C_FASTMODEPLUS_I2C3 parameter.\r
- * @note For all I2C4 pins fast mode plus driving capability can be disabled\r
- * only by using I2C_FASTMODEPLUS_I2C4 parameter.\r
- * @retval None\r
- */\r
-void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus)\r
-{\r
- /* Check the parameter */\r
- assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus));\r
-\r
- /* Enable SYSCFG clock */\r
- __HAL_RCC_SYSCFG_CLK_ENABLE();\r
-\r
- /* Disable fast mode plus driving capability for selected pin */\r
- CLEAR_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus);\r
-}\r
-\r
-#endif\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_I2C_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_pwr.c\r
- * @author MCD Application Team\r
- * @brief PWR HAL module driver.\r
- * This file provides firmware functions to manage the following \r
- * functionalities of the Power Controller (PWR) peripheral:\r
- * + Initialization and de-initialization functions\r
- * + Peripheral Control functions \r
- * \r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup PWR PWR\r
- * @brief PWR HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_PWR_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @addtogroup PWR_Private_Constants\r
- * @{\r
- */\r
- \r
-/** @defgroup PWR_PVD_Mode_Mask PWR PVD Mode Mask\r
- * @{\r
- */ \r
-#define PVD_MODE_IT ((uint32_t)0x00010000U)\r
-#define PVD_MODE_EVT ((uint32_t)0x00020000U)\r
-#define PVD_RISING_EDGE ((uint32_t)0x00000001U)\r
-#define PVD_FALLING_EDGE ((uint32_t)0x00000002U)\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup PWR_ENABLE_WUP_Mask PWR Enable WUP Mask\r
- * @{\r
- */ \r
-#define PWR_EWUP_MASK ((uint32_t)0x00003F00)\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-\r
-/** @defgroup PWR_Exported_Functions PWR Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions \r
- * @brief Initialization and de-initialization functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Initialization and de-initialization functions #####\r
- ===============================================================================\r
- [..]\r
- After reset, the backup domain (RTC registers, RTC backup data \r
- registers and backup SRAM) is protected against possible unwanted \r
- write accesses. \r
- To enable access to the RTC Domain and RTC registers, proceed as follows:\r
- (+) Enable the Power Controller (PWR) APB1 interface clock using the\r
- __HAL_RCC_PWR_CLK_ENABLE() macro.\r
- (+) Enable access to RTC domain using the HAL_PWR_EnableBkUpAccess() function.\r
- \r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Deinitializes the HAL PWR peripheral registers to their default reset values.\r
- * @retval None\r
- */\r
-void HAL_PWR_DeInit(void)\r
-{\r
- __HAL_RCC_PWR_FORCE_RESET();\r
- __HAL_RCC_PWR_RELEASE_RESET();\r
-}\r
-\r
-/**\r
- * @brief Enables access to the backup domain (RTC registers, RTC \r
- * backup data registers and backup SRAM).\r
- * @note If the HSE divided by 2, 3, ..31 is used as the RTC clock, the \r
- * Backup Domain Access should be kept enabled.\r
- * @retval None\r
- */\r
-void HAL_PWR_EnableBkUpAccess(void)\r
-{\r
- /* Enable access to RTC and backup registers */\r
- SET_BIT(PWR->CR1, PWR_CR1_DBP);\r
-}\r
-\r
-/**\r
- * @brief Disables access to the backup domain (RTC registers, RTC \r
- * backup data registers and backup SRAM).\r
- * @note If the HSE divided by 2, 3, ..31 is used as the RTC clock, the \r
- * Backup Domain Access should be kept enabled.\r
- * @retval None\r
- */\r
-void HAL_PWR_DisableBkUpAccess(void)\r
-{\r
- /* Disable access to RTC and backup registers */\r
- CLEAR_BIT(PWR->CR1, PWR_CR1_DBP);\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup PWR_Exported_Functions_Group2 Peripheral Control functions \r
- * @brief Low Power modes configuration functions \r
- *\r
-@verbatim\r
-\r
- ===============================================================================\r
- ##### Peripheral Control functions #####\r
- ===============================================================================\r
- \r
- *** PVD configuration ***\r
- =========================\r
- [..]\r
- (+) The PVD is used to monitor the VDD power supply by comparing it to a \r
- threshold selected by the PVD Level (PLS[2:0] bits in the PWR_CR).\r
- (+) A PVDO flag is available to indicate if VDD/VDDA is higher or lower \r
- than the PVD threshold. This event is internally connected to the EXTI \r
- line16 and can generate an interrupt if enabled. This is done through\r
- __HAL_PWR_PVD_EXTI_ENABLE_IT() macro.\r
- (+) The PVD is stopped in Standby mode.\r
-\r
- *** Wake-up pin configuration ***\r
- ================================\r
- [..]\r
- (+) Wake-up pin is used to wake up the system from Standby mode. This pin is \r
- forced in input pull-down configuration and is active on rising edges.\r
- (+) There are up to 6 Wake-up pin in the STM32F7 devices family\r
-\r
- *** Low Power modes configuration ***\r
- =====================================\r
- [..]\r
- The devices feature 3 low-power modes:\r
- (+) Sleep mode: Cortex-M7 core stopped, peripherals kept running.\r
- (+) Stop mode: all clocks are stopped, regulator running, regulator \r
- in low power mode\r
- (+) Standby mode: 1.2V domain powered off.\r
- \r
- *** Sleep mode ***\r
- ==================\r
- [..]\r
- (+) Entry:\r
- The Sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI)\r
- functions with\r
- (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction\r
- (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction\r
- \r
- -@@- The Regulator parameter is not used for the STM32F7 family \r
- and is kept as parameter just to maintain compatibility with the \r
- lower power families (STM32L).\r
- (+) Exit:\r
- Any peripheral interrupt acknowledged by the nested vectored interrupt \r
- controller (NVIC) can wake up the device from Sleep mode.\r
-\r
- *** Stop mode ***\r
- =================\r
- [..]\r
- In Stop mode, all clocks in the 1.2V domain are stopped, the PLL, the HSI,\r
- and the HSE RC oscillators are disabled. Internal SRAM and register contents \r
- are preserved.\r
- The voltage regulator can be configured either in normal or low-power mode.\r
- To minimize the consumption In Stop mode, FLASH can be powered off before \r
- entering the Stop mode using the HAL_PWREx_EnableFlashPowerDown() function.\r
- It can be switched on again by software after exiting the Stop mode using\r
- the HAL_PWREx_DisableFlashPowerDown() function. \r
-\r
- (+) Entry:\r
- The Stop mode is entered using the HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON) \r
- function with:\r
- (++) Main regulator ON.\r
- (++) Low Power regulator ON.\r
- (+) Exit:\r
- Any EXTI Line (Internal or External) configured in Interrupt/Event mode.\r
-\r
- *** Standby mode ***\r
- ====================\r
- [..]\r
- (+)\r
- The Standby mode allows to achieve the lowest power consumption. It is based \r
- on the Cortex-M7 deep sleep mode, with the voltage regulator disabled. \r
- The 1.2V domain is consequently powered off. The PLL, the HSI oscillator and \r
- the HSE oscillator are also switched off. SRAM and register contents are lost \r
- except for the RTC registers, RTC backup registers, backup SRAM and Standby \r
- circuitry.\r
- \r
- The voltage regulator is OFF.\r
- \r
- (++) Entry:\r
- (+++) The Standby mode is entered using the HAL_PWR_EnterSTANDBYMode() function.\r
- (++) Exit:\r
- (+++) WKUP pin rising or falling edge, RTC alarm (Alarm A and Alarm B), RTC\r
- wakeup, tamper event, time stamp event, external reset in NRST pin, IWDG reset.\r
-\r
- *** Auto-wakeup (AWU) from low-power mode ***\r
- =============================================\r
- [..]\r
- \r
- (+) The MCU can be woken up from low-power mode by an RTC Alarm event, an RTC \r
- Wakeup event, a tamper event or a time-stamp event, without depending on \r
- an external interrupt (Auto-wakeup mode).\r
-\r
- (+) RTC auto-wakeup (AWU) from the Stop and Standby modes\r
- \r
- (++) To wake up from the Stop mode with an RTC alarm event, it is necessary to \r
- configure the RTC to generate the RTC alarm using the HAL_RTC_SetAlarm_IT() function.\r
-\r
- (++) To wake up from the Stop mode with an RTC Tamper or time stamp event, it \r
- is necessary to configure the RTC to detect the tamper or time stamp event using the\r
- HAL_RTCEx_SetTimeStamp_IT() or HAL_RTCEx_SetTamper_IT() functions.\r
- \r
- (++) To wake up from the Stop mode with an RTC WakeUp event, it is necessary to\r
- configure the RTC to generate the RTC WakeUp event using the HAL_RTCEx_SetWakeUpTimer_IT() function.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Configures the voltage threshold detected by the Power Voltage Detector(PVD).\r
- * @param sConfigPVD pointer to an PWR_PVDTypeDef structure that contains the configuration\r
- * information for the PVD.\r
- * @note Refer to the electrical characteristics of your device datasheet for\r
- * more details about the voltage threshold corresponding to each \r
- * detection level.\r
- * @retval None\r
- */\r
-void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_PWR_PVD_LEVEL(sConfigPVD->PVDLevel));\r
- assert_param(IS_PWR_PVD_MODE(sConfigPVD->Mode));\r
- \r
- /* Set PLS[7:5] bits according to PVDLevel value */\r
- MODIFY_REG(PWR->CR1, PWR_CR1_PLS, sConfigPVD->PVDLevel);\r
- \r
- /* Clear any previous config. Keep it clear if no event or IT mode is selected */\r
- __HAL_PWR_PVD_EXTI_DISABLE_EVENT();\r
- __HAL_PWR_PVD_EXTI_DISABLE_IT();\r
- __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();\r
- __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); \r
-\r
- /* Configure interrupt mode */\r
- if((sConfigPVD->Mode & PVD_MODE_IT) == PVD_MODE_IT)\r
- {\r
- __HAL_PWR_PVD_EXTI_ENABLE_IT();\r
- }\r
- \r
- /* Configure event mode */\r
- if((sConfigPVD->Mode & PVD_MODE_EVT) == PVD_MODE_EVT)\r
- {\r
- __HAL_PWR_PVD_EXTI_ENABLE_EVENT();\r
- }\r
- \r
- /* Configure the edge */\r
- if((sConfigPVD->Mode & PVD_RISING_EDGE) == PVD_RISING_EDGE)\r
- {\r
- __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();\r
- }\r
- \r
- if((sConfigPVD->Mode & PVD_FALLING_EDGE) == PVD_FALLING_EDGE)\r
- {\r
- __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE();\r
- }\r
-}\r
-\r
-/**\r
- * @brief Enables the Power Voltage Detector(PVD).\r
- * @retval None\r
- */\r
-void HAL_PWR_EnablePVD(void)\r
-{\r
- /* Enable the power voltage detector */\r
- SET_BIT(PWR->CR1, PWR_CR1_PVDE);\r
-}\r
-\r
-/**\r
- * @brief Disables the Power Voltage Detector(PVD).\r
- * @retval None\r
- */\r
-void HAL_PWR_DisablePVD(void)\r
-{\r
- /* Disable the power voltage detector */\r
- CLEAR_BIT(PWR->CR1, PWR_CR1_PVDE);\r
-}\r
-\r
-/**\r
- * @brief Enable the WakeUp PINx functionality.\r
- * @param WakeUpPinPolarity Specifies which Wake-Up pin to enable.\r
- * This parameter can be one of the following legacy values, which sets the default polarity: \r
- * detection on high level (rising edge):\r
- * @arg PWR_WAKEUP_PIN1, PWR_WAKEUP_PIN2, PWR_WAKEUP_PIN3, PWR_WAKEUP_PIN4, PWR_WAKEUP_PIN5, PWR_WAKEUP_PIN6 \r
- * or one of the following value where the user can explicitly states the enabled pin and\r
- * the chosen polarity \r
- * @arg PWR_WAKEUP_PIN1_HIGH or PWR_WAKEUP_PIN1_LOW \r
- * @arg PWR_WAKEUP_PIN2_HIGH or PWR_WAKEUP_PIN2_LOW \r
- * @arg PWR_WAKEUP_PIN3_HIGH or PWR_WAKEUP_PIN3_LOW \r
- * @arg PWR_WAKEUP_PIN4_HIGH or PWR_WAKEUP_PIN4_LOW\r
- * @arg PWR_WAKEUP_PIN5_HIGH or PWR_WAKEUP_PIN5_LOW \r
- * @arg PWR_WAKEUP_PIN6_HIGH or PWR_WAKEUP_PIN6_LOW \r
- * @note PWR_WAKEUP_PINx and PWR_WAKEUP_PINx_HIGH are equivalent. \r
- * @retval None\r
- */\r
-void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity)\r
-{\r
- assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinPolarity));\r
- \r
- /* Enable wake-up pin */\r
- SET_BIT(PWR->CSR2, (PWR_EWUP_MASK & WakeUpPinPolarity));\r
- \r
- /* Specifies the Wake-Up pin polarity for the event detection\r
- (rising or falling edge) */\r
- MODIFY_REG(PWR->CR2, (PWR_EWUP_MASK & WakeUpPinPolarity), (WakeUpPinPolarity >> 0x06));\r
-}\r
-\r
-/**\r
- * @brief Disables the WakeUp PINx functionality.\r
- * @param WakeUpPinx Specifies the Power Wake-Up pin to disable.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_WAKEUP_PIN1\r
- * @arg PWR_WAKEUP_PIN2\r
- * @arg PWR_WAKEUP_PIN3\r
- * @arg PWR_WAKEUP_PIN4\r
- * @arg PWR_WAKEUP_PIN5\r
- * @arg PWR_WAKEUP_PIN6 \r
- * @retval None\r
- */\r
-void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx)\r
-{\r
- assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx));\r
-\r
- CLEAR_BIT(PWR->CSR2, WakeUpPinx);\r
-}\r
- \r
-/**\r
- * @brief Enters Sleep mode.\r
- * \r
- * @note In Sleep mode, all I/O pins keep the same state as in Run mode.\r
- * \r
- * @note In Sleep mode, the systick is stopped to avoid exit from this mode with\r
- * systick interrupt when used as time base for Timeout \r
- * \r
- * @param Regulator Specifies the regulator state in SLEEP mode.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_MAINREGULATOR_ON: SLEEP mode with regulator ON\r
- * @arg PWR_LOWPOWERREGULATOR_ON: SLEEP mode with low power regulator ON\r
- * @note This parameter is not used for the STM32F7 family and is kept as parameter\r
- * just to maintain compatibility with the lower power families.\r
- * @param SLEEPEntry Specifies if SLEEP mode in entered with WFI or WFE instruction.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction\r
- * @arg PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction\r
- * @retval None\r
- */\r
-void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_PWR_REGULATOR(Regulator));\r
- assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry));\r
-\r
- /* Clear SLEEPDEEP bit of Cortex System Control Register */\r
- CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));\r
-\r
- /* Ensure that all instructions done before entering SLEEP mode */\r
- __DSB();\r
- __ISB();\r
-\r
- /* Select SLEEP mode entry -------------------------------------------------*/\r
- if(SLEEPEntry == PWR_SLEEPENTRY_WFI)\r
- { \r
- /* Request Wait For Interrupt */\r
- __WFI();\r
- }\r
- else\r
- {\r
- /* Request Wait For Event */\r
- __SEV();\r
- __WFE();\r
- __WFE();\r
- }\r
-}\r
-\r
-/**\r
- * @brief Enters Stop mode. \r
- * @note In Stop mode, all I/O pins keep the same state as in Run mode.\r
- * @note When exiting Stop mode by issuing an interrupt or a wakeup event, \r
- * the HSI RC oscillator is selected as system clock.\r
- * @note When the voltage regulator operates in low power mode, an additional \r
- * startup delay is incurred when waking up from Stop mode. \r
- * By keeping the internal regulator ON during Stop mode, the consumption \r
- * is higher although the startup time is reduced. \r
- * @param Regulator Specifies the regulator state in Stop mode.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_MAINREGULATOR_ON: Stop mode with regulator ON\r
- * @arg PWR_LOWPOWERREGULATOR_ON: Stop mode with low power regulator ON\r
- * @param STOPEntry Specifies if Stop mode in entered with WFI or WFE instruction.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_STOPENTRY_WFI: Enter Stop mode with WFI instruction\r
- * @arg PWR_STOPENTRY_WFE: Enter Stop mode with WFE instruction\r
- * @retval None\r
- */\r
-void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry)\r
-{\r
- uint32_t tmpreg = 0;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_PWR_REGULATOR(Regulator));\r
- assert_param(IS_PWR_STOP_ENTRY(STOPEntry));\r
-\r
- /* Select the regulator state in Stop mode ---------------------------------*/\r
- tmpreg = PWR->CR1;\r
- /* Clear PDDS and LPDS bits */\r
- tmpreg &= (uint32_t)~(PWR_CR1_PDDS | PWR_CR1_LPDS);\r
-\r
- /* Set LPDS, MRLVDS and LPLVDS bits according to Regulator value */\r
- tmpreg |= Regulator;\r
-\r
- /* Store the new value */\r
- PWR->CR1 = tmpreg;\r
-\r
- /* Set SLEEPDEEP bit of Cortex System Control Register */\r
- SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
-\r
- /* Ensure that all instructions done before entering STOP mode */\r
- __DSB();\r
- __ISB();\r
-\r
- /* Select Stop mode entry --------------------------------------------------*/\r
- if(STOPEntry == PWR_STOPENTRY_WFI)\r
- { \r
- /* Request Wait For Interrupt */\r
- __WFI();\r
- }\r
- else\r
- {\r
- /* Request Wait For Event */\r
- __SEV();\r
- __WFE();\r
- __WFE();\r
- }\r
- /* Reset SLEEPDEEP bit of Cortex System Control Register */\r
- SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); \r
-}\r
-\r
-/**\r
- * @brief Enters Standby mode.\r
- * @note In Standby mode, all I/O pins are high impedance except for:\r
- * - Reset pad (still available) \r
- * - RTC_AF1 pin (PC13) if configured for tamper, time-stamp, RTC \r
- * Alarm out, or RTC clock calibration out.\r
- * - RTC_AF2 pin (PI8) if configured for tamper or time-stamp. \r
- * - WKUP pins if enabled. \r
- * @retval None\r
- */\r
-void HAL_PWR_EnterSTANDBYMode(void)\r
-{\r
- /* Select Standby mode */\r
- PWR->CR1 |= PWR_CR1_PDDS;\r
- \r
- /* Set SLEEPDEEP bit of Cortex System Control Register */\r
- SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
- \r
- /* This option is used to ensure that store operations are completed */\r
-#if defined ( __CC_ARM)\r
- __force_stores();\r
-#endif\r
- /* Request Wait For Interrupt */\r
- __WFI();\r
-}\r
-\r
-/**\r
- * @brief This function handles the PWR PVD interrupt request.\r
- * @note This API should be called under the PVD_IRQHandler().\r
- * @retval None\r
- */\r
-void HAL_PWR_PVD_IRQHandler(void)\r
-{\r
- /* Check PWR Exti flag */\r
- if(__HAL_PWR_PVD_EXTI_GET_FLAG() != RESET)\r
- {\r
- /* PWR PVD interrupt user callback */\r
- HAL_PWR_PVDCallback();\r
- \r
- /* Clear PWR Exti pending bit */\r
- __HAL_PWR_PVD_EXTI_CLEAR_FLAG();\r
- }\r
-}\r
-\r
-/**\r
- * @brief PWR PVD interrupt callback\r
- * @retval None\r
- */\r
-__weak void HAL_PWR_PVDCallback(void)\r
-{\r
- /* NOTE : This function Should not be modified, when the callback is needed,\r
- the HAL_PWR_PVDCallback could be implemented in the user file\r
- */ \r
-}\r
-\r
-/**\r
- * @brief Indicates Sleep-On-Exit when returning from Handler mode to Thread mode. \r
- * @note Set SLEEPONEXIT bit of SCR register. When this bit is set, the processor \r
- * re-enters SLEEP mode when an interruption handling is over.\r
- * Setting this bit is useful when the processor is expected to run only on\r
- * interruptions handling. \r
- * @retval None\r
- */\r
-void HAL_PWR_EnableSleepOnExit(void)\r
-{\r
- /* Set SLEEPONEXIT bit of Cortex System Control Register */\r
- SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk));\r
-}\r
-\r
-/**\r
- * @brief Disables Sleep-On-Exit feature when returning from Handler mode to Thread mode. \r
- * @note Clears SLEEPONEXIT bit of SCR register. When this bit is set, the processor \r
- * re-enters SLEEP mode when an interruption handling is over. \r
- * @retval None\r
- */\r
-void HAL_PWR_DisableSleepOnExit(void)\r
-{\r
- /* Clear SLEEPONEXIT bit of Cortex System Control Register */\r
- CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk));\r
-}\r
-\r
-/**\r
- * @brief Enables CORTEX M4 SEVONPEND bit. \r
- * @note Sets SEVONPEND bit of SCR register. When this bit is set, this causes \r
- * WFE to wake up when an interrupt moves from inactive to pended.\r
- * @retval None\r
- */\r
-void HAL_PWR_EnableSEVOnPend(void)\r
-{\r
- /* Set SEVONPEND bit of Cortex System Control Register */\r
- SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk));\r
-}\r
-\r
-/**\r
- * @brief Disables CORTEX M4 SEVONPEND bit. \r
- * @note Clears SEVONPEND bit of SCR register. When this bit is set, this causes \r
- * WFE to wake up when an interrupt moves from inactive to pended. \r
- * @retval None\r
- */\r
-void HAL_PWR_DisableSEVOnPend(void)\r
-{\r
- /* Clear SEVONPEND bit of Cortex System Control Register */\r
- CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk));\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
- \r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_PWR_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_pwr_ex.c\r
- * @author MCD Application Team\r
- * @brief Extended PWR HAL module driver.\r
- * This file provides firmware functions to manage the following \r
- * functionalities of PWR extension peripheral: \r
- * + Peripheral Extended features functions\r
- * \r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup PWREx PWREx\r
- * @brief PWR HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_PWR_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @addtogroup PWREx_Private_Constants\r
- * @{\r
- */ \r
-#define PWR_OVERDRIVE_TIMEOUT_VALUE 1000\r
-#define PWR_UDERDRIVE_TIMEOUT_VALUE 1000\r
-#define PWR_BKPREG_TIMEOUT_VALUE 1000\r
-#define PWR_VOSRDY_TIMEOUT_VALUE 1000\r
-/**\r
- * @}\r
- */\r
- \r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup PWREx_Exported_Functions PWREx Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup PWREx_Exported_Functions_Group1 Peripheral Extended features functions \r
- * @brief Peripheral Extended features functions \r
- *\r
-@verbatim \r
-\r
- ===============================================================================\r
- ##### Peripheral extended features functions #####\r
- ===============================================================================\r
-\r
- *** Main and Backup Regulators configuration ***\r
- ================================================\r
- [..] \r
- (+) The backup domain includes 4 Kbytes of backup SRAM accessible only from \r
- the CPU, and address in 32-bit, 16-bit or 8-bit mode. Its content is \r
- retained even in Standby or VBAT mode when the low power backup regulator\r
- is enabled. It can be considered as an internal EEPROM when VBAT is \r
- always present. You can use the HAL_PWREx_EnableBkUpReg() function to \r
- enable the low power backup regulator. \r
-\r
- (+) When the backup domain is supplied by VDD (analog switch connected to VDD) \r
- the backup SRAM is powered from VDD which replaces the VBAT power supply to \r
- save battery life.\r
-\r
- (+) The backup SRAM is not mass erased by a tamper event. It is read \r
- protected to prevent confidential data, such as cryptographic private \r
- key, from being accessed. The backup SRAM can be erased only through \r
- the Flash interface when a protection level change from level 1 to \r
- level 0 is requested. \r
- -@- Refer to the description of Read protection (RDP) in the Flash \r
- programming manual.\r
-\r
- (+) The main internal regulator can be configured to have a tradeoff between \r
- performance and power consumption when the device does not operate at \r
- the maximum frequency. This is done through __HAL_PWR_MAINREGULATORMODE_CONFIG() \r
- macro which configure VOS bit in PWR_CR register\r
- \r
- Refer to the product datasheets for more details.\r
-\r
- *** FLASH Power Down configuration ****\r
- =======================================\r
- [..] \r
- (+) By setting the FPDS bit in the PWR_CR register by using the \r
- HAL_PWREx_EnableFlashPowerDown() function, the Flash memory also enters power \r
- down mode when the device enters Stop mode. When the Flash memory \r
- is in power down mode, an additional startup delay is incurred when \r
- waking up from Stop mode.\r
-\r
- *** Over-Drive and Under-Drive configuration ****\r
- =================================================\r
- [..] \r
- (+) In Run mode: the main regulator has 2 operating modes available:\r
- (++) Normal mode: The CPU and core logic operate at maximum frequency at a given \r
- voltage scaling (scale 1, scale 2 or scale 3)\r
- (++) Over-drive mode: This mode allows the CPU and the core logic to operate at a \r
- higher frequency than the normal mode for a given voltage scaling (scale 1, \r
- scale 2 or scale 3). This mode is enabled through HAL_PWREx_EnableOverDrive() function and\r
- disabled by HAL_PWREx_DisableOverDrive() function, to enter or exit from Over-drive mode please follow \r
- the sequence described in Reference manual.\r
- \r
- (+) In Stop mode: the main regulator or low power regulator supplies a low power \r
- voltage to the 1.2V domain, thus preserving the content of registers \r
- and internal SRAM. 2 operating modes are available:\r
- (++) Normal mode: the 1.2V domain is preserved in nominal leakage mode. This mode is only \r
- available when the main regulator or the low power regulator is used in Scale 3 or \r
- low voltage mode.\r
- (++) Under-drive mode: the 1.2V domain is preserved in reduced leakage mode. This mode is only\r
- available when the main regulator or the low power regulator is in low voltage mode.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Enables the Backup Regulator.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_PWREx_EnableBkUpReg(void)\r
-{\r
- uint32_t tickstart = 0;\r
-\r
- /* Enable Backup regulator */\r
- PWR->CSR1 |= PWR_CSR1_BRE;\r
- \r
- /* Workaround for the following hardware bug: */\r
- /* Id 19: PWR : No STANDBY wake-up when Back-up RAM enabled (ref. Errata Sheet p23) */\r
- PWR->CSR1 |= PWR_CSR1_EIWUP;\r
-\r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till Backup regulator ready flag is set */ \r
- while(__HAL_PWR_GET_FLAG(PWR_FLAG_BRR) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_BKPREG_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- } \r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Disables the Backup Regulator.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_PWREx_DisableBkUpReg(void)\r
-{\r
- uint32_t tickstart = 0;\r
- \r
- /* Disable Backup regulator */\r
- PWR->CSR1 &= (uint32_t)~((uint32_t)PWR_CSR1_BRE);\r
- \r
- /* Workaround for the following hardware bug: */\r
- /* Id 19: PWR : No STANDBY wake-up when Back-up RAM enabled (ref. Errata Sheet p23) */\r
- PWR->CSR1 |= PWR_CSR1_EIWUP;\r
-\r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till Backup regulator ready flag is set */ \r
- while(__HAL_PWR_GET_FLAG(PWR_FLAG_BRR) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_BKPREG_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- } \r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Enables the Flash Power Down in Stop mode.\r
- * @retval None\r
- */\r
-void HAL_PWREx_EnableFlashPowerDown(void)\r
-{\r
- /* Enable the Flash Power Down */\r
- PWR->CR1 |= PWR_CR1_FPDS;\r
-}\r
-\r
-/**\r
- * @brief Disables the Flash Power Down in Stop mode.\r
- * @retval None\r
- */\r
-void HAL_PWREx_DisableFlashPowerDown(void)\r
-{\r
- /* Disable the Flash Power Down */\r
- PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_FPDS);\r
-}\r
-\r
-/**\r
- * @brief Enables Main Regulator low voltage mode.\r
- * @retval None\r
- */\r
-void HAL_PWREx_EnableMainRegulatorLowVoltage(void)\r
-{\r
- /* Enable Main regulator low voltage */\r
- PWR->CR1 |= PWR_CR1_MRUDS;\r
-}\r
-\r
-/**\r
- * @brief Disables Main Regulator low voltage mode.\r
- * @retval None\r
- */\r
-void HAL_PWREx_DisableMainRegulatorLowVoltage(void)\r
-{ \r
- /* Disable Main regulator low voltage */\r
- PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_MRUDS);\r
-}\r
-\r
-/**\r
- * @brief Enables Low Power Regulator low voltage mode.\r
- * @retval None\r
- */\r
-void HAL_PWREx_EnableLowRegulatorLowVoltage(void)\r
-{\r
- /* Enable low power regulator */\r
- PWR->CR1 |= PWR_CR1_LPUDS;\r
-}\r
-\r
-/**\r
- * @brief Disables Low Power Regulator low voltage mode.\r
- * @retval None\r
- */\r
-void HAL_PWREx_DisableLowRegulatorLowVoltage(void)\r
-{\r
- /* Disable low power regulator */\r
- PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_LPUDS);\r
-}\r
-\r
-/**\r
- * @brief Activates the Over-Drive mode.\r
- * @note This mode allows the CPU and the core logic to operate at a higher frequency\r
- * than the normal mode for a given voltage scaling (scale 1, scale 2 or scale 3). \r
- * @note It is recommended to enter or exit Over-drive mode when the application is not running \r
- * critical tasks and when the system clock source is either HSI or HSE. \r
- * During the Over-drive switch activation, no peripheral clocks should be enabled. \r
- * The peripheral clocks must be enabled once the Over-drive mode is activated. \r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_PWREx_EnableOverDrive(void)\r
-{\r
- uint32_t tickstart = 0;\r
-\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
- \r
- /* Enable the Over-drive to extend the clock frequency to 216 MHz */\r
- __HAL_PWR_OVERDRIVE_ENABLE();\r
-\r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
-\r
- while(!__HAL_PWR_GET_FLAG(PWR_FLAG_ODRDY))\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- \r
- /* Enable the Over-drive switch */\r
- __HAL_PWR_OVERDRIVESWITCHING_ENABLE();\r
-\r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
-\r
- while(!__HAL_PWR_GET_FLAG(PWR_FLAG_ODSWRDY))\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- } \r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Deactivates the Over-Drive mode.\r
- * @note This mode allows the CPU and the core logic to operate at a higher frequency\r
- * than the normal mode for a given voltage scaling (scale 1, scale 2 or scale 3). \r
- * @note It is recommended to enter or exit Over-drive mode when the application is not running \r
- * critical tasks and when the system clock source is either HSI or HSE. \r
- * During the Over-drive switch activation, no peripheral clocks should be enabled. \r
- * The peripheral clocks must be enabled once the Over-drive mode is activated.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_PWREx_DisableOverDrive(void)\r
-{\r
- uint32_t tickstart = 0;\r
- \r
- __HAL_RCC_PWR_CLK_ENABLE();\r
- \r
- /* Disable the Over-drive switch */\r
- __HAL_PWR_OVERDRIVESWITCHING_DISABLE();\r
- \r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
- \r
- while(__HAL_PWR_GET_FLAG(PWR_FLAG_ODSWRDY))\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- } \r
- \r
- /* Disable the Over-drive */\r
- __HAL_PWR_OVERDRIVE_DISABLE();\r
-\r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
-\r
- while(__HAL_PWR_GET_FLAG(PWR_FLAG_ODRDY))\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- \r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Enters in Under-Drive STOP mode.\r
- * \r
- * @note This mode can be selected only when the Under-Drive is already active \r
- * \r
- * @note This mode is enabled only with STOP low power mode.\r
- * In this mode, the 1.2V domain is preserved in reduced leakage mode. This \r
- * mode is only available when the main regulator or the low power regulator \r
- * is in low voltage mode\r
- * \r
- * @note If the Under-drive mode was enabled, it is automatically disabled after \r
- * exiting Stop mode. \r
- * When the voltage regulator operates in Under-drive mode, an additional \r
- * startup delay is induced when waking up from Stop mode.\r
- * \r
- * @note In Stop mode, all I/O pins keep the same state as in Run mode.\r
- * \r
- * @note When exiting Stop mode by issuing an interrupt or a wakeup event, \r
- * the HSI RC oscillator is selected as system clock.\r
- * \r
- * @note When the voltage regulator operates in low power mode, an additional \r
- * startup delay is incurred when waking up from Stop mode. \r
- * By keeping the internal regulator ON during Stop mode, the consumption \r
- * is higher although the startup time is reduced.\r
- * \r
- * @param Regulator specifies the regulator state in STOP mode.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_MAINREGULATOR_UNDERDRIVE_ON: Main Regulator in under-drive mode \r
- * and Flash memory in power-down when the device is in Stop under-drive mode\r
- * @arg PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON: Low Power Regulator in under-drive mode \r
- * and Flash memory in power-down when the device is in Stop under-drive mode\r
- * @param STOPEntry specifies if STOP mode in entered with WFI or WFE instruction.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_SLEEPENTRY_WFI: enter STOP mode with WFI instruction\r
- * @arg PWR_SLEEPENTRY_WFE: enter STOP mode with WFE instruction\r
- * @retval None\r
- */\r
-HAL_StatusTypeDef HAL_PWREx_EnterUnderDriveSTOPMode(uint32_t Regulator, uint8_t STOPEntry)\r
-{\r
- uint32_t tempreg = 0;\r
- uint32_t tickstart = 0;\r
- \r
- /* Check the parameters */\r
- assert_param(IS_PWR_REGULATOR_UNDERDRIVE(Regulator));\r
- assert_param(IS_PWR_STOP_ENTRY(STOPEntry));\r
- \r
- /* Enable Power ctrl clock */\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
- /* Enable the Under-drive Mode ---------------------------------------------*/\r
- /* Clear Under-drive flag */\r
- __HAL_PWR_CLEAR_ODRUDR_FLAG();\r
- \r
- /* Enable the Under-drive */ \r
- __HAL_PWR_UNDERDRIVE_ENABLE();\r
-\r
- /* Get tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait for UnderDrive mode is ready */\r
- while(__HAL_PWR_GET_FLAG(PWR_FLAG_UDRDY))\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_UDERDRIVE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- \r
- /* Select the regulator state in STOP mode ---------------------------------*/\r
- tempreg = PWR->CR1;\r
- /* Clear PDDS, LPDS, MRLUDS and LPLUDS bits */\r
- tempreg &= (uint32_t)~(PWR_CR1_PDDS | PWR_CR1_LPDS | PWR_CR1_LPUDS | PWR_CR1_MRUDS);\r
- \r
- /* Set LPDS, MRLUDS and LPLUDS bits according to PWR_Regulator value */\r
- tempreg |= Regulator;\r
- \r
- /* Store the new value */\r
- PWR->CR1 = tempreg;\r
- \r
- /* Set SLEEPDEEP bit of Cortex System Control Register */\r
- SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
- \r
- /* Select STOP mode entry --------------------------------------------------*/\r
- if(STOPEntry == PWR_SLEEPENTRY_WFI)\r
- { \r
- /* Request Wait For Interrupt */\r
- __WFI();\r
- }\r
- else\r
- {\r
- /* Request Wait For Event */\r
- __WFE();\r
- }\r
- /* Reset SLEEPDEEP bit of Cortex System Control Register */\r
- SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);\r
-\r
- return HAL_OK; \r
-}\r
-\r
-/**\r
- * @brief Returns Voltage Scaling Range.\r
- * @retval VOS bit field (PWR_REGULATOR_VOLTAGE_SCALE1, PWR_REGULATOR_VOLTAGE_SCALE2 or \r
- * PWR_REGULATOR_VOLTAGE_SCALE3)PWR_REGULATOR_VOLTAGE_SCALE1\r
- */ \r
-uint32_t HAL_PWREx_GetVoltageRange(void)\r
-{\r
- return (PWR->CR1 & PWR_CR1_VOS);\r
-}\r
-\r
-/**\r
- * @brief Configures the main internal regulator output voltage.\r
- * @param VoltageScaling specifies the regulator output voltage to achieve\r
- * a tradeoff between performance and power consumption.\r
- * This parameter can be one of the following values:\r
- * @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output range 1 mode,\r
- * typical output voltage at 1.4 V, \r
- * system frequency up to 216 MHz.\r
- * @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output range 2 mode,\r
- * typical output voltage at 1.2 V, \r
- * system frequency up to 180 MHz.\r
- * @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output range 2 mode,\r
- * typical output voltage at 1.00 V, \r
- * system frequency up to 151 MHz.\r
- * @note To update the system clock frequency(SYSCLK):\r
- * - Set the HSI or HSE as system clock frequency using the HAL_RCC_ClockConfig().\r
- * - Call the HAL_RCC_OscConfig() to configure the PLL.\r
- * - Call HAL_PWREx_ConfigVoltageScaling() API to adjust the voltage scale.\r
- * - Set the new system clock frequency using the HAL_RCC_ClockConfig().\r
- * @note The scale can be modified only when the HSI or HSE clock source is selected \r
- * as system clock source, otherwise the API returns HAL_ERROR. \r
- * @note When the PLL is OFF, the voltage scale 3 is automatically selected and the VOS bits\r
- * value in the PWR_CR1 register are not taken in account.\r
- * @note This API forces the PLL state ON to allow the possibility to configure the voltage scale 1 or 2.\r
- * @note The new voltage scale is active only when the PLL is ON. \r
- * @retval HAL Status\r
- */\r
-HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling)\r
-{\r
- uint32_t tickstart = 0;\r
-\r
- assert_param(IS_PWR_REGULATOR_VOLTAGE(VoltageScaling));\r
-\r
- /* Enable Power ctrl clock */\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
-\r
- /* Check if the PLL is used as system clock or not */\r
- if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL)\r
- {\r
- /* Disable the main PLL */\r
- __HAL_RCC_PLL_DISABLE();\r
- \r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick(); \r
- /* Wait till PLL is disabled */ \r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- \r
- /* Set Range */\r
- __HAL_PWR_VOLTAGESCALING_CONFIG(VoltageScaling);\r
- \r
- /* Enable the main PLL */\r
- __HAL_RCC_PLL_ENABLE();\r
- \r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
- /* Wait till PLL is ready */ \r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- } \r
- }\r
- \r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
- while((__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY) == RESET))\r
- {\r
- if((HAL_GetTick() - tickstart ) > PWR_VOSRDY_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- } \r
- }\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_PWR_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_rcc.c\r
- * @author MCD Application Team\r
- * @brief RCC HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities of the Reset and Clock Control (RCC) peripheral:\r
- * + Initialization and de-initialization functions\r
- * + Peripheral Control functions\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### RCC specific features #####\r
- ==============================================================================\r
- [..]\r
- After reset the device is running from Internal High Speed oscillator\r
- (HSI 16MHz) with Flash 0 wait state, Flash prefetch buffer, D-Cache\r
- and I-Cache are disabled, and all peripherals are off except internal\r
- SRAM, Flash and JTAG.\r
- (+) There is no prescaler on High speed (AHB) and Low speed (APB) busses;\r
- all peripherals mapped on these busses are running at HSI speed.\r
- (+) The clock for all peripherals is switched off, except the SRAM and FLASH.\r
- (+) All GPIOs are in input floating state, except the JTAG pins which\r
- are assigned to be used for debug purpose.\r
-\r
- [..]\r
- Once the device started from reset, the user application has to:\r
- (+) Configure the clock source to be used to drive the System clock\r
- (if the application needs higher frequency/performance)\r
- (+) Configure the System clock frequency and Flash settings\r
- (+) Configure the AHB and APB busses prescalers\r
- (+) Enable the clock for the peripheral(s) to be used\r
- (+) Configure the clock source(s) for peripherals which clocks are not\r
- derived from the System clock (I2S, RTC, ADC, USB OTG FS/SDIO/RNG)\r
-\r
- ##### RCC Limitations #####\r
- ==============================================================================\r
- [..]\r
- A delay between an RCC peripheral clock enable and the effective peripheral\r
- enabling should be taken into account in order to manage the peripheral read/write\r
- from/to registers.\r
- (+) This delay depends on the peripheral mapping.\r
- (+) If peripheral is mapped on AHB: the delay is 2 AHB clock cycle\r
- after the clock enable bit is set on the hardware register\r
- (+) If peripheral is mapped on APB: the delay is 2 APB clock cycle\r
- after the clock enable bit is set on the hardware register\r
-\r
- [..]\r
- Implemented Workaround:\r
- (+) For AHB & APB peripherals, a dummy read to the peripheral register has been\r
- inserted in each __HAL_RCC_PPP_CLK_ENABLE() macro.\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup RCC RCC\r
- * @brief RCC HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_RCC_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/* Private macro -------------------------------------------------------------*/\r
-/** @defgroup RCC_Private_Macros RCC Private Macros\r
- * @{\r
- */\r
-\r
-#define MCO1_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()\r
-#define MCO1_GPIO_PORT GPIOA\r
-#define MCO1_PIN GPIO_PIN_8\r
-\r
-#define MCO2_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()\r
-#define MCO2_GPIO_PORT GPIOC\r
-#define MCO2_PIN GPIO_PIN_9\r
-\r
-/**\r
- * @}\r
- */\r
-/* Private variables ---------------------------------------------------------*/\r
-/** @defgroup RCC_Private_Variables RCC Private Variables\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Exported functions ---------------------------------------------------------*/\r
-\r
-/** @defgroup RCC_Exported_Functions RCC Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup RCC_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @brief Initialization and Configuration functions\r
- *\r
- @verbatim\r
- ===============================================================================\r
-##### Initialization and de-initialization functions #####\r
- ===============================================================================\r
- [..]\r
- This section provides functions allowing to configure the internal/external oscillators\r
- (HSE, HSI, LSE, LSI, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB, APB1\r
- and APB2).\r
-\r
- [..] Internal/external clock and PLL configuration\r
- (#) HSI (high-speed internal), 16 MHz factory-trimmed RC used directly or through\r
- the PLL as System clock source.\r
-\r
- (#) LSI (low-speed internal), 32 KHz low consumption RC used as IWDG and/or RTC\r
- clock source.\r
-\r
- (#) HSE (high-speed external), 4 to 26 MHz crystal oscillator used directly or\r
- through the PLL as System clock source. Can be used also as RTC clock source.\r
-\r
- (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source.\r
-\r
- (#) PLL (clocked by HSI or HSE), featuring two different output clocks:\r
- (++) The first output is used to generate the high speed system clock (up to 216 MHz)\r
- (++) The second output is used to generate the clock for the USB OTG FS (48 MHz),\r
- the random analog generator (<=48 MHz) and the SDIO (<= 48 MHz).\r
-\r
- (#) CSS (Clock security system), once enable using the function HAL_RCC_EnableCSS()\r
- and if a HSE clock failure occurs(HSE used directly or through PLL as System\r
- clock source), the System clock is automatically switched to HSI and an interrupt\r
- is generated if enabled. The interrupt is linked to the Cortex-M7 NMI\r
- (Non-Maskable Interrupt) exception vector.\r
-\r
- (#) MCO1 (microcontroller clock output), used to output HSI, LSE, HSE or PLL\r
- clock (through a configurable prescaler) on PA8 pin.\r
-\r
- (#) MCO2 (microcontroller clock output), used to output HSE, PLL, SYSCLK or PLLI2S\r
- clock (through a configurable prescaler) on PC9 pin.\r
-\r
- [..] System, AHB and APB busses clocks configuration\r
- (#) Several clock sources can be used to drive the System clock (SYSCLK): HSI,\r
- HSE and PLL.\r
- The AHB clock (HCLK) is derived from System clock through configurable\r
- prescaler and used to clock the CPU, memory and peripherals mapped\r
- on AHB bus (DMA, GPIO...). APB1 (PCLK1) and APB2 (PCLK2) clocks are derived\r
- from AHB clock through configurable prescalers and used to clock\r
- the peripherals mapped on these busses. You can use\r
- "HAL_RCC_GetSysClockFreq()" function to retrieve the frequencies of these clocks.\r
-\r
- -@- All the peripheral clocks are derived from the System clock (SYSCLK) except:\r
- (+@) I2S: the I2S clock can be derived either from a specific PLL (PLLI2S) or\r
- from an external clock mapped on the I2S_CKIN pin.\r
- You have to use __HAL_RCC_PLLI2S_CONFIG() macro to configure this clock.\r
- (+@) SAI: the SAI clock can be derived either from a specific PLL (PLLI2S) or (PLLSAI) or\r
- from an external clock mapped on the I2S_CKIN pin.\r
- You have to use __HAL_RCC_PLLI2S_CONFIG() macro to configure this clock.\r
- (+@) RTC: the RTC clock can be derived either from the LSI, LSE or HSE clock\r
- divided by 2 to 31. You have to use __HAL_RCC_RTC_CONFIG() and __HAL_RCC_RTC_ENABLE()\r
- macros to configure this clock.\r
- (+@) USB OTG FS, SDIO and RTC: USB OTG FS require a frequency equal to 48 MHz\r
- to work correctly, while the SDIO require a frequency equal or lower than\r
- to 48. This clock is derived of the main PLL through PLLQ divider.\r
- (+@) IWDG clock which is always the LSI clock.\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Resets the RCC clock configuration to the default reset state.\r
- * @note The default reset state of the clock configuration is given below:\r
- * - HSI ON and used as system clock source\r
- * - HSE, PLL, PLLI2S and PLLSAI OFF\r
- * - AHB, APB1 and APB2 prescaler set to 1.\r
- * - CSS, MCO1 and MCO2 OFF\r
- * - All interrupts disabled\r
- * @note This function doesn't modify the configuration of the\r
- * - Peripheral clocks\r
- * - LSI, LSE and RTC clocks\r
- * @retval None\r
- */\r
-HAL_StatusTypeDef HAL_RCC_DeInit(void)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Set HSION bit to the reset value */\r
- SET_BIT(RCC->CR, RCC_CR_HSION);\r
-\r
- /* Wait till HSI is ready */\r
- while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RESET)\r
- {\r
- if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Set HSITRIM[4:0] bits to the reset value */\r
- SET_BIT(RCC->CR, RCC_CR_HSITRIM_4);\r
-\r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Reset CFGR register */\r
- CLEAR_REG(RCC->CFGR);\r
-\r
- /* Wait till clock switch is ready */\r
- while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RESET)\r
- {\r
- if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Clear HSEON, HSEBYP and CSSON bits */\r
- CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_CSSON);\r
-\r
- /* Wait till HSE is disabled */\r
- while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != RESET)\r
- {\r
- if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Clear PLLON bit */\r
- CLEAR_BIT(RCC->CR, RCC_CR_PLLON);\r
-\r
- /* Wait till PLL is disabled */\r
- while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != RESET)\r
- {\r
- if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Reset PLLI2SON bit */\r
- CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON);\r
-\r
- /* Wait till PLLI2S is disabled */\r
- while (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET)\r
- {\r
- if ((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Get Start Tick */\r
- tickstart = HAL_GetTick();\r
-\r
- /* Reset PLLSAI bit */\r
- CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION);\r
-\r
- /* Wait till PLLSAI is disabled */\r
- while (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) != RESET)\r
- {\r
- if ((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Once PLL, PLLI2S and PLLSAI are OFF, reset PLLCFGR register to default value */\r
- RCC->PLLCFGR = RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLQ_2 | 0x20000000U;\r
-\r
- /* Reset PLLI2SCFGR register to default value */\r
- RCC->PLLI2SCFGR = RCC_PLLI2SCFGR_PLLI2SN_6 | RCC_PLLI2SCFGR_PLLI2SN_7 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SR_1;\r
-\r
- /* Reset PLLSAICFGR register to default value */\r
- RCC->PLLSAICFGR = RCC_PLLSAICFGR_PLLSAIN_6 | RCC_PLLSAICFGR_PLLSAIN_7 | RCC_PLLSAICFGR_PLLSAIQ_2 | 0x20000000U;\r
-\r
- /* Disable all interrupts */\r
- CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE | RCC_CIR_LSERDYIE | RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYIE | RCC_CIR_PLLI2SRDYIE | RCC_CIR_PLLSAIRDYIE);\r
-\r
- /* Clear all interrupt flags */\r
- SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR_PLLRDYC | RCC_CIR_PLLI2SRDYC | RCC_CIR_PLLSAIRDYC | RCC_CIR_CSSC);\r
-\r
- /* Clear LSION bit */\r
- CLEAR_BIT(RCC->CSR, RCC_CSR_LSION);\r
-\r
- /* Reset all CSR flags */\r
- SET_BIT(RCC->CSR, RCC_CSR_RMVF);\r
-\r
- /* Update the SystemCoreClock global variable */\r
- SystemCoreClock = HSI_VALUE;\r
-\r
- /* Adapt Systick interrupt period */\r
- if(HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- return HAL_OK;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Initializes the RCC Oscillators according to the specified parameters in the\r
- * RCC_OscInitTypeDef.\r
- * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that\r
- * contains the configuration information for the RCC Oscillators.\r
- * @note The PLL is not disabled when used as system clock.\r
- * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not\r
- * supported by this function. User should request a transition to LSE Off\r
- * first and then LSE On or LSE Bypass.\r
- * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not\r
- * supported by this function. User should request a transition to HSE Off\r
- * first and then HSE On or HSE Bypass.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)\r
-{\r
- uint32_t tickstart;\r
- FlagStatus pwrclkchanged = RESET;\r
-\r
- /* Check Null pointer */\r
- if(RCC_OscInitStruct == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));\r
-\r
- /*------------------------------- HSE Configuration ------------------------*/\r
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));\r
- /* When the HSE is used as system clock or clock source for PLL, It can not be disabled */\r
- if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)\r
- || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))\r
- {\r
- if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
- else\r
- {\r
- /* Set the new HSE configuration ---------------------------------------*/\r
- __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);\r
-\r
- /* Check the HSE State */\r
- if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)\r
- {\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till HSE is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till HSE is bypassed or disabled */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
- }\r
- /*----------------------------- HSI Configuration --------------------------*/\r
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));\r
- assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));\r
-\r
- /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */\r
- if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)\r
- || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))\r
- {\r
- /* When HSI is used as system clock it will not disabled */\r
- if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Otherwise, just the calibration is allowed */\r
- else\r
- {\r
- /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/\r
- __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);\r
- }\r
- }\r
- else\r
- {\r
- /* Check the HSI State */\r
- if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)\r
- {\r
- /* Enable the Internal High Speed oscillator (HSI). */\r
- __HAL_RCC_HSI_ENABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till HSI is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/\r
- __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);\r
- }\r
- else\r
- {\r
- /* Disable the Internal High Speed oscillator (HSI). */\r
- __HAL_RCC_HSI_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till HSI is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
- }\r
- /*------------------------------ LSI Configuration -------------------------*/\r
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));\r
-\r
- /* Check the LSI State */\r
- if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)\r
- {\r
- /* Enable the Internal Low Speed oscillator (LSI). */\r
- __HAL_RCC_LSI_ENABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till LSI is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Disable the Internal Low Speed oscillator (LSI). */\r
- __HAL_RCC_LSI_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till LSI is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
- /*------------------------------ LSE Configuration -------------------------*/\r
- if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));\r
-\r
- /* Update LSE configuration in Backup Domain control register */\r
- /* Requires to enable write access to Backup Domain of necessary */\r
- if(__HAL_RCC_PWR_IS_CLK_DISABLED())\r
- {\r
- /* Enable Power Clock*/\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
- pwrclkchanged = SET;\r
- }\r
-\r
- if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))\r
- {\r
- /* Enable write access to Backup domain */\r
- PWR->CR1 |= PWR_CR1_DBP;\r
-\r
- /* Wait for Backup domain Write protection disable */\r
- tickstart = HAL_GetTick();\r
-\r
- while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))\r
- {\r
- if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
-\r
- /* Set the new LSE configuration -----------------------------------------*/\r
- __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);\r
- /* Check the LSE State */\r
- if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)\r
- {\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till LSE is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till LSE is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
-\r
- /* Restore clock configuration if changed */\r
- if(pwrclkchanged == SET)\r
- {\r
- __HAL_RCC_PWR_CLK_DISABLE();\r
- }\r
- }\r
- /*-------------------------------- PLL Configuration -----------------------*/\r
- /* Check the parameters */\r
- assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));\r
- if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)\r
- {\r
- /* Check if the PLL is used as system clock or not */\r
- if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)\r
- {\r
- if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));\r
- assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->PLL.PLLM));\r
- assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN));\r
- assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP));\r
- assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ));\r
-#if defined (RCC_PLLCFGR_PLLR)\r
- assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR));\r
-#endif\r
-\r
- /* Disable the main PLL. */\r
- __HAL_RCC_PLL_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLL is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Configure the main PLL clock source, multiplication and division factors. */\r
-#if defined (RCC_PLLCFGR_PLLR)\r
- __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,\r
- RCC_OscInitStruct->PLL.PLLM,\r
- RCC_OscInitStruct->PLL.PLLN,\r
- RCC_OscInitStruct->PLL.PLLP,\r
- RCC_OscInitStruct->PLL.PLLQ,\r
- RCC_OscInitStruct->PLL.PLLR);\r
-#else\r
- __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,\r
- RCC_OscInitStruct->PLL.PLLM,\r
- RCC_OscInitStruct->PLL.PLLN,\r
- RCC_OscInitStruct->PLL.PLLP,\r
- RCC_OscInitStruct->PLL.PLLQ);\r
-#endif\r
-\r
- /* Enable the main PLL. */\r
- __HAL_RCC_PLL_ENABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLL is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Disable the main PLL. */\r
- __HAL_RCC_PLL_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLL is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the CPU, AHB and APB busses clocks according to the specified\r
- * parameters in the RCC_ClkInitStruct.\r
- * @param RCC_ClkInitStruct pointer to an RCC_OscInitTypeDef structure that\r
- * contains the configuration information for the RCC peripheral.\r
- * @param FLatency FLASH Latency, this parameter depend on device selected\r
- *\r
- * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency\r
- * and updated by HAL_RCC_GetHCLKFreq() function called within this function\r
- *\r
- * @note The HSI is used (enabled by hardware) as system clock source after\r
- * startup from Reset, wake-up from STOP and STANDBY mode, or in case\r
- * of failure of the HSE used directly or indirectly as system clock\r
- * (if the Clock Security System CSS is enabled).\r
- *\r
- * @note A switch from one clock source to another occurs only if the target\r
- * clock source is ready (clock stable after startup delay or PLL locked).\r
- * If a clock source which is not yet ready is selected, the switch will\r
- * occur when the clock source will be ready.\r
- * You can use HAL_RCC_GetClockConfig() function to know which clock is\r
- * currently used as system clock source.\r
- * @note Depending on the device voltage range, the software has to set correctly\r
- * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency\r
- * (for more details refer to section above "Initialization/de-initialization functions")\r
- * @retval None\r
- */\r
-HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)\r
-{\r
- uint32_t tickstart = 0;\r
-\r
- /* Check Null pointer */\r
- if(RCC_ClkInitStruct == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType));\r
- assert_param(IS_FLASH_LATENCY(FLatency));\r
-\r
- /* To correctly read data from FLASH memory, the number of wait states (LATENCY)\r
- must be correctly programmed according to the frequency of the CPU clock\r
- (HCLK) and the supply voltage of the device. */\r
-\r
- /* Increasing the CPU frequency */\r
- if(FLatency > __HAL_FLASH_GET_LATENCY())\r
- {\r
- /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\r
- __HAL_FLASH_SET_LATENCY(FLatency);\r
-\r
- /* Check that the new number of wait states is taken into account to access the Flash\r
- memory by reading the FLASH_ACR register */\r
- if(__HAL_FLASH_GET_LATENCY() != FLatency)\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
-\r
- /*-------------------------- HCLK Configuration --------------------------*/\r
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)\r
- {\r
- /* Set the highest APBx dividers in order to ensure that we do not go through\r
- a non-spec phase whatever we decrease or increase HCLK. */\r
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)\r
- {\r
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);\r
- }\r
-\r
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)\r
- {\r
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));\r
- }\r
-\r
- /* Set the new HCLK clock divider */\r
- assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));\r
- MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);\r
- }\r
-\r
- /*------------------------- SYSCLK Configuration ---------------------------*/\r
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)\r
- {\r
- assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));\r
-\r
- /* HSE is selected as System Clock Source */\r
- if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)\r
- {\r
- /* Check the HSE ready flag */\r
- if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
- /* PLL is selected as System Clock Source */\r
- else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)\r
- {\r
- /* Check the PLL ready flag */\r
- if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
- /* HSI is selected as System Clock Source */\r
- else\r
- {\r
- /* Check the HSI ready flag */\r
- if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
-\r
- __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))\r
- {\r
- if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
-\r
- /* Decreasing the number of wait states because of lower CPU frequency */\r
- if(FLatency < __HAL_FLASH_GET_LATENCY())\r
- {\r
- /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */\r
- __HAL_FLASH_SET_LATENCY(FLatency);\r
-\r
- /* Check that the new number of wait states is taken into account to access the Flash\r
- memory by reading the FLASH_ACR register */\r
- if(__HAL_FLASH_GET_LATENCY() != FLatency)\r
- {\r
- return HAL_ERROR;\r
- }\r
- }\r
-\r
- /*-------------------------- PCLK1 Configuration ---------------------------*/\r
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)\r
- {\r
- assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));\r
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);\r
- }\r
-\r
- /*-------------------------- PCLK2 Configuration ---------------------------*/\r
- if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)\r
- {\r
- assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));\r
- MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));\r
- }\r
-\r
- /* Update the SystemCoreClock global variable */\r
- SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];\r
-\r
- /* Configure the source of time base considering new system clocks settings*/\r
- HAL_InitTick (TICK_INT_PRIORITY);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCC_Exported_Functions_Group2 Peripheral Control functions\r
- * @brief RCC clocks control functions\r
- *\r
- @verbatim\r
- ===============================================================================\r
- ##### Peripheral Control functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides a set of functions allowing to control the RCC Clocks\r
- frequencies.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Selects the clock source to output on MCO1 pin(PA8) or on MCO2 pin(PC9).\r
- * @note PA8/PC9 should be configured in alternate function mode.\r
- * @param RCC_MCOx specifies the output direction for the clock source.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_MCO1: Clock source to output on MCO1 pin(PA8).\r
- * @arg RCC_MCO2: Clock source to output on MCO2 pin(PC9).\r
- * @param RCC_MCOSource specifies the clock source to output.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_MCO1SOURCE_HSI: HSI clock selected as MCO1 source\r
- * @arg RCC_MCO1SOURCE_LSE: LSE clock selected as MCO1 source\r
- * @arg RCC_MCO1SOURCE_HSE: HSE clock selected as MCO1 source\r
- * @arg RCC_MCO1SOURCE_PLLCLK: main PLL clock selected as MCO1 source\r
- * @arg RCC_MCO2SOURCE_SYSCLK: System clock (SYSCLK) selected as MCO2 source\r
- * @arg RCC_MCO2SOURCE_PLLI2SCLK: PLLI2S clock selected as MCO2 source\r
- * @arg RCC_MCO2SOURCE_HSE: HSE clock selected as MCO2 source\r
- * @arg RCC_MCO2SOURCE_PLLCLK: main PLL clock selected as MCO2 source\r
- * @param RCC_MCODiv specifies the MCOx prescaler.\r
- * This parameter can be one of the following values:\r
- * @arg RCC_MCODIV_1: no division applied to MCOx clock\r
- * @arg RCC_MCODIV_2: division by 2 applied to MCOx clock\r
- * @arg RCC_MCODIV_3: division by 3 applied to MCOx clock\r
- * @arg RCC_MCODIV_4: division by 4 applied to MCOx clock\r
- * @arg RCC_MCODIV_5: division by 5 applied to MCOx clock\r
- * @retval None\r
- */\r
-void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv)\r
-{\r
- GPIO_InitTypeDef GPIO_InitStruct;\r
- /* Check the parameters */\r
- assert_param(IS_RCC_MCO(RCC_MCOx));\r
- assert_param(IS_RCC_MCODIV(RCC_MCODiv));\r
- /* RCC_MCO1 */\r
- if(RCC_MCOx == RCC_MCO1)\r
- {\r
- assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));\r
-\r
- /* MCO1 Clock Enable */\r
- MCO1_CLK_ENABLE();\r
-\r
- /* Configure the MCO1 pin in alternate function mode */\r
- GPIO_InitStruct.Pin = MCO1_PIN;\r
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Alternate = GPIO_AF0_MCO;\r
- HAL_GPIO_Init(MCO1_GPIO_PORT, &GPIO_InitStruct);\r
-\r
- /* Mask MCO1 and MCO1PRE[2:0] bits then Select MCO1 clock source and prescaler */\r
- MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), (RCC_MCOSource | RCC_MCODiv));\r
- }\r
- else\r
- {\r
- assert_param(IS_RCC_MCO2SOURCE(RCC_MCOSource));\r
-\r
- /* MCO2 Clock Enable */\r
- MCO2_CLK_ENABLE();\r
-\r
- /* Configure the MCO2 pin in alternate function mode */\r
- GPIO_InitStruct.Pin = MCO2_PIN;\r
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;\r
- GPIO_InitStruct.Pull = GPIO_NOPULL;\r
- GPIO_InitStruct.Alternate = GPIO_AF0_MCO;\r
- HAL_GPIO_Init(MCO2_GPIO_PORT, &GPIO_InitStruct);\r
-\r
- /* Mask MCO2 and MCO2PRE[2:0] bits then Select MCO2 clock source and prescaler */\r
- MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), (RCC_MCOSource | (RCC_MCODiv << 3)));\r
- }\r
-}\r
-\r
-/**\r
- * @brief Enables the Clock Security System.\r
- * @note If a failure is detected on the HSE oscillator clock, this oscillator\r
- * is automatically disabled and an interrupt is generated to inform the\r
- * software about the failure (Clock Security System Interrupt, CSSI),\r
- * allowing the MCU to perform rescue operations. The CSSI is linked to\r
- * the Cortex-M7 NMI (Non-Maskable Interrupt) exception vector.\r
- * @retval None\r
- */\r
-void HAL_RCC_EnableCSS(void)\r
-{\r
- SET_BIT(RCC->CR, RCC_CR_CSSON);\r
-}\r
-\r
-/**\r
- * @brief Disables the Clock Security System.\r
- * @retval None\r
- */\r
-void HAL_RCC_DisableCSS(void)\r
-{\r
- CLEAR_BIT(RCC->CR, RCC_CR_CSSON);\r
-}\r
-\r
-/**\r
- * @brief Returns the SYSCLK frequency\r
- *\r
- * @note The system frequency computed by this function is not the real\r
- * frequency in the chip. It is calculated based on the predefined\r
- * constant and the selected clock source:\r
- * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(*)\r
- * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(**)\r
- * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE(**)\r
- * or HSI_VALUE(*) multiplied/divided by the PLL factors.\r
- * @note (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value\r
- * 16 MHz) but the real value may vary depending on the variations\r
- * in voltage and temperature.\r
- * @note (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value\r
- * 25 MHz), user has to ensure that HSE_VALUE is same as the real\r
- * frequency of the crystal used. Otherwise, this function may\r
- * have wrong result.\r
- *\r
- * @note The result of this function could be not correct when using fractional\r
- * value for HSE crystal.\r
- *\r
- * @note This function can be used by the user application to compute the\r
- * baudrate for the communication peripherals or configure other parameters.\r
- *\r
- * @note Each time SYSCLK changes, this function must be called to update the\r
- * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect.\r
- *\r
- *\r
- * @retval SYSCLK frequency\r
- */\r
-uint32_t HAL_RCC_GetSysClockFreq(void)\r
-{\r
- uint32_t pllm = 0, pllvco = 0, pllp = 0;\r
- uint32_t sysclockfreq = 0;\r
-\r
- /* Get SYSCLK source -------------------------------------------------------*/\r
- switch (RCC->CFGR & RCC_CFGR_SWS)\r
- {\r
- case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */\r
- {\r
- sysclockfreq = HSI_VALUE;\r
- break;\r
- }\r
- case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */\r
- {\r
- sysclockfreq = HSE_VALUE;\r
- break;\r
- }\r
- case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock source */\r
- {\r
- /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN\r
- SYSCLK = PLL_VCO / PLLP */\r
- pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;\r
- if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)\r
- {\r
- /* HSE used as PLL clock source */\r
- pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);\r
- }\r
- else\r
- {\r
- /* HSI used as PLL clock source */\r
- pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);\r
- }\r
- pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1 ) *2);\r
-\r
- sysclockfreq = pllvco/pllp;\r
- break;\r
- }\r
- default:\r
- {\r
- sysclockfreq = HSI_VALUE;\r
- break;\r
- }\r
- }\r
- return sysclockfreq;\r
-}\r
-\r
-/**\r
- * @brief Returns the HCLK frequency\r
- * @note Each time HCLK changes, this function must be called to update the\r
- * right HCLK value. Otherwise, any configuration based on this function will be incorrect.\r
- * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency.\r
- * @retval HCLK frequency\r
- */\r
-uint32_t HAL_RCC_GetHCLKFreq(void)\r
-{\r
- return SystemCoreClock;\r
-}\r
-\r
-/**\r
- * @brief Returns the PCLK1 frequency\r
- * @note Each time PCLK1 changes, this function must be called to update the\r
- * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.\r
- * @retval PCLK1 frequency\r
- */\r
-uint32_t HAL_RCC_GetPCLK1Freq(void)\r
-{\r
- /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/\r
- return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1)>> RCC_CFGR_PPRE1_Pos]);\r
-}\r
-\r
-/**\r
- * @brief Returns the PCLK2 frequency\r
- * @note Each time PCLK2 changes, this function must be called to update the\r
- * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.\r
- * @retval PCLK2 frequency\r
- */\r
-uint32_t HAL_RCC_GetPCLK2Freq(void)\r
-{\r
- /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/\r
- return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2)>> RCC_CFGR_PPRE2_Pos]);\r
-}\r
-\r
-/**\r
- * @brief Configures the RCC_OscInitStruct according to the internal\r
- * RCC configuration registers.\r
- * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that\r
- * will be configured.\r
- * @retval None\r
- */\r
-void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)\r
-{\r
- /* Set all possible values for the Oscillator type parameter ---------------*/\r
- RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;\r
-\r
- /* Get the HSE configuration -----------------------------------------------*/\r
- if((RCC->CR &RCC_CR_HSEBYP) == RCC_CR_HSEBYP)\r
- {\r
- RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;\r
- }\r
- else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON)\r
- {\r
- RCC_OscInitStruct->HSEState = RCC_HSE_ON;\r
- }\r
- else\r
- {\r
- RCC_OscInitStruct->HSEState = RCC_HSE_OFF;\r
- }\r
-\r
- /* Get the HSI configuration -----------------------------------------------*/\r
- if((RCC->CR &RCC_CR_HSION) == RCC_CR_HSION)\r
- {\r
- RCC_OscInitStruct->HSIState = RCC_HSI_ON;\r
- }\r
- else\r
- {\r
- RCC_OscInitStruct->HSIState = RCC_HSI_OFF;\r
- }\r
-\r
- RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR &RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);\r
-\r
- /* Get the LSE configuration -----------------------------------------------*/\r
- if((RCC->BDCR &RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)\r
- {\r
- RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;\r
- }\r
- else if((RCC->BDCR &RCC_BDCR_LSEON) == RCC_BDCR_LSEON)\r
- {\r
- RCC_OscInitStruct->LSEState = RCC_LSE_ON;\r
- }\r
- else\r
- {\r
- RCC_OscInitStruct->LSEState = RCC_LSE_OFF;\r
- }\r
-\r
- /* Get the LSI configuration -----------------------------------------------*/\r
- if((RCC->CSR &RCC_CSR_LSION) == RCC_CSR_LSION)\r
- {\r
- RCC_OscInitStruct->LSIState = RCC_LSI_ON;\r
- }\r
- else\r
- {\r
- RCC_OscInitStruct->LSIState = RCC_LSI_OFF;\r
- }\r
-\r
- /* Get the PLL configuration -----------------------------------------------*/\r
- if((RCC->CR &RCC_CR_PLLON) == RCC_CR_PLLON)\r
- {\r
- RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;\r
- }\r
- else\r
- {\r
- RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF;\r
- }\r
- RCC_OscInitStruct->PLL.PLLSource = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);\r
- RCC_OscInitStruct->PLL.PLLM = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM);\r
- RCC_OscInitStruct->PLL.PLLN = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);\r
- RCC_OscInitStruct->PLL.PLLP = (uint32_t)((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) + RCC_PLLCFGR_PLLP_0) << 1) >> RCC_PLLCFGR_PLLP_Pos);\r
- RCC_OscInitStruct->PLL.PLLQ = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos);\r
-#if defined (RCC_PLLCFGR_PLLR)\r
- RCC_OscInitStruct->PLL.PLLR = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> POSITION_VAL(RCC_PLLCFGR_PLLR));\r
-#endif\r
-}\r
-\r
-/**\r
- * @brief Configures the RCC_ClkInitStruct according to the internal\r
- * RCC configuration registers.\r
- * @param RCC_ClkInitStruct pointer to an RCC_ClkInitTypeDef structure that\r
- * will be configured.\r
- * @param pFLatency Pointer on the Flash Latency.\r
- * @retval None\r
- */\r
-void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency)\r
-{\r
- /* Set all possible values for the Clock type parameter --------------------*/\r
- RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;\r
-\r
- /* Get the SYSCLK configuration --------------------------------------------*/\r
- RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW);\r
-\r
- /* Get the HCLK configuration ----------------------------------------------*/\r
- RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE);\r
-\r
- /* Get the APB1 configuration ----------------------------------------------*/\r
- RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1);\r
-\r
- /* Get the APB2 configuration ----------------------------------------------*/\r
- RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3);\r
-\r
- /* Get the Flash Wait State (Latency) configuration ------------------------*/\r
- *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY);\r
-}\r
-\r
-/**\r
- * @brief This function handles the RCC CSS interrupt request.\r
- * @note This API should be called under the NMI_Handler().\r
- * @retval None\r
- */\r
-void HAL_RCC_NMI_IRQHandler(void)\r
-{\r
- /* Check RCC CSSF flag */\r
- if(__HAL_RCC_GET_IT(RCC_IT_CSS))\r
- {\r
- /* RCC Clock Security System interrupt user callback */\r
- HAL_RCC_CSSCallback();\r
-\r
- /* Clear RCC CSS pending bit */\r
- __HAL_RCC_CLEAR_IT(RCC_IT_CSS);\r
- }\r
-}\r
-\r
-/**\r
- * @brief RCC Clock Security System interrupt callback\r
- * @retval None\r
- */\r
-__weak void HAL_RCC_CSSCallback(void)\r
-{\r
- /* NOTE : This function Should not be modified, when the callback is needed,\r
- the HAL_RCC_CSSCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_RCC_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_rcc_ex.c\r
- * @author MCD Application Team\r
- * @brief Extension RCC HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities RCC extension peripheral:\r
- * + Extended Peripheral Control functions\r
- *\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup RCCEx RCCEx\r
- * @brief RCCEx HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_RCC_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @defgroup RCCEx_Private_Defines RCCEx Private Defines\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-/* Private macro -------------------------------------------------------------*/\r
-/** @defgroup RCCEx_Private_Macros RCCEx Private Macros\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_Private_Macros RCCEx Private Macros\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/* Private functions ---------------------------------------------------------*/\r
-\r
-/** @defgroup RCCEx_Exported_Functions RCCEx Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup RCCEx_Exported_Functions_Group1 Extended Peripheral Control functions\r
- * @brief Extended Peripheral Control functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Extended Peripheral Control functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides a set of functions allowing to control the RCC Clocks\r
- frequencies.\r
- [..]\r
- (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to\r
- select the RTC clock source; in this case the Backup domain will be reset in\r
- order to modify the RTC Clock source, as consequence RTC registers (including\r
- the backup registers) and RCC_BDCR register will be set to their reset values.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || \\r
- defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || \\r
- defined (STM32F750xx)\r
-/**\r
- * @brief Initializes the RCC extended peripherals clocks according to the specified\r
- * parameters in the RCC_PeriphCLKInitTypeDef.\r
- * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that\r
- * contains the configuration information for the Extended Peripherals\r
- * clocks(I2S, SAI, LTDC, RTC, TIM, UARTs, USARTs, LTPIM, SDMMC...).\r
- *\r
- * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select\r
- * the RTC clock source; in this case the Backup domain will be reset in\r
- * order to modify the RTC Clock source, as consequence RTC registers (including\r
- * the backup registers) are set to their reset values.\r
- *\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)\r
-{\r
- uint32_t tickstart = 0;\r
- uint32_t tmpreg0 = 0;\r
- uint32_t tmpreg1 = 0;\r
- uint32_t plli2sused = 0;\r
- uint32_t pllsaiused = 0;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));\r
-\r
- /*----------------------------------- I2S configuration ----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection));\r
-\r
- /* Configure I2S Clock source */\r
- __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);\r
-\r
- /* Enable the PLLI2S when it's used as clock source for I2S */\r
- if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)\r
- {\r
- plli2sused = 1;\r
- }\r
- }\r
-\r
- /*------------------------------------ SAI1 configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection));\r
-\r
- /* Configure SAI1 Clock source */\r
- __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);\r
- /* Enable the PLLI2S when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)\r
- {\r
- plli2sused = 1;\r
- }\r
- /* Enable the PLLSAI when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)\r
- {\r
- pllsaiused = 1;\r
- }\r
- }\r
-\r
- /*------------------------------------ SAI2 configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection));\r
-\r
- /* Configure SAI2 Clock source */\r
- __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection);\r
-\r
- /* Enable the PLLI2S when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)\r
- {\r
- plli2sused = 1;\r
- }\r
- /* Enable the PLLSAI when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)\r
- {\r
- pllsaiused = 1;\r
- }\r
- }\r
-\r
- /*-------------------------------------- SPDIF-RX Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)\r
- {\r
- plli2sused = 1;\r
- }\r
-\r
- /*------------------------------------ RTC configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC))\r
- {\r
- /* Check for RTC Parameters used to output RTCCLK */\r
- assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));\r
-\r
- /* Enable Power Clock*/\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
-\r
- /* Enable write access to Backup domain */\r
- PWR->CR1 |= PWR_CR1_DBP;\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait for Backup domain Write protection disable */\r
- while((PWR->CR1 & PWR_CR1_DBP) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Reset the Backup domain only if the RTC Clock source selection is modified */\r
- tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL);\r
-\r
- if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))\r
- {\r
- /* Store the content of BDCR register before the reset of Backup Domain */\r
- tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));\r
-\r
- /* RTC Clock selection can be changed only if the Backup Domain is reset */\r
- __HAL_RCC_BACKUPRESET_FORCE();\r
- __HAL_RCC_BACKUPRESET_RELEASE();\r
-\r
- /* Restore the Content of BDCR register */\r
- RCC->BDCR = tmpreg0;\r
-\r
- /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */\r
- if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))\r
- {\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till LSE is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
- __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);\r
- }\r
-\r
- /*------------------------------------ TIM configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection));\r
-\r
- /* Configure Timer Prescaler */\r
- __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection);\r
- }\r
-\r
- /*-------------------------------------- I2C1 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));\r
-\r
- /* Configure the I2C1 clock source */\r
- __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- I2C2 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection));\r
-\r
- /* Configure the I2C2 clock source */\r
- __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- I2C3 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));\r
-\r
- /* Configure the I2C3 clock source */\r
- __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- I2C4 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection));\r
-\r
- /* Configure the I2C4 clock source */\r
- __HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART1 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));\r
-\r
- /* Configure the USART1 clock source */\r
- __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART2 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));\r
-\r
- /* Configure the USART2 clock source */\r
- __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART3 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection));\r
-\r
- /* Configure the USART3 clock source */\r
- __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART4 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection));\r
-\r
- /* Configure the UART4 clock source */\r
- __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART5 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection));\r
-\r
- /* Configure the UART5 clock source */\r
- __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART6 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection));\r
-\r
- /* Configure the USART6 clock source */\r
- __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART7 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection));\r
-\r
- /* Configure the UART7 clock source */\r
- __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART8 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection));\r
-\r
- /* Configure the UART8 clock source */\r
- __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection);\r
- }\r
-\r
- /*--------------------------------------- CEC Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection));\r
-\r
- /* Configure the CEC clock source */\r
- __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection);\r
- }\r
-\r
- /*-------------------------------------- CK48 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection));\r
-\r
- /* Configure the CLK48 source */\r
- __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection);\r
-\r
- /* Enable the PLLSAI when it's used as clock source for CK48 */\r
- if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP)\r
- {\r
- pllsaiused = 1;\r
- }\r
- }\r
-\r
- /*-------------------------------------- LTDC Configuration -----------------------------------*/\r
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC)\r
- {\r
- pllsaiused = 1;\r
- }\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
- /*-------------------------------------- LPTIM1 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection));\r
-\r
- /* Configure the LTPIM1 clock source */\r
- __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);\r
- }\r
-\r
- /*------------------------------------- SDMMC1 Configuration ------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection));\r
-\r
- /* Configure the SDMMC1 clock source */\r
- __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection);\r
- }\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
- /*------------------------------------- SDMMC2 Configuration ------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection));\r
-\r
- /* Configure the SDMMC2 clock source */\r
- __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection);\r
- }\r
-\r
- /*------------------------------------- DFSDM1 Configuration -------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection));\r
-\r
- /* Configure the DFSDM1 interface clock source */\r
- __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection);\r
- }\r
-\r
- /*------------------------------------- DFSDM AUDIO Configuration -------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_DFSDM1AUDIOCLKSOURCE(PeriphClkInit->Dfsdm1AudioClockSelection));\r
-\r
- /* Configure the DFSDM interface clock source */\r
- __HAL_RCC_DFSDM1AUDIO_CONFIG(PeriphClkInit->Dfsdm1AudioClockSelection);\r
- }\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
- /*-------------------------------------- PLLI2S Configuration ---------------------------------*/\r
- /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2, I2S or SPDIF-RX */\r
- if((plli2sused == 1) || (PeriphClkInit->PeriphClockSelection == RCC_PERIPHCLK_PLLI2S))\r
- {\r
- /* Disable the PLLI2S */\r
- __HAL_RCC_PLLI2S_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLI2S is disabled */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* check for common PLLI2S Parameters */\r
- assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN));\r
-\r
- /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/\r
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)))\r
- {\r
- /* check for Parameters */\r
- assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR));\r
-\r
- /* Read PLLI2SP and PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuration) */\r
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);\r
- tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);\r
- /* Configure the PLLI2S division factors */\r
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */\r
- /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */\r
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, tmpreg1, PeriphClkInit->PLLI2S.PLLI2SR);\r
- }\r
-\r
- /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/\r
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||\r
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))\r
- {\r
- /* Check for PLLI2S Parameters */\r
- assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));\r
- /* Check for PLLI2S/DIVQ parameters */\r
- assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ));\r
-\r
- /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI configuration) */\r
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);\r
- tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);\r
- /* Configure the PLLI2S division factors */\r
- /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */\r
- /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */\r
- /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */\r
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, tmpreg0, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg1);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */\r
- __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ);\r
- }\r
-\r
- /*----------------- In Case of PLLI2S is selected as source clock for SPDIF-RX -------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)\r
- {\r
- /* check for Parameters */\r
- assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP));\r
-\r
- /* Read PLLI2SR value from PLLI2SCFGR register (this value is not needed for SPDIF-RX configuration) */\r
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);\r
- tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);\r
- /* Configure the PLLI2S division factors */\r
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */\r
- /* SPDIFCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */\r
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, tmpreg0, tmpreg1);\r
- }\r
-\r
- /*----------------- In Case of PLLI2S is just selected -----------------*/\r
- if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)\r
- {\r
- /* Check for Parameters */\r
- assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP));\r
- assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR));\r
- assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));\r
-\r
- /* Configure the PLLI2S division factors */\r
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */\r
- /* SPDIFRXCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */\r
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, PeriphClkInit->PLLI2S.PLLI2SQ, PeriphClkInit->PLLI2S.PLLI2SR);\r
- }\r
-\r
- /* Enable the PLLI2S */\r
- __HAL_RCC_PLLI2S_ENABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLI2S is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
-\r
- /*-------------------------------------- PLLSAI Configuration ---------------------------------*/\r
- /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 */\r
- if(pllsaiused == 1)\r
- {\r
- /* Disable PLLSAI Clock */\r
- __HAL_RCC_PLLSAI_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLSAI is disabled */\r
- while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Check the PLLSAI division factors */\r
- assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN));\r
-\r
- /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/\r
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\\r
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))\r
- {\r
- /* check for PLLSAIQ Parameter */\r
- assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ));\r
- /* check for PLLSAI/DIVQ Parameter */\r
- assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ));\r
-\r
- /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuration) */\r
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);\r
- tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);\r
- /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */\r
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */\r
- /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */\r
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAIQ, tmpreg1);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */\r
- __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ);\r
- }\r
-\r
- /*----------------- In Case of PLLSAI is selected as source clock for CLK48 -------------------*/\r
- /* In Case of PLLI2S is selected as source clock for CK48 */\r
- if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP))\r
- {\r
- /* check for Parameters */\r
- assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP));\r
- /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 configuration) */\r
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);\r
- tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);\r
-\r
- /* Configure the PLLSAI division factors */\r
- /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */\r
- /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */\r
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg0, tmpreg1);\r
- }\r
-\r
-#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)\r
- /*---------------------------- LTDC configuration -------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == (RCC_PERIPHCLK_LTDC))\r
- {\r
- assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->PLLSAI.PLLSAIR));\r
- assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR));\r
-\r
- /* Read PLLSAIP and PLLSAIQ value from PLLSAICFGR register (these value are not needed for LTDC configuration) */\r
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);\r
- tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);\r
-\r
- /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */\r
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */\r
- /* LTDC_CLK(first level) = PLLSAI_VCO Output/PLLSAIR */\r
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg1, tmpreg0, PeriphClkInit->PLLSAI.PLLSAIR);\r
-\r
- /* LTDC_CLK = LTDC_CLK(first level)/PLLSAIDIVR */\r
- __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR);\r
- }\r
-#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
- /* Enable PLLSAI Clock */\r
- __HAL_RCC_PLLSAI_ENABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLSAI is ready */\r
- while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Get the RCC_PeriphCLKInitTypeDef according to the internal\r
- * RCC configuration registers.\r
- * @param PeriphClkInit pointer to the configured RCC_PeriphCLKInitTypeDef structure\r
- * @retval None\r
- */\r
-void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)\r
-{\r
- uint32_t tempreg = 0;\r
-\r
- /* Set all possible values for the extended clock type parameter------------*/\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
- PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\\r
- RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\\r
- RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\\r
- RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_I2C4 |\\r
- RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\\r
- RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\\r
- RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\\r
- RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\\r
- RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\\r
- RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\\r
- RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDMMC2 |\\r
- RCC_PERIPHCLK_DFSDM1 | RCC_PERIPHCLK_DFSDM1_AUDIO;\r
-#else\r
- PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\\r
- RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\\r
- RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\\r
- RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_I2C4 |\\r
- RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\\r
- RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\\r
- RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\\r
- RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\\r
- RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\\r
- RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\\r
- RCC_PERIPHCLK_CLK48;\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
- /* Get the PLLI2S Clock configuration -----------------------------------------------*/\r
- PeriphClkInit->PLLI2S.PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos);\r
- PeriphClkInit->PLLI2S.PLLI2SP = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);\r
- PeriphClkInit->PLLI2S.PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);\r
- PeriphClkInit->PLLI2S.PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);\r
-\r
- /* Get the PLLSAI Clock configuration -----------------------------------------------*/\r
- PeriphClkInit->PLLSAI.PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos);\r
- PeriphClkInit->PLLSAI.PLLSAIP = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);\r
- PeriphClkInit->PLLSAI.PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);\r
- PeriphClkInit->PLLSAI.PLLSAIR = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);\r
-\r
- /* Get the PLLSAI/PLLI2S division factors -------------------------------------------*/\r
- PeriphClkInit->PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) >> RCC_DCKCFGR1_PLLI2SDIVQ_Pos);\r
- PeriphClkInit->PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> RCC_DCKCFGR1_PLLSAIDIVQ_Pos);\r
- PeriphClkInit->PLLSAIDivR = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVR) >> RCC_DCKCFGR1_PLLSAIDIVR_Pos);\r
-\r
- /* Get the SAI1 clock configuration ----------------------------------------------*/\r
- PeriphClkInit->Sai1ClockSelection = __HAL_RCC_GET_SAI1_SOURCE();\r
-\r
- /* Get the SAI2 clock configuration ----------------------------------------------*/\r
- PeriphClkInit->Sai2ClockSelection = __HAL_RCC_GET_SAI2_SOURCE();\r
-\r
- /* Get the I2S clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2sClockSelection = __HAL_RCC_GET_I2SCLKSOURCE();\r
-\r
- /* Get the I2C1 clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE();\r
-\r
- /* Get the I2C2 clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE();\r
-\r
- /* Get the I2C3 clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE();\r
-\r
- /* Get the I2C4 clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2c4ClockSelection = __HAL_RCC_GET_I2C4_SOURCE();\r
-\r
- /* Get the USART1 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE();\r
-\r
- /* Get the USART2 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE();\r
-\r
- /* Get the USART3 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE();\r
-\r
- /* Get the UART4 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart4ClockSelection = __HAL_RCC_GET_UART4_SOURCE();\r
-\r
- /* Get the UART5 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart5ClockSelection = __HAL_RCC_GET_UART5_SOURCE();\r
-\r
- /* Get the USART6 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart6ClockSelection = __HAL_RCC_GET_USART6_SOURCE();\r
-\r
- /* Get the UART7 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart7ClockSelection = __HAL_RCC_GET_UART7_SOURCE();\r
-\r
- /* Get the UART8 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart8ClockSelection = __HAL_RCC_GET_UART8_SOURCE();\r
-\r
- /* Get the LPTIM1 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE();\r
-\r
- /* Get the CEC clock configuration -----------------------------------------------*/\r
- PeriphClkInit->CecClockSelection = __HAL_RCC_GET_CEC_SOURCE();\r
-\r
- /* Get the CK48 clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Clk48ClockSelection = __HAL_RCC_GET_CLK48_SOURCE();\r
-\r
- /* Get the SDMMC1 clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Sdmmc1ClockSelection = __HAL_RCC_GET_SDMMC1_SOURCE();\r
-\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
- /* Get the SDMMC2 clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Sdmmc2ClockSelection = __HAL_RCC_GET_SDMMC2_SOURCE();\r
-\r
- /* Get the DFSDM clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Dfsdm1ClockSelection = __HAL_RCC_GET_DFSDM1_SOURCE();\r
-\r
- /* Get the DFSDM AUDIO clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Dfsdm1AudioClockSelection = __HAL_RCC_GET_DFSDM1AUDIO_SOURCE();\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
-\r
- /* Get the RTC Clock configuration -----------------------------------------------*/\r
- tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);\r
- PeriphClkInit->RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));\r
-\r
- /* Get the TIM Prescaler configuration --------------------------------------------*/\r
- if ((RCC->DCKCFGR1 & RCC_DCKCFGR1_TIMPRE) == RESET)\r
- {\r
- PeriphClkInit->TIMPresSelection = RCC_TIMPRES_DESACTIVATED;\r
- }\r
- else\r
- {\r
- PeriphClkInit->TIMPresSelection = RCC_TIMPRES_ACTIVATED;\r
- }\r
-}\r
-#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */\r
-\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
-/**\r
- * @brief Initializes the RCC extended peripherals clocks according to the specified\r
- * parameters in the RCC_PeriphCLKInitTypeDef.\r
- * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that\r
- * contains the configuration information for the Extended Peripherals\r
- * clocks(I2S, SAI, RTC, TIM, UARTs, USARTs, LTPIM, SDMMC...).\r
- *\r
- * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select\r
- * the RTC clock source; in this case the Backup domain will be reset in\r
- * order to modify the RTC Clock source, as consequence RTC registers (including\r
- * the backup registers) are set to their reset values.\r
- *\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)\r
-{\r
- uint32_t tickstart = 0;\r
- uint32_t tmpreg0 = 0;\r
- uint32_t plli2sused = 0;\r
- uint32_t pllsaiused = 0;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));\r
-\r
- /*----------------------------------- I2S configuration ----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection));\r
-\r
- /* Configure I2S Clock source */\r
- __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);\r
-\r
- /* Enable the PLLI2S when it's used as clock source for I2S */\r
- if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)\r
- {\r
- plli2sused = 1;\r
- }\r
- }\r
-\r
- /*------------------------------------ SAI1 configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection));\r
-\r
- /* Configure SAI1 Clock source */\r
- __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);\r
- /* Enable the PLLI2S when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)\r
- {\r
- plli2sused = 1;\r
- }\r
- /* Enable the PLLSAI when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)\r
- {\r
- pllsaiused = 1;\r
- }\r
- }\r
-\r
- /*------------------------------------ SAI2 configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection));\r
-\r
- /* Configure SAI2 Clock source */\r
- __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection);\r
-\r
- /* Enable the PLLI2S when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)\r
- {\r
- plli2sused = 1;\r
- }\r
- /* Enable the PLLSAI when it's used as clock source for SAI */\r
- if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)\r
- {\r
- pllsaiused = 1;\r
- }\r
- }\r
-\r
- /*------------------------------------ RTC configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC))\r
- {\r
- /* Check for RTC Parameters used to output RTCCLK */\r
- assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));\r
-\r
- /* Enable Power Clock*/\r
- __HAL_RCC_PWR_CLK_ENABLE();\r
-\r
- /* Enable write access to Backup domain */\r
- PWR->CR1 |= PWR_CR1_DBP;\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait for Backup domain Write protection disable */\r
- while((PWR->CR1 & PWR_CR1_DBP) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Reset the Backup domain only if the RTC Clock source selection is modified */\r
- tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL);\r
-\r
- if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))\r
- {\r
- /* Store the content of BDCR register before the reset of Backup Domain */\r
- tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));\r
-\r
- /* RTC Clock selection can be changed only if the Backup Domain is reset */\r
- __HAL_RCC_BACKUPRESET_FORCE();\r
- __HAL_RCC_BACKUPRESET_RELEASE();\r
-\r
- /* Restore the Content of BDCR register */\r
- RCC->BDCR = tmpreg0;\r
-\r
- /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */\r
- if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))\r
- {\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till LSE is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
- __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);\r
- }\r
-\r
- /*------------------------------------ TIM configuration --------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection));\r
-\r
- /* Configure Timer Prescaler */\r
- __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection);\r
- }\r
-\r
- /*-------------------------------------- I2C1 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));\r
-\r
- /* Configure the I2C1 clock source */\r
- __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- I2C2 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection));\r
-\r
- /* Configure the I2C2 clock source */\r
- __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- I2C3 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));\r
-\r
- /* Configure the I2C3 clock source */\r
- __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART1 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));\r
-\r
- /* Configure the USART1 clock source */\r
- __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART2 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));\r
-\r
- /* Configure the USART2 clock source */\r
- __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART3 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection));\r
-\r
- /* Configure the USART3 clock source */\r
- __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART4 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection));\r
-\r
- /* Configure the UART4 clock source */\r
- __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART5 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection));\r
-\r
- /* Configure the UART5 clock source */\r
- __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- USART6 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection));\r
-\r
- /* Configure the USART6 clock source */\r
- __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART7 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection));\r
-\r
- /* Configure the UART7 clock source */\r
- __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- UART8 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection));\r
-\r
- /* Configure the UART8 clock source */\r
- __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- CK48 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection));\r
-\r
- /* Configure the CLK48 source */\r
- __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection);\r
-\r
- /* Enable the PLLSAI when it's used as clock source for CK48 */\r
- if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP)\r
- {\r
- pllsaiused = 1;\r
- }\r
- }\r
-\r
- /*-------------------------------------- LPTIM1 Configuration -----------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection));\r
-\r
- /* Configure the LTPIM1 clock source */\r
- __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);\r
- }\r
-\r
- /*------------------------------------- SDMMC1 Configuration ------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection));\r
-\r
- /* Configure the SDMMC1 clock source */\r
- __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection);\r
- }\r
-\r
- /*------------------------------------- SDMMC2 Configuration ------------------------------------*/\r
- if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection));\r
-\r
- /* Configure the SDMMC2 clock source */\r
- __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection);\r
- }\r
-\r
- /*-------------------------------------- PLLI2S Configuration ---------------------------------*/\r
- /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2 or I2S */\r
- if((plli2sused == 1) || (PeriphClkInit->PeriphClockSelection == RCC_PERIPHCLK_PLLI2S))\r
- {\r
- /* Disable the PLLI2S */\r
- __HAL_RCC_PLLI2S_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLI2S is disabled */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* check for common PLLI2S Parameters */\r
- assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN));\r
-\r
- /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/\r
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)))\r
- {\r
- /* check for Parameters */\r
- assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR));\r
-\r
- /* Read PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuration) */\r
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);\r
- /* Configure the PLLI2S division factors */\r
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */\r
- /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */\r
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, PeriphClkInit->PLLI2S.PLLI2SR);\r
- }\r
-\r
- /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/\r
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||\r
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))\r
- {\r
- /* Check for PLLI2S Parameters */\r
- assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));\r
- /* Check for PLLI2S/DIVQ parameters */\r
- assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ));\r
-\r
- /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI configuration) */\r
- tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);\r
- /* Configure the PLLI2S division factors */\r
- /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */\r
- /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */\r
- /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */\r
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg0);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */\r
- __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ);\r
- }\r
-\r
- /*----------------- In Case of PLLI2S is just selected -----------------*/\r
- if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)\r
- {\r
- /* Check for Parameters */\r
- assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR));\r
- assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));\r
-\r
- /* Configure the PLLI2S division factors */\r
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */\r
- __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SQ, PeriphClkInit->PLLI2S.PLLI2SR);\r
- }\r
-\r
- /* Enable the PLLI2S */\r
- __HAL_RCC_PLLI2S_ENABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLI2S is ready */\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
-\r
- /*-------------------------------------- PLLSAI Configuration ---------------------------------*/\r
- /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 */\r
- if(pllsaiused == 1)\r
- {\r
- /* Disable PLLSAI Clock */\r
- __HAL_RCC_PLLSAI_DISABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLSAI is disabled */\r
- while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Check the PLLSAI division factors */\r
- assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN));\r
-\r
- /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/\r
- if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\\r
- ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))\r
- {\r
- /* check for PLLSAIQ Parameter */\r
- assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ));\r
- /* check for PLLSAI/DIVQ Parameter */\r
- assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ));\r
-\r
- /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuration) */\r
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);\r
- /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */\r
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */\r
- /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */\r
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAIQ);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */\r
- __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ);\r
- }\r
-\r
- /*----------------- In Case of PLLSAI is selected as source clock for CLK48 -------------------*/\r
- /* In Case of PLLI2S is selected as source clock for CK48 */\r
- if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP))\r
- {\r
- /* check for Parameters */\r
- assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP));\r
- /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 configuration) */\r
- tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);\r
-\r
- /* Configure the PLLSAI division factors */\r
- /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */\r
- /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */\r
- __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg0);\r
- }\r
-\r
- /* Enable PLLSAI Clock */\r
- __HAL_RCC_PLLSAI_ENABLE();\r
-\r
- /* Get Start Tick*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Wait till PLLSAI is ready */\r
- while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Get the RCC_PeriphCLKInitTypeDef according to the internal\r
- * RCC configuration registers.\r
- * @param PeriphClkInit pointer to the configured RCC_PeriphCLKInitTypeDef structure\r
- * @retval None\r
- */\r
-void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)\r
-{\r
- uint32_t tempreg = 0;\r
-\r
- /* Set all possible values for the extended clock type parameter------------*/\r
- PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\\r
- RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\\r
- RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\\r
- RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\\r
- RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\\r
- RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\\r
- RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\\r
- RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\\r
- RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\\r
- RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDMMC2;\r
-\r
- /* Get the PLLI2S Clock configuration -----------------------------------------------*/\r
- PeriphClkInit->PLLI2S.PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos);\r
- PeriphClkInit->PLLI2S.PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);\r
- PeriphClkInit->PLLI2S.PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);\r
-\r
- /* Get the PLLSAI Clock configuration -----------------------------------------------*/\r
- PeriphClkInit->PLLSAI.PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos);\r
- PeriphClkInit->PLLSAI.PLLSAIP = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);\r
- PeriphClkInit->PLLSAI.PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);\r
-\r
- /* Get the PLLSAI/PLLI2S division factors -------------------------------------------*/\r
- PeriphClkInit->PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) >> RCC_DCKCFGR1_PLLI2SDIVQ_Pos);\r
- PeriphClkInit->PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> RCC_DCKCFGR1_PLLSAIDIVQ_Pos);\r
-\r
- /* Get the SAI1 clock configuration ----------------------------------------------*/\r
- PeriphClkInit->Sai1ClockSelection = __HAL_RCC_GET_SAI1_SOURCE();\r
-\r
- /* Get the SAI2 clock configuration ----------------------------------------------*/\r
- PeriphClkInit->Sai2ClockSelection = __HAL_RCC_GET_SAI2_SOURCE();\r
-\r
- /* Get the I2S clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2sClockSelection = __HAL_RCC_GET_I2SCLKSOURCE();\r
-\r
- /* Get the I2C1 clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE();\r
-\r
- /* Get the I2C2 clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE();\r
-\r
- /* Get the I2C3 clock configuration ------------------------------------------*/\r
- PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE();\r
-\r
- /* Get the USART1 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE();\r
-\r
- /* Get the USART2 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE();\r
-\r
- /* Get the USART3 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE();\r
-\r
- /* Get the UART4 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart4ClockSelection = __HAL_RCC_GET_UART4_SOURCE();\r
-\r
- /* Get the UART5 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart5ClockSelection = __HAL_RCC_GET_UART5_SOURCE();\r
-\r
- /* Get the USART6 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Usart6ClockSelection = __HAL_RCC_GET_USART6_SOURCE();\r
-\r
- /* Get the UART7 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart7ClockSelection = __HAL_RCC_GET_UART7_SOURCE();\r
-\r
- /* Get the UART8 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Uart8ClockSelection = __HAL_RCC_GET_UART8_SOURCE();\r
-\r
- /* Get the LPTIM1 clock configuration ------------------------------------------*/\r
- PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE();\r
-\r
- /* Get the CK48 clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Clk48ClockSelection = __HAL_RCC_GET_CLK48_SOURCE();\r
-\r
- /* Get the SDMMC1 clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Sdmmc1ClockSelection = __HAL_RCC_GET_SDMMC1_SOURCE();\r
-\r
- /* Get the SDMMC2 clock configuration -----------------------------------------------*/\r
- PeriphClkInit->Sdmmc2ClockSelection = __HAL_RCC_GET_SDMMC2_SOURCE();\r
-\r
- /* Get the RTC Clock configuration -----------------------------------------------*/\r
- tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);\r
- PeriphClkInit->RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));\r
-\r
- /* Get the TIM Prescaler configuration --------------------------------------------*/\r
- if ((RCC->DCKCFGR1 & RCC_DCKCFGR1_TIMPRE) == RESET)\r
- {\r
- PeriphClkInit->TIMPresSelection = RCC_TIMPRES_DESACTIVATED;\r
- }\r
- else\r
- {\r
- PeriphClkInit->TIMPresSelection = RCC_TIMPRES_ACTIVATED;\r
- }\r
-}\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
-/**\r
- * @brief Return the peripheral clock frequency for a given peripheral(SAI..)\r
- * @note Return 0 if peripheral clock identifier not managed by this API\r
- * @param PeriphClk Peripheral clock identifier\r
- * This parameter can be one of the following values:\r
- * @arg RCC_PERIPHCLK_SAI1: SAI1 peripheral clock\r
- * @arg RCC_PERIPHCLK_SAI2: SAI2 peripheral clock\r
- * @retval Frequency in KHz\r
- */\r
-uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)\r
-{\r
- uint32_t tmpreg = 0;\r
- /* This variable is used to store the SAI clock frequency (value in Hz) */\r
- uint32_t frequency = 0;\r
- /* This variable is used to store the VCO Input (value in Hz) */\r
- uint32_t vcoinput = 0;\r
- /* This variable is used to store the SAI clock source */\r
- uint32_t saiclocksource = 0;\r
-\r
- if (PeriphClk == RCC_PERIPHCLK_SAI1)\r
- {\r
- saiclocksource = RCC->DCKCFGR1;\r
- saiclocksource &= RCC_DCKCFGR1_SAI1SEL;\r
- switch (saiclocksource)\r
- {\r
- case 0: /* PLLSAI is the clock source for SAI1 */\r
- {\r
- /* Configure the PLLSAI division factor */\r
- /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */\r
- if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)\r
- {\r
- /* In Case the PLL Source is HSI (Internal Clock) */\r
- vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));\r
- }\r
- else\r
- {\r
- /* In Case the PLL Source is HSE (External Clock) */\r
- vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)));\r
- }\r
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */\r
- /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */\r
- tmpreg = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24;\r
- frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */\r
- tmpreg = (((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> 8) + 1);\r
- frequency = frequency/(tmpreg);\r
- break;\r
- }\r
- case RCC_DCKCFGR1_SAI1SEL_0: /* PLLI2S is the clock source for SAI1 */\r
- {\r
- /* Configure the PLLI2S division factor */\r
- /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */\r
- if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)\r
- {\r
- /* In Case the PLL Source is HSI (Internal Clock) */\r
- vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));\r
- }\r
- else\r
- {\r
- /* In Case the PLL Source is HSE (External Clock) */\r
- vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)));\r
- }\r
-\r
- /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */\r
- /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */\r
- tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24;\r
- frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */\r
- tmpreg = ((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) + 1);\r
- frequency = frequency/(tmpreg);\r
- break;\r
- }\r
- case RCC_DCKCFGR1_SAI1SEL_1: /* External clock is the clock source for SAI1 */\r
- {\r
- frequency = EXTERNAL_CLOCK_VALUE;\r
- break;\r
- }\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
- case RCC_DCKCFGR1_SAI1SEL: /* HSI or HSE is the clock source for SAI*/\r
- {\r
- if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)\r
- {\r
- /* In Case the main PLL Source is HSI */\r
- frequency = HSI_VALUE;\r
- }\r
- else\r
- {\r
- /* In Case the main PLL Source is HSE */\r
- frequency = HSE_VALUE;\r
- }\r
- break;\r
- }\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
- default :\r
- {\r
- break;\r
- }\r
- }\r
- }\r
-\r
- if (PeriphClk == RCC_PERIPHCLK_SAI2)\r
- {\r
- saiclocksource = RCC->DCKCFGR1;\r
- saiclocksource &= RCC_DCKCFGR1_SAI2SEL;\r
- switch (saiclocksource)\r
- {\r
- case 0: /* PLLSAI is the clock source for SAI*/\r
- {\r
- /* Configure the PLLSAI division factor */\r
- /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */\r
- if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)\r
- {\r
- /* In Case the PLL Source is HSI (Internal Clock) */\r
- vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));\r
- }\r
- else\r
- {\r
- /* In Case the PLL Source is HSE (External Clock) */\r
- vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)));\r
- }\r
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */\r
- /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */\r
- tmpreg = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24;\r
- frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */\r
- tmpreg = (((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> 8) + 1);\r
- frequency = frequency/(tmpreg);\r
- break;\r
- }\r
- case RCC_DCKCFGR1_SAI2SEL_0: /* PLLI2S is the clock source for SAI2 */\r
- {\r
- /* Configure the PLLI2S division factor */\r
- /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */\r
- if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)\r
- {\r
- /* In Case the PLL Source is HSI (Internal Clock) */\r
- vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));\r
- }\r
- else\r
- {\r
- /* In Case the PLL Source is HSE (External Clock) */\r
- vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)));\r
- }\r
-\r
- /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */\r
- /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */\r
- tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24;\r
- frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg);\r
-\r
- /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */\r
- tmpreg = ((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) + 1);\r
- frequency = frequency/(tmpreg);\r
- break;\r
- }\r
- case RCC_DCKCFGR1_SAI2SEL_1: /* External clock is the clock source for SAI2 */\r
- {\r
- frequency = EXTERNAL_CLOCK_VALUE;\r
- break;\r
- }\r
-#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)\r
- case RCC_DCKCFGR1_SAI2SEL: /* HSI or HSE is the clock source for SAI2 */\r
- {\r
- if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)\r
- {\r
- /* In Case the main PLL Source is HSI */\r
- frequency = HSI_VALUE;\r
- }\r
- else\r
- {\r
- /* In Case the main PLL Source is HSE */\r
- frequency = HSE_VALUE;\r
- }\r
- break;\r
- }\r
-#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */\r
- default :\r
- {\r
- break;\r
- }\r
- }\r
- }\r
-\r
- return frequency;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup RCCEx_Exported_Functions_Group2 Extended Clock management functions\r
- * @brief Extended Clock management functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Extended clock management functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides a set of functions allowing to control the\r
- activation or deactivation of PLLI2S, PLLSAI.\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Enable PLLI2S.\r
- * @param PLLI2SInit pointer to an RCC_PLLI2SInitTypeDef structure that\r
- * contains the configuration information for the PLLI2S\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef *PLLI2SInit)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Check for parameters */\r
- assert_param(IS_RCC_PLLI2SN_VALUE(PLLI2SInit->PLLI2SN));\r
- assert_param(IS_RCC_PLLI2SR_VALUE(PLLI2SInit->PLLI2SR));\r
- assert_param(IS_RCC_PLLI2SQ_VALUE(PLLI2SInit->PLLI2SQ));\r
-#if defined(RCC_PLLI2SCFGR_PLLI2SP)\r
- assert_param(IS_RCC_PLLI2SP_VALUE(PLLI2SInit->PLLI2SP));\r
-#endif /* RCC_PLLI2SCFGR_PLLI2SP */\r
-\r
- /* Disable the PLLI2S */\r
- __HAL_RCC_PLLI2S_DISABLE();\r
-\r
- /* Wait till PLLI2S is disabled */\r
- tickstart = HAL_GetTick();\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Configure the PLLI2S division factors */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * PLLI2SN */\r
- /* I2SQCLK = PLLI2S_VCO / PLLI2SQ */\r
- /* I2SRCLK = PLLI2S_VCO / PLLI2SR */\r
- __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SN, PLLI2SInit->PLLI2SQ, PLLI2SInit->PLLI2SR);\r
-#else\r
- /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * PLLI2SN */\r
- /* I2SPCLK = PLLI2S_VCO / PLLI2SP */\r
- /* I2SQCLK = PLLI2S_VCO / PLLI2SQ */\r
- /* I2SRCLK = PLLI2S_VCO / PLLI2SR */\r
- __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SN, PLLI2SInit->PLLI2SP, PLLI2SInit->PLLI2SQ, PLLI2SInit->PLLI2SR);\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
- /* Enable the PLLI2S */\r
- __HAL_RCC_PLLI2S_ENABLE();\r
-\r
- /* Wait till PLLI2S is ready */\r
- tickstart = HAL_GetTick();\r
- while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Disable PLLI2S.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Disable the PLLI2S */\r
- __HAL_RCC_PLLI2S_DISABLE();\r
-\r
- /* Wait till PLLI2S is disabled */\r
- tickstart = HAL_GetTick();\r
- while(READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Enable PLLSAI.\r
- * @param PLLSAIInit pointer to an RCC_PLLSAIInitTypeDef structure that\r
- * contains the configuration information for the PLLSAI\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI(RCC_PLLSAIInitTypeDef *PLLSAIInit)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Check for parameters */\r
- assert_param(IS_RCC_PLLSAIN_VALUE(PLLSAIInit->PLLSAIN));\r
- assert_param(IS_RCC_PLLSAIQ_VALUE(PLLSAIInit->PLLSAIQ));\r
- assert_param(IS_RCC_PLLSAIP_VALUE(PLLSAIInit->PLLSAIP));\r
-#if defined(RCC_PLLSAICFGR_PLLSAIR)\r
- assert_param(IS_RCC_PLLSAIR_VALUE(PLLSAIInit->PLLSAIR));\r
-#endif /* RCC_PLLSAICFGR_PLLSAIR */\r
-\r
- /* Disable the PLLSAI */\r
- __HAL_RCC_PLLSAI_DISABLE();\r
-\r
- /* Wait till PLLSAI is disabled */\r
- tickstart = HAL_GetTick();\r
- while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Configure the PLLSAI division factors */\r
-#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx)\r
- /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) * PLLSAIN */\r
- /* SAIPCLK = PLLSAI_VCO / PLLSAIP */\r
- /* SAIQCLK = PLLSAI_VCO / PLLSAIQ */\r
- __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->PLLSAIN, PLLSAIInit->PLLSAIP, PLLSAIInit->PLLSAIQ);\r
-#else\r
- /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) * PLLSAIN */\r
- /* SAIPCLK = PLLSAI_VCO / PLLSAIP */\r
- /* SAIQCLK = PLLSAI_VCO / PLLSAIQ */\r
- /* SAIRCLK = PLLSAI_VCO / PLLSAIR */\r
- __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->PLLSAIN, PLLSAIInit->PLLSAIP, \\r
- PLLSAIInit->PLLSAIQ, PLLSAIInit->PLLSAIR);\r
-#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */\r
-\r
- /* Enable the PLLSAI */\r
- __HAL_RCC_PLLSAI_ENABLE();\r
-\r
- /* Wait till PLLSAI is ready */\r
- tickstart = HAL_GetTick();\r
- while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)\r
- {\r
- if((HAL_GetTick() - tickstart ) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Disable PLLSAI.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI(void)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Disable the PLLSAI */\r
- __HAL_RCC_PLLSAI_DISABLE();\r
-\r
- /* Wait till PLLSAI is disabled */\r
- tickstart = HAL_GetTick();\r
- while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)\r
- {\r
- if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)\r
- {\r
- /* return in case of Timeout detected */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_RCC_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_tim.c\r
- * @author MCD Application Team\r
- * @brief TIM HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities of the Timer (TIM) peripheral:\r
- * + TIM Time Base Initialization\r
- * + TIM Time Base Start\r
- * + TIM Time Base Start Interruption\r
- * + TIM Time Base Start DMA\r
- * + TIM Output Compare/PWM Initialization\r
- * + TIM Output Compare/PWM Channel Configuration\r
- * + TIM Output Compare/PWM Start\r
- * + TIM Output Compare/PWM Start Interruption\r
- * + TIM Output Compare/PWM Start DMA\r
- * + TIM Input Capture Initialization\r
- * + TIM Input Capture Channel Configuration\r
- * + TIM Input Capture Start\r
- * + TIM Input Capture Start Interruption\r
- * + TIM Input Capture Start DMA\r
- * + TIM One Pulse Initialization\r
- * + TIM One Pulse Channel Configuration\r
- * + TIM One Pulse Start\r
- * + TIM Encoder Interface Initialization\r
- * + TIM Encoder Interface Start\r
- * + TIM Encoder Interface Start Interruption\r
- * + TIM Encoder Interface Start DMA\r
- * + Commutation Event configuration with Interruption and DMA\r
- * + TIM OCRef clear configuration\r
- * + TIM External Clock configuration\r
- @verbatim\r
- ==============================================================================\r
- ##### TIMER Generic features #####\r
- ==============================================================================\r
- [..] The Timer features include:\r
- (#) 16-bit up, down, up/down auto-reload counter.\r
- (#) 16-bit programmable prescaler allowing dividing (also on the fly) the\r
- counter clock frequency either by any factor between 1 and 65536.\r
- (#) Up to 4 independent channels for:\r
- (++) Input Capture\r
- (++) Output Compare\r
- (++) PWM generation (Edge and Center-aligned Mode)\r
- (++) One-pulse mode output\r
- (#) Synchronization circuit to control the timer with external signals and to interconnect\r
- several timers together.\r
- (#) Supports incremental encoder for positioning purposes\r
-\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..]\r
- (#) Initialize the TIM low level resources by implementing the following functions\r
- depending on the selected feature:\r
- (++) Time Base : HAL_TIM_Base_MspInit()\r
- (++) Input Capture : HAL_TIM_IC_MspInit()\r
- (++) Output Compare : HAL_TIM_OC_MspInit()\r
- (++) PWM generation : HAL_TIM_PWM_MspInit()\r
- (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit()\r
- (++) Encoder mode output : HAL_TIM_Encoder_MspInit()\r
-\r
- (#) Initialize the TIM low level resources :\r
- (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE();\r
- (##) TIM pins configuration\r
- (+++) Enable the clock for the TIM GPIOs using the following function:\r
- __HAL_RCC_GPIOx_CLK_ENABLE();\r
- (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();\r
-\r
- (#) The external Clock can be configured, if needed (the default clock is the\r
- internal clock from the APBx), using the following function:\r
- HAL_TIM_ConfigClockSource, the clock configuration should be done before\r
- any start function.\r
-\r
- (#) Configure the TIM in the desired functioning mode using one of the\r
- Initialization function of this driver:\r
- (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base\r
- (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an\r
- Output Compare signal.\r
- (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a\r
- PWM signal.\r
- (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an\r
- external signal.\r
- (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer\r
- in One Pulse Mode.\r
- (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface.\r
-\r
- (#) Activate the TIM peripheral using one of the start functions depending from the feature used:\r
- (++) Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT()\r
- (++) Input Capture : HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT()\r
- (++) Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT()\r
- (++) PWM generation : HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT()\r
- (++) One-pulse mode output : HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT()\r
- (++) Encoder mode output : HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA(), HAL_TIM_Encoder_Start_IT().\r
-\r
- (#) The DMA Burst is managed with the two following functions:\r
- HAL_TIM_DMABurst_WriteStart()\r
- HAL_TIM_DMABurst_ReadStart()\r
-\r
- *** Callback registration ***\r
- =============================================\r
-\r
- The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1\r
- allows the user to configure dynamically the driver callbacks.\r
-\r
- Use Function @ref HAL_TIM_RegisterCallback() to register a callback.\r
- @ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,\r
- the Callback ID and a pointer to the user callback function.\r
-\r
- Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default\r
- weak function.\r
- @ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,\r
- and the Callback ID.\r
-\r
- These functions allow to register/unregister following callbacks:\r
- (+) Base_MspInitCallback : TIM Base Msp Init Callback.\r
- (+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback.\r
- (+) IC_MspInitCallback : TIM IC Msp Init Callback.\r
- (+) IC_MspDeInitCallback : TIM IC Msp DeInit Callback.\r
- (+) OC_MspInitCallback : TIM OC Msp Init Callback.\r
- (+) OC_MspDeInitCallback : TIM OC Msp DeInit Callback.\r
- (+) PWM_MspInitCallback : TIM PWM Msp Init Callback.\r
- (+) PWM_MspDeInitCallback : TIM PWM Msp DeInit Callback.\r
- (+) OnePulse_MspInitCallback : TIM One Pulse Msp Init Callback.\r
- (+) OnePulse_MspDeInitCallback : TIM One Pulse Msp DeInit Callback.\r
- (+) Encoder_MspInitCallback : TIM Encoder Msp Init Callback.\r
- (+) Encoder_MspDeInitCallback : TIM Encoder Msp DeInit Callback.\r
- (+) HallSensor_MspInitCallback : TIM Hall Sensor Msp Init Callback.\r
- (+) HallSensor_MspDeInitCallback : TIM Hall Sensor Msp DeInit Callback.\r
- (+) PeriodElapsedCallback : TIM Period Elapsed Callback.\r
- (+) PeriodElapsedHalfCpltCallback : TIM Period Elapsed half complete Callback.\r
- (+) TriggerCallback : TIM Trigger Callback.\r
- (+) TriggerHalfCpltCallback : TIM Trigger half complete Callback.\r
- (+) IC_CaptureCallback : TIM Input Capture Callback.\r
- (+) IC_CaptureHalfCpltCallback : TIM Input Capture half complete Callback.\r
- (+) OC_DelayElapsedCallback : TIM Output Compare Delay Elapsed Callback.\r
- (+) PWM_PulseFinishedCallback : TIM PWM Pulse Finished Callback.\r
- (+) PWM_PulseFinishedHalfCpltCallback : TIM PWM Pulse Finished half complete Callback.\r
- (+) ErrorCallback : TIM Error Callback.\r
- (+) CommutationCallback : TIM Commutation Callback.\r
- (+) CommutationHalfCpltCallback : TIM Commutation half complete Callback.\r
- (+) BreakCallback : TIM Break Callback.\r
- (+) Break2Callback : TIM Break2 Callback.\r
-\r
-By default, after the Init and when the state is HAL_TIM_STATE_RESET\r
-all interrupt callbacks are set to the corresponding weak functions:\r
- examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().\r
-\r
- Exception done for MspInit and MspDeInit functions that are reset to the legacy weak\r
- functionalities in the Init / DeInit only when these callbacks are null\r
- (not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit\r
- keep and use the user MspInit / MspDeInit callbacks(registered beforehand)\r
-\r
- Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.\r
- Exception done MspInit / MspDeInit that can be registered / unregistered\r
- in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,\r
- thus registered(user) MspInit / DeInit callbacks can be used during the Init / DeInit.\r
- In that case first register the MspInit/MspDeInit user callbacks\r
- using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.\r
-\r
- When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or\r
- not defined, the callback registration feature is not available and all callbacks\r
- are set to the corresponding weak functions.\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup TIM TIM\r
- * @brief TIM HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_TIM_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/** @addtogroup TIM_Private_Functions\r
- * @{\r
- */\r
-static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\r
-static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\r
-static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\r
-static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\r
-static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);\r
-static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);\r
-static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\r
- uint32_t TIM_ICFilter);\r
-static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);\r
-static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\r
- uint32_t TIM_ICFilter);\r
-static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\r
- uint32_t TIM_ICFilter);\r
-static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource);\r
-static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma);\r
-static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma);\r
-static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);\r
-static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);\r
-static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,\r
- TIM_SlaveConfigTypeDef *sSlaveConfig);\r
-/**\r
- * @}\r
- */\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @defgroup TIM_Exported_Functions TIM Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions\r
- * @brief Time Base functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Time Base functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Initialize and configure the TIM base.\r
- (+) De-initialize the TIM base.\r
- (+) Start the Time Base.\r
- (+) Stop the Time Base.\r
- (+) Start the Time Base and enable interrupt.\r
- (+) Stop the Time Base and disable interrupt.\r
- (+) Start the Time Base and enable DMA transfer.\r
- (+) Stop the Time Base and disable DMA transfer.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Initializes the TIM Time base Unit according to the specified\r
- * parameters in the TIM_HandleTypeDef and initialize the associated handle.\r
- * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)\r
- * requires a timer reset to avoid unexpected direction\r
- * due to DIR bit readonly in center aligned mode.\r
- * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init()\r
- * @param htim TIM Base handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the TIM handle allocation */\r
- if (htim == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\r
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\r
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\r
-\r
- if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- htim->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- /* Reset interrupt callbacks to legacy weak callbacks */\r
- TIM_ResetCallback(htim);\r
-\r
- if (htim->Base_MspInitCallback == NULL)\r
- {\r
- htim->Base_MspInitCallback = HAL_TIM_Base_MspInit;\r
- }\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- htim->Base_MspInitCallback(htim);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- HAL_TIM_Base_MspInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Set the Time Base configuration */\r
- TIM_Base_SetConfig(htim->Instance, &htim->Init);\r
-\r
- /* Initialize the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the TIM Base peripheral\r
- * @param htim TIM Base handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the TIM Peripheral Clock */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- if (htim->Base_MspDeInitCallback == NULL)\r
- {\r
- htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- htim->Base_MspDeInitCallback(htim);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\r
- HAL_TIM_Base_MspDeInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- /* Change TIM state */\r
- htim->State = HAL_TIM_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM Base MSP.\r
- * @param htim TIM Base handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_Base_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes TIM Base MSP.\r
- * @param htim TIM Base handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_Base_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-\r
-/**\r
- * @brief Starts the TIM Base generation.\r
- * @param htim TIM Base handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Change the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Base generation.\r
- * @param htim TIM Base handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Base generation in interrupt mode.\r
- * @param htim TIM Base handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- /* Enable the TIM Update interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Base generation in interrupt mode.\r
- * @param htim TIM Base handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- /* Disable the TIM Update interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Base generation in DMA mode.\r
- * @param htim TIM Base handle\r
- * @param pData The source Buffer address.\r
- * @param Length The length of data to be transferred from memory to peripheral.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if ((pData == NULL) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
- /* Set the DMA Period elapsed callbacks */\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Enable the TIM Update DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Base generation in DMA mode.\r
- * @param htim TIM Base handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));\r
-\r
- /* Disable the TIM Update DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE);\r
-\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions\r
- * @brief TIM Output Compare functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### TIM Output Compare functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Initialize and configure the TIM Output Compare.\r
- (+) De-initialize the TIM Output Compare.\r
- (+) Start the TIM Output Compare.\r
- (+) Stop the TIM Output Compare.\r
- (+) Start the TIM Output Compare and enable interrupt.\r
- (+) Stop the TIM Output Compare and disable interrupt.\r
- (+) Start the TIM Output Compare and enable DMA transfer.\r
- (+) Stop the TIM Output Compare and disable DMA transfer.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Initializes the TIM Output Compare according to the specified\r
- * parameters in the TIM_HandleTypeDef and initializes the associated handle.\r
- * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)\r
- * requires a timer reset to avoid unexpected direction\r
- * due to DIR bit readonly in center aligned mode.\r
- * Ex: call @ref HAL_TIM_OC_DeInit() before HAL_TIM_OC_Init()\r
- * @param htim TIM Output Compare handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the TIM handle allocation */\r
- if (htim == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\r
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\r
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\r
-\r
- if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- htim->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- /* Reset interrupt callbacks to legacy weak callbacks */\r
- TIM_ResetCallback(htim);\r
-\r
- if (htim->OC_MspInitCallback == NULL)\r
- {\r
- htim->OC_MspInitCallback = HAL_TIM_OC_MspInit;\r
- }\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- htim->OC_MspInitCallback(htim);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_OC_MspInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Init the base time for the Output Compare */\r
- TIM_Base_SetConfig(htim->Instance, &htim->Init);\r
-\r
- /* Initialize the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the TIM peripheral\r
- * @param htim TIM Output Compare handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the TIM Peripheral Clock */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- if (htim->OC_MspDeInitCallback == NULL)\r
- {\r
- htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- htim->OC_MspDeInitCallback(htim);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_OC_MspDeInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- /* Change TIM state */\r
- htim->State = HAL_TIM_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM Output Compare MSP.\r
- * @param htim TIM Output Compare handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_OC_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes TIM Output Compare MSP.\r
- * @param htim TIM Output Compare handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_OC_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Output Compare signal generation.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Enable the Output compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Output Compare signal generation.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Disable the Output compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Output Compare signal generation in interrupt mode.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Enable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Enable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Enable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Enable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the Output compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Output Compare signal generation in interrupt mode.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Disable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Output compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Output Compare signal generation in DMA mode.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @param pData The source Buffer address.\r
- * @param Length The length of data to be transferred from memory to TIM peripheral\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if ((pData == NULL) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Enable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Enable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 3 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 4 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the Output compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Output Compare signal generation in DMA mode.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Disable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Output compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions\r
- * @brief TIM PWM functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### TIM PWM functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Initialize and configure the TIM PWM.\r
- (+) De-initialize the TIM PWM.\r
- (+) Start the TIM PWM.\r
- (+) Stop the TIM PWM.\r
- (+) Start the TIM PWM and enable interrupt.\r
- (+) Stop the TIM PWM and disable interrupt.\r
- (+) Start the TIM PWM and enable DMA transfer.\r
- (+) Stop the TIM PWM and disable DMA transfer.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Initializes the TIM PWM Time Base according to the specified\r
- * parameters in the TIM_HandleTypeDef and initializes the associated handle.\r
- * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)\r
- * requires a timer reset to avoid unexpected direction\r
- * due to DIR bit readonly in center aligned mode.\r
- * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init()\r
- * @param htim TIM PWM handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the TIM handle allocation */\r
- if (htim == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\r
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\r
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\r
-\r
- if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- htim->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- /* Reset interrupt callbacks to legacy weak callbacks */\r
- TIM_ResetCallback(htim);\r
-\r
- if (htim->PWM_MspInitCallback == NULL)\r
- {\r
- htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit;\r
- }\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- htim->PWM_MspInitCallback(htim);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_PWM_MspInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Init the base time for the PWM */\r
- TIM_Base_SetConfig(htim->Instance, &htim->Init);\r
-\r
- /* Initialize the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the TIM peripheral\r
- * @param htim TIM PWM handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the TIM Peripheral Clock */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- if (htim->PWM_MspDeInitCallback == NULL)\r
- {\r
- htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- htim->PWM_MspDeInitCallback(htim);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_PWM_MspDeInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- /* Change TIM state */\r
- htim->State = HAL_TIM_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM PWM MSP.\r
- * @param htim TIM PWM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_PWM_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes TIM PWM MSP.\r
- * @param htim TIM PWM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_PWM_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Starts the PWM signal generation.\r
- * @param htim TIM handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Enable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the PWM signal generation.\r
- * @param htim TIM PWM handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Disable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the PWM signal generation in interrupt mode.\r
- * @param htim TIM PWM handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Enable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Enable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Enable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Enable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the PWM signal generation in interrupt mode.\r
- * @param htim TIM PWM handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Disable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM PWM signal generation in DMA mode.\r
- * @param htim TIM PWM handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @param pData The source Buffer address.\r
- * @param Length The length of data to be transferred from memory to TIM peripheral\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if ((pData == NULL) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Enable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Output Capture/Compare 3 request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 4 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM PWM signal generation in DMA mode.\r
- * @param htim TIM PWM handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Disable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions\r
- * @brief TIM Input Capture functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### TIM Input Capture functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Initialize and configure the TIM Input Capture.\r
- (+) De-initialize the TIM Input Capture.\r
- (+) Start the TIM Input Capture.\r
- (+) Stop the TIM Input Capture.\r
- (+) Start the TIM Input Capture and enable interrupt.\r
- (+) Stop the TIM Input Capture and disable interrupt.\r
- (+) Start the TIM Input Capture and enable DMA transfer.\r
- (+) Stop the TIM Input Capture and disable DMA transfer.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Initializes the TIM Input Capture Time base according to the specified\r
- * parameters in the TIM_HandleTypeDef and initializes the associated handle.\r
- * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)\r
- * requires a timer reset to avoid unexpected direction\r
- * due to DIR bit readonly in center aligned mode.\r
- * Ex: call @ref HAL_TIM_IC_DeInit() before HAL_TIM_IC_Init()\r
- * @param htim TIM Input Capture handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the TIM handle allocation */\r
- if (htim == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\r
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\r
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\r
-\r
- if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- htim->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- /* Reset interrupt callbacks to legacy weak callbacks */\r
- TIM_ResetCallback(htim);\r
-\r
- if (htim->IC_MspInitCallback == NULL)\r
- {\r
- htim->IC_MspInitCallback = HAL_TIM_IC_MspInit;\r
- }\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- htim->IC_MspInitCallback(htim);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_IC_MspInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Init the base time for the input capture */\r
- TIM_Base_SetConfig(htim->Instance, &htim->Init);\r
-\r
- /* Initialize the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the TIM peripheral\r
- * @param htim TIM Input Capture handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the TIM Peripheral Clock */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- if (htim->IC_MspDeInitCallback == NULL)\r
- {\r
- htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- htim->IC_MspDeInitCallback(htim);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_IC_MspDeInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- /* Change TIM state */\r
- htim->State = HAL_TIM_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM Input Capture MSP.\r
- * @param htim TIM Input Capture handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_IC_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes TIM Input Capture MSP.\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_IC_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Input Capture measurement.\r
- * @param htim TIM Input Capture handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Enable the Input Capture channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Input Capture measurement.\r
- * @param htim TIM Input Capture handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Disable the Input Capture channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Input Capture measurement in interrupt mode.\r
- * @param htim TIM Input Capture handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Enable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Enable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Enable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Enable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
- /* Enable the Input Capture channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Input Capture measurement in interrupt mode.\r
- * @param htim TIM Input Capture handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Disable the TIM Capture/Compare 4 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Input Capture channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Input Capture measurement in DMA mode.\r
- * @param htim TIM Input Capture handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @param pData The destination Buffer address.\r
- * @param Length The length of data to be transferred from TIM peripheral to memory.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
- assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if ((pData == NULL) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 3 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 4 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the Input Capture channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Input Capture measurement in DMA mode.\r
- * @param htim TIM Input Capture handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));\r
- assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Disable the TIM Capture/Compare 4 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Input Capture channel */\r
- TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions\r
- * @brief TIM One Pulse functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### TIM One Pulse functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Initialize and configure the TIM One Pulse.\r
- (+) De-initialize the TIM One Pulse.\r
- (+) Start the TIM One Pulse.\r
- (+) Stop the TIM One Pulse.\r
- (+) Start the TIM One Pulse and enable interrupt.\r
- (+) Stop the TIM One Pulse and disable interrupt.\r
- (+) Start the TIM One Pulse and enable DMA transfer.\r
- (+) Stop the TIM One Pulse and disable DMA transfer.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Initializes the TIM One Pulse Time Base according to the specified\r
- * parameters in the TIM_HandleTypeDef and initializes the associated handle.\r
- * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)\r
- * requires a timer reset to avoid unexpected direction\r
- * due to DIR bit readonly in center aligned mode.\r
- * Ex: call @ref HAL_TIM_OnePulse_DeInit() before HAL_TIM_OnePulse_Init()\r
- * @param htim TIM One Pulse handle\r
- * @param OnePulseMode Select the One pulse mode.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated.\r
- * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode)\r
-{\r
- /* Check the TIM handle allocation */\r
- if (htim == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\r
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\r
- assert_param(IS_TIM_OPM_MODE(OnePulseMode));\r
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\r
-\r
- if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- htim->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- /* Reset interrupt callbacks to legacy weak callbacks */\r
- TIM_ResetCallback(htim);\r
-\r
- if (htim->OnePulse_MspInitCallback == NULL)\r
- {\r
- htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit;\r
- }\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- htim->OnePulse_MspInitCallback(htim);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_OnePulse_MspInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Configure the Time base in the One Pulse Mode */\r
- TIM_Base_SetConfig(htim->Instance, &htim->Init);\r
-\r
- /* Reset the OPM Bit */\r
- htim->Instance->CR1 &= ~TIM_CR1_OPM;\r
-\r
- /* Configure the OPM Mode */\r
- htim->Instance->CR1 |= OnePulseMode;\r
-\r
- /* Initialize the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the TIM One Pulse\r
- * @param htim TIM One Pulse handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the TIM Peripheral Clock */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- if (htim->OnePulse_MspDeInitCallback == NULL)\r
- {\r
- htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- htim->OnePulse_MspDeInitCallback(htim);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\r
- HAL_TIM_OnePulse_MspDeInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- /* Change TIM state */\r
- htim->State = HAL_TIM_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM One Pulse MSP.\r
- * @param htim TIM One Pulse handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_OnePulse_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes TIM One Pulse MSP.\r
- * @param htim TIM One Pulse handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM One Pulse signal generation.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(OutputChannel);\r
-\r
- /* Enable the Capture compare and the Input Capture channels\r
- (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\r
- if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\r
- if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\r
- in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together\r
-\r
- No need to enable the counter, it's enabled automatically by hardware\r
- (the counter starts in response to a stimulus and generate a pulse */\r
-\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM One Pulse signal generation.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channels to be disable\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(OutputChannel);\r
-\r
- /* Disable the Capture compare and the Input Capture channels\r
- (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\r
- if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\r
- if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\r
- in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */\r
-\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM One Pulse signal generation in interrupt mode.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(OutputChannel);\r
-\r
- /* Enable the Capture compare and the Input Capture channels\r
- (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\r
- if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\r
- if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\r
- in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together\r
-\r
- No need to enable the counter, it's enabled automatically by hardware\r
- (the counter starts in response to a stimulus and generate a pulse */\r
-\r
- /* Enable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
-\r
- /* Enable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
-\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Enable the main output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM One Pulse signal generation in interrupt mode.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(OutputChannel);\r
-\r
- /* Disable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
-\r
- /* Disable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
-\r
- /* Disable the Capture compare and the Input Capture channels\r
- (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)\r
- if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and\r
- if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output\r
- in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)\r
- {\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions\r
- * @brief TIM Encoder functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### TIM Encoder functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Initialize and configure the TIM Encoder.\r
- (+) De-initialize the TIM Encoder.\r
- (+) Start the TIM Encoder.\r
- (+) Stop the TIM Encoder.\r
- (+) Start the TIM Encoder and enable interrupt.\r
- (+) Stop the TIM Encoder and disable interrupt.\r
- (+) Start the TIM Encoder and enable DMA transfer.\r
- (+) Stop the TIM Encoder and disable DMA transfer.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Initializes the TIM Encoder Interface and initialize the associated handle.\r
- * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)\r
- * requires a timer reset to avoid unexpected direction\r
- * due to DIR bit readonly in center aligned mode.\r
- * Ex: call @ref HAL_TIM_Encoder_DeInit() before HAL_TIM_Encoder_Init()\r
- * @note Encoder mode and External clock mode 2 are not compatible and must not be selected together\r
- * Ex: A call for @ref HAL_TIM_Encoder_Init will erase the settings of @ref HAL_TIM_ConfigClockSource\r
- * using TIM_CLOCKSOURCE_ETRMODE2 and vice versa\r
- * @param htim TIM Encoder Interface handle\r
- * @param sConfig TIM Encoder Interface configuration structure\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig)\r
-{\r
- uint32_t tmpsmcr;\r
- uint32_t tmpccmr1;\r
- uint32_t tmpccer;\r
-\r
- /* Check the TIM handle allocation */\r
- if (htim == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\r
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\r
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));\r
- assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));\r
- assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));\r
- assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));\r
- assert_param(IS_TIM_IC_POLARITY(sConfig->IC2Polarity));\r
- assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));\r
- assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));\r
- assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));\r
- assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter));\r
-\r
- if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- htim->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- /* Reset interrupt callbacks to legacy weak callbacks */\r
- TIM_ResetCallback(htim);\r
-\r
- if (htim->Encoder_MspInitCallback == NULL)\r
- {\r
- htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit;\r
- }\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- htim->Encoder_MspInitCallback(htim);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIM_Encoder_MspInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Reset the SMS and ECE bits */\r
- htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE);\r
-\r
- /* Configure the Time base in the Encoder Mode */\r
- TIM_Base_SetConfig(htim->Instance, &htim->Init);\r
-\r
- /* Get the TIMx SMCR register value */\r
- tmpsmcr = htim->Instance->SMCR;\r
-\r
- /* Get the TIMx CCMR1 register value */\r
- tmpccmr1 = htim->Instance->CCMR1;\r
-\r
- /* Get the TIMx CCER register value */\r
- tmpccer = htim->Instance->CCER;\r
-\r
- /* Set the encoder Mode */\r
- tmpsmcr |= sConfig->EncoderMode;\r
-\r
- /* Select the Capture Compare 1 and the Capture Compare 2 as input */\r
- tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S);\r
- tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U));\r
-\r
- /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */\r
- tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC);\r
- tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F);\r
- tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U);\r
- tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U);\r
-\r
- /* Set the TI1 and the TI2 Polarities */\r
- tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);\r
- tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP);\r
- tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U);\r
-\r
- /* Write to TIMx SMCR */\r
- htim->Instance->SMCR = tmpsmcr;\r
-\r
- /* Write to TIMx CCMR1 */\r
- htim->Instance->CCMR1 = tmpccmr1;\r
-\r
- /* Write to TIMx CCER */\r
- htim->Instance->CCER = tmpccer;\r
-\r
- /* Initialize the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-\r
-/**\r
- * @brief DeInitializes the TIM Encoder interface\r
- * @param htim TIM Encoder Interface handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the TIM Peripheral Clock */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- if (htim->Encoder_MspDeInitCallback == NULL)\r
- {\r
- htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- htim->Encoder_MspDeInitCallback(htim);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\r
- HAL_TIM_Encoder_MspDeInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- /* Change TIM state */\r
- htim->State = HAL_TIM_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM Encoder Interface MSP.\r
- * @param htim TIM Encoder Interface handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_Encoder_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes TIM Encoder Interface MSP.\r
- * @param htim TIM Encoder Interface handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_Encoder_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Encoder Interface.\r
- * @param htim TIM Encoder Interface handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- /* Enable the encoder interface channels */\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
- break;\r
- }\r
-\r
- default :\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
- break;\r
- }\r
- }\r
- /* Enable the Peripheral */\r
- __HAL_TIM_ENABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Encoder Interface.\r
- * @param htim TIM Encoder Interface handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- /* Disable the Input Capture channels 1 and 2\r
- (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
- break;\r
- }\r
-\r
- default :\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
- break;\r
- }\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Encoder Interface in interrupt mode.\r
- * @param htim TIM Encoder Interface handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- /* Enable the encoder interface channels */\r
- /* Enable the capture compare Interrupts 1 and/or 2 */\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- default :\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
- }\r
-\r
- /* Enable the Peripheral */\r
- __HAL_TIM_ENABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Encoder Interface in interrupt mode.\r
- * @param htim TIM Encoder Interface handle\r
- * @param Channel TIM Channels to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- /* Disable the Input Capture channels 1 and 2\r
- (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */\r
- if (Channel == TIM_CHANNEL_1)\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
-\r
- /* Disable the capture compare Interrupts 1 */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
- }\r
- else if (Channel == TIM_CHANNEL_2)\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
-\r
- /* Disable the capture compare Interrupts 2 */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
- }\r
- else\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
-\r
- /* Disable the capture compare Interrupts 1 and 2 */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Encoder Interface in DMA mode.\r
- * @param htim TIM Encoder Interface handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\r
- * @param pData1 The destination Buffer address for IC1.\r
- * @param pData2 The destination Buffer address for IC2.\r
- * @param Length The length of data to be transferred from TIM peripheral to memory.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Input Capture DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_TIM_ENABLE(htim);\r
-\r
- /* Enable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError;\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Input Capture DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_TIM_ENABLE(htim);\r
-\r
- /* Enable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_ALL:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the Peripheral */\r
- __HAL_TIM_ENABLE(htim);\r
-\r
- /* Enable the Capture compare channel */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);\r
-\r
- /* Enable the TIM Input Capture DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
- /* Enable the TIM Input Capture DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Encoder Interface in DMA mode.\r
- * @param htim TIM Encoder Interface handle\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));\r
-\r
- /* Disable the Input Capture channels 1 and 2\r
- (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */\r
- if (Channel == TIM_CHANNEL_1)\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
-\r
- /* Disable the capture compare DMA Request 1 */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- }\r
- else if (Channel == TIM_CHANNEL_2)\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
-\r
- /* Disable the capture compare DMA Request 2 */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- }\r
- else\r
- {\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);\r
-\r
- /* Disable the capture compare DMA Request 1 and 2 */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- }\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management\r
- * @brief TIM IRQ handler management\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### IRQ handler management #####\r
- ==============================================================================\r
- [..]\r
- This section provides Timer IRQ handler function.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief This function handles TIM interrupts requests.\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)\r
-{\r
- /* Capture compare 1 event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET)\r
- {\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\r
-\r
- /* Input capture event */\r
- if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U)\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->IC_CaptureCallback(htim);\r
-#else\r
- HAL_TIM_IC_CaptureCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- /* Output compare event */\r
- else\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->OC_DelayElapsedCallback(htim);\r
- htim->PWM_PulseFinishedCallback(htim);\r
-#else\r
- HAL_TIM_OC_DelayElapsedCallback(htim);\r
- HAL_TIM_PWM_PulseFinishedCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
- }\r
- }\r
- }\r
- /* Capture compare 2 event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\r
- /* Input capture event */\r
- if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->IC_CaptureCallback(htim);\r
-#else\r
- HAL_TIM_IC_CaptureCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- /* Output compare event */\r
- else\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->OC_DelayElapsedCallback(htim);\r
- htim->PWM_PulseFinishedCallback(htim);\r
-#else\r
- HAL_TIM_OC_DelayElapsedCallback(htim);\r
- HAL_TIM_PWM_PulseFinishedCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
- }\r
- }\r
- /* Capture compare 3 event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\r
- /* Input capture event */\r
- if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->IC_CaptureCallback(htim);\r
-#else\r
- HAL_TIM_IC_CaptureCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- /* Output compare event */\r
- else\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->OC_DelayElapsedCallback(htim);\r
- htim->PWM_PulseFinishedCallback(htim);\r
-#else\r
- HAL_TIM_OC_DelayElapsedCallback(htim);\r
- HAL_TIM_PWM_PulseFinishedCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
- }\r
- }\r
- /* Capture compare 4 event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\r
- /* Input capture event */\r
- if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->IC_CaptureCallback(htim);\r
-#else\r
- HAL_TIM_IC_CaptureCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- /* Output compare event */\r
- else\r
- {\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->OC_DelayElapsedCallback(htim);\r
- htim->PWM_PulseFinishedCallback(htim);\r
-#else\r
- HAL_TIM_OC_DelayElapsedCallback(htim);\r
- HAL_TIM_PWM_PulseFinishedCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
- }\r
- }\r
- /* TIM Update event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->PeriodElapsedCallback(htim);\r
-#else\r
- HAL_TIM_PeriodElapsedCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- }\r
- /* TIM Break input event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK);\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->BreakCallback(htim);\r
-#else\r
- HAL_TIMEx_BreakCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- }\r
- /* TIM Break2 input event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2);\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->Break2Callback(htim);\r
-#else\r
- HAL_TIMEx_Break2Callback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- }\r
- /* TIM Trigger detection event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->TriggerCallback(htim);\r
-#else\r
- HAL_TIM_TriggerCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- }\r
- /* TIM commutation event */\r
- if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET)\r
- {\r
- if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET)\r
- {\r
- __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM);\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->CommutationCallback(htim);\r
-#else\r
- HAL_TIMEx_CommutCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions\r
- * @brief TIM Peripheral Control functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Peripheral Control functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode.\r
- (+) Configure External Clock source.\r
- (+) Configure Complementary channels, break features and dead time.\r
- (+) Configure Master and the Slave synchronization.\r
- (+) Configure the DMA Burst Mode.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Initializes the TIM Output Compare Channels according to the specified\r
- * parameters in the TIM_OC_InitTypeDef.\r
- * @param htim TIM Output Compare handle\r
- * @param sConfig TIM Output Compare configuration structure\r
- * @param Channel TIM Channels to configure\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim,\r
- TIM_OC_InitTypeDef *sConfig,\r
- uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CHANNELS(Channel));\r
- assert_param(IS_TIM_OC_MODE(sConfig->OCMode));\r
- assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
-\r
- /* Configure the TIM Channel 1 in Output Compare */\r
- TIM_OC1_SetConfig(htim->Instance, sConfig);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- /* Configure the TIM Channel 2 in Output Compare */\r
- TIM_OC2_SetConfig(htim->Instance, sConfig);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\r
-\r
- /* Configure the TIM Channel 3 in Output Compare */\r
- TIM_OC3_SetConfig(htim->Instance, sConfig);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\r
-\r
- /* Configure the TIM Channel 4 in Output Compare */\r
- TIM_OC4_SetConfig(htim->Instance, sConfig);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_5:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC5_INSTANCE(htim->Instance));\r
-\r
- /* Configure the TIM Channel 5 in Output Compare */\r
- TIM_OC5_SetConfig(htim->Instance, sConfig);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_6:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC6_INSTANCE(htim->Instance));\r
-\r
- /* Configure the TIM Channel 6 in Output Compare */\r
- TIM_OC6_SetConfig(htim->Instance, sConfig);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM Input Capture Channels according to the specified\r
- * parameters in the TIM_IC_InitTypeDef.\r
- * @param htim TIM IC handle\r
- * @param sConfig TIM Input Capture configuration structure\r
- * @param Channel TIM Channel to configure\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity));\r
- assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection));\r
- assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler));\r
- assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter));\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- if (Channel == TIM_CHANNEL_1)\r
- {\r
- /* TI1 Configuration */\r
- TIM_TI1_SetConfig(htim->Instance,\r
- sConfig->ICPolarity,\r
- sConfig->ICSelection,\r
- sConfig->ICFilter);\r
-\r
- /* Reset the IC1PSC Bits */\r
- htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;\r
-\r
- /* Set the IC1PSC value */\r
- htim->Instance->CCMR1 |= sConfig->ICPrescaler;\r
- }\r
- else if (Channel == TIM_CHANNEL_2)\r
- {\r
- /* TI2 Configuration */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- TIM_TI2_SetConfig(htim->Instance,\r
- sConfig->ICPolarity,\r
- sConfig->ICSelection,\r
- sConfig->ICFilter);\r
-\r
- /* Reset the IC2PSC Bits */\r
- htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;\r
-\r
- /* Set the IC2PSC value */\r
- htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8U);\r
- }\r
- else if (Channel == TIM_CHANNEL_3)\r
- {\r
- /* TI3 Configuration */\r
- assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\r
-\r
- TIM_TI3_SetConfig(htim->Instance,\r
- sConfig->ICPolarity,\r
- sConfig->ICSelection,\r
- sConfig->ICFilter);\r
-\r
- /* Reset the IC3PSC Bits */\r
- htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC;\r
-\r
- /* Set the IC3PSC value */\r
- htim->Instance->CCMR2 |= sConfig->ICPrescaler;\r
- }\r
- else\r
- {\r
- /* TI4 Configuration */\r
- assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\r
-\r
- TIM_TI4_SetConfig(htim->Instance,\r
- sConfig->ICPolarity,\r
- sConfig->ICSelection,\r
- sConfig->ICFilter);\r
-\r
- /* Reset the IC4PSC Bits */\r
- htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC;\r
-\r
- /* Set the IC4PSC value */\r
- htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U);\r
- }\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM PWM channels according to the specified\r
- * parameters in the TIM_OC_InitTypeDef.\r
- * @param htim TIM PWM handle\r
- * @param sConfig TIM PWM configuration structure\r
- * @param Channel TIM Channels to be configured\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim,\r
- TIM_OC_InitTypeDef *sConfig,\r
- uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CHANNELS(Channel));\r
- assert_param(IS_TIM_PWM_MODE(sConfig->OCMode));\r
- assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));\r
- assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode));\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
-\r
- /* Configure the Channel 1 in PWM mode */\r
- TIM_OC1_SetConfig(htim->Instance, sConfig);\r
-\r
- /* Set the Preload enable bit for channel1 */\r
- htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE;\r
-\r
- /* Configure the Output Fast mode */\r
- htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE;\r
- htim->Instance->CCMR1 |= sConfig->OCFastMode;\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- /* Configure the Channel 2 in PWM mode */\r
- TIM_OC2_SetConfig(htim->Instance, sConfig);\r
-\r
- /* Set the Preload enable bit for channel2 */\r
- htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE;\r
-\r
- /* Configure the Output Fast mode */\r
- htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE;\r
- htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U;\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\r
-\r
- /* Configure the Channel 3 in PWM mode */\r
- TIM_OC3_SetConfig(htim->Instance, sConfig);\r
-\r
- /* Set the Preload enable bit for channel3 */\r
- htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE;\r
-\r
- /* Configure the Output Fast mode */\r
- htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE;\r
- htim->Instance->CCMR2 |= sConfig->OCFastMode;\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\r
-\r
- /* Configure the Channel 4 in PWM mode */\r
- TIM_OC4_SetConfig(htim->Instance, sConfig);\r
-\r
- /* Set the Preload enable bit for channel4 */\r
- htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE;\r
-\r
- /* Configure the Output Fast mode */\r
- htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE;\r
- htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U;\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_5:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC5_INSTANCE(htim->Instance));\r
-\r
- /* Configure the Channel 5 in PWM mode */\r
- TIM_OC5_SetConfig(htim->Instance, sConfig);\r
-\r
- /* Set the Preload enable bit for channel5*/\r
- htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE;\r
-\r
- /* Configure the Output Fast mode */\r
- htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE;\r
- htim->Instance->CCMR3 |= sConfig->OCFastMode;\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_6:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC6_INSTANCE(htim->Instance));\r
-\r
- /* Configure the Channel 6 in PWM mode */\r
- TIM_OC6_SetConfig(htim->Instance, sConfig);\r
-\r
- /* Set the Preload enable bit for channel6 */\r
- htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE;\r
-\r
- /* Configure the Output Fast mode */\r
- htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE;\r
- htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U;\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM One Pulse Channels according to the specified\r
- * parameters in the TIM_OnePulse_InitTypeDef.\r
- * @param htim TIM One Pulse handle\r
- * @param sConfig TIM One Pulse configuration structure\r
- * @param OutputChannel TIM output channel to configure\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @param InputChannel TIM input Channel to configure\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel)\r
-{\r
- TIM_OC_InitTypeDef temp1;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_OPM_CHANNELS(OutputChannel));\r
- assert_param(IS_TIM_OPM_CHANNELS(InputChannel));\r
-\r
- if (OutputChannel != InputChannel)\r
- {\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Extract the Output compare configuration from sConfig structure */\r
- temp1.OCMode = sConfig->OCMode;\r
- temp1.Pulse = sConfig->Pulse;\r
- temp1.OCPolarity = sConfig->OCPolarity;\r
- temp1.OCNPolarity = sConfig->OCNPolarity;\r
- temp1.OCIdleState = sConfig->OCIdleState;\r
- temp1.OCNIdleState = sConfig->OCNIdleState;\r
-\r
- switch (OutputChannel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
-\r
- TIM_OC1_SetConfig(htim->Instance, &temp1);\r
- break;\r
- }\r
- case TIM_CHANNEL_2:\r
- {\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- TIM_OC2_SetConfig(htim->Instance, &temp1);\r
- break;\r
- }\r
- default:\r
- break;\r
- }\r
-\r
- switch (InputChannel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
-\r
- TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity,\r
- sConfig->ICSelection, sConfig->ICFilter);\r
-\r
- /* Reset the IC1PSC Bits */\r
- htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;\r
-\r
- /* Select the Trigger source */\r
- htim->Instance->SMCR &= ~TIM_SMCR_TS;\r
- htim->Instance->SMCR |= TIM_TS_TI1FP1;\r
-\r
- /* Select the Slave Mode */\r
- htim->Instance->SMCR &= ~TIM_SMCR_SMS;\r
- htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;\r
- break;\r
- }\r
- case TIM_CHANNEL_2:\r
- {\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity,\r
- sConfig->ICSelection, sConfig->ICFilter);\r
-\r
- /* Reset the IC2PSC Bits */\r
- htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;\r
-\r
- /* Select the Trigger source */\r
- htim->Instance->SMCR &= ~TIM_SMCR_TS;\r
- htim->Instance->SMCR |= TIM_TS_TI2FP2;\r
-\r
- /* Select the Slave Mode */\r
- htim->Instance->SMCR &= ~TIM_SMCR_SMS;\r
- htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_ERROR;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Configure the DMA Burst to transfer Data from the memory to the TIM peripheral\r
- * @param htim TIM handle\r
- * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write\r
- * This parameter can be one of the following values:\r
- * @arg TIM_DMABASE_CR1\r
- * @arg TIM_DMABASE_CR2\r
- * @arg TIM_DMABASE_SMCR\r
- * @arg TIM_DMABASE_DIER\r
- * @arg TIM_DMABASE_SR\r
- * @arg TIM_DMABASE_EGR\r
- * @arg TIM_DMABASE_CCMR1\r
- * @arg TIM_DMABASE_CCMR2\r
- * @arg TIM_DMABASE_CCER\r
- * @arg TIM_DMABASE_CNT\r
- * @arg TIM_DMABASE_PSC\r
- * @arg TIM_DMABASE_ARR\r
- * @arg TIM_DMABASE_RCR\r
- * @arg TIM_DMABASE_CCR1\r
- * @arg TIM_DMABASE_CCR2\r
- * @arg TIM_DMABASE_CCR3\r
- * @arg TIM_DMABASE_CCR4\r
- * @arg TIM_DMABASE_BDTR\r
- * @arg TIM_DMABASE_OR\r
- * @arg TIM_DMABASE_CCMR3 \r
- * @arg TIM_DMABASE_CCR5 \r
- * @arg TIM_DMABASE_CCR6 \r
- * @arg TIM_DMABASE_AF1 (*)\r
- * @arg TIM_DMABASE_AF2 (*)\r
- * (*) value not defined in all devices\r
- * @param BurstRequestSrc TIM DMA Request sources\r
- * This parameter can be one of the following values:\r
- * @arg TIM_DMA_UPDATE: TIM update Interrupt source\r
- * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source\r
- * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source\r
- * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source\r
- * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source\r
- * @arg TIM_DMA_COM: TIM Commutation DMA source\r
- * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source\r
- * @param BurstBuffer The Buffer address.\r
- * @param BurstLength DMA Burst length. This parameter can be one value\r
- * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.\r
- * @note This function should be used only when BurstLength is equal to DMA data transfer length.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,\r
- uint32_t *BurstBuffer, uint32_t BurstLength)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));\r
- assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\r
- assert_param(IS_TIM_DMA_LENGTH(BurstLength));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if ((BurstBuffer == NULL) && (BurstLength > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
- switch (BurstRequestSrc)\r
- {\r
- case TIM_DMA_UPDATE:\r
- {\r
- /* Set the DMA Period elapsed callbacks */\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC1:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC2:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC3:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC4:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_COM:\r
- {\r
- /* Set the DMA commutation callbacks */\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt;\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_TRIGGER:\r
- {\r
- /* Set the DMA trigger callbacks */\r
- htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;\r
- htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- default:\r
- break;\r
- }\r
- /* configure the DMA Burst Mode */\r
- htim->Instance->DCR = (BurstBaseAddress | BurstLength);\r
-\r
- /* Enable the TIM DMA Request */\r
- __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM DMA Burst mode\r
- * @param htim TIM handle\r
- * @param BurstRequestSrc TIM DMA Request sources to disable\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\r
-\r
- /* Abort the DMA transfer (at least disable the DMA stream) */\r
- switch (BurstRequestSrc)\r
- {\r
- case TIM_DMA_UPDATE:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]);\r
- break;\r
- }\r
- case TIM_DMA_CC1:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- break;\r
- }\r
- case TIM_DMA_CC2:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- break;\r
- }\r
- case TIM_DMA_CC3:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\r
- break;\r
- }\r
- case TIM_DMA_CC4:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\r
- break;\r
- }\r
- case TIM_DMA_COM:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]);\r
- break;\r
- }\r
- case TIM_DMA_TRIGGER:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]);\r
- break;\r
- }\r
- default:\r
- break;\r
- }\r
-\r
- if (HAL_OK == status)\r
- {\r
- /* Disable the TIM Update DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);\r
- }\r
-\r
- /* Return function status */\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory\r
- * @param htim TIM handle\r
- * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read\r
- * This parameter can be one of the following values:\r
- * @arg TIM_DMABASE_CR1\r
- * @arg TIM_DMABASE_CR2\r
- * @arg TIM_DMABASE_SMCR\r
- * @arg TIM_DMABASE_DIER\r
- * @arg TIM_DMABASE_SR\r
- * @arg TIM_DMABASE_EGR\r
- * @arg TIM_DMABASE_CCMR1\r
- * @arg TIM_DMABASE_CCMR2\r
- * @arg TIM_DMABASE_CCER\r
- * @arg TIM_DMABASE_CNT\r
- * @arg TIM_DMABASE_PSC\r
- * @arg TIM_DMABASE_ARR\r
- * @arg TIM_DMABASE_RCR\r
- * @arg TIM_DMABASE_CCR1\r
- * @arg TIM_DMABASE_CCR2\r
- * @arg TIM_DMABASE_CCR3\r
- * @arg TIM_DMABASE_CCR4\r
- * @arg TIM_DMABASE_BDTR\r
- * @arg TIM_DMABASE_OR\r
- * @arg TIM_DMABASE_CCMR3 \r
- * @arg TIM_DMABASE_CCR5 \r
- * @arg TIM_DMABASE_CCR6 \r
- * @arg TIM_DMABASE_AF1 (*)\r
- * @arg TIM_DMABASE_AF2 (*)\r
- * (*) value not defined in all devices\r
- * @param BurstRequestSrc TIM DMA Request sources\r
- * This parameter can be one of the following values:\r
- * @arg TIM_DMA_UPDATE: TIM update Interrupt source\r
- * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source\r
- * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source\r
- * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source\r
- * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source\r
- * @arg TIM_DMA_COM: TIM Commutation DMA source\r
- * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source\r
- * @param BurstBuffer The Buffer address.\r
- * @param BurstLength DMA Burst length. This parameter can be one value\r
- * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.\r
- * @note This function should be used only when BurstLength is equal to DMA data transfer length.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,\r
- uint32_t *BurstBuffer, uint32_t BurstLength)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));\r
- assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\r
- assert_param(IS_TIM_DMA_LENGTH(BurstLength));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if ((BurstBuffer == NULL) && (BurstLength > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
- switch (BurstRequestSrc)\r
- {\r
- case TIM_DMA_UPDATE:\r
- {\r
- /* Set the DMA Period elapsed callbacks */\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC1:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC2:\r
- {\r
- /* Set the DMA capture/compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC3:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_CC4:\r
- {\r
- /* Set the DMA capture callbacks */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_COM:\r
- {\r
- /* Set the DMA commutation callbacks */\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt;\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- case TIM_DMA_TRIGGER:\r
- {\r
- /* Set the DMA trigger callbacks */\r
- htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;\r
- htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8U) + 1U) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- break;\r
- }\r
- default:\r
- break;\r
- }\r
-\r
- /* configure the DMA Burst Mode */\r
- htim->Instance->DCR = (BurstBaseAddress | BurstLength);\r
-\r
- /* Enable the TIM DMA Request */\r
- __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stop the DMA burst reading\r
- * @param htim TIM handle\r
- * @param BurstRequestSrc TIM DMA Request sources to disable.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
- /* Check the parameters */\r
- assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));\r
-\r
- /* Abort the DMA transfer (at least disable the DMA stream) */\r
- switch (BurstRequestSrc)\r
- {\r
- case TIM_DMA_UPDATE:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]);\r
- break;\r
- }\r
- case TIM_DMA_CC1:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- break;\r
- }\r
- case TIM_DMA_CC2:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- break;\r
- }\r
- case TIM_DMA_CC3:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\r
- break;\r
- }\r
- case TIM_DMA_CC4:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]);\r
- break;\r
- }\r
- case TIM_DMA_COM:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]);\r
- break;\r
- }\r
- case TIM_DMA_TRIGGER:\r
- {\r
- status = HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]);\r
- break;\r
- }\r
- default:\r
- break;\r
- }\r
-\r
- if (HAL_OK == status)\r
- {\r
- /* Disable the TIM Update DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);\r
- }\r
-\r
- /* Return function status */\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Generate a software event\r
- * @param htim TIM handle\r
- * @param EventSource specifies the event source.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_EVENTSOURCE_UPDATE: Timer update Event source\r
- * @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source\r
- * @arg TIM_EVENTSOURCE_CC2: Timer Capture Compare 2 Event source\r
- * @arg TIM_EVENTSOURCE_CC3: Timer Capture Compare 3 Event source\r
- * @arg TIM_EVENTSOURCE_CC4: Timer Capture Compare 4 Event source\r
- * @arg TIM_EVENTSOURCE_COM: Timer COM event source\r
- * @arg TIM_EVENTSOURCE_TRIGGER: Timer Trigger Event source\r
- * @arg TIM_EVENTSOURCE_BREAK: Timer Break event source\r
- * @arg TIM_EVENTSOURCE_BREAK2: Timer Break2 event source\r
- * @note Basic timers can only generate an update event.\r
- * @note TIM_EVENTSOURCE_COM is relevant only with advanced timer instances.\r
- * @note TIM_EVENTSOURCE_BREAK and TIM_EVENTSOURCE_BREAK2 are relevant\r
- * only for timer instances supporting break input(s).\r
- * @retval HAL status\r
- */\r
-\r
-HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_EVENT_SOURCE(EventSource));\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- /* Change the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Set the event sources */\r
- htim->Instance->EGR = EventSource;\r
-\r
- /* Change the TIM state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configures the OCRef clear feature\r
- * @param htim TIM handle\r
- * @param sClearInputConfig pointer to a TIM_ClearInputConfigTypeDef structure that\r
- * contains the OCREF clear feature and parameters for the TIM peripheral.\r
- * @param Channel specifies the TIM Channel\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1\r
- * @arg TIM_CHANNEL_2: TIM Channel 2\r
- * @arg TIM_CHANNEL_3: TIM Channel 3\r
- * @arg TIM_CHANNEL_4: TIM Channel 4\r
- * @arg TIM_CHANNEL_5: TIM Channel 5\r
- * @arg TIM_CHANNEL_6: TIM Channel 6\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim,\r
- TIM_ClearInputConfigTypeDef *sClearInputConfig,\r
- uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource));\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- switch (sClearInputConfig->ClearInputSource)\r
- {\r
- case TIM_CLEARINPUTSOURCE_NONE:\r
- {\r
- /* Clear the OCREF clear selection bit and the the ETR Bits */\r
- CLEAR_BIT(htim->Instance->SMCR, (TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP));\r
- break;\r
- }\r
-\r
- case TIM_CLEARINPUTSOURCE_ETR:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity));\r
- assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler));\r
- assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter));\r
-\r
- /* When OCRef clear feature is used with ETR source, ETR prescaler must be off */\r
- if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)\r
- {\r
- htim->State = HAL_TIM_STATE_READY;\r
- __HAL_UNLOCK(htim);\r
- return HAL_ERROR;\r
- }\r
-\r
- TIM_ETR_SetConfig(htim->Instance,\r
- sClearInputConfig->ClearInputPrescaler,\r
- sClearInputConfig->ClearInputPolarity,\r
- sClearInputConfig->ClearInputFilter);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\r
- {\r
- /* Enable the OCREF clear feature for Channel 1 */\r
- SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);\r
- }\r
- else\r
- {\r
- /* Disable the OCREF clear feature for Channel 1 */\r
- CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);\r
- }\r
- break;\r
- }\r
- case TIM_CHANNEL_2:\r
- {\r
- if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\r
- {\r
- /* Enable the OCREF clear feature for Channel 2 */\r
- SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);\r
- }\r
- else\r
- {\r
- /* Disable the OCREF clear feature for Channel 2 */\r
- CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);\r
- }\r
- break;\r
- }\r
- case TIM_CHANNEL_3:\r
- {\r
- if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\r
- {\r
- /* Enable the OCREF clear feature for Channel 3 */\r
- SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);\r
- }\r
- else\r
- {\r
- /* Disable the OCREF clear feature for Channel 3 */\r
- CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);\r
- }\r
- break;\r
- }\r
- case TIM_CHANNEL_4:\r
- {\r
- if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\r
- {\r
- /* Enable the OCREF clear feature for Channel 4 */\r
- SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);\r
- }\r
- else\r
- {\r
- /* Disable the OCREF clear feature for Channel 4 */\r
- CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);\r
- }\r
- break;\r
- }\r
- case TIM_CHANNEL_5:\r
- {\r
- if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\r
- {\r
- /* Enable the OCREF clear feature for Channel 5 */\r
- SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);\r
- }\r
- else\r
- {\r
- /* Disable the OCREF clear feature for Channel 5 */\r
- CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);\r
- }\r
- break;\r
- }\r
- case TIM_CHANNEL_6:\r
- {\r
- if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)\r
- {\r
- /* Enable the OCREF clear feature for Channel 6 */\r
- SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);\r
- }\r
- else\r
- {\r
- /* Disable the OCREF clear feature for Channel 6 */\r
- CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);\r
- }\r
- break;\r
- }\r
- default:\r
- break;\r
- }\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configures the clock source to be used\r
- * @param htim TIM handle\r
- * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that\r
- * contains the clock source information for the TIM peripheral.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource));\r
-\r
- /* Reset the SMS, TS, ECE, ETPS and ETRF bits */\r
- tmpsmcr = htim->Instance->SMCR;\r
- tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);\r
- tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);\r
- htim->Instance->SMCR = tmpsmcr;\r
-\r
- switch (sClockSourceConfig->ClockSource)\r
- {\r
- case TIM_CLOCKSOURCE_INTERNAL:\r
- {\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
- break;\r
- }\r
-\r
- case TIM_CLOCKSOURCE_ETRMODE1:\r
- {\r
- /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/\r
- assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance));\r
-\r
- /* Check ETR input conditioning related parameters */\r
- assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler));\r
- assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\r
- assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\r
-\r
- /* Configure the ETR Clock source */\r
- TIM_ETR_SetConfig(htim->Instance,\r
- sClockSourceConfig->ClockPrescaler,\r
- sClockSourceConfig->ClockPolarity,\r
- sClockSourceConfig->ClockFilter);\r
-\r
- /* Select the External clock mode1 and the ETRF trigger */\r
- tmpsmcr = htim->Instance->SMCR;\r
- tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1);\r
- /* Write to TIMx SMCR */\r
- htim->Instance->SMCR = tmpsmcr;\r
- break;\r
- }\r
-\r
- case TIM_CLOCKSOURCE_ETRMODE2:\r
- {\r
- /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/\r
- assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance));\r
-\r
- /* Check ETR input conditioning related parameters */\r
- assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler));\r
- assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\r
- assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\r
-\r
- /* Configure the ETR Clock source */\r
- TIM_ETR_SetConfig(htim->Instance,\r
- sClockSourceConfig->ClockPrescaler,\r
- sClockSourceConfig->ClockPolarity,\r
- sClockSourceConfig->ClockFilter);\r
- /* Enable the External clock mode2 */\r
- htim->Instance->SMCR |= TIM_SMCR_ECE;\r
- break;\r
- }\r
-\r
- case TIM_CLOCKSOURCE_TI1:\r
- {\r
- /* Check whether or not the timer instance supports external clock mode 1 */\r
- assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));\r
-\r
- /* Check TI1 input conditioning related parameters */\r
- assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\r
- assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\r
-\r
- TIM_TI1_ConfigInputStage(htim->Instance,\r
- sClockSourceConfig->ClockPolarity,\r
- sClockSourceConfig->ClockFilter);\r
- TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1);\r
- break;\r
- }\r
-\r
- case TIM_CLOCKSOURCE_TI2:\r
- {\r
- /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/\r
- assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));\r
-\r
- /* Check TI2 input conditioning related parameters */\r
- assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\r
- assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\r
-\r
- TIM_TI2_ConfigInputStage(htim->Instance,\r
- sClockSourceConfig->ClockPolarity,\r
- sClockSourceConfig->ClockFilter);\r
- TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2);\r
- break;\r
- }\r
-\r
- case TIM_CLOCKSOURCE_TI1ED:\r
- {\r
- /* Check whether or not the timer instance supports external clock mode 1 */\r
- assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));\r
-\r
- /* Check TI1 input conditioning related parameters */\r
- assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));\r
- assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));\r
-\r
- TIM_TI1_ConfigInputStage(htim->Instance,\r
- sClockSourceConfig->ClockPolarity,\r
- sClockSourceConfig->ClockFilter);\r
- TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED);\r
- break;\r
- }\r
-\r
- case TIM_CLOCKSOURCE_ITR0:\r
- case TIM_CLOCKSOURCE_ITR1:\r
- case TIM_CLOCKSOURCE_ITR2:\r
- case TIM_CLOCKSOURCE_ITR3:\r
- {\r
- /* Check whether or not the timer instance supports internal trigger input */\r
- assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));\r
-\r
- TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Selects the signal connected to the TI1 input: direct from CH1_input\r
- * or a XOR combination between CH1_input, CH2_input & CH3_input\r
- * @param htim TIM handle.\r
- * @param TI1_Selection Indicate whether or not channel 1 is connected to the\r
- * output of a XOR gate.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input\r
- * @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3\r
- * pins are connected to the TI1 input (XOR combination)\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection)\r
-{\r
- uint32_t tmpcr2;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_TI1SELECTION(TI1_Selection));\r
-\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = htim->Instance->CR2;\r
-\r
- /* Reset the TI1 selection */\r
- tmpcr2 &= ~TIM_CR2_TI1S;\r
-\r
- /* Set the TI1 selection */\r
- tmpcr2 |= TI1_Selection;\r
-\r
- /* Write to TIMxCR2 */\r
- htim->Instance->CR2 = tmpcr2;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configures the TIM in Slave mode\r
- * @param htim TIM handle.\r
- * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that\r
- * contains the selected trigger (internal trigger input, filtered\r
- * timer input or external trigger input) and the Slave mode\r
- * (Disable, Reset, Gated, Trigger, External clock mode 1).\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));\r
- assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));\r
-\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)\r
- {\r
- htim->State = HAL_TIM_STATE_READY;\r
- __HAL_UNLOCK(htim);\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Disable Trigger Interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER);\r
-\r
- /* Disable Trigger DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configures the TIM in Slave mode in interrupt mode\r
- * @param htim TIM handle.\r
- * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that\r
- * contains the selected trigger (internal trigger input, filtered\r
- * timer input or external trigger input) and the Slave mode\r
- * (Disable, Reset, Gated, Trigger, External clock mode 1).\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,\r
- TIM_SlaveConfigTypeDef *sSlaveConfig)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));\r
- assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));\r
-\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)\r
- {\r
- htim->State = HAL_TIM_STATE_READY;\r
- __HAL_UNLOCK(htim);\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Enable Trigger Interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER);\r
-\r
- /* Disable Trigger DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Read the captured value from Capture Compare unit\r
- * @param htim TIM handle.\r
- * @param Channel TIM Channels to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @arg TIM_CHANNEL_4: TIM Channel 4 selected\r
- * @retval Captured value\r
- */\r
-uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpreg = 0U;\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
-\r
- /* Return the capture 1 value */\r
- tmpreg = htim->Instance->CCR1;\r
-\r
- break;\r
- }\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
-\r
- /* Return the capture 2 value */\r
- tmpreg = htim->Instance->CCR2;\r
-\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));\r
-\r
- /* Return the capture 3 value */\r
- tmpreg = htim->Instance->CCR3;\r
-\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_4:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));\r
-\r
- /* Return the capture 4 value */\r
- tmpreg = htim->Instance->CCR4;\r
-\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- return tmpreg;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions\r
- * @brief TIM Callbacks functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### TIM Callbacks functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides TIM callback functions:\r
- (+) TIM Period elapsed callback\r
- (+) TIM Output Compare callback\r
- (+) TIM Input capture callback\r
- (+) TIM Trigger callback\r
- (+) TIM Error callback\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Period elapsed callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_PeriodElapsedCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Period elapsed half complete callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_PeriodElapsedHalfCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Output Compare callback in non-blocking mode\r
- * @param htim TIM OC handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Input Capture callback in non-blocking mode\r
- * @param htim TIM IC handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_IC_CaptureCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Input Capture half complete callback in non-blocking mode\r
- * @param htim TIM IC handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_IC_CaptureHalfCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief PWM Pulse finished callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief PWM Pulse finished half complete callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_PWM_PulseFinishedHalfCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Hall Trigger detection callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_TriggerCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Hall Trigger detection half complete callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_TriggerHalfCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Timer error callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIM_ErrorCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
-/**\r
- * @brief Register a User TIM callback to be used instead of the weak predefined callback\r
- * @param htim tim handle\r
- * @param CallbackID ID of the callback to be registered\r
- * This parameter can be one of the following values:\r
- * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID\r
- * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID\r
- * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID\r
- * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID\r
- * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID\r
- * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID\r
- * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID\r
- * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID\r
- * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID\r
- * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID\r
- * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID\r
- * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID\r
- * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID\r
- * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID\r
- * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID\r
- * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID\r
- * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID\r
- * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID\r
- * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID\r
- * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID\r
- * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID\r
- * @param pCallback pointer to the callback function\r
- * @retval status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- if (pCallback == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Process locked */\r
- __HAL_LOCK(htim);\r
-\r
- if (htim->State == HAL_TIM_STATE_READY)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_TIM_BASE_MSPINIT_CB_ID :\r
- htim->Base_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_BASE_MSPDEINIT_CB_ID :\r
- htim->Base_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_IC_MSPINIT_CB_ID :\r
- htim->IC_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_IC_MSPDEINIT_CB_ID :\r
- htim->IC_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_OC_MSPINIT_CB_ID :\r
- htim->OC_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_OC_MSPDEINIT_CB_ID :\r
- htim->OC_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPINIT_CB_ID :\r
- htim->PWM_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPDEINIT_CB_ID :\r
- htim->PWM_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\r
- htim->OnePulse_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\r
- htim->OnePulse_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPINIT_CB_ID :\r
- htim->Encoder_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\r
- htim->Encoder_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\r
- htim->HallSensor_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\r
- htim->HallSensor_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PERIOD_ELAPSED_CB_ID :\r
- htim->PeriodElapsedCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID :\r
- htim->PeriodElapsedHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_TRIGGER_CB_ID :\r
- htim->TriggerCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_TRIGGER_HALF_CB_ID :\r
- htim->TriggerHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_IC_CAPTURE_CB_ID :\r
- htim->IC_CaptureCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_IC_CAPTURE_HALF_CB_ID :\r
- htim->IC_CaptureHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_OC_DELAY_ELAPSED_CB_ID :\r
- htim->OC_DelayElapsedCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PWM_PULSE_FINISHED_CB_ID :\r
- htim->PWM_PulseFinishedCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID :\r
- htim->PWM_PulseFinishedHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ERROR_CB_ID :\r
- htim->ErrorCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_COMMUTATION_CB_ID :\r
- htim->CommutationCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_COMMUTATION_HALF_CB_ID :\r
- htim->CommutationHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_BREAK_CB_ID :\r
- htim->BreakCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_BREAK2_CB_ID :\r
- htim->Break2Callback = pCallback;\r
- break;\r
-\r
- default :\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_TIM_BASE_MSPINIT_CB_ID :\r
- htim->Base_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_BASE_MSPDEINIT_CB_ID :\r
- htim->Base_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_IC_MSPINIT_CB_ID :\r
- htim->IC_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_IC_MSPDEINIT_CB_ID :\r
- htim->IC_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_OC_MSPINIT_CB_ID :\r
- htim->OC_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_OC_MSPDEINIT_CB_ID :\r
- htim->OC_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPINIT_CB_ID :\r
- htim->PWM_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPDEINIT_CB_ID :\r
- htim->PWM_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\r
- htim->OnePulse_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\r
- htim->OnePulse_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPINIT_CB_ID :\r
- htim->Encoder_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\r
- htim->Encoder_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\r
- htim->HallSensor_MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\r
- htim->HallSensor_MspDeInitCallback = pCallback;\r
- break;\r
-\r
- default :\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Unregister a TIM callback\r
- * TIM callback is redirected to the weak predefined callback\r
- * @param htim tim handle\r
- * @param CallbackID ID of the callback to be unregistered\r
- * This parameter can be one of the following values:\r
- * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID\r
- * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID\r
- * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID\r
- * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID\r
- * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID\r
- * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID\r
- * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID\r
- * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID\r
- * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID\r
- * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID\r
- * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID\r
- * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID\r
- * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID\r
- * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID\r
- * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID\r
- * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID\r
- * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID\r
- * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID\r
- * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID\r
- * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID\r
- * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID\r
- * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID\r
- * @retval status\r
- */\r
-HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Process locked */\r
- __HAL_LOCK(htim);\r
-\r
- if (htim->State == HAL_TIM_STATE_READY)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_TIM_BASE_MSPINIT_CB_ID :\r
- htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; /* Legacy weak Base MspInit Callback */\r
- break;\r
-\r
- case HAL_TIM_BASE_MSPDEINIT_CB_ID :\r
- htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; /* Legacy weak Base Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_IC_MSPINIT_CB_ID :\r
- htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; /* Legacy weak IC Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_IC_MSPDEINIT_CB_ID :\r
- htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; /* Legacy weak IC Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_OC_MSPINIT_CB_ID :\r
- htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; /* Legacy weak OC Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_OC_MSPDEINIT_CB_ID :\r
- htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; /* Legacy weak OC Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPINIT_CB_ID :\r
- htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; /* Legacy weak PWM Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPDEINIT_CB_ID :\r
- htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; /* Legacy weak PWM Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\r
- htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; /* Legacy weak One Pulse Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\r
- htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; /* Legacy weak One Pulse Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPINIT_CB_ID :\r
- htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; /* Legacy weak Encoder Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\r
- htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; /* Legacy weak Encoder Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\r
- htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; /* Legacy weak Hall Sensor Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\r
- htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; /* Legacy weak Hall Sensor Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_PERIOD_ELAPSED_CB_ID :\r
- htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; /* Legacy weak Period Elapsed Callback */\r
- break;\r
-\r
- case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID :\r
- htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; /* Legacy weak Period Elapsed half complete Callback */\r
- break;\r
-\r
- case HAL_TIM_TRIGGER_CB_ID :\r
- htim->TriggerCallback = HAL_TIM_TriggerCallback; /* Legacy weak Trigger Callback */\r
- break;\r
-\r
- case HAL_TIM_TRIGGER_HALF_CB_ID :\r
- htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; /* Legacy weak Trigger half complete Callback */\r
- break;\r
-\r
- case HAL_TIM_IC_CAPTURE_CB_ID :\r
- htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; /* Legacy weak IC Capture Callback */\r
- break;\r
-\r
- case HAL_TIM_IC_CAPTURE_HALF_CB_ID :\r
- htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; /* Legacy weak IC Capture half complete Callback */\r
- break;\r
-\r
- case HAL_TIM_OC_DELAY_ELAPSED_CB_ID :\r
- htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; /* Legacy weak OC Delay Elapsed Callback */\r
- break;\r
-\r
- case HAL_TIM_PWM_PULSE_FINISHED_CB_ID :\r
- htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; /* Legacy weak PWM Pulse Finished Callback */\r
- break;\r
-\r
- case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID :\r
- htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; /* Legacy weak PWM Pulse Finished half complete Callback */\r
- break;\r
-\r
- case HAL_TIM_ERROR_CB_ID :\r
- htim->ErrorCallback = HAL_TIM_ErrorCallback; /* Legacy weak Error Callback */\r
- break;\r
-\r
- case HAL_TIM_COMMUTATION_CB_ID :\r
- htim->CommutationCallback = HAL_TIMEx_CommutCallback; /* Legacy weak Commutation Callback */\r
- break;\r
-\r
- case HAL_TIM_COMMUTATION_HALF_CB_ID :\r
- htim->CommutationHalfCpltCallback = HAL_TIMEx_CommutHalfCpltCallback; /* Legacy weak Commutation half complete Callback */\r
- break;\r
-\r
- case HAL_TIM_BREAK_CB_ID :\r
- htim->BreakCallback = HAL_TIMEx_BreakCallback; /* Legacy weak Break Callback */\r
- break;\r
-\r
- case HAL_TIM_BREAK2_CB_ID :\r
- htim->Break2Callback = HAL_TIMEx_Break2Callback; /* Legacy weak Break2 Callback */\r
- break;\r
-\r
- default :\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_TIM_BASE_MSPINIT_CB_ID :\r
- htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; /* Legacy weak Base MspInit Callback */\r
- break;\r
-\r
- case HAL_TIM_BASE_MSPDEINIT_CB_ID :\r
- htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; /* Legacy weak Base Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_IC_MSPINIT_CB_ID :\r
- htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; /* Legacy weak IC Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_IC_MSPDEINIT_CB_ID :\r
- htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; /* Legacy weak IC Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_OC_MSPINIT_CB_ID :\r
- htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; /* Legacy weak OC Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_OC_MSPDEINIT_CB_ID :\r
- htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; /* Legacy weak OC Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPINIT_CB_ID :\r
- htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; /* Legacy weak PWM Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_PWM_MSPDEINIT_CB_ID :\r
- htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; /* Legacy weak PWM Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :\r
- htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; /* Legacy weak One Pulse Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :\r
- htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; /* Legacy weak One Pulse Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPINIT_CB_ID :\r
- htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; /* Legacy weak Encoder Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :\r
- htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; /* Legacy weak Encoder Msp DeInit Callback */\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :\r
- htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; /* Legacy weak Hall Sensor Msp Init Callback */\r
- break;\r
-\r
- case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :\r
- htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; /* Legacy weak Hall Sensor Msp DeInit Callback */\r
- break;\r
-\r
- default :\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return status;\r
-}\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions\r
- * @brief TIM Peripheral State functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Peripheral State functions #####\r
- ==============================================================================\r
- [..]\r
- This subsection permits to get in run-time the status of the peripheral\r
- and the data flow.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Return the TIM Base handle state.\r
- * @param htim TIM Base handle\r
- * @retval HAL state\r
- */\r
-HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim)\r
-{\r
- return htim->State;\r
-}\r
-\r
-/**\r
- * @brief Return the TIM OC handle state.\r
- * @param htim TIM Output Compare handle\r
- * @retval HAL state\r
- */\r
-HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim)\r
-{\r
- return htim->State;\r
-}\r
-\r
-/**\r
- * @brief Return the TIM PWM handle state.\r
- * @param htim TIM handle\r
- * @retval HAL state\r
- */\r
-HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim)\r
-{\r
- return htim->State;\r
-}\r
-\r
-/**\r
- * @brief Return the TIM Input Capture handle state.\r
- * @param htim TIM IC handle\r
- * @retval HAL state\r
- */\r
-HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim)\r
-{\r
- return htim->State;\r
-}\r
-\r
-/**\r
- * @brief Return the TIM One Pulse Mode handle state.\r
- * @param htim TIM OPM handle\r
- * @retval HAL state\r
- */\r
-HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim)\r
-{\r
- return htim->State;\r
-}\r
-\r
-/**\r
- * @brief Return the TIM Encoder Mode handle state.\r
- * @param htim TIM Encoder Interface handle\r
- * @retval HAL state\r
- */\r
-HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim)\r
-{\r
- return htim->State;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIM_Private_Functions TIM Private Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief TIM DMA error callback\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-void TIM_DMAError(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->ErrorCallback(htim);\r
-#else\r
- HAL_TIM_ErrorCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Delay Pulse complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- if (hdma == htim->hdma[TIM_DMA_ID_CC1])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->PWM_PulseFinishedCallback(htim);\r
-#else\r
- HAL_TIM_PWM_PulseFinishedCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Delay Pulse half complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- if (hdma == htim->hdma[TIM_DMA_ID_CC1])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->PWM_PulseFinishedHalfCpltCallback(htim);\r
-#else\r
- HAL_TIM_PWM_PulseFinishedHalfCpltCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Capture complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- if (hdma == htim->hdma[TIM_DMA_ID_CC1])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->IC_CaptureCallback(htim);\r
-#else\r
- HAL_TIM_IC_CaptureCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Capture half complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- if (hdma == htim->hdma[TIM_DMA_ID_CC1])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC2])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC3])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;\r
- }\r
- else if (hdma == htim->hdma[TIM_DMA_ID_CC4])\r
- {\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->IC_CaptureHalfCpltCallback(htim);\r
-#else\r
- HAL_TIM_IC_CaptureHalfCpltCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Period Elapse complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->PeriodElapsedCallback(htim);\r
-#else\r
- HAL_TIM_PeriodElapsedCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Period Elapse half complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->PeriodElapsedHalfCpltCallback(htim);\r
-#else\r
- HAL_TIM_PeriodElapsedHalfCpltCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Trigger callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->TriggerCallback(htim);\r
-#else\r
- HAL_TIM_TriggerCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Trigger half complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->TriggerHalfCpltCallback(htim);\r
-#else\r
- HAL_TIM_TriggerHalfCpltCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief Time Base configuration\r
- * @param TIMx TIM peripheral\r
- * @param Structure TIM Base configuration structure\r
- * @retval None\r
- */\r
-void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)\r
-{\r
- uint32_t tmpcr1;\r
- tmpcr1 = TIMx->CR1;\r
-\r
- /* Set TIM Time Base Unit parameters ---------------------------------------*/\r
- if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))\r
- {\r
- /* Select the Counter Mode */\r
- tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);\r
- tmpcr1 |= Structure->CounterMode;\r
- }\r
-\r
- if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))\r
- {\r
- /* Set the clock division */\r
- tmpcr1 &= ~TIM_CR1_CKD;\r
- tmpcr1 |= (uint32_t)Structure->ClockDivision;\r
- }\r
-\r
- /* Set the auto-reload preload */\r
- MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);\r
-\r
- TIMx->CR1 = tmpcr1;\r
-\r
- /* Set the Autoreload value */\r
- TIMx->ARR = (uint32_t)Structure->Period ;\r
-\r
- /* Set the Prescaler value */\r
- TIMx->PSC = Structure->Prescaler;\r
-\r
- if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))\r
- {\r
- /* Set the Repetition Counter value */\r
- TIMx->RCR = Structure->RepetitionCounter;\r
- }\r
-\r
- /* Generate an update event to reload the Prescaler\r
- and the repetition counter (only for advanced timer) value immediately */\r
- TIMx->EGR = TIM_EGR_UG;\r
-}\r
-\r
-/**\r
- * @brief Timer Output Compare 1 configuration\r
- * @param TIMx to select the TIM peripheral\r
- * @param OC_Config The ouput configuration structure\r
- * @retval None\r
- */\r
-static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\r
-{\r
- uint32_t tmpccmrx;\r
- uint32_t tmpccer;\r
- uint32_t tmpcr2;\r
-\r
- /* Disable the Channel 1: Reset the CC1E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC1E;\r
-\r
- /* Get the TIMx CCER register value */\r
- tmpccer = TIMx->CCER;\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = TIMx->CR2;\r
-\r
- /* Get the TIMx CCMR1 register value */\r
- tmpccmrx = TIMx->CCMR1;\r
-\r
- /* Reset the Output Compare Mode Bits */\r
- tmpccmrx &= ~TIM_CCMR1_OC1M;\r
- tmpccmrx &= ~TIM_CCMR1_CC1S;\r
- /* Select the Output Compare Mode */\r
- tmpccmrx |= OC_Config->OCMode;\r
-\r
- /* Reset the Output Polarity level */\r
- tmpccer &= ~TIM_CCER_CC1P;\r
- /* Set the Output Compare Polarity */\r
- tmpccer |= OC_Config->OCPolarity;\r
-\r
- if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1))\r
- {\r
- /* Check parameters */\r
- assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));\r
-\r
- /* Reset the Output N Polarity level */\r
- tmpccer &= ~TIM_CCER_CC1NP;\r
- /* Set the Output N Polarity */\r
- tmpccer |= OC_Config->OCNPolarity;\r
- /* Reset the Output N State */\r
- tmpccer &= ~TIM_CCER_CC1NE;\r
- }\r
-\r
- if (IS_TIM_BREAK_INSTANCE(TIMx))\r
- {\r
- /* Check parameters */\r
- assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));\r
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\r
-\r
- /* Reset the Output Compare and Output Compare N IDLE State */\r
- tmpcr2 &= ~TIM_CR2_OIS1;\r
- tmpcr2 &= ~TIM_CR2_OIS1N;\r
- /* Set the Output Idle state */\r
- tmpcr2 |= OC_Config->OCIdleState;\r
- /* Set the Output N Idle state */\r
- tmpcr2 |= OC_Config->OCNIdleState;\r
- }\r
-\r
- /* Write to TIMx CR2 */\r
- TIMx->CR2 = tmpcr2;\r
-\r
- /* Write to TIMx CCMR1 */\r
- TIMx->CCMR1 = tmpccmrx;\r
-\r
- /* Set the Capture Compare Register value */\r
- TIMx->CCR1 = OC_Config->Pulse;\r
-\r
- /* Write to TIMx CCER */\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Timer Output Compare 2 configuration\r
- * @param TIMx to select the TIM peripheral\r
- * @param OC_Config The ouput configuration structure\r
- * @retval None\r
- */\r
-void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\r
-{\r
- uint32_t tmpccmrx;\r
- uint32_t tmpccer;\r
- uint32_t tmpcr2;\r
-\r
- /* Disable the Channel 2: Reset the CC2E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC2E;\r
-\r
- /* Get the TIMx CCER register value */\r
- tmpccer = TIMx->CCER;\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = TIMx->CR2;\r
-\r
- /* Get the TIMx CCMR1 register value */\r
- tmpccmrx = TIMx->CCMR1;\r
-\r
- /* Reset the Output Compare mode and Capture/Compare selection Bits */\r
- tmpccmrx &= ~TIM_CCMR1_OC2M;\r
- tmpccmrx &= ~TIM_CCMR1_CC2S;\r
-\r
- /* Select the Output Compare Mode */\r
- tmpccmrx |= (OC_Config->OCMode << 8U);\r
-\r
- /* Reset the Output Polarity level */\r
- tmpccer &= ~TIM_CCER_CC2P;\r
- /* Set the Output Compare Polarity */\r
- tmpccer |= (OC_Config->OCPolarity << 4U);\r
-\r
- if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2))\r
- {\r
- assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));\r
-\r
- /* Reset the Output N Polarity level */\r
- tmpccer &= ~TIM_CCER_CC2NP;\r
- /* Set the Output N Polarity */\r
- tmpccer |= (OC_Config->OCNPolarity << 4U);\r
- /* Reset the Output N State */\r
- tmpccer &= ~TIM_CCER_CC2NE;\r
-\r
- }\r
-\r
- if (IS_TIM_BREAK_INSTANCE(TIMx))\r
- {\r
- /* Check parameters */\r
- assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));\r
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\r
-\r
- /* Reset the Output Compare and Output Compare N IDLE State */\r
- tmpcr2 &= ~TIM_CR2_OIS2;\r
- tmpcr2 &= ~TIM_CR2_OIS2N;\r
- /* Set the Output Idle state */\r
- tmpcr2 |= (OC_Config->OCIdleState << 2U);\r
- /* Set the Output N Idle state */\r
- tmpcr2 |= (OC_Config->OCNIdleState << 2U);\r
- }\r
-\r
- /* Write to TIMx CR2 */\r
- TIMx->CR2 = tmpcr2;\r
-\r
- /* Write to TIMx CCMR1 */\r
- TIMx->CCMR1 = tmpccmrx;\r
-\r
- /* Set the Capture Compare Register value */\r
- TIMx->CCR2 = OC_Config->Pulse;\r
-\r
- /* Write to TIMx CCER */\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Timer Output Compare 3 configuration\r
- * @param TIMx to select the TIM peripheral\r
- * @param OC_Config The ouput configuration structure\r
- * @retval None\r
- */\r
-static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\r
-{\r
- uint32_t tmpccmrx;\r
- uint32_t tmpccer;\r
- uint32_t tmpcr2;\r
-\r
- /* Disable the Channel 3: Reset the CC2E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC3E;\r
-\r
- /* Get the TIMx CCER register value */\r
- tmpccer = TIMx->CCER;\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = TIMx->CR2;\r
-\r
- /* Get the TIMx CCMR2 register value */\r
- tmpccmrx = TIMx->CCMR2;\r
-\r
- /* Reset the Output Compare mode and Capture/Compare selection Bits */\r
- tmpccmrx &= ~TIM_CCMR2_OC3M;\r
- tmpccmrx &= ~TIM_CCMR2_CC3S;\r
- /* Select the Output Compare Mode */\r
- tmpccmrx |= OC_Config->OCMode;\r
-\r
- /* Reset the Output Polarity level */\r
- tmpccer &= ~TIM_CCER_CC3P;\r
- /* Set the Output Compare Polarity */\r
- tmpccer |= (OC_Config->OCPolarity << 8U);\r
-\r
- if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3))\r
- {\r
- assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));\r
-\r
- /* Reset the Output N Polarity level */\r
- tmpccer &= ~TIM_CCER_CC3NP;\r
- /* Set the Output N Polarity */\r
- tmpccer |= (OC_Config->OCNPolarity << 8U);\r
- /* Reset the Output N State */\r
- tmpccer &= ~TIM_CCER_CC3NE;\r
- }\r
-\r
- if (IS_TIM_BREAK_INSTANCE(TIMx))\r
- {\r
- /* Check parameters */\r
- assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));\r
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\r
-\r
- /* Reset the Output Compare and Output Compare N IDLE State */\r
- tmpcr2 &= ~TIM_CR2_OIS3;\r
- tmpcr2 &= ~TIM_CR2_OIS3N;\r
- /* Set the Output Idle state */\r
- tmpcr2 |= (OC_Config->OCIdleState << 4U);\r
- /* Set the Output N Idle state */\r
- tmpcr2 |= (OC_Config->OCNIdleState << 4U);\r
- }\r
-\r
- /* Write to TIMx CR2 */\r
- TIMx->CR2 = tmpcr2;\r
-\r
- /* Write to TIMx CCMR2 */\r
- TIMx->CCMR2 = tmpccmrx;\r
-\r
- /* Set the Capture Compare Register value */\r
- TIMx->CCR3 = OC_Config->Pulse;\r
-\r
- /* Write to TIMx CCER */\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Timer Output Compare 4 configuration\r
- * @param TIMx to select the TIM peripheral\r
- * @param OC_Config The ouput configuration structure\r
- * @retval None\r
- */\r
-static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)\r
-{\r
- uint32_t tmpccmrx;\r
- uint32_t tmpccer;\r
- uint32_t tmpcr2;\r
-\r
- /* Disable the Channel 4: Reset the CC4E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC4E;\r
-\r
- /* Get the TIMx CCER register value */\r
- tmpccer = TIMx->CCER;\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = TIMx->CR2;\r
-\r
- /* Get the TIMx CCMR2 register value */\r
- tmpccmrx = TIMx->CCMR2;\r
-\r
- /* Reset the Output Compare mode and Capture/Compare selection Bits */\r
- tmpccmrx &= ~TIM_CCMR2_OC4M;\r
- tmpccmrx &= ~TIM_CCMR2_CC4S;\r
-\r
- /* Select the Output Compare Mode */\r
- tmpccmrx |= (OC_Config->OCMode << 8U);\r
-\r
- /* Reset the Output Polarity level */\r
- tmpccer &= ~TIM_CCER_CC4P;\r
- /* Set the Output Compare Polarity */\r
- tmpccer |= (OC_Config->OCPolarity << 12U);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(TIMx))\r
- {\r
- /* Check parameters */\r
- assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));\r
-\r
- /* Reset the Output Compare IDLE State */\r
- tmpcr2 &= ~TIM_CR2_OIS4;\r
-\r
- /* Set the Output Idle state */\r
- tmpcr2 |= (OC_Config->OCIdleState << 6U);\r
- }\r
-\r
- /* Write to TIMx CR2 */\r
- TIMx->CR2 = tmpcr2;\r
-\r
- /* Write to TIMx CCMR2 */\r
- TIMx->CCMR2 = tmpccmrx;\r
-\r
- /* Set the Capture Compare Register value */\r
- TIMx->CCR4 = OC_Config->Pulse;\r
-\r
- /* Write to TIMx CCER */\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Timer Output Compare 5 configuration\r
- * @param TIMx to select the TIM peripheral\r
- * @param OC_Config The ouput configuration structure\r
- * @retval None\r
- */\r
-static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx,\r
- TIM_OC_InitTypeDef *OC_Config)\r
-{\r
- uint32_t tmpccmrx;\r
- uint32_t tmpccer;\r
- uint32_t tmpcr2;\r
-\r
- /* Disable the output: Reset the CCxE Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC5E;\r
-\r
- /* Get the TIMx CCER register value */\r
- tmpccer = TIMx->CCER;\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = TIMx->CR2;\r
- /* Get the TIMx CCMR1 register value */\r
- tmpccmrx = TIMx->CCMR3;\r
-\r
- /* Reset the Output Compare Mode Bits */\r
- tmpccmrx &= ~(TIM_CCMR3_OC5M);\r
- /* Select the Output Compare Mode */\r
- tmpccmrx |= OC_Config->OCMode;\r
-\r
- /* Reset the Output Polarity level */\r
- tmpccer &= ~TIM_CCER_CC5P;\r
- /* Set the Output Compare Polarity */\r
- tmpccer |= (OC_Config->OCPolarity << 16U);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(TIMx))\r
- {\r
- /* Reset the Output Compare IDLE State */\r
- tmpcr2 &= ~TIM_CR2_OIS5;\r
- /* Set the Output Idle state */\r
- tmpcr2 |= (OC_Config->OCIdleState << 8U);\r
- }\r
- /* Write to TIMx CR2 */\r
- TIMx->CR2 = tmpcr2;\r
-\r
- /* Write to TIMx CCMR3 */\r
- TIMx->CCMR3 = tmpccmrx;\r
-\r
- /* Set the Capture Compare Register value */\r
- TIMx->CCR5 = OC_Config->Pulse;\r
-\r
- /* Write to TIMx CCER */\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Timer Output Compare 6 configuration\r
- * @param TIMx to select the TIM peripheral\r
- * @param OC_Config The ouput configuration structure\r
- * @retval None\r
- */\r
-static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx,\r
- TIM_OC_InitTypeDef *OC_Config)\r
-{\r
- uint32_t tmpccmrx;\r
- uint32_t tmpccer;\r
- uint32_t tmpcr2;\r
-\r
- /* Disable the output: Reset the CCxE Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC6E;\r
-\r
- /* Get the TIMx CCER register value */\r
- tmpccer = TIMx->CCER;\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = TIMx->CR2;\r
- /* Get the TIMx CCMR1 register value */\r
- tmpccmrx = TIMx->CCMR3;\r
-\r
- /* Reset the Output Compare Mode Bits */\r
- tmpccmrx &= ~(TIM_CCMR3_OC6M);\r
- /* Select the Output Compare Mode */\r
- tmpccmrx |= (OC_Config->OCMode << 8U);\r
-\r
- /* Reset the Output Polarity level */\r
- tmpccer &= (uint32_t)~TIM_CCER_CC6P;\r
- /* Set the Output Compare Polarity */\r
- tmpccer |= (OC_Config->OCPolarity << 20U);\r
-\r
- if (IS_TIM_BREAK_INSTANCE(TIMx))\r
- {\r
- /* Reset the Output Compare IDLE State */\r
- tmpcr2 &= ~TIM_CR2_OIS6;\r
- /* Set the Output Idle state */\r
- tmpcr2 |= (OC_Config->OCIdleState << 10U);\r
- }\r
-\r
- /* Write to TIMx CR2 */\r
- TIMx->CR2 = tmpcr2;\r
-\r
- /* Write to TIMx CCMR3 */\r
- TIMx->CCMR3 = tmpccmrx;\r
-\r
- /* Set the Capture Compare Register value */\r
- TIMx->CCR6 = OC_Config->Pulse;\r
-\r
- /* Write to TIMx CCER */\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Slave Timer configuration function\r
- * @param htim TIM handle\r
- * @param sSlaveConfig Slave timer configuration\r
- * @retval None\r
- */\r
-static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,\r
- TIM_SlaveConfigTypeDef *sSlaveConfig)\r
-{\r
- uint32_t tmpsmcr;\r
- uint32_t tmpccmr1;\r
- uint32_t tmpccer;\r
-\r
- /* Get the TIMx SMCR register value */\r
- tmpsmcr = htim->Instance->SMCR;\r
-\r
- /* Reset the Trigger Selection Bits */\r
- tmpsmcr &= ~TIM_SMCR_TS;\r
- /* Set the Input Trigger source */\r
- tmpsmcr |= sSlaveConfig->InputTrigger;\r
-\r
- /* Reset the slave mode Bits */\r
- tmpsmcr &= ~TIM_SMCR_SMS;\r
- /* Set the slave mode */\r
- tmpsmcr |= sSlaveConfig->SlaveMode;\r
-\r
- /* Write to TIMx SMCR */\r
- htim->Instance->SMCR = tmpsmcr;\r
-\r
- /* Configure the trigger prescaler, filter, and polarity */\r
- switch (sSlaveConfig->InputTrigger)\r
- {\r
- case TIM_TS_ETRF:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler));\r
- assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));\r
- assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\r
- /* Configure the ETR Trigger source */\r
- TIM_ETR_SetConfig(htim->Instance,\r
- sSlaveConfig->TriggerPrescaler,\r
- sSlaveConfig->TriggerPolarity,\r
- sSlaveConfig->TriggerFilter);\r
- break;\r
- }\r
-\r
- case TIM_TS_TI1F_ED:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\r
-\r
- if(sSlaveConfig->SlaveMode == TIM_SLAVEMODE_GATED)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Disable the Channel 1: Reset the CC1E Bit */\r
- tmpccer = htim->Instance->CCER;\r
- htim->Instance->CCER &= ~TIM_CCER_CC1E;\r
- tmpccmr1 = htim->Instance->CCMR1;\r
-\r
- /* Set the filter */\r
- tmpccmr1 &= ~TIM_CCMR1_IC1F;\r
- tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U);\r
-\r
- /* Write to TIMx CCMR1 and CCER registers */\r
- htim->Instance->CCMR1 = tmpccmr1;\r
- htim->Instance->CCER = tmpccer;\r
- break;\r
- }\r
-\r
- case TIM_TS_TI1FP1:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));\r
- assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\r
-\r
- /* Configure TI1 Filter and Polarity */\r
- TIM_TI1_ConfigInputStage(htim->Instance,\r
- sSlaveConfig->TriggerPolarity,\r
- sSlaveConfig->TriggerFilter);\r
- break;\r
- }\r
-\r
- case TIM_TS_TI2FP2:\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));\r
- assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));\r
-\r
- /* Configure TI2 Filter and Polarity */\r
- TIM_TI2_ConfigInputStage(htim->Instance,\r
- sSlaveConfig->TriggerPolarity,\r
- sSlaveConfig->TriggerFilter);\r
- break;\r
- }\r
-\r
- case TIM_TS_ITR0:\r
- case TIM_TS_ITR1:\r
- case TIM_TS_ITR2:\r
- case TIM_TS_ITR3:\r
- {\r
- /* Check the parameter */\r
- assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configure the TI1 as Input.\r
- * @param TIMx to select the TIM peripheral.\r
- * @param TIM_ICPolarity The Input Polarity.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICPOLARITY_RISING\r
- * @arg TIM_ICPOLARITY_FALLING\r
- * @arg TIM_ICPOLARITY_BOTHEDGE\r
- * @param TIM_ICSelection specifies the input to be used.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 1 is selected to be connected to IC1.\r
- * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 1 is selected to be connected to IC2.\r
- * @arg TIM_ICSELECTION_TRC: TIM Input 1 is selected to be connected to TRC.\r
- * @param TIM_ICFilter Specifies the Input Capture Filter.\r
- * This parameter must be a value between 0x00 and 0x0F.\r
- * @retval None\r
- * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI2FP1\r
- * (on channel2 path) is used as the input signal. Therefore CCMR1 must be\r
- * protected against un-initialized filter and polarity values.\r
- */\r
-void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\r
- uint32_t TIM_ICFilter)\r
-{\r
- uint32_t tmpccmr1;\r
- uint32_t tmpccer;\r
-\r
- /* Disable the Channel 1: Reset the CC1E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC1E;\r
- tmpccmr1 = TIMx->CCMR1;\r
- tmpccer = TIMx->CCER;\r
-\r
- /* Select the Input */\r
- if (IS_TIM_CC2_INSTANCE(TIMx) != RESET)\r
- {\r
- tmpccmr1 &= ~TIM_CCMR1_CC1S;\r
- tmpccmr1 |= TIM_ICSelection;\r
- }\r
- else\r
- {\r
- tmpccmr1 |= TIM_CCMR1_CC1S_0;\r
- }\r
-\r
- /* Set the filter */\r
- tmpccmr1 &= ~TIM_CCMR1_IC1F;\r
- tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F);\r
-\r
- /* Select the Polarity and set the CC1E Bit */\r
- tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);\r
- tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP));\r
-\r
- /* Write to TIMx CCMR1 and CCER registers */\r
- TIMx->CCMR1 = tmpccmr1;\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Configure the Polarity and Filter for TI1.\r
- * @param TIMx to select the TIM peripheral.\r
- * @param TIM_ICPolarity The Input Polarity.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICPOLARITY_RISING\r
- * @arg TIM_ICPOLARITY_FALLING\r
- * @arg TIM_ICPOLARITY_BOTHEDGE\r
- * @param TIM_ICFilter Specifies the Input Capture Filter.\r
- * This parameter must be a value between 0x00 and 0x0F.\r
- * @retval None\r
- */\r
-static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)\r
-{\r
- uint32_t tmpccmr1;\r
- uint32_t tmpccer;\r
-\r
- /* Disable the Channel 1: Reset the CC1E Bit */\r
- tmpccer = TIMx->CCER;\r
- TIMx->CCER &= ~TIM_CCER_CC1E;\r
- tmpccmr1 = TIMx->CCMR1;\r
-\r
- /* Set the filter */\r
- tmpccmr1 &= ~TIM_CCMR1_IC1F;\r
- tmpccmr1 |= (TIM_ICFilter << 4U);\r
-\r
- /* Select the Polarity and set the CC1E Bit */\r
- tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);\r
- tmpccer |= TIM_ICPolarity;\r
-\r
- /* Write to TIMx CCMR1 and CCER registers */\r
- TIMx->CCMR1 = tmpccmr1;\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Configure the TI2 as Input.\r
- * @param TIMx to select the TIM peripheral\r
- * @param TIM_ICPolarity The Input Polarity.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICPOLARITY_RISING\r
- * @arg TIM_ICPOLARITY_FALLING\r
- * @arg TIM_ICPOLARITY_BOTHEDGE\r
- * @param TIM_ICSelection specifies the input to be used.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 2 is selected to be connected to IC2.\r
- * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 2 is selected to be connected to IC1.\r
- * @arg TIM_ICSELECTION_TRC: TIM Input 2 is selected to be connected to TRC.\r
- * @param TIM_ICFilter Specifies the Input Capture Filter.\r
- * This parameter must be a value between 0x00 and 0x0F.\r
- * @retval None\r
- * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI1FP2\r
- * (on channel1 path) is used as the input signal. Therefore CCMR1 must be\r
- * protected against un-initialized filter and polarity values.\r
- */\r
-static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\r
- uint32_t TIM_ICFilter)\r
-{\r
- uint32_t tmpccmr1;\r
- uint32_t tmpccer;\r
-\r
- /* Disable the Channel 2: Reset the CC2E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC2E;\r
- tmpccmr1 = TIMx->CCMR1;\r
- tmpccer = TIMx->CCER;\r
-\r
- /* Select the Input */\r
- tmpccmr1 &= ~TIM_CCMR1_CC2S;\r
- tmpccmr1 |= (TIM_ICSelection << 8U);\r
-\r
- /* Set the filter */\r
- tmpccmr1 &= ~TIM_CCMR1_IC2F;\r
- tmpccmr1 |= ((TIM_ICFilter << 12U) & TIM_CCMR1_IC2F);\r
-\r
- /* Select the Polarity and set the CC2E Bit */\r
- tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);\r
- tmpccer |= ((TIM_ICPolarity << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP));\r
-\r
- /* Write to TIMx CCMR1 and CCER registers */\r
- TIMx->CCMR1 = tmpccmr1 ;\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Configure the Polarity and Filter for TI2.\r
- * @param TIMx to select the TIM peripheral.\r
- * @param TIM_ICPolarity The Input Polarity.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICPOLARITY_RISING\r
- * @arg TIM_ICPOLARITY_FALLING\r
- * @arg TIM_ICPOLARITY_BOTHEDGE\r
- * @param TIM_ICFilter Specifies the Input Capture Filter.\r
- * This parameter must be a value between 0x00 and 0x0F.\r
- * @retval None\r
- */\r
-static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)\r
-{\r
- uint32_t tmpccmr1;\r
- uint32_t tmpccer;\r
-\r
- /* Disable the Channel 2: Reset the CC2E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC2E;\r
- tmpccmr1 = TIMx->CCMR1;\r
- tmpccer = TIMx->CCER;\r
-\r
- /* Set the filter */\r
- tmpccmr1 &= ~TIM_CCMR1_IC2F;\r
- tmpccmr1 |= (TIM_ICFilter << 12U);\r
-\r
- /* Select the Polarity and set the CC2E Bit */\r
- tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);\r
- tmpccer |= (TIM_ICPolarity << 4U);\r
-\r
- /* Write to TIMx CCMR1 and CCER registers */\r
- TIMx->CCMR1 = tmpccmr1 ;\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Configure the TI3 as Input.\r
- * @param TIMx to select the TIM peripheral\r
- * @param TIM_ICPolarity The Input Polarity.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICPOLARITY_RISING\r
- * @arg TIM_ICPOLARITY_FALLING\r
- * @arg TIM_ICPOLARITY_BOTHEDGE\r
- * @param TIM_ICSelection specifies the input to be used.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 3 is selected to be connected to IC3.\r
- * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 3 is selected to be connected to IC4.\r
- * @arg TIM_ICSELECTION_TRC: TIM Input 3 is selected to be connected to TRC.\r
- * @param TIM_ICFilter Specifies the Input Capture Filter.\r
- * This parameter must be a value between 0x00 and 0x0F.\r
- * @retval None\r
- * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI3FP4\r
- * (on channel1 path) is used as the input signal. Therefore CCMR2 must be\r
- * protected against un-initialized filter and polarity values.\r
- */\r
-static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\r
- uint32_t TIM_ICFilter)\r
-{\r
- uint32_t tmpccmr2;\r
- uint32_t tmpccer;\r
-\r
- /* Disable the Channel 3: Reset the CC3E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC3E;\r
- tmpccmr2 = TIMx->CCMR2;\r
- tmpccer = TIMx->CCER;\r
-\r
- /* Select the Input */\r
- tmpccmr2 &= ~TIM_CCMR2_CC3S;\r
- tmpccmr2 |= TIM_ICSelection;\r
-\r
- /* Set the filter */\r
- tmpccmr2 &= ~TIM_CCMR2_IC3F;\r
- tmpccmr2 |= ((TIM_ICFilter << 4U) & TIM_CCMR2_IC3F);\r
-\r
- /* Select the Polarity and set the CC3E Bit */\r
- tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP);\r
- tmpccer |= ((TIM_ICPolarity << 8U) & (TIM_CCER_CC3P | TIM_CCER_CC3NP));\r
-\r
- /* Write to TIMx CCMR2 and CCER registers */\r
- TIMx->CCMR2 = tmpccmr2;\r
- TIMx->CCER = tmpccer;\r
-}\r
-\r
-/**\r
- * @brief Configure the TI4 as Input.\r
- * @param TIMx to select the TIM peripheral\r
- * @param TIM_ICPolarity The Input Polarity.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICPOLARITY_RISING\r
- * @arg TIM_ICPOLARITY_FALLING\r
- * @arg TIM_ICPOLARITY_BOTHEDGE\r
- * @param TIM_ICSelection specifies the input to be used.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 4 is selected to be connected to IC4.\r
- * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 4 is selected to be connected to IC3.\r
- * @arg TIM_ICSELECTION_TRC: TIM Input 4 is selected to be connected to TRC.\r
- * @param TIM_ICFilter Specifies the Input Capture Filter.\r
- * This parameter must be a value between 0x00 and 0x0F.\r
- * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI4FP3\r
- * (on channel1 path) is used as the input signal. Therefore CCMR2 must be\r
- * protected against un-initialized filter and polarity values.\r
- * @retval None\r
- */\r
-static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,\r
- uint32_t TIM_ICFilter)\r
-{\r
- uint32_t tmpccmr2;\r
- uint32_t tmpccer;\r
-\r
- /* Disable the Channel 4: Reset the CC4E Bit */\r
- TIMx->CCER &= ~TIM_CCER_CC4E;\r
- tmpccmr2 = TIMx->CCMR2;\r
- tmpccer = TIMx->CCER;\r
-\r
- /* Select the Input */\r
- tmpccmr2 &= ~TIM_CCMR2_CC4S;\r
- tmpccmr2 |= (TIM_ICSelection << 8U);\r
-\r
- /* Set the filter */\r
- tmpccmr2 &= ~TIM_CCMR2_IC4F;\r
- tmpccmr2 |= ((TIM_ICFilter << 12U) & TIM_CCMR2_IC4F);\r
-\r
- /* Select the Polarity and set the CC4E Bit */\r
- tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP);\r
- tmpccer |= ((TIM_ICPolarity << 12U) & (TIM_CCER_CC4P | TIM_CCER_CC4NP));\r
-\r
- /* Write to TIMx CCMR2 and CCER registers */\r
- TIMx->CCMR2 = tmpccmr2;\r
- TIMx->CCER = tmpccer ;\r
-}\r
-\r
-/**\r
- * @brief Selects the Input Trigger source\r
- * @param TIMx to select the TIM peripheral\r
- * @param InputTriggerSource The Input Trigger source.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_TS_ITR0: Internal Trigger 0\r
- * @arg TIM_TS_ITR1: Internal Trigger 1\r
- * @arg TIM_TS_ITR2: Internal Trigger 2\r
- * @arg TIM_TS_ITR3: Internal Trigger 3\r
- * @arg TIM_TS_TI1F_ED: TI1 Edge Detector\r
- * @arg TIM_TS_TI1FP1: Filtered Timer Input 1\r
- * @arg TIM_TS_TI2FP2: Filtered Timer Input 2\r
- * @arg TIM_TS_ETRF: External Trigger input\r
- * @retval None\r
- */\r
-static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Get the TIMx SMCR register value */\r
- tmpsmcr = TIMx->SMCR;\r
- /* Reset the TS Bits */\r
- tmpsmcr &= ~TIM_SMCR_TS;\r
- /* Set the Input Trigger source and the slave mode*/\r
- tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1);\r
- /* Write to TIMx SMCR */\r
- TIMx->SMCR = tmpsmcr;\r
-}\r
-/**\r
- * @brief Configures the TIMx External Trigger (ETR).\r
- * @param TIMx to select the TIM peripheral\r
- * @param TIM_ExtTRGPrescaler The external Trigger Prescaler.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ETRPRESCALER_DIV1: ETRP Prescaler OFF.\r
- * @arg TIM_ETRPRESCALER_DIV2: ETRP frequency divided by 2.\r
- * @arg TIM_ETRPRESCALER_DIV4: ETRP frequency divided by 4.\r
- * @arg TIM_ETRPRESCALER_DIV8: ETRP frequency divided by 8.\r
- * @param TIM_ExtTRGPolarity The external Trigger Polarity.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_ETRPOLARITY_INVERTED: active low or falling edge active.\r
- * @arg TIM_ETRPOLARITY_NONINVERTED: active high or rising edge active.\r
- * @param ExtTRGFilter External Trigger Filter.\r
- * This parameter must be a value between 0x00 and 0x0F\r
- * @retval None\r
- */\r
-void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler,\r
- uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- tmpsmcr = TIMx->SMCR;\r
-\r
- /* Reset the ETR Bits */\r
- tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);\r
-\r
- /* Set the Prescaler, the Filter value and the Polarity */\r
- tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U)));\r
-\r
- /* Write to TIMx SMCR */\r
- TIMx->SMCR = tmpsmcr;\r
-}\r
-\r
-/**\r
- * @brief Enables or disables the TIM Capture Compare Channel x.\r
- * @param TIMx to select the TIM peripheral\r
- * @param Channel specifies the TIM Channel\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1\r
- * @arg TIM_CHANNEL_2: TIM Channel 2\r
- * @arg TIM_CHANNEL_3: TIM Channel 3\r
- * @arg TIM_CHANNEL_4: TIM Channel 4\r
- * @arg TIM_CHANNEL_5: TIM Channel 5 selected\r
- * @arg TIM_CHANNEL_6: TIM Channel 6 selected\r
- * @param ChannelState specifies the TIM Channel CCxE bit new state.\r
- * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE.\r
- * @retval None\r
- */\r
-void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState)\r
-{\r
- uint32_t tmp;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CC1_INSTANCE(TIMx));\r
- assert_param(IS_TIM_CHANNELS(Channel));\r
-\r
- tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */\r
-\r
- /* Reset the CCxE Bit */\r
- TIMx->CCER &= ~tmp;\r
-\r
- /* Set or reset the CCxE Bit */\r
- TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */\r
-}\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
-/**\r
- * @brief Reset interrupt callbacks to the legacy weak callbacks.\r
- * @param htim pointer to a TIM_HandleTypeDef structure that contains\r
- * the configuration information for TIM module.\r
- * @retval None\r
- */\r
-void TIM_ResetCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Reset the TIM callback to the legacy weak callbacks */\r
- htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; /* Legacy weak PeriodElapsedCallback */\r
- htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; /* Legacy weak PeriodElapsedHalfCpltCallback */\r
- htim->TriggerCallback = HAL_TIM_TriggerCallback; /* Legacy weak TriggerCallback */\r
- htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; /* Legacy weak TriggerHalfCpltCallback */\r
- htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; /* Legacy weak IC_CaptureCallback */\r
- htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; /* Legacy weak IC_CaptureHalfCpltCallback */\r
- htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; /* Legacy weak OC_DelayElapsedCallback */\r
- htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; /* Legacy weak PWM_PulseFinishedCallback */\r
- htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; /* Legacy weak PWM_PulseFinishedHalfCpltCallback */\r
- htim->ErrorCallback = HAL_TIM_ErrorCallback; /* Legacy weak ErrorCallback */\r
- htim->CommutationCallback = HAL_TIMEx_CommutCallback; /* Legacy weak CommutationCallback */\r
- htim->CommutationHalfCpltCallback = HAL_TIMEx_CommutHalfCpltCallback; /* Legacy weak CommutationHalfCpltCallback */\r
- htim->BreakCallback = HAL_TIMEx_BreakCallback; /* Legacy weak BreakCallback */\r
- htim->Break2Callback = HAL_TIMEx_Break2Callback; /* Legacy weak Break2Callback */\r
-}\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_TIM_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_tim_ex.c\r
- * @author MCD Application Team\r
- * @brief TIM HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities of the Timer Extended peripheral:\r
- * + Time Hall Sensor Interface Initialization\r
- * + Time Hall Sensor Interface Start\r
- * + Time Complementary signal break and dead time configuration\r
- * + Time Master and Slave synchronization configuration\r
- * + Time Output Compare/PWM Channel Configuration (for channels 5 and 6)\r
- * + Timer remapping capabilities configuration\r
- @verbatim\r
- ==============================================================================\r
- ##### TIMER Extended features #####\r
- ==============================================================================\r
- [..]\r
- The Timer Extended features include:\r
- (#) Complementary outputs with programmable dead-time for :\r
- (++) Output Compare\r
- (++) PWM generation (Edge and Center-aligned Mode)\r
- (++) One-pulse mode output\r
- (#) Synchronization circuit to control the timer with external signals and to\r
- interconnect several timers together.\r
- (#) Break input to put the timer output signals in reset state or in a known state.\r
- (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for\r
- positioning purposes\r
-\r
- ##### How to use this driver #####\r
- ==============================================================================\r
- [..]\r
- (#) Initialize the TIM low level resources by implementing the following functions\r
- depending on the selected feature:\r
- (++) Hall Sensor output : HAL_TIMEx_HallSensor_MspInit()\r
-\r
- (#) Initialize the TIM low level resources :\r
- (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE();\r
- (##) TIM pins configuration\r
- (+++) Enable the clock for the TIM GPIOs using the following function:\r
- __HAL_RCC_GPIOx_CLK_ENABLE();\r
- (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();\r
-\r
- (#) The external Clock can be configured, if needed (the default clock is the\r
- internal clock from the APBx), using the following function:\r
- HAL_TIM_ConfigClockSource, the clock configuration should be done before\r
- any start function.\r
-\r
- (#) Configure the TIM in the desired functioning mode using one of the\r
- initialization function of this driver:\r
- (++) HAL_TIMEx_HallSensor_Init() and HAL_TIMEx_ConfigCommutEvent(): to use the\r
- Timer Hall Sensor Interface and the commutation event with the corresponding\r
- Interrupt and DMA request if needed (Note that One Timer is used to interface\r
- with the Hall sensor Interface and another Timer should be used to use\r
- the commutation event).\r
-\r
- (#) Activate the TIM peripheral using one of the start functions:\r
- (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), HAL_TIMEx_OC_Start_IT()\r
- (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), HAL_TIMEx_PWMN_Start_IT()\r
- (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT()\r
- (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(), HAL_TIMEx_HallSensor_Start_IT().\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
-*/\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup TIMEx TIMEx\r
- * @brief TIM Extended HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_TIM_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState);\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-/** @defgroup TIMEx_Exported_Functions TIM Extended Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions\r
- * @brief Timer Hall Sensor functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Timer Hall Sensor functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Initialize and configure TIM HAL Sensor.\r
- (+) De-initialize TIM HAL Sensor.\r
- (+) Start the Hall Sensor Interface.\r
- (+) Stop the Hall Sensor Interface.\r
- (+) Start the Hall Sensor Interface and enable interrupts.\r
- (+) Stop the Hall Sensor Interface and disable interrupts.\r
- (+) Start the Hall Sensor Interface and enable DMA transfers.\r
- (+) Stop the Hall Sensor Interface and disable DMA transfers.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-/**\r
- * @brief Initializes the TIM Hall Sensor Interface and initialize the associated handle.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @param sConfig TIM Hall Sensor configuration structure\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig)\r
-{\r
- TIM_OC_InitTypeDef OC_Config;\r
-\r
- /* Check the TIM handle allocation */\r
- if (htim == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));\r
- assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));\r
- assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));\r
- assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));\r
- assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));\r
- assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));\r
-\r
- if (htim->State == HAL_TIM_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- htim->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- /* Reset interrupt callbacks to legacy week callbacks */\r
- TIM_ResetCallback(htim);\r
-\r
- if (htim->HallSensor_MspInitCallback == NULL)\r
- {\r
- htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit;\r
- }\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC */\r
- htim->HallSensor_MspInitCallback(htim);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */\r
- HAL_TIMEx_HallSensor_MspInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
- }\r
-\r
- /* Set the TIM state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Configure the Time base in the Encoder Mode */\r
- TIM_Base_SetConfig(htim->Instance, &htim->Init);\r
-\r
- /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the Hall sensor */\r
- TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter);\r
-\r
- /* Reset the IC1PSC Bits */\r
- htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;\r
- /* Set the IC1PSC value */\r
- htim->Instance->CCMR1 |= sConfig->IC1Prescaler;\r
-\r
- /* Enable the Hall sensor interface (XOR function of the three inputs) */\r
- htim->Instance->CR2 |= TIM_CR2_TI1S;\r
-\r
- /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */\r
- htim->Instance->SMCR &= ~TIM_SMCR_TS;\r
- htim->Instance->SMCR |= TIM_TS_TI1F_ED;\r
-\r
- /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */\r
- htim->Instance->SMCR &= ~TIM_SMCR_SMS;\r
- htim->Instance->SMCR |= TIM_SLAVEMODE_RESET;\r
-\r
- /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/\r
- OC_Config.OCFastMode = TIM_OCFAST_DISABLE;\r
- OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET;\r
- OC_Config.OCMode = TIM_OCMODE_PWM2;\r
- OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET;\r
- OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH;\r
- OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH;\r
- OC_Config.Pulse = sConfig->Commutation_Delay;\r
-\r
- TIM_OC2_SetConfig(htim->Instance, &OC_Config);\r
-\r
- /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2\r
- register to 101 */\r
- htim->Instance->CR2 &= ~TIM_CR2_MMS;\r
- htim->Instance->CR2 |= TIM_TRGO_OC2REF;\r
-\r
- /* Initialize the TIM state*/\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief DeInitializes the TIM Hall Sensor interface\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_INSTANCE(htim->Instance));\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Disable the TIM Peripheral Clock */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- if (htim->HallSensor_MspDeInitCallback == NULL)\r
- {\r
- htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- htim->HallSensor_MspDeInitCallback(htim);\r
-#else\r
- /* DeInit the low level hardware: GPIO, CLOCK, NVIC */\r
- HAL_TIMEx_HallSensor_MspDeInit(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-\r
- /* Change TIM state */\r
- htim->State = HAL_TIM_STATE_RESET;\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initializes the TIM Hall Sensor MSP.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitializes TIM Hall Sensor MSP.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Hall Sensor Interface.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\r
-\r
- /* Enable the Input Capture channel 1\r
- (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Hall sensor Interface.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\r
-\r
- /* Disable the Input Capture channels 1, 2 and 3\r
- (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Hall Sensor Interface in interrupt mode.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\r
-\r
- /* Enable the capture compare Interrupts 1 event */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
-\r
- /* Enable the Input Capture channel 1\r
- (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Hall Sensor Interface in interrupt mode.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\r
-\r
- /* Disable the Input Capture channel 1\r
- (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
-\r
- /* Disable the capture compare Interrupts event */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Hall Sensor Interface in DMA mode.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @param pData The destination Buffer address.\r
- * @param Length The length of data to be transferred from TIM peripheral to memory.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if (((uint32_t)pData == 0U) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
- /* Enable the Input Capture channel 1\r
- (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);\r
-\r
- /* Set the DMA Input Capture 1 Callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt;\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream for Capture 1*/\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the capture compare 1 Interrupt */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Hall Sensor Interface in DMA mode.\r
- * @param htim TIM Hall Sensor Interface handle\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));\r
-\r
- /* Disable the Input Capture channel 1\r
- (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */\r
- TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);\r
-\r
-\r
- /* Disable the capture compare Interrupts 1 event */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
-\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions\r
- * @brief Timer Complementary Output Compare functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Timer Complementary Output Compare functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Start the Complementary Output Compare/PWM.\r
- (+) Stop the Complementary Output Compare/PWM.\r
- (+) Start the Complementary Output Compare/PWM and enable interrupts.\r
- (+) Stop the Complementary Output Compare/PWM and disable interrupts.\r
- (+) Start the Complementary Output Compare/PWM and enable DMA transfers.\r
- (+) Stop the Complementary Output Compare/PWM and disable DMA transfers.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Starts the TIM Output Compare signal generation on the complementary\r
- * output.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Enable the Capture compare channel N */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Output Compare signal generation on the complementary\r
- * output.\r
- * @param htim TIM handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Disable the Capture compare channel N */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Output Compare signal generation in interrupt mode\r
- * on the complementary output.\r
- * @param htim TIM OC handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Enable the TIM Output Compare interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Enable the TIM Output Compare interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Enable the TIM Output Compare interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the TIM Break interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);\r
-\r
- /* Enable the Capture compare channel N */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Output Compare signal generation in interrupt mode\r
- * on the complementary output.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpccer;\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Output Compare interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Output Compare interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Output Compare interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Capture compare channel N */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the TIM Break interrupt (only if no more channel is active) */\r
- tmpccer = htim->Instance->CCER;\r
- if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)\r
- {\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);\r
- }\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM Output Compare signal generation in DMA mode\r
- * on the complementary output.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @param pData The source Buffer address.\r
- * @param Length The length of data to be transferred from memory to TIM peripheral\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if (((uint32_t)pData == 0U) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Output Compare DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Output Compare DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Output Compare DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the Capture compare channel N */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM Output Compare signal generation in DMA mode\r
- * on the complementary output.\r
- * @param htim TIM Output Compare handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Output Compare DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Output Compare DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Output Compare DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the Capture compare channel N */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions\r
- * @brief Timer Complementary PWM functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Timer Complementary PWM functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Start the Complementary PWM.\r
- (+) Stop the Complementary PWM.\r
- (+) Start the Complementary PWM and enable interrupts.\r
- (+) Stop the Complementary PWM and disable interrupts.\r
- (+) Start the Complementary PWM and enable DMA transfers.\r
- (+) Stop the Complementary PWM and disable DMA transfers.\r
- (+) Start the Complementary Input Capture measurement.\r
- (+) Stop the Complementary Input Capture.\r
- (+) Start the Complementary Input Capture and enable interrupts.\r
- (+) Stop the Complementary Input Capture and disable interrupts.\r
- (+) Start the Complementary Input Capture and enable DMA transfers.\r
- (+) Stop the Complementary Input Capture and disable DMA transfers.\r
- (+) Start the Complementary One Pulse generation.\r
- (+) Stop the Complementary One Pulse.\r
- (+) Start the Complementary One Pulse and enable interrupts.\r
- (+) Stop the Complementary One Pulse and disable interrupts.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Starts the PWM signal generation on the complementary output.\r
- * @param htim TIM handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Enable the complementary PWM output */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the PWM signal generation on the complementary output.\r
- * @param htim TIM handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- /* Disable the complementary PWM output */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the PWM signal generation in interrupt mode on the\r
- * complementary output.\r
- * @param htim TIM handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Enable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Enable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Enable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the TIM Break interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);\r
-\r
- /* Enable the complementary PWM output */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the PWM signal generation in interrupt mode on the\r
- * complementary output.\r
- * @param htim TIM handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- uint32_t tmpccer;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the complementary PWM output */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the TIM Break interrupt (only if no more channel is active) */\r
- tmpccer = htim->Instance->CCER;\r
- if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)\r
- {\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);\r
- }\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM PWM signal generation in DMA mode on the\r
- * complementary output\r
- * @param htim TIM handle\r
- * @param Channel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @param pData The source Buffer address.\r
- * @param Length The length of data to be transferred from memory to TIM peripheral\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)\r
-{\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- if ((htim->State == HAL_TIM_STATE_BUSY))\r
- {\r
- return HAL_BUSY;\r
- }\r
- else if ((htim->State == HAL_TIM_STATE_READY))\r
- {\r
- if (((uint32_t)pData == 0U) && (Length > 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
- else\r
- {\r
- htim->State = HAL_TIM_STATE_BUSY;\r
- }\r
- }\r
- else\r
- {\r
- /* nothing to do */\r
- }\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Set the DMA compare callbacks */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;\r
- htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;\r
-\r
- /* Enable the DMA stream */\r
- if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Enable the TIM Capture/Compare 3 DMA request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Enable the complementary PWM output */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */\r
- tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;\r
- if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))\r
- {\r
- __HAL_TIM_ENABLE(htim);\r
- }\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM PWM signal generation in DMA mode on the complementary\r
- * output\r
- * @param htim TIM handle\r
- * @param Channel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @arg TIM_CHANNEL_3: TIM Channel 3 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));\r
-\r
- switch (Channel)\r
- {\r
- case TIM_CHANNEL_1:\r
- {\r
- /* Disable the TIM Capture/Compare 1 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_2:\r
- {\r
- /* Disable the TIM Capture/Compare 2 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]);\r
- break;\r
- }\r
-\r
- case TIM_CHANNEL_3:\r
- {\r
- /* Disable the TIM Capture/Compare 3 DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);\r
- (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]);\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- /* Disable the complementary PWM output */\r
- TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions\r
- * @brief Timer Complementary One Pulse functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Timer Complementary One Pulse functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Start the Complementary One Pulse generation.\r
- (+) Stop the Complementary One Pulse.\r
- (+) Start the Complementary One Pulse and enable interrupts.\r
- (+) Stop the Complementary One Pulse and disable interrupts.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Starts the TIM One Pulse signal generation on the complementary\r
- * output.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\r
-\r
- /* Enable the complementary One Pulse output */\r
- TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM One Pulse signal generation on the complementary\r
- * output.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\r
-\r
- /* Disable the complementary One Pulse output */\r
- TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Starts the TIM One Pulse signal generation in interrupt mode on the\r
- * complementary channel.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channel to be enabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\r
-\r
- /* Enable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);\r
-\r
- /* Enable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);\r
-\r
- /* Enable the complementary One Pulse output */\r
- TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);\r
-\r
- /* Enable the Main Output */\r
- __HAL_TIM_MOE_ENABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stops the TIM One Pulse signal generation in interrupt mode on the\r
- * complementary channel.\r
- * @param htim TIM One Pulse handle\r
- * @param OutputChannel TIM Channel to be disabled\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1 selected\r
- * @arg TIM_CHANNEL_2: TIM Channel 2 selected\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));\r
-\r
- /* Disable the TIM Capture/Compare 1 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);\r
-\r
- /* Disable the TIM Capture/Compare 2 interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);\r
-\r
- /* Disable the complementary One Pulse output */\r
- TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);\r
-\r
- /* Disable the Main Output */\r
- __HAL_TIM_MOE_DISABLE(htim);\r
-\r
- /* Disable the Peripheral */\r
- __HAL_TIM_DISABLE(htim);\r
-\r
- /* Return function status */\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions\r
- * @brief Peripheral Control functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Peripheral Control functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides functions allowing to:\r
- (+) Configure the commutation event in case of use of the Hall sensor interface.\r
- (+) Configure Output channels for OC and PWM mode.\r
-\r
- (+) Configure Complementary channels, break features and dead time.\r
- (+) Configure Master synchronization.\r
- (+) Configure timer remapping capabilities.\r
- (+) Enable or disable channel grouping.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Configure the TIM commutation event sequence.\r
- * @note This function is mandatory to use the commutation event in order to\r
- * update the configuration at each commutation detection on the TRGI input of the Timer,\r
- * the typical use of this feature is with the use of another Timer(interface Timer)\r
- * configured in Hall sensor interface, this interface Timer will generate the\r
- * commutation at its TRGO output (connected to Timer used in this function) each time\r
- * the TI1 of the Interface Timer detect a commutation at its input TI1.\r
- * @param htim TIM handle\r
- * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor\r
- * This parameter can be one of the following values:\r
- * @arg TIM_TS_ITR0: Internal trigger 0 selected\r
- * @arg TIM_TS_ITR1: Internal trigger 1 selected\r
- * @arg TIM_TS_ITR2: Internal trigger 2 selected\r
- * @arg TIM_TS_ITR3: Internal trigger 3 selected\r
- * @arg TIM_TS_NONE: No trigger is needed\r
- * @param CommutationSource the Commutation Event source\r
- * This parameter can be one of the following values:\r
- * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer\r
- * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));\r
-\r
- __HAL_LOCK(htim);\r
-\r
- if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||\r
- (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))\r
- {\r
- /* Select the Input trigger */\r
- htim->Instance->SMCR &= ~TIM_SMCR_TS;\r
- htim->Instance->SMCR |= InputTrigger;\r
- }\r
-\r
- /* Select the Capture Compare preload feature */\r
- htim->Instance->CR2 |= TIM_CR2_CCPC;\r
- /* Select the Commutation event source */\r
- htim->Instance->CR2 &= ~TIM_CR2_CCUS;\r
- htim->Instance->CR2 |= CommutationSource;\r
-\r
- /* Disable Commutation Interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM);\r
-\r
- /* Disable Commutation DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM);\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configure the TIM commutation event sequence with interrupt.\r
- * @note This function is mandatory to use the commutation event in order to\r
- * update the configuration at each commutation detection on the TRGI input of the Timer,\r
- * the typical use of this feature is with the use of another Timer(interface Timer)\r
- * configured in Hall sensor interface, this interface Timer will generate the\r
- * commutation at its TRGO output (connected to Timer used in this function) each time\r
- * the TI1 of the Interface Timer detect a commutation at its input TI1.\r
- * @param htim TIM handle\r
- * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor\r
- * This parameter can be one of the following values:\r
- * @arg TIM_TS_ITR0: Internal trigger 0 selected\r
- * @arg TIM_TS_ITR1: Internal trigger 1 selected\r
- * @arg TIM_TS_ITR2: Internal trigger 2 selected\r
- * @arg TIM_TS_ITR3: Internal trigger 3 selected\r
- * @arg TIM_TS_NONE: No trigger is needed\r
- * @param CommutationSource the Commutation Event source\r
- * This parameter can be one of the following values:\r
- * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer\r
- * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));\r
-\r
- __HAL_LOCK(htim);\r
-\r
- if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||\r
- (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))\r
- {\r
- /* Select the Input trigger */\r
- htim->Instance->SMCR &= ~TIM_SMCR_TS;\r
- htim->Instance->SMCR |= InputTrigger;\r
- }\r
-\r
- /* Select the Capture Compare preload feature */\r
- htim->Instance->CR2 |= TIM_CR2_CCPC;\r
- /* Select the Commutation event source */\r
- htim->Instance->CR2 &= ~TIM_CR2_CCUS;\r
- htim->Instance->CR2 |= CommutationSource;\r
-\r
- /* Disable Commutation DMA request */\r
- __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM);\r
-\r
- /* Enable the Commutation Interrupt */\r
- __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM);\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configure the TIM commutation event sequence with DMA.\r
- * @note This function is mandatory to use the commutation event in order to\r
- * update the configuration at each commutation detection on the TRGI input of the Timer,\r
- * the typical use of this feature is with the use of another Timer(interface Timer)\r
- * configured in Hall sensor interface, this interface Timer will generate the\r
- * commutation at its TRGO output (connected to Timer used in this function) each time\r
- * the TI1 of the Interface Timer detect a commutation at its input TI1.\r
- * @note The user should configure the DMA in his own software, in This function only the COMDE bit is set\r
- * @param htim TIM handle\r
- * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor\r
- * This parameter can be one of the following values:\r
- * @arg TIM_TS_ITR0: Internal trigger 0 selected\r
- * @arg TIM_TS_ITR1: Internal trigger 1 selected\r
- * @arg TIM_TS_ITR2: Internal trigger 2 selected\r
- * @arg TIM_TS_ITR3: Internal trigger 3 selected\r
- * @arg TIM_TS_NONE: No trigger is needed\r
- * @param CommutationSource the Commutation Event source\r
- * This parameter can be one of the following values:\r
- * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer\r
- * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));\r
-\r
- __HAL_LOCK(htim);\r
-\r
- if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||\r
- (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))\r
- {\r
- /* Select the Input trigger */\r
- htim->Instance->SMCR &= ~TIM_SMCR_TS;\r
- htim->Instance->SMCR |= InputTrigger;\r
- }\r
-\r
- /* Select the Capture Compare preload feature */\r
- htim->Instance->CR2 |= TIM_CR2_CCPC;\r
- /* Select the Commutation event source */\r
- htim->Instance->CR2 &= ~TIM_CR2_CCUS;\r
- htim->Instance->CR2 |= CommutationSource;\r
-\r
- /* Enable the Commutation DMA Request */\r
- /* Set the DMA Commutation Callback */\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt;\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt;\r
- /* Set the DMA error callback */\r
- htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError;\r
-\r
- /* Disable Commutation Interrupt */\r
- __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM);\r
-\r
- /* Enable the Commutation DMA Request */\r
- __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM);\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configures the TIM in master mode.\r
- * @param htim TIM handle.\r
- * @param sMasterConfig pointer to a TIM_MasterConfigTypeDef structure that\r
- * contains the selected trigger output (TRGO) and the Master/Slave\r
- * mode.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,\r
- TIM_MasterConfigTypeDef *sMasterConfig)\r
-{\r
- uint32_t tmpcr2;\r
- uint32_t tmpsmcr;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));\r
- assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));\r
-\r
- /* Check input state */\r
- __HAL_LOCK(htim);\r
-\r
- /* Change the handler state */\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Get the TIMx CR2 register value */\r
- tmpcr2 = htim->Instance->CR2;\r
-\r
- /* Get the TIMx SMCR register value */\r
- tmpsmcr = htim->Instance->SMCR;\r
-\r
- /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */\r
- if (IS_TIM_TRGO2_INSTANCE(htim->Instance))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2));\r
-\r
- /* Clear the MMS2 bits */\r
- tmpcr2 &= ~TIM_CR2_MMS2;\r
- /* Select the TRGO2 source*/\r
- tmpcr2 |= sMasterConfig->MasterOutputTrigger2;\r
- }\r
-\r
- /* Reset the MMS Bits */\r
- tmpcr2 &= ~TIM_CR2_MMS;\r
- /* Select the TRGO source */\r
- tmpcr2 |= sMasterConfig->MasterOutputTrigger;\r
-\r
- /* Reset the MSM Bit */\r
- tmpsmcr &= ~TIM_SMCR_MSM;\r
- /* Set master mode */\r
- tmpsmcr |= sMasterConfig->MasterSlaveMode;\r
-\r
- /* Update TIMx CR2 */\r
- htim->Instance->CR2 = tmpcr2;\r
-\r
- /* Update TIMx SMCR */\r
- htim->Instance->SMCR = tmpsmcr;\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Configures the Break feature, dead time, Lock level, OSSI/OSSR State\r
- * and the AOE(automatic output enable).\r
- * @param htim TIM handle\r
- * @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that\r
- * contains the BDTR Register configuration information for the TIM peripheral.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,\r
- TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig)\r
-{\r
- /* Keep this variable initialized to 0 as it is used to configure BDTR register */\r
- uint32_t tmpbdtr = 0U;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode));\r
- assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode));\r
- assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel));\r
- assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime));\r
- assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState));\r
- assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity));\r
- assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->BreakFilter));\r
- assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput));\r
-\r
- /* Check input state */\r
- __HAL_LOCK(htim);\r
-\r
- /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State,\r
- the OSSI State, the dead time value and the Automatic Output Enable Bit */\r
-\r
- /* Set the BDTR bits */\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos));\r
-\r
- if (IS_TIM_BKIN2_INSTANCE(htim->Instance))\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_TIM_BREAK2_STATE(sBreakDeadTimeConfig->Break2State));\r
- assert_param(IS_TIM_BREAK2_POLARITY(sBreakDeadTimeConfig->Break2Polarity));\r
- assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->Break2Filter));\r
-\r
- /* Set the BREAK2 input related BDTR bits */\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (sBreakDeadTimeConfig->Break2Filter << TIM_BDTR_BK2F_Pos));\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State);\r
- MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity);\r
- }\r
-\r
- /* Set TIMx_BDTR */\r
- htim->Instance->BDTR = tmpbdtr;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-#if defined(TIM_BREAK_INPUT_SUPPORT)\r
-\r
-/**\r
- * @brief Configures the break input source.\r
- * @param htim TIM handle.\r
- * @param BreakInput Break input to configure\r
- * This parameter can be one of the following values:\r
- * @arg TIM_BREAKINPUT_BRK: Timer break input\r
- * @arg TIM_BREAKINPUT_BRK2: Timer break 2 input\r
- * @param sBreakInputConfig Break input source configuration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,\r
- uint32_t BreakInput,\r
- TIMEx_BreakInputConfigTypeDef *sBreakInputConfig)\r
-\r
-{\r
- uint32_t tmporx;\r
- uint32_t bkin_enable_mask = 0U;\r
- uint32_t bkin_polarity_mask = 0U;\r
- uint32_t bkin_enable_bitpos = 0U;\r
- uint32_t bkin_polarity_bitpos = 0U;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_BREAKINPUT(BreakInput));\r
- assert_param(IS_TIM_BREAKINPUTSOURCE(sBreakInputConfig->Source));\r
- assert_param(IS_TIM_BREAKINPUTSOURCE_STATE(sBreakInputConfig->Enable));\r
-#if defined(DFSDM1_Channel0)\r
- if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)\r
- {\r
- assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity));\r
- }\r
-#else\r
- assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity));\r
-#endif /* DFSDM1_Channel0 */\r
-\r
- /* Check input state */\r
- __HAL_LOCK(htim);\r
-\r
- switch (sBreakInputConfig->Source)\r
- {\r
- case TIM_BREAKINPUTSOURCE_BKIN:\r
- {\r
- bkin_enable_mask = TIM1_AF1_BKINE;\r
- bkin_enable_bitpos = 0;\r
- bkin_polarity_mask = TIM1_AF1_BKINP;\r
- bkin_polarity_bitpos = 9;\r
- break;\r
- }\r
-\r
- case TIM_BREAKINPUTSOURCE_DFSDM1:\r
- {\r
- bkin_enable_mask = TIM1_AF1_BKDF1BKE;\r
- bkin_enable_bitpos = 8;\r
- break;\r
- }\r
-\r
- default:\r
- break;\r
- }\r
-\r
- switch (BreakInput)\r
- {\r
- case TIM_BREAKINPUT_BRK:\r
- {\r
- /* Get the TIMx_AF1 register value */\r
- tmporx = htim->Instance->AF1;\r
-\r
- /* Enable the break input */\r
- tmporx &= ~bkin_enable_mask;\r
- tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask;\r
-\r
- /* Set the break input polarity */\r
-#if defined(DFSDM1_Channel0)\r
- if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)\r
-#endif /* DFSDM1_Channel0 */\r
- {\r
- tmporx &= ~bkin_polarity_mask;\r
- tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;\r
- }\r
-\r
- /* Set TIMx_AF1 */\r
- htim->Instance->AF1 = tmporx;\r
- break;\r
- }\r
- case TIM_BREAKINPUT_BRK2:\r
- {\r
- /* Get the TIMx_AF2 register value */\r
- tmporx = htim->Instance->AF2;\r
-\r
- /* Enable the break input */\r
- tmporx &= ~bkin_enable_mask;\r
- tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask;\r
-\r
- /* Set the break input polarity */\r
-#if defined(DFSDM1_Channel0)\r
- if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)\r
-#endif /* DFSDM1_Channel0 */\r
- {\r
- tmporx &= ~bkin_polarity_mask;\r
- tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;\r
- }\r
-\r
- /* Set TIMx_AF2 */\r
- htim->Instance->AF2 = tmporx;\r
- break;\r
- }\r
- default:\r
- break;\r
- }\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-#endif /*TIM_BREAK_INPUT_SUPPORT */\r
-\r
-/**\r
- * @brief Configures the TIMx Remapping input capabilities.\r
- * @param htim TIM handle.\r
- * @param Remap specifies the TIM remapping source.\r
- * This parameter can be one of the following values:\r
- * @arg TIM_TIM2_TIM8_TRGO: TIM2 ITR1 input is connected to TIM8 Trigger output(default)\r
- * @arg TIM_TIM2_ETH_PTP: TIM2 ITR1 input is connected to ETH PTP trigger output.\r
- * @arg TIM_TIM2_USBFS_SOF: TIM2 ITR1 input is connected to USB FS SOF.\r
- * @arg TIM_TIM2_USBHS_SOF: TIM2 ITR1 input is connected to USB HS SOF.\r
- * @arg TIM_TIM5_GPIO: TIM5 CH4 input is connected to dedicated Timer pin(default)\r
- * @arg TIM_TIM5_LSI: TIM5 CH4 input is connected to LSI clock.\r
- * @arg TIM_TIM5_LSE: TIM5 CH4 input is connected to LSE clock.\r
- * @arg TIM_TIM5_RTC: TIM5 CH4 input is connected to RTC Output event.\r
- * @arg TIM_TIM11_GPIO: TIM11 CH4 input is connected to dedicated Timer pin(default)\r
- * @arg TIM_TIM11_SPDIF: SPDIF Frame synchronous\r
- * @arg TIM_TIM11_HSE: TIM11 CH4 input is connected to HSE_RTC clock\r
- * (HSE divided by a programmable prescaler)\r
- * @arg TIM_TIM11_MCO1: TIM11 CH1 input is connected to MCO1\r
- *\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)\r
-{\r
- __HAL_LOCK(htim);\r
-\r
- /* Check parameters */\r
- assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_REMAP(Remap));\r
-\r
- /* Set the Timer remapping configuration */\r
- htim->Instance->OR = Remap;\r
-\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Group channel 5 and channel 1, 2 or 3\r
- * @param htim TIM handle.\r
- * @param Channels specifies the reference signal(s) the OC5REF is combined with.\r
- * This parameter can be any combination of the following values:\r
- * TIM_GROUPCH5_NONE: No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC\r
- * TIM_GROUPCH5_OC1REFC: OC1REFC is the logical AND of OC1REFC and OC5REF\r
- * TIM_GROUPCH5_OC2REFC: OC2REFC is the logical AND of OC2REFC and OC5REF\r
- * TIM_GROUPCH5_OC3REFC: OC3REFC is the logical AND of OC3REFC and OC5REF\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels)\r
-{\r
- /* Check parameters */\r
- assert_param(IS_TIM_COMBINED3PHASEPWM_INSTANCE(htim->Instance));\r
- assert_param(IS_TIM_GROUPCH5(Channels));\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(htim);\r
-\r
- htim->State = HAL_TIM_STATE_BUSY;\r
-\r
- /* Clear GC5Cx bit fields */\r
- htim->Instance->CCR5 &= ~(TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1);\r
-\r
- /* Set GC5Cx bit fields */\r
- htim->Instance->CCR5 |= Channels;\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
- __HAL_UNLOCK(htim);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions\r
- * @brief Extended Callbacks functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Extended Callbacks functions #####\r
- ==============================================================================\r
- [..]\r
- This section provides Extended TIM callback functions:\r
- (+) Timer Commutation callback\r
- (+) Timer Break callback\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Hall commutation changed callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIMEx_CommutCallback could be implemented in the user file\r
- */\r
-}\r
-/**\r
- * @brief Hall commutation changed half complete callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIMEx_CommutHalfCpltCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Hall Break detection callback in non-blocking mode\r
- * @param htim TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_TIMEx_BreakCallback could be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief Hall Break2 detection callback in non blocking mode\r
- * @param htim: TIM handle\r
- * @retval None\r
- */\r
-__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(htim);\r
-\r
- /* NOTE : This function Should not be modified, when the callback is needed,\r
- the HAL_TIMEx_Break2Callback could be implemented in the user file\r
- */\r
-}\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions\r
- * @brief Extended Peripheral State functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Extended Peripheral State functions #####\r
- ==============================================================================\r
- [..]\r
- This subsection permits to get in run-time the status of the peripheral\r
- and the data flow.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Return the TIM Hall Sensor interface handle state.\r
- * @param htim TIM Hall Sensor handle\r
- * @retval HAL state\r
- */\r
-HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)\r
-{\r
- return htim->State;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private functions ---------------------------------------------------------*/\r
-/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief TIM DMA Commutation callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->CommutationCallback(htim);\r
-#else\r
- HAL_TIMEx_CommutCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief TIM DMA Commutation half complete callback.\r
- * @param hdma pointer to DMA handle.\r
- * @retval None\r
- */\r
-void TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- /* Change the htim state */\r
- htim->State = HAL_TIM_STATE_READY;\r
-\r
-#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)\r
- htim->CommutationHalfCpltCallback(htim);\r
-#else\r
- HAL_TIMEx_CommutHalfCpltCallback(htim);\r
-#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */\r
-}\r
-\r
-\r
-/**\r
- * @brief Enables or disables the TIM Capture Compare Channel xN.\r
- * @param TIMx to select the TIM peripheral\r
- * @param Channel specifies the TIM Channel\r
- * This parameter can be one of the following values:\r
- * @arg TIM_CHANNEL_1: TIM Channel 1\r
- * @arg TIM_CHANNEL_2: TIM Channel 2\r
- * @arg TIM_CHANNEL_3: TIM Channel 3\r
- * @param ChannelNState specifies the TIM Channel CCxNE bit new state.\r
- * This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable.\r
- * @retval None\r
- */\r
-static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState)\r
-{\r
- uint32_t tmp;\r
-\r
- tmp = TIM_CCER_CC1NE << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */\r
-\r
- /* Reset the CCxNE Bit */\r
- TIMx->CCER &= ~tmp;\r
-\r
- /* Set or reset the CCxNE Bit */\r
- TIMx->CCER |= (uint32_t)(ChannelNState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */\r
-}\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_TIM_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_uart.c\r
- * @author MCD Application Team\r
- * @brief UART HAL module driver.\r
- * This file provides firmware functions to manage the following\r
- * functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART).\r
- * + Initialization and de-initialization functions\r
- * + IO operation functions\r
- * + Peripheral Control functions\r
- *\r
- *\r
- @verbatim\r
- ===============================================================================\r
- ##### How to use this driver #####\r
- ===============================================================================\r
- [..]\r
- The UART HAL driver can be used as follows:\r
-\r
- (#) Declare a UART_HandleTypeDef handle structure (eg. UART_HandleTypeDef huart).\r
- (#) Initialize the UART low level resources by implementing the HAL_UART_MspInit() API:\r
- (++) Enable the USARTx interface clock.\r
- (++) UART pins configuration:\r
- (+++) Enable the clock for the UART GPIOs.\r
- (+++) Configure these UART pins as alternate function pull-up.\r
- (++) NVIC configuration if you need to use interrupt process (HAL_UART_Transmit_IT()\r
- and HAL_UART_Receive_IT() APIs):\r
- (+++) Configure the USARTx interrupt priority.\r
- (+++) Enable the NVIC USART IRQ handle.\r
- (++) UART interrupts handling:\r
- -@@- The specific UART interrupts (Transmission complete interrupt,\r
- RXNE interrupt, RX/TX FIFOs related interrupts and Error Interrupts)\r
- are managed using the macros __HAL_UART_ENABLE_IT() and __HAL_UART_DISABLE_IT()\r
- inside the transmit and receive processes.\r
- (++) DMA Configuration if you need to use DMA process (HAL_UART_Transmit_DMA()\r
- and HAL_UART_Receive_DMA() APIs):\r
- (+++) Declare a DMA handle structure for the Tx/Rx channel.\r
- (+++) Enable the DMAx interface clock.\r
- (+++) Configure the declared DMA handle structure with the required Tx/Rx parameters.\r
- (+++) Configure the DMA Tx/Rx channel.\r
- (+++) Associate the initialized DMA handle to the UART DMA Tx/Rx handle.\r
- (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on the DMA Tx/Rx channel.\r
-\r
- (#) Program the Baud Rate, Word Length, Stop Bit, Parity, Hardware\r
- flow control and Mode (Receiver/Transmitter) in the huart handle Init structure.\r
-\r
- (#) If required, program UART advanced features (TX/RX pins swap, auto Baud rate detection,...)\r
- in the huart handle AdvancedInit structure.\r
-\r
- (#) For the UART asynchronous mode, initialize the UART registers by calling\r
- the HAL_UART_Init() API.\r
-\r
- (#) For the UART Half duplex mode, initialize the UART registers by calling\r
- the HAL_HalfDuplex_Init() API.\r
-\r
- (#) For the UART LIN (Local Interconnection Network) mode, initialize the UART registers\r
- by calling the HAL_LIN_Init() API.\r
-\r
- (#) For the UART Multiprocessor mode, initialize the UART registers\r
- by calling the HAL_MultiProcessor_Init() API.\r
-\r
- (#) For the UART RS485 Driver Enabled mode, initialize the UART registers\r
- by calling the HAL_RS485Ex_Init() API.\r
-\r
- [..]\r
- (@) These API's (HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init(), HAL_MultiProcessor_Init(),\r
- also configure the low level Hardware GPIO, CLOCK, CORTEX...etc) by\r
- calling the customized HAL_UART_MspInit() API.\r
-\r
- ##### Callback registration #####\r
- ==================================\r
-\r
- [..]\r
- The compilation define USE_HAL_UART_REGISTER_CALLBACKS when set to 1\r
- allows the user to configure dynamically the driver callbacks.\r
-\r
- [..]\r
- Use Function @ref HAL_UART_RegisterCallback() to register a user callback.\r
- Function @ref HAL_UART_RegisterCallback() allows to register following callbacks:\r
- (+) TxHalfCpltCallback : Tx Half Complete Callback.\r
- (+) TxCpltCallback : Tx Complete Callback.\r
- (+) RxHalfCpltCallback : Rx Half Complete Callback.\r
- (+) RxCpltCallback : Rx Complete Callback.\r
- (+) ErrorCallback : Error Callback.\r
- (+) AbortCpltCallback : Abort Complete Callback.\r
- (+) AbortTransmitCpltCallback : Abort Transmit Complete Callback.\r
- (+) AbortReceiveCpltCallback : Abort Receive Complete Callback.\r
- (+) WakeupCallback : Wakeup Callback.\r
- (+) RxFifoFullCallback : Rx Fifo Full Callback.\r
- (+) TxFifoEmptyCallback : Tx Fifo Empty Callback.\r
- (+) MspInitCallback : UART MspInit.\r
- (+) MspDeInitCallback : UART MspDeInit.\r
- This function takes as parameters the HAL peripheral handle, the Callback ID\r
- and a pointer to the user callback function.\r
-\r
- [..]\r
- Use function @ref HAL_UART_UnRegisterCallback() to reset a callback to the default\r
- weak (surcharged) function.\r
- @ref HAL_UART_UnRegisterCallback() takes as parameters the HAL peripheral handle,\r
- and the Callback ID.\r
- This function allows to reset following callbacks:\r
- (+) TxHalfCpltCallback : Tx Half Complete Callback.\r
- (+) TxCpltCallback : Tx Complete Callback.\r
- (+) RxHalfCpltCallback : Rx Half Complete Callback.\r
- (+) RxCpltCallback : Rx Complete Callback.\r
- (+) ErrorCallback : Error Callback.\r
- (+) AbortCpltCallback : Abort Complete Callback.\r
- (+) AbortTransmitCpltCallback : Abort Transmit Complete Callback.\r
- (+) AbortReceiveCpltCallback : Abort Receive Complete Callback.\r
- (+) WakeupCallback : Wakeup Callback.\r
- (+) RxFifoFullCallback : Rx Fifo Full Callback.\r
- (+) TxFifoEmptyCallback : Tx Fifo Empty Callback.\r
- (+) MspInitCallback : UART MspInit.\r
- (+) MspDeInitCallback : UART MspDeInit.\r
-\r
- [..]\r
- By default, after the @ref HAL_UART_Init() and when the state is HAL_UART_STATE_RESET\r
- all callbacks are set to the corresponding weak (surcharged) functions:\r
- examples @ref HAL_UART_TxCpltCallback(), @ref HAL_UART_RxHalfCpltCallback().\r
- Exception done for MspInit and MspDeInit functions that are respectively\r
- reset to the legacy weak (surcharged) functions in the @ref HAL_UART_Init()\r
- and @ref HAL_UART_DeInit() only when these callbacks are null (not registered beforehand).\r
- If not, MspInit or MspDeInit are not null, the @ref HAL_UART_Init() and @ref HAL_UART_DeInit()\r
- keep and use the user MspInit/MspDeInit callbacks (registered beforehand).\r
-\r
- [..]\r
- Callbacks can be registered/unregistered in HAL_UART_STATE_READY state only.\r
- Exception done MspInit/MspDeInit that can be registered/unregistered\r
- in HAL_UART_STATE_READY or HAL_UART_STATE_RESET state, thus registered (user)\r
- MspInit/DeInit callbacks can be used during the Init/DeInit.\r
- In that case first register the MspInit/MspDeInit user callbacks\r
- using @ref HAL_UART_RegisterCallback() before calling @ref HAL_UART_DeInit()\r
- or @ref HAL_UART_Init() function.\r
-\r
- [..]\r
- When The compilation define USE_HAL_UART_REGISTER_CALLBACKS is set to 0 or\r
- not defined, the callback registration feature is not available\r
- and weak (surcharged) callbacks are used.\r
-\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup UART UART\r
- * @brief HAL UART module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_UART_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/** @defgroup UART_Private_Constants UART Private Constants\r
- * @{\r
- */\r
-#define USART_CR1_FIELDS ((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | \\r
- USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8 )) /*!< UART or USART CR1 fields of parameters set by UART_SetConfig API */\r
-\r
-#define USART_CR3_FIELDS ((uint32_t)(USART_CR3_RTSE | USART_CR3_CTSE | USART_CR3_ONEBIT)) /*!< UART or USART CR3 fields of parameters set by UART_SetConfig API */\r
-\r
-\r
-#define UART_BRR_MIN 0x10U /* UART BRR minimum authorized value */\r
-#define UART_BRR_MAX 0x0000FFFFU /* UART BRR maximum authorized value */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/** @addtogroup UART_Private_Functions\r
- * @{\r
- */\r
-static void UART_EndTxTransfer(UART_HandleTypeDef *huart);\r
-static void UART_EndRxTransfer(UART_HandleTypeDef *huart);\r
-static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma);\r
-static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma);\r
-static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma);\r
-static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma);\r
-static void UART_DMAError(DMA_HandleTypeDef *hdma);\r
-static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma);\r
-static void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma);\r
-static void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma);\r
-static void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma);\r
-static void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma);\r
-static void UART_TxISR_8BIT(UART_HandleTypeDef *huart);\r
-static void UART_TxISR_16BIT(UART_HandleTypeDef *huart);\r
-static void UART_EndTransmit_IT(UART_HandleTypeDef *huart);\r
-static void UART_RxISR_8BIT(UART_HandleTypeDef *huart);\r
-static void UART_RxISR_16BIT(UART_HandleTypeDef *huart);\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @defgroup UART_Exported_Functions UART Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup UART_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @brief Initialization and Configuration functions\r
- *\r
-@verbatim\r
-===============================================================================\r
- ##### Initialization and Configuration functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides a set of functions allowing to initialize the USARTx or the UARTy\r
- in asynchronous mode.\r
- (+) For the asynchronous mode the parameters below can be configured:\r
- (++) Baud Rate\r
- (++) Word Length\r
- (++) Stop Bit\r
- (++) Parity: If the parity is enabled, then the MSB bit of the data written\r
- in the data register is transmitted but is changed by the parity bit.\r
- (++) Hardware flow control\r
- (++) Receiver/transmitter modes\r
- (++) Over Sampling Method\r
- (++) One-Bit Sampling Method\r
- (+) For the asynchronous mode, the following advanced features can be configured as well:\r
- (++) TX and/or RX pin level inversion\r
- (++) data logical level inversion\r
- (++) RX and TX pins swap\r
- (++) RX overrun detection disabling\r
- (++) DMA disabling on RX error\r
- (++) MSB first on communication line\r
- (++) auto Baud rate detection\r
- [..]\r
- The HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init()and HAL_MultiProcessor_Init()API\r
- follow respectively the UART asynchronous, UART Half duplex, UART LIN mode\r
- and UART multiprocessor mode configuration procedures (details for the procedures\r
- are available in reference manual).\r
-\r
-@endverbatim\r
-\r
- Depending on the frame length defined by the M1 and M0 bits (7-bit,\r
- 8-bit or 9-bit), the possible UART formats are listed in the\r
- following table.\r
-\r
- Table 1. UART frame format.\r
- +-----------------------------------------------------------------------+\r
- | M1 bit | M0 bit | PCE bit | UART frame |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 0 | 0 | | SB | 8 bit data | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 0 | 1 | | SB | 7 bit data | PB | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 1 | 0 | | SB | 9 bit data | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 1 | 1 | | SB | 8 bit data | PB | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 1 | 0 | 0 | | SB | 7 bit data | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 1 | 0 | 1 | | SB | 6 bit data | PB | STB | |\r
- +-----------------------------------------------------------------------+\r
-\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Initialize the UART mode according to the specified\r
- * parameters in the UART_InitTypeDef and initialize the associated handle.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)\r
-{\r
- /* Check the UART handle allocation */\r
- if (huart == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (huart->Init.HwFlowCtl != UART_HWCONTROL_NONE)\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_UART_HWFLOW_INSTANCE(huart->Instance));\r
- }\r
- else\r
- {\r
- /* Check the parameters */\r
- assert_param(IS_UART_INSTANCE(huart->Instance));\r
- }\r
-\r
- if (huart->gState == HAL_UART_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- huart->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- UART_InitCallbacksToDefault(huart);\r
-\r
- if (huart->MspInitCallback == NULL)\r
- {\r
- huart->MspInitCallback = HAL_UART_MspInit;\r
- }\r
-\r
- /* Init the low level hardware */\r
- huart->MspInitCallback(huart);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK */\r
- HAL_UART_MspInit(huart);\r
-#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\r
- }\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_UART_DISABLE(huart);\r
-\r
- /* Set the UART Communication parameters */\r
- if (UART_SetConfig(huart) == HAL_ERROR)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\r
- {\r
- UART_AdvFeatureConfig(huart);\r
- }\r
-\r
- /* In asynchronous mode, the following bits must be kept cleared:\r
- - LINEN and CLKEN bits in the USART_CR2 register,\r
- - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/\r
- CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));\r
- CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));\r
-\r
- /* Enable the Peripheral */\r
- __HAL_UART_ENABLE(huart);\r
-\r
- /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-/**\r
- * @brief Initialize the half-duplex mode according to the specified\r
- * parameters in the UART_InitTypeDef and creates the associated handle.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)\r
-{\r
- /* Check the UART handle allocation */\r
- if (huart == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check UART instance */\r
- assert_param(IS_UART_HALFDUPLEX_INSTANCE(huart->Instance));\r
-\r
- if (huart->gState == HAL_UART_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- huart->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- UART_InitCallbacksToDefault(huart);\r
-\r
- if (huart->MspInitCallback == NULL)\r
- {\r
- huart->MspInitCallback = HAL_UART_MspInit;\r
- }\r
-\r
- /* Init the low level hardware */\r
- huart->MspInitCallback(huart);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK */\r
- HAL_UART_MspInit(huart);\r
-#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\r
- }\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_UART_DISABLE(huart);\r
-\r
- /* Set the UART Communication parameters */\r
- if (UART_SetConfig(huart) == HAL_ERROR)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\r
- {\r
- UART_AdvFeatureConfig(huart);\r
- }\r
-\r
- /* In half-duplex mode, the following bits must be kept cleared:\r
- - LINEN and CLKEN bits in the USART_CR2 register,\r
- - SCEN and IREN bits in the USART_CR3 register.*/\r
- CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));\r
- CLEAR_BIT(huart->Instance->CR3, (USART_CR3_IREN | USART_CR3_SCEN));\r
-\r
- /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_HDSEL);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_UART_ENABLE(huart);\r
-\r
- /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-\r
-/**\r
- * @brief Initialize the LIN mode according to the specified\r
- * parameters in the UART_InitTypeDef and creates the associated handle.\r
- * @param huart UART handle.\r
- * @param BreakDetectLength Specifies the LIN break detection length.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_LINBREAKDETECTLENGTH_10B 10-bit break detection\r
- * @arg @ref UART_LINBREAKDETECTLENGTH_11B 11-bit break detection\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength)\r
-{\r
- /* Check the UART handle allocation */\r
- if (huart == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the LIN UART instance */\r
- assert_param(IS_UART_LIN_INSTANCE(huart->Instance));\r
- /* Check the Break detection length parameter */\r
- assert_param(IS_UART_LIN_BREAK_DETECT_LENGTH(BreakDetectLength));\r
-\r
- /* LIN mode limited to 16-bit oversampling only */\r
- if (huart->Init.OverSampling == UART_OVERSAMPLING_8)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* LIN mode limited to 8-bit data length */\r
- if (huart->Init.WordLength != UART_WORDLENGTH_8B)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (huart->gState == HAL_UART_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- huart->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- UART_InitCallbacksToDefault(huart);\r
-\r
- if (huart->MspInitCallback == NULL)\r
- {\r
- huart->MspInitCallback = HAL_UART_MspInit;\r
- }\r
-\r
- /* Init the low level hardware */\r
- huart->MspInitCallback(huart);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK */\r
- HAL_UART_MspInit(huart);\r
-#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\r
- }\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_UART_DISABLE(huart);\r
-\r
- /* Set the UART Communication parameters */\r
- if (UART_SetConfig(huart) == HAL_ERROR)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\r
- {\r
- UART_AdvFeatureConfig(huart);\r
- }\r
-\r
- /* In LIN mode, the following bits must be kept cleared:\r
- - LINEN and CLKEN bits in the USART_CR2 register,\r
- - SCEN and IREN bits in the USART_CR3 register.*/\r
- CLEAR_BIT(huart->Instance->CR2, USART_CR2_CLKEN);\r
- CLEAR_BIT(huart->Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN | USART_CR3_SCEN));\r
-\r
- /* Enable the LIN mode by setting the LINEN bit in the CR2 register */\r
- SET_BIT(huart->Instance->CR2, USART_CR2_LINEN);\r
-\r
- /* Set the USART LIN Break detection length. */\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_LBDL, BreakDetectLength);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_UART_ENABLE(huart);\r
-\r
- /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-\r
-/**\r
- * @brief Initialize the multiprocessor mode according to the specified\r
- * parameters in the UART_InitTypeDef and initialize the associated handle.\r
- * @param huart UART handle.\r
- * @param Address UART node address (4-, 6-, 7- or 8-bit long).\r
- * @param WakeUpMethod Specifies the UART wakeup method.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_WAKEUPMETHOD_IDLELINE WakeUp by an idle line detection\r
- * @arg @ref UART_WAKEUPMETHOD_ADDRESSMARK WakeUp by an address mark\r
- * @note If the user resorts to idle line detection wake up, the Address parameter\r
- * is useless and ignored by the initialization function.\r
- * @note If the user resorts to address mark wake up, the address length detection\r
- * is configured by default to 4 bits only. For the UART to be able to\r
- * manage 6-, 7- or 8-bit long addresses detection, the API\r
- * HAL_MultiProcessorEx_AddressLength_Set() must be called after\r
- * HAL_MultiProcessor_Init().\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod)\r
-{\r
- /* Check the UART handle allocation */\r
- if (huart == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the wake up method parameter */\r
- assert_param(IS_UART_WAKEUPMETHOD(WakeUpMethod));\r
-\r
- if (huart->gState == HAL_UART_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- huart->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- UART_InitCallbacksToDefault(huart);\r
-\r
- if (huart->MspInitCallback == NULL)\r
- {\r
- huart->MspInitCallback = HAL_UART_MspInit;\r
- }\r
-\r
- /* Init the low level hardware */\r
- huart->MspInitCallback(huart);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK */\r
- HAL_UART_MspInit(huart);\r
-#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\r
- }\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_UART_DISABLE(huart);\r
-\r
- /* Set the UART Communication parameters */\r
- if (UART_SetConfig(huart) == HAL_ERROR)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\r
- {\r
- UART_AdvFeatureConfig(huart);\r
- }\r
-\r
- /* In multiprocessor mode, the following bits must be kept cleared:\r
- - LINEN and CLKEN bits in the USART_CR2 register,\r
- - SCEN, HDSEL and IREN bits in the USART_CR3 register. */\r
- CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));\r
- CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));\r
-\r
- if (WakeUpMethod == UART_WAKEUPMETHOD_ADDRESSMARK)\r
- {\r
- /* If address mark wake up method is chosen, set the USART address node */\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)Address << UART_CR2_ADDRESS_LSB_POS));\r
- }\r
-\r
- /* Set the wake up method by setting the WAKE bit in the CR1 register */\r
- MODIFY_REG(huart->Instance->CR1, USART_CR1_WAKE, WakeUpMethod);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_UART_ENABLE(huart);\r
-\r
- /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-\r
-/**\r
- * @brief DeInitialize the UART peripheral.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)\r
-{\r
- /* Check the UART handle allocation */\r
- if (huart == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the parameters */\r
- assert_param(IS_UART_INSTANCE(huart->Instance));\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_UART_DISABLE(huart);\r
-\r
- huart->Instance->CR1 = 0x0U;\r
- huart->Instance->CR2 = 0x0U;\r
- huart->Instance->CR3 = 0x0U;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- if (huart->MspDeInitCallback == NULL)\r
- {\r
- huart->MspDeInitCallback = HAL_UART_MspDeInit;\r
- }\r
- /* DeInit the low level hardware */\r
- huart->MspDeInitCallback(huart);\r
-#else\r
- /* DeInit the low level hardware */\r
- HAL_UART_MspDeInit(huart);\r
-#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\r
-\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- huart->gState = HAL_UART_STATE_RESET;\r
- huart->RxState = HAL_UART_STATE_RESET;\r
-\r
- /* Process Unlock */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Initialize the UART MSP.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_MspInit(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_MspInit can be implemented in the user file\r
- */\r
-}\r
-\r
-/**\r
- * @brief DeInitialize the UART MSP.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_MspDeInit can be implemented in the user file\r
- */\r
-}\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
-/**\r
- * @brief Register a User UART Callback\r
- * To be used instead of the weak predefined callback\r
- * @param huart uart handle\r
- * @param CallbackID ID of the callback to be registered\r
- * This parameter can be one of the following values:\r
- * @arg @ref HAL_UART_TX_HALFCOMPLETE_CB_ID Tx Half Complete Callback ID\r
- * @arg @ref HAL_UART_TX_COMPLETE_CB_ID Tx Complete Callback ID\r
- * @arg @ref HAL_UART_RX_HALFCOMPLETE_CB_ID Rx Half Complete Callback ID\r
- * @arg @ref HAL_UART_RX_COMPLETE_CB_ID Rx Complete Callback ID\r
- * @arg @ref HAL_UART_ERROR_CB_ID Error Callback ID\r
- * @arg @ref HAL_UART_ABORT_COMPLETE_CB_ID Abort Complete Callback ID\r
- * @arg @ref HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID Abort Transmit Complete Callback ID\r
- * @arg @ref HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID Abort Receive Complete Callback ID\r
- * @arg @ref HAL_UART_WAKEUP_CB_ID Wakeup Callback ID\r
- * @arg @ref HAL_UART_RX_FIFO_FULL_CB_ID Rx Fifo Full Callback ID\r
- * @arg @ref HAL_UART_TX_FIFO_EMPTY_CB_ID Tx Fifo Empty Callback ID\r
- * @arg @ref HAL_UART_MSPINIT_CB_ID MspInit Callback ID\r
- * @arg @ref HAL_UART_MSPDEINIT_CB_ID MspDeInit Callback ID\r
- * @param pCallback pointer to the Callback function\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID, pUART_CallbackTypeDef pCallback)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- if (pCallback == NULL)\r
- {\r
- /* Update the error code */\r
- huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\r
-\r
- return HAL_ERROR;\r
- }\r
- /* Process locked */\r
- __HAL_LOCK(huart);\r
-\r
- if (huart->gState == HAL_UART_STATE_READY)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_UART_TX_HALFCOMPLETE_CB_ID :\r
- huart->TxHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_TX_COMPLETE_CB_ID :\r
- huart->TxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_RX_HALFCOMPLETE_CB_ID :\r
- huart->RxHalfCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_RX_COMPLETE_CB_ID :\r
- huart->RxCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_ERROR_CB_ID :\r
- huart->ErrorCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_ABORT_COMPLETE_CB_ID :\r
- huart->AbortCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID :\r
- huart->AbortTransmitCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID :\r
- huart->AbortReceiveCpltCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_WAKEUP_CB_ID :\r
- huart->WakeupCallback = pCallback;\r
- break;\r
-\r
-\r
- case HAL_UART_MSPINIT_CB_ID :\r
- huart->MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_MSPDEINIT_CB_ID :\r
- huart->MspDeInitCallback = pCallback;\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else if (huart->gState == HAL_UART_STATE_RESET)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_UART_MSPINIT_CB_ID :\r
- huart->MspInitCallback = pCallback;\r
- break;\r
-\r
- case HAL_UART_MSPDEINIT_CB_ID :\r
- huart->MspDeInitCallback = pCallback;\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- /* Update the error code */\r
- huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(huart);\r
-\r
- return status;\r
-}\r
-\r
-/**\r
- * @brief Unregister an UART Callback\r
- * UART callaback is redirected to the weak predefined callback\r
- * @param huart uart handle\r
- * @param CallbackID ID of the callback to be unregistered\r
- * This parameter can be one of the following values:\r
- * @arg @ref HAL_UART_TX_HALFCOMPLETE_CB_ID Tx Half Complete Callback ID\r
- * @arg @ref HAL_UART_TX_COMPLETE_CB_ID Tx Complete Callback ID\r
- * @arg @ref HAL_UART_RX_HALFCOMPLETE_CB_ID Rx Half Complete Callback ID\r
- * @arg @ref HAL_UART_RX_COMPLETE_CB_ID Rx Complete Callback ID\r
- * @arg @ref HAL_UART_ERROR_CB_ID Error Callback ID\r
- * @arg @ref HAL_UART_ABORT_COMPLETE_CB_ID Abort Complete Callback ID\r
- * @arg @ref HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID Abort Transmit Complete Callback ID\r
- * @arg @ref HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID Abort Receive Complete Callback ID\r
- * @arg @ref HAL_UART_WAKEUP_CB_ID Wakeup Callback ID\r
- * @arg @ref HAL_UART_RX_FIFO_FULL_CB_ID Rx Fifo Full Callback ID\r
- * @arg @ref HAL_UART_TX_FIFO_EMPTY_CB_ID Tx Fifo Empty Callback ID\r
- * @arg @ref HAL_UART_MSPINIT_CB_ID MspInit Callback ID\r
- * @arg @ref HAL_UART_MSPDEINIT_CB_ID MspDeInit Callback ID\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID)\r
-{\r
- HAL_StatusTypeDef status = HAL_OK;\r
-\r
- /* Process locked */\r
- __HAL_LOCK(huart);\r
-\r
- if (HAL_UART_STATE_READY == huart->gState)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_UART_TX_HALFCOMPLETE_CB_ID :\r
- huart->TxHalfCpltCallback = HAL_UART_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */\r
- break;\r
-\r
- case HAL_UART_TX_COMPLETE_CB_ID :\r
- huart->TxCpltCallback = HAL_UART_TxCpltCallback; /* Legacy weak TxCpltCallback */\r
- break;\r
-\r
- case HAL_UART_RX_HALFCOMPLETE_CB_ID :\r
- huart->RxHalfCpltCallback = HAL_UART_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */\r
- break;\r
-\r
- case HAL_UART_RX_COMPLETE_CB_ID :\r
- huart->RxCpltCallback = HAL_UART_RxCpltCallback; /* Legacy weak RxCpltCallback */\r
- break;\r
-\r
- case HAL_UART_ERROR_CB_ID :\r
- huart->ErrorCallback = HAL_UART_ErrorCallback; /* Legacy weak ErrorCallback */\r
- break;\r
-\r
- case HAL_UART_ABORT_COMPLETE_CB_ID :\r
- huart->AbortCpltCallback = HAL_UART_AbortCpltCallback; /* Legacy weak AbortCpltCallback */\r
- break;\r
-\r
- case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID :\r
- huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak AbortTransmitCpltCallback */\r
- break;\r
-\r
- case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID :\r
- huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak AbortReceiveCpltCallback */\r
- break;\r
-\r
- case HAL_UART_MSPINIT_CB_ID :\r
- huart->MspInitCallback = HAL_UART_MspInit; /* Legacy weak MspInitCallback */\r
- break;\r
-\r
- case HAL_UART_MSPDEINIT_CB_ID :\r
- huart->MspDeInitCallback = HAL_UART_MspDeInit; /* Legacy weak MspDeInitCallback */\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else if (HAL_UART_STATE_RESET == huart->gState)\r
- {\r
- switch (CallbackID)\r
- {\r
- case HAL_UART_MSPINIT_CB_ID :\r
- huart->MspInitCallback = HAL_UART_MspInit;\r
- break;\r
-\r
- case HAL_UART_MSPDEINIT_CB_ID :\r
- huart->MspDeInitCallback = HAL_UART_MspDeInit;\r
- break;\r
-\r
- default :\r
- /* Update the error code */\r
- huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- /* Update the error code */\r
- huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;\r
-\r
- /* Return error status */\r
- status = HAL_ERROR;\r
- }\r
-\r
- /* Release Lock */\r
- __HAL_UNLOCK(huart);\r
-\r
- return status;\r
-}\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Exported_Functions_Group2 IO operation functions\r
- * @brief UART Transmit/Receive functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### IO operation functions #####\r
- ===============================================================================\r
- This subsection provides a set of functions allowing to manage the UART asynchronous\r
- and Half duplex data transfers.\r
-\r
- (#) There are two mode of transfer:\r
- (+) Blocking mode: The communication is performed in polling mode.\r
- The HAL status of all data processing is returned by the same function\r
- after finishing transfer.\r
- (+) Non-Blocking mode: The communication is performed using Interrupts\r
- or DMA, These API's return the HAL status.\r
- The end of the data processing will be indicated through the\r
- dedicated UART IRQ when using Interrupt mode or the DMA IRQ when\r
- using DMA mode.\r
- The HAL_UART_TxCpltCallback(), HAL_UART_RxCpltCallback() user callbacks\r
- will be executed respectively at the end of the transmit or Receive process\r
- The HAL_UART_ErrorCallback()user callback will be executed when a communication error is detected\r
-\r
- (#) Blocking mode API's are :\r
- (+) HAL_UART_Transmit()\r
- (+) HAL_UART_Receive()\r
-\r
- (#) Non-Blocking mode API's with Interrupt are :\r
- (+) HAL_UART_Transmit_IT()\r
- (+) HAL_UART_Receive_IT()\r
- (+) HAL_UART_IRQHandler()\r
-\r
- (#) Non-Blocking mode API's with DMA are :\r
- (+) HAL_UART_Transmit_DMA()\r
- (+) HAL_UART_Receive_DMA()\r
- (+) HAL_UART_DMAPause()\r
- (+) HAL_UART_DMAResume()\r
- (+) HAL_UART_DMAStop()\r
-\r
- (#) A set of Transfer Complete Callbacks are provided in Non_Blocking mode:\r
- (+) HAL_UART_TxHalfCpltCallback()\r
- (+) HAL_UART_TxCpltCallback()\r
- (+) HAL_UART_RxHalfCpltCallback()\r
- (+) HAL_UART_RxCpltCallback()\r
- (+) HAL_UART_ErrorCallback()\r
-\r
- (#) Non-Blocking mode transfers could be aborted using Abort API's :\r
- (+) HAL_UART_Abort()\r
- (+) HAL_UART_AbortTransmit()\r
- (+) HAL_UART_AbortReceive()\r
- (+) HAL_UART_Abort_IT()\r
- (+) HAL_UART_AbortTransmit_IT()\r
- (+) HAL_UART_AbortReceive_IT()\r
-\r
- (#) For Abort services based on interrupts (HAL_UART_Abortxxx_IT), a set of Abort Complete Callbacks are provided:\r
- (+) HAL_UART_AbortCpltCallback()\r
- (+) HAL_UART_AbortTransmitCpltCallback()\r
- (+) HAL_UART_AbortReceiveCpltCallback()\r
-\r
- (#) In Non-Blocking mode transfers, possible errors are split into 2 categories.\r
- Errors are handled as follows :\r
- (+) Error is considered as Recoverable and non blocking : Transfer could go till end, but error severity is\r
- to be evaluated by user : this concerns Frame Error, Parity Error or Noise Error in Interrupt mode reception .\r
- Received character is then retrieved and stored in Rx buffer, Error code is set to allow user to identify error type,\r
- and HAL_UART_ErrorCallback() user callback is executed. Transfer is kept ongoing on UART side.\r
- If user wants to abort it, Abort services should be called by user.\r
- (+) Error is considered as Blocking : Transfer could not be completed properly and is aborted.\r
- This concerns Overrun Error In Interrupt mode reception and all errors in DMA mode.\r
- Error code is set to allow user to identify error type, and HAL_UART_ErrorCallback() user callback is executed.\r
-\r
- -@- In the Half duplex communication, it is forbidden to run the transmit\r
- and receive process in parallel, the UART state HAL_UART_STATE_BUSY_TX_RX can't be useful.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Send an amount of data in blocking mode.\r
- * @param huart UART handle.\r
- * @param pData Pointer to data buffer.\r
- * @param Size Amount of data to be sent.\r
- * @param Timeout Timeout duration.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint8_t *pdata8bits;\r
- uint16_t *pdata16bits;\r
- uint32_t tickstart;\r
-\r
- /* Check that a Tx process is not already ongoing */\r
- if (huart->gState == HAL_UART_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- huart->gState = HAL_UART_STATE_BUSY_TX;\r
-\r
- /* Init tickstart for timeout managment*/\r
- tickstart = HAL_GetTick();\r
-\r
- huart->TxXferSize = Size;\r
- huart->TxXferCount = Size;\r
-\r
- /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */\r
- if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\r
- {\r
- pdata8bits = NULL;\r
- pdata16bits = (uint16_t *) pData;\r
- }\r
- else\r
- {\r
- pdata8bits = pData;\r
- pdata16bits = NULL;\r
- }\r
-\r
- while (huart->TxXferCount > 0U)\r
- {\r
- if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- if (pdata8bits == NULL)\r
- {\r
- huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU);\r
- pdata16bits++;\r
- }\r
- else\r
- {\r
- huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU);\r
- pdata8bits++;\r
- }\r
- huart->TxXferCount--;\r
- }\r
-\r
- if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
-\r
- /* At end of Tx process, restore huart->gState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive an amount of data in blocking mode.\r
- * @param huart UART handle.\r
- * @param pData Pointer to data buffer.\r
- * @param Size Amount of data to be received.\r
- * @param Timeout Timeout duration.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)\r
-{\r
- uint8_t *pdata8bits;\r
- uint16_t *pdata16bits;\r
- uint16_t uhMask;\r
- uint32_t tickstart;\r
-\r
- /* Check that a Rx process is not already ongoing */\r
- if (huart->RxState == HAL_UART_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- huart->RxState = HAL_UART_STATE_BUSY_RX;\r
-\r
- /* Init tickstart for timeout managment*/\r
- tickstart = HAL_GetTick();\r
-\r
- huart->RxXferSize = Size;\r
- huart->RxXferCount = Size;\r
-\r
- /* Computation of UART mask to apply to RDR register */\r
- UART_MASK_COMPUTATION(huart);\r
- uhMask = huart->Mask;\r
-\r
- /* In case of 9bits/No Parity transfer, pRxData needs to be handled as a uint16_t pointer */\r
- if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\r
- {\r
- pdata8bits = NULL;\r
- pdata16bits = (uint16_t *) pData;\r
- }\r
- else\r
- {\r
- pdata8bits = pData;\r
- pdata16bits = NULL;\r
- }\r
-\r
- /* as long as data have to be received */\r
- while (huart->RxXferCount > 0U)\r
- {\r
- if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK)\r
- {\r
- return HAL_TIMEOUT;\r
- }\r
- if (pdata8bits == NULL)\r
- {\r
- *pdata16bits = (uint16_t)(huart->Instance->RDR & uhMask);\r
- pdata16bits++;\r
- }\r
- else\r
- {\r
- *pdata8bits = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask);\r
- pdata8bits++;\r
- }\r
- huart->RxXferCount--;\r
- }\r
-\r
- /* At end of Rx process, restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Send an amount of data in interrupt mode.\r
- * @param huart UART handle.\r
- * @param pData Pointer to data buffer.\r
- * @param Size Amount of data to be sent.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\r
-{\r
- /* Check that a Tx process is not already ongoing */\r
- if (huart->gState == HAL_UART_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->pTxBuffPtr = pData;\r
- huart->TxXferSize = Size;\r
- huart->TxXferCount = Size;\r
- huart->TxISR = NULL;\r
-\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- huart->gState = HAL_UART_STATE_BUSY_TX;\r
-\r
- /* Set the Tx ISR function pointer according to the data word length */\r
- if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\r
- {\r
- huart->TxISR = UART_TxISR_16BIT;\r
- }\r
- else\r
- {\r
- huart->TxISR = UART_TxISR_8BIT;\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- /* Enable the Transmit Data Register Empty interrupt */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive an amount of data in interrupt mode.\r
- * @param huart UART handle.\r
- * @param pData Pointer to data buffer.\r
- * @param Size Amount of data to be received.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\r
-{\r
- /* Check that a Rx process is not already ongoing */\r
- if (huart->RxState == HAL_UART_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->pRxBuffPtr = pData;\r
- huart->RxXferSize = Size;\r
- huart->RxXferCount = Size;\r
- huart->RxISR = NULL;\r
-\r
- /* Computation of UART mask to apply to RDR register */\r
- UART_MASK_COMPUTATION(huart);\r
-\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- huart->RxState = HAL_UART_STATE_BUSY_RX;\r
-\r
- /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Set the Rx ISR function pointer according to the data word length */\r
- if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))\r
- {\r
- huart->RxISR = UART_RxISR_16BIT;\r
- }\r
- else\r
- {\r
- huart->RxISR = UART_RxISR_8BIT;\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Send an amount of data in DMA mode.\r
- * @param huart UART handle.\r
- * @param pData Pointer to data buffer.\r
- * @param Size Amount of data to be sent.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\r
-{\r
- /* Check that a Tx process is not already ongoing */\r
- if (huart->gState == HAL_UART_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->pTxBuffPtr = pData;\r
- huart->TxXferSize = Size;\r
- huart->TxXferCount = Size;\r
-\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- huart->gState = HAL_UART_STATE_BUSY_TX;\r
-\r
- if (huart->hdmatx != NULL)\r
- {\r
- /* Set the UART DMA transfer complete callback */\r
- huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt;\r
-\r
- /* Set the UART DMA Half transfer complete callback */\r
- huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- huart->hdmatx->XferErrorCallback = UART_DMAError;\r
-\r
- /* Set the DMA abort callback */\r
- huart->hdmatx->XferAbortCallback = NULL;\r
-\r
- /* Enable the UART transmit DMA channel */\r
- if (HAL_DMA_Start_IT(huart->hdmatx, (uint32_t)huart->pTxBuffPtr, (uint32_t)&huart->Instance->TDR, Size) != HAL_OK)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- /* Restore huart->gState to ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- /* Clear the TC flag in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- /* Enable the DMA transfer for transmit request by setting the DMAT bit\r
- in the UART CR3 register */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Receive an amount of data in DMA mode.\r
- * @note When the UART parity is enabled (PCE = 1), the received data contain\r
- * the parity bit (MSB position).\r
- * @param huart UART handle.\r
- * @param pData Pointer to data buffer.\r
- * @param Size Amount of data to be received.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)\r
-{\r
- /* Check that a Rx process is not already ongoing */\r
- if (huart->RxState == HAL_UART_STATE_READY)\r
- {\r
- if ((pData == NULL) || (Size == 0U))\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->pRxBuffPtr = pData;\r
- huart->RxXferSize = Size;\r
-\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- huart->RxState = HAL_UART_STATE_BUSY_RX;\r
-\r
- if (huart->hdmarx != NULL)\r
- {\r
- /* Set the UART DMA transfer complete callback */\r
- huart->hdmarx->XferCpltCallback = UART_DMAReceiveCplt;\r
-\r
- /* Set the UART DMA Half transfer complete callback */\r
- huart->hdmarx->XferHalfCpltCallback = UART_DMARxHalfCplt;\r
-\r
- /* Set the DMA error callback */\r
- huart->hdmarx->XferErrorCallback = UART_DMAError;\r
-\r
- /* Set the DMA abort callback */\r
- huart->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Enable the DMA channel */\r
- if (HAL_DMA_Start_IT(huart->hdmarx, (uint32_t)&huart->Instance->RDR, (uint32_t)huart->pRxBuffPtr, Size) != HAL_OK)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- /* Restore huart->gState to ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- return HAL_ERROR;\r
- }\r
- }\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- /* Enable the UART Parity Error Interrupt */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);\r
-\r
- /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Enable the DMA transfer for the receiver request by setting the DMAR bit\r
- in the UART CR3 register */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- return HAL_OK;\r
- }\r
- else\r
- {\r
- return HAL_BUSY;\r
- }\r
-}\r
-\r
-/**\r
- * @brief Pause the DMA Transfer.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)\r
-{\r
- const HAL_UART_StateTypeDef gstate = huart->gState;\r
- const HAL_UART_StateTypeDef rxstate = huart->RxState;\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&\r
- (gstate == HAL_UART_STATE_BUSY_TX))\r
- {\r
- /* Disable the UART DMA Tx request */\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
- }\r
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&\r
- (rxstate == HAL_UART_STATE_BUSY_RX))\r
- {\r
- /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Disable the UART DMA Rx request */\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Resume the DMA Transfer.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)\r
-{\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- if (huart->gState == HAL_UART_STATE_BUSY_TX)\r
- {\r
- /* Enable the UART DMA Tx request */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
- }\r
- if (huart->RxState == HAL_UART_STATE_BUSY_RX)\r
- {\r
- /* Clear the Overrun flag before resuming the Rx transfer */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);\r
-\r
- /* Reenable PE and ERR (Frame error, noise error, overrun error) interrupts */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);\r
- SET_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Enable the UART DMA Rx request */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
- }\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Stop the DMA Transfer.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)\r
-{\r
- /* The Lock is not implemented on this API to allow the user application\r
- to call the HAL UART API under callbacks HAL_UART_TxCpltCallback() / HAL_UART_RxCpltCallback() /\r
- HAL_UART_TxHalfCpltCallback / HAL_UART_RxHalfCpltCallback:\r
- indeed, when HAL_DMA_Abort() API is called, the DMA TX/RX Transfer or Half Transfer complete\r
- interrupt is generated if the DMA transfer interruption occurs at the middle or at the end of\r
- the stream and the corresponding call back is executed. */\r
-\r
- const HAL_UART_StateTypeDef gstate = huart->gState;\r
- const HAL_UART_StateTypeDef rxstate = huart->RxState;\r
-\r
- /* Stop UART DMA Tx request if ongoing */\r
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&\r
- (gstate == HAL_UART_STATE_BUSY_TX))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
-\r
- /* Abort the UART DMA Tx channel */\r
- if (huart->hdmatx != NULL)\r
- {\r
- if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK)\r
- {\r
- if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
-\r
- UART_EndTxTransfer(huart);\r
- }\r
-\r
- /* Stop UART DMA Rx request if ongoing */\r
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&\r
- (rxstate == HAL_UART_STATE_BUSY_RX))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- /* Abort the UART DMA Rx channel */\r
- if (huart->hdmarx != NULL)\r
- {\r
- if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK)\r
- {\r
- if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
-\r
- UART_EndRxTransfer(huart);\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Abort ongoing transfers (blocking mode).\r
- * @param huart UART handle.\r
- * @note This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode.\r
- * This procedure performs following operations :\r
- * - Disable UART Interrupts (Tx and Rx)\r
- * - Disable the DMA transfer in the peripheral register (if enabled)\r
- * - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode)\r
- * - Set handle State to READY\r
- * @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.\r
- * @retval HAL status\r
-*/\r
-HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Disable the UART DMA Tx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
-\r
- /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */\r
- if (huart->hdmatx != NULL)\r
- {\r
- /* Set the UART DMA Abort callback to Null.\r
- No call back execution at end of DMA abort procedure */\r
- huart->hdmatx->XferAbortCallback = NULL;\r
-\r
- if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK)\r
- {\r
- if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
-\r
- /* Disable the UART DMA Rx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */\r
- if (huart->hdmarx != NULL)\r
- {\r
- /* Set the UART DMA Abort callback to Null.\r
- No call back execution at end of DMA abort procedure */\r
- huart->hdmarx->XferAbortCallback = NULL;\r
-\r
- if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK)\r
- {\r
- if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
-\r
- /* Reset Tx and Rx transfer counters */\r
- huart->TxXferCount = 0U;\r
- huart->RxXferCount = 0U;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
-\r
- /* Discard the received data */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
-\r
- /* Restore huart->gState and huart->RxState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Reset Handle ErrorCode to No Error */\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Abort ongoing Transmit transfer (blocking mode).\r
- * @param huart UART handle.\r
- * @note This procedure could be used for aborting any ongoing Tx transfer started in Interrupt or DMA mode.\r
- * This procedure performs following operations :\r
- * - Disable UART Interrupts (Tx)\r
- * - Disable the DMA transfer in the peripheral register (if enabled)\r
- * - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode)\r
- * - Set handle State to READY\r
- * @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.\r
- * @retval HAL status\r
-*/\r
-HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable TXEIE and TCIE interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));\r
-\r
- /* Disable the UART DMA Tx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
-\r
- /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */\r
- if (huart->hdmatx != NULL)\r
- {\r
- /* Set the UART DMA Abort callback to Null.\r
- No call back execution at end of DMA abort procedure */\r
- huart->hdmatx->XferAbortCallback = NULL;\r
-\r
- if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK)\r
- {\r
- if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
-\r
- /* Reset Tx transfer counter */\r
- huart->TxXferCount = 0U;\r
-\r
-\r
- /* Restore huart->gState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Abort ongoing Receive transfer (blocking mode).\r
- * @param huart UART handle.\r
- * @note This procedure could be used for aborting any ongoing Rx transfer started in Interrupt or DMA mode.\r
- * This procedure performs following operations :\r
- * - Disable UART Interrupts (Rx)\r
- * - Disable the DMA transfer in the peripheral register (if enabled)\r
- * - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode)\r
- * - Set handle State to READY\r
- * @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.\r
- * @retval HAL status\r
-*/\r
-HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Disable the UART DMA Rx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */\r
- if (huart->hdmarx != NULL)\r
- {\r
- /* Set the UART DMA Abort callback to Null.\r
- No call back execution at end of DMA abort procedure */\r
- huart->hdmarx->XferAbortCallback = NULL;\r
-\r
- if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK)\r
- {\r
- if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT)\r
- {\r
- /* Set error code to DMA */\r
- huart->ErrorCode = HAL_UART_ERROR_DMA;\r
-\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- }\r
-\r
- /* Reset Rx transfer counter */\r
- huart->RxXferCount = 0U;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
- /* Discard the received data */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
-\r
- /* Restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Abort ongoing transfers (Interrupt mode).\r
- * @param huart UART handle.\r
- * @note This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode.\r
- * This procedure performs following operations :\r
- * - Disable UART Interrupts (Tx and Rx)\r
- * - Disable the DMA transfer in the peripheral register (if enabled)\r
- * - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode)\r
- * - Set handle State to READY\r
- * - At abort completion, call user abort complete callback\r
- * @note This procedure is executed in Interrupt mode, meaning that abort procedure could be\r
- * considered as completed only when user abort complete callback is executed (not when exiting function).\r
- * @retval HAL status\r
-*/\r
-HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)\r
-{\r
- uint32_t abortcplt = 1U;\r
-\r
- /* Disable interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* If DMA Tx and/or DMA Rx Handles are associated to UART Handle, DMA Abort complete callbacks should be initialised\r
- before any call to DMA Abort functions */\r
- /* DMA Tx Handle is valid */\r
- if (huart->hdmatx != NULL)\r
- {\r
- /* Set DMA Abort Complete callback if UART DMA Tx request if enabled.\r
- Otherwise, set it to NULL */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\r
- {\r
- huart->hdmatx->XferAbortCallback = UART_DMATxAbortCallback;\r
- }\r
- else\r
- {\r
- huart->hdmatx->XferAbortCallback = NULL;\r
- }\r
- }\r
- /* DMA Rx Handle is valid */\r
- if (huart->hdmarx != NULL)\r
- {\r
- /* Set DMA Abort Complete callback if UART DMA Rx request if enabled.\r
- Otherwise, set it to NULL */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\r
- {\r
- huart->hdmarx->XferAbortCallback = UART_DMARxAbortCallback;\r
- }\r
- else\r
- {\r
- huart->hdmarx->XferAbortCallback = NULL;\r
- }\r
- }\r
-\r
- /* Disable the UART DMA Tx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\r
- {\r
- /* Disable DMA Tx at UART level */\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
-\r
- /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */\r
- if (huart->hdmatx != NULL)\r
- {\r
- /* UART Tx DMA Abort callback has already been initialised :\r
- will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\r
-\r
- /* Abort DMA TX */\r
- if (HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK)\r
- {\r
- huart->hdmatx->XferAbortCallback = NULL;\r
- }\r
- else\r
- {\r
- abortcplt = 0U;\r
- }\r
- }\r
- }\r
-\r
- /* Disable the UART DMA Rx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */\r
- if (huart->hdmarx != NULL)\r
- {\r
- /* UART Rx DMA Abort callback has already been initialised :\r
- will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\r
-\r
- /* Abort DMA RX */\r
- if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)\r
- {\r
- huart->hdmarx->XferAbortCallback = NULL;\r
- abortcplt = 1U;\r
- }\r
- else\r
- {\r
- abortcplt = 0U;\r
- }\r
- }\r
- }\r
-\r
- /* if no DMA abort complete callback execution is required => call user Abort Complete callback */\r
- if (abortcplt == 1U)\r
- {\r
- /* Reset Tx and Rx transfer counters */\r
- huart->TxXferCount = 0U;\r
- huart->RxXferCount = 0U;\r
-\r
- /* Clear ISR function pointers */\r
- huart->RxISR = NULL;\r
- huart->TxISR = NULL;\r
-\r
- /* Reset errorCode */\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
-\r
- /* Discard the received data */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
-\r
- /* Restore huart->gState and huart->RxState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* As no DMA to be aborted, call directly user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort complete callback */\r
- huart->AbortCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort complete callback */\r
- HAL_UART_AbortCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Abort ongoing Transmit transfer (Interrupt mode).\r
- * @param huart UART handle.\r
- * @note This procedure could be used for aborting any ongoing Tx transfer started in Interrupt or DMA mode.\r
- * This procedure performs following operations :\r
- * - Disable UART Interrupts (Tx)\r
- * - Disable the DMA transfer in the peripheral register (if enabled)\r
- * - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode)\r
- * - Set handle State to READY\r
- * - At abort completion, call user abort complete callback\r
- * @note This procedure is executed in Interrupt mode, meaning that abort procedure could be\r
- * considered as completed only when user abort complete callback is executed (not when exiting function).\r
- * @retval HAL status\r
-*/\r
-HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));\r
-\r
- /* Disable the UART DMA Tx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
-\r
- /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */\r
- if (huart->hdmatx != NULL)\r
- {\r
- /* Set the UART DMA Abort callback :\r
- will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\r
- huart->hdmatx->XferAbortCallback = UART_DMATxOnlyAbortCallback;\r
-\r
- /* Abort DMA TX */\r
- if (HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK)\r
- {\r
- /* Call Directly huart->hdmatx->XferAbortCallback function in case of error */\r
- huart->hdmatx->XferAbortCallback(huart->hdmatx);\r
- }\r
- }\r
- else\r
- {\r
- /* Reset Tx transfer counter */\r
- huart->TxXferCount = 0U;\r
-\r
- /* Clear TxISR function pointers */\r
- huart->TxISR = NULL;\r
-\r
- /* Restore huart->gState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* As no DMA to be aborted, call directly user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort Transmit Complete Callback */\r
- huart->AbortTransmitCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort Transmit Complete Callback */\r
- HAL_UART_AbortTransmitCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
- }\r
- else\r
- {\r
- /* Reset Tx transfer counter */\r
- huart->TxXferCount = 0U;\r
-\r
- /* Clear TxISR function pointers */\r
- huart->TxISR = NULL;\r
-\r
-\r
- /* Restore huart->gState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* As no DMA to be aborted, call directly user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort Transmit Complete Callback */\r
- huart->AbortTransmitCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort Transmit Complete Callback */\r
- HAL_UART_AbortTransmitCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Abort ongoing Receive transfer (Interrupt mode).\r
- * @param huart UART handle.\r
- * @note This procedure could be used for aborting any ongoing Rx transfer started in Interrupt or DMA mode.\r
- * This procedure performs following operations :\r
- * - Disable UART Interrupts (Rx)\r
- * - Disable the DMA transfer in the peripheral register (if enabled)\r
- * - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode)\r
- * - Set handle State to READY\r
- * - At abort completion, call user abort complete callback\r
- * @note This procedure is executed in Interrupt mode, meaning that abort procedure could be\r
- * considered as completed only when user abort complete callback is executed (not when exiting function).\r
- * @retval HAL status\r
-*/\r
-HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Disable the UART DMA Rx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */\r
- if (huart->hdmarx != NULL)\r
- {\r
- /* Set the UART DMA Abort callback :\r
- will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */\r
- huart->hdmarx->XferAbortCallback = UART_DMARxOnlyAbortCallback;\r
-\r
- /* Abort DMA RX */\r
- if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)\r
- {\r
- /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */\r
- huart->hdmarx->XferAbortCallback(huart->hdmarx);\r
- }\r
- }\r
- else\r
- {\r
- /* Reset Rx transfer counter */\r
- huart->RxXferCount = 0U;\r
-\r
- /* Clear RxISR function pointer */\r
- huart->pRxBuffPtr = NULL;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
- /* Discard the received data */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
-\r
- /* Restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* As no DMA to be aborted, call directly user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort Receive Complete Callback */\r
- huart->AbortReceiveCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort Receive Complete Callback */\r
- HAL_UART_AbortReceiveCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
- }\r
- else\r
- {\r
- /* Reset Rx transfer counter */\r
- huart->RxXferCount = 0U;\r
-\r
- /* Clear RxISR function pointer */\r
- huart->pRxBuffPtr = NULL;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
- /* Restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* As no DMA to be aborted, call directly user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort Receive Complete Callback */\r
- huart->AbortReceiveCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort Receive Complete Callback */\r
- HAL_UART_AbortReceiveCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Handle UART interrupt request.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)\r
-{\r
- uint32_t isrflags = READ_REG(huart->Instance->ISR);\r
- uint32_t cr1its = READ_REG(huart->Instance->CR1);\r
- uint32_t cr3its = READ_REG(huart->Instance->CR3);\r
-\r
- uint32_t errorflags;\r
- uint32_t errorcode;\r
-\r
- /* If no error occurs */\r
- errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE));\r
- if (errorflags == 0U)\r
- {\r
- /* UART in mode Receiver ---------------------------------------------------*/\r
- if (((isrflags & USART_ISR_RXNE) != 0U)\r
- && ((cr1its & USART_CR1_RXNEIE) != 0U))\r
- {\r
- if (huart->RxISR != NULL)\r
- {\r
- huart->RxISR(huart);\r
- }\r
- return;\r
- }\r
- }\r
-\r
- /* If some errors occur */\r
- if ((errorflags != 0U)\r
- && (((cr3its & USART_CR3_EIE) != 0U)\r
- || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != 0U)))\r
- {\r
- /* UART parity error interrupt occurred -------------------------------------*/\r
- if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))\r
- {\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);\r
-\r
- huart->ErrorCode |= HAL_UART_ERROR_PE;\r
- }\r
-\r
- /* UART frame error interrupt occurred --------------------------------------*/\r
- if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\r
- {\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);\r
-\r
- huart->ErrorCode |= HAL_UART_ERROR_FE;\r
- }\r
-\r
- /* UART noise error interrupt occurred --------------------------------------*/\r
- if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))\r
- {\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);\r
-\r
- huart->ErrorCode |= HAL_UART_ERROR_NE;\r
- }\r
-\r
- /* UART Over-Run interrupt occurred -----------------------------------------*/\r
- if (((isrflags & USART_ISR_ORE) != 0U)\r
- && (((cr1its & USART_CR1_RXNEIE) != 0U) ||\r
- ((cr3its & USART_CR3_EIE) != 0U)))\r
- {\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);\r
-\r
- huart->ErrorCode |= HAL_UART_ERROR_ORE;\r
- }\r
-\r
- /* Call UART Error Call back function if need be --------------------------*/\r
- if (huart->ErrorCode != HAL_UART_ERROR_NONE)\r
- {\r
- /* UART in mode Receiver ---------------------------------------------------*/\r
- if (((isrflags & USART_ISR_RXNE) != 0U)\r
- && ((cr1its & USART_CR1_RXNEIE) != 0U))\r
- {\r
- if (huart->RxISR != NULL)\r
- {\r
- huart->RxISR(huart);\r
- }\r
- }\r
-\r
- /* If Overrun error occurs, or if any error occurs in DMA mode reception,\r
- consider error as blocking */\r
- errorcode = huart->ErrorCode;\r
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||\r
- ((errorcode & HAL_UART_ERROR_ORE) != 0U))\r
- {\r
- /* Blocking error : transfer is aborted\r
- Set the UART state ready to be able to start again the process,\r
- Disable Rx Interrupts, and disable Rx DMA request, if ongoing */\r
- UART_EndRxTransfer(huart);\r
-\r
- /* Disable the UART DMA Rx request if enabled */\r
- if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))\r
- {\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- /* Abort the UART DMA Rx channel */\r
- if (huart->hdmarx != NULL)\r
- {\r
- /* Set the UART DMA Abort callback :\r
- will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */\r
- huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError;\r
-\r
- /* Abort DMA RX */\r
- if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)\r
- {\r
- /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */\r
- huart->hdmarx->XferAbortCallback(huart->hdmarx);\r
- }\r
- }\r
- else\r
- {\r
- /* Call user error callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered error callback*/\r
- huart->ErrorCallback(huart);\r
-#else\r
- /*Call legacy weak error callback*/\r
- HAL_UART_ErrorCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-\r
- }\r
- }\r
- else\r
- {\r
- /* Call user error callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered error callback*/\r
- huart->ErrorCallback(huart);\r
-#else\r
- /*Call legacy weak error callback*/\r
- HAL_UART_ErrorCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
- }\r
- else\r
- {\r
- /* Non Blocking error : transfer could go on.\r
- Error is notified to user through user error callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered error callback*/\r
- huart->ErrorCallback(huart);\r
-#else\r
- /*Call legacy weak error callback*/\r
- HAL_UART_ErrorCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
- }\r
- }\r
- return;\r
-\r
- } /* End if some error occurs */\r
-\r
- /* UART in mode Transmitter ------------------------------------------------*/\r
- if (((isrflags & USART_ISR_TXE) != 0U)\r
- && ((cr1its & USART_CR1_TXEIE) != 0U))\r
- {\r
- if (huart->TxISR != NULL)\r
- {\r
- huart->TxISR(huart);\r
- }\r
- return;\r
- }\r
-\r
- /* UART in mode Transmitter (transmission end) -----------------------------*/\r
- if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U))\r
- {\r
- UART_EndTransmit_IT(huart);\r
- return;\r
- }\r
-\r
-}\r
-\r
-/**\r
- * @brief Tx Transfer completed callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_TxCpltCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @brief Tx Half Transfer completed callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE: This function should not be modified, when the callback is needed,\r
- the HAL_UART_TxHalfCpltCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @brief Rx Transfer completed callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_RxCpltCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @brief Rx Half Transfer completed callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE: This function should not be modified, when the callback is needed,\r
- the HAL_UART_RxHalfCpltCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @brief UART error callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_ErrorCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @brief UART Abort Complete callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_AbortCpltCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @brief UART Abort Complete callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_AbortTransmitCpltCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @brief UART Abort Receive Complete callback.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-__weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)\r
-{\r
- /* Prevent unused argument(s) compilation warning */\r
- UNUSED(huart);\r
-\r
- /* NOTE : This function should not be modified, when the callback is needed,\r
- the HAL_UART_AbortReceiveCpltCallback can be implemented in the user file.\r
- */\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Exported_Functions_Group3 Peripheral Control functions\r
- * @brief UART control functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Peripheral Control functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides a set of functions allowing to control the UART.\r
- (+) HAL_MultiProcessor_EnableMuteMode() API enables mute mode\r
- (+) HAL_MultiProcessor_DisableMuteMode() API disables mute mode\r
- (+) HAL_MultiProcessor_EnterMuteMode() API enters mute mode\r
- (+) UART_SetConfig() API configures the UART peripheral\r
- (+) UART_AdvFeatureConfig() API optionally configures the UART advanced features\r
- (+) UART_CheckIdleState() API ensures that TEACK and/or REACK are set after initialization\r
- (+) HAL_HalfDuplex_EnableTransmitter() API disables receiver and enables transmitter\r
- (+) HAL_HalfDuplex_EnableReceiver() API disables transmitter and enables receiver\r
- (+) HAL_LIN_SendBreak() API transmits the break characters\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Enable UART in mute mode (does not mean UART enters mute mode;\r
- * to enter mute mode, HAL_MultiProcessor_EnterMuteMode() API must be called).\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)\r
-{\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Enable USART mute mode by setting the MME bit in the CR1 register */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_MME);\r
-\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-/**\r
- * @brief Disable UART mute mode (does not mean the UART actually exits mute mode\r
- * as it may not have been in mute mode at this very moment).\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart)\r
-{\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable USART mute mode by clearing the MME bit in the CR1 register */\r
- CLEAR_BIT(huart->Instance->CR1, USART_CR1_MME);\r
-\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-/**\r
- * @brief Enter UART mute mode (means UART actually enters mute mode).\r
- * @note To exit from mute mode, HAL_MultiProcessor_DisableMuteMode() API must be called.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)\r
-{\r
- __HAL_UART_SEND_REQ(huart, UART_MUTE_MODE_REQUEST);\r
-}\r
-\r
-/**\r
- * @brief Enable the UART transmitter and disable the UART receiver.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)\r
-{\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Clear TE and RE bits */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));\r
-\r
- /* Enable the USART's transmit interface by setting the TE bit in the USART CR1 register */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_TE);\r
-\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Enable the UART receiver and disable the UART transmitter.\r
- * @param huart UART handle.\r
- * @retval HAL status.\r
- */\r
-HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)\r
-{\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Clear TE and RE bits */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));\r
-\r
- /* Enable the USART's receive interface by setting the RE bit in the USART CR1 register */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_RE);\r
-\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-\r
-/**\r
- * @brief Transmit break characters.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)\r
-{\r
- /* Check the parameters */\r
- assert_param(IS_UART_LIN_INSTANCE(huart->Instance));\r
-\r
- /* Process Locked */\r
- __HAL_LOCK(huart);\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Send break characters */\r
- __HAL_UART_SEND_REQ(huart, UART_SENDBREAK_REQUEST);\r
-\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Exported_Functions_Group4 Peripheral State and Error functions\r
- * @brief UART Peripheral State functions\r
- *\r
-@verbatim\r
- ==============================================================================\r
- ##### Peripheral State and Error functions #####\r
- ==============================================================================\r
- [..]\r
- This subsection provides functions allowing to :\r
- (+) Return the UART handle state.\r
- (+) Return the UART handle error code\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Return the UART handle state.\r
- * @param huart Pointer to a UART_HandleTypeDef structure that contains\r
- * the configuration information for the specified UART.\r
- * @retval HAL state\r
- */\r
-HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)\r
-{\r
- uint32_t temp1, temp2;\r
- temp1 = huart->gState;\r
- temp2 = huart->RxState;\r
-\r
- return (HAL_UART_StateTypeDef)(temp1 | temp2);\r
-}\r
-\r
-/**\r
- * @brief Return the UART handle error code.\r
- * @param huart Pointer to a UART_HandleTypeDef structure that contains\r
- * the configuration information for the specified UART.\r
- * @retval UART Error Code\r
-*/\r
-uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart)\r
-{\r
- return huart->ErrorCode;\r
-}\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UART_Private_Functions UART Private Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Initialize the callbacks to their default values.\r
- * @param huart UART handle.\r
- * @retval none\r
- */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
-void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)\r
-{\r
- /* Init the UART Callback settings */\r
- huart->TxHalfCpltCallback = HAL_UART_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */\r
- huart->TxCpltCallback = HAL_UART_TxCpltCallback; /* Legacy weak TxCpltCallback */\r
- huart->RxHalfCpltCallback = HAL_UART_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */\r
- huart->RxCpltCallback = HAL_UART_RxCpltCallback; /* Legacy weak RxCpltCallback */\r
- huart->ErrorCallback = HAL_UART_ErrorCallback; /* Legacy weak ErrorCallback */\r
- huart->AbortCpltCallback = HAL_UART_AbortCpltCallback; /* Legacy weak AbortCpltCallback */\r
- huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak AbortTransmitCpltCallback */\r
- huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak AbortReceiveCpltCallback */\r
-\r
-}\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-\r
-/**\r
- * @brief Configure the UART peripheral.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)\r
-{\r
- uint32_t tmpreg;\r
- uint16_t brrtemp;\r
- UART_ClockSourceTypeDef clocksource;\r
- uint32_t usartdiv = 0x00000000U;\r
- HAL_StatusTypeDef ret = HAL_OK;\r
-\r
- /* Check the parameters */\r
- assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate));\r
- assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength));\r
- assert_param(IS_UART_STOPBITS(huart->Init.StopBits));\r
- assert_param(IS_UART_ONE_BIT_SAMPLE(huart->Init.OneBitSampling));\r
-\r
- assert_param(IS_UART_PARITY(huart->Init.Parity));\r
- assert_param(IS_UART_MODE(huart->Init.Mode));\r
- assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart->Init.HwFlowCtl));\r
- assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling));\r
-\r
- /*-------------------------- USART CR1 Configuration -----------------------*/\r
- /* Clear M, PCE, PS, TE, RE and OVER8 bits and configure\r
- * the UART Word Length, Parity, Mode and oversampling:\r
- * set the M bits according to huart->Init.WordLength value\r
- * set PCE and PS bits according to huart->Init.Parity value\r
- * set TE and RE bits according to huart->Init.Mode value\r
- * set OVER8 bit according to huart->Init.OverSampling value */\r
- tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;\r
- MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);\r
-\r
- /*-------------------------- USART CR2 Configuration -----------------------*/\r
- /* Configure the UART Stop Bits: Set STOP[13:12] bits according\r
- * to huart->Init.StopBits value */\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);\r
-\r
- /*-------------------------- USART CR3 Configuration -----------------------*/\r
- /* Configure\r
- * - UART HardWare Flow Control: set CTSE and RTSE bits according\r
- * to huart->Init.HwFlowCtl value\r
- * - one-bit sampling method versus three samples' majority rule according\r
- * to huart->Init.OneBitSampling (not applicable to LPUART) */\r
- tmpreg = (uint32_t)huart->Init.HwFlowCtl;\r
-\r
- tmpreg |= huart->Init.OneBitSampling;\r
- MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);\r
-\r
-\r
- /*-------------------------- USART BRR Configuration -----------------------*/\r
- UART_GETCLOCKSOURCE(huart, clocksource);\r
-\r
- if (huart->Init.OverSampling == UART_OVERSAMPLING_8)\r
- {\r
- switch (clocksource)\r
- {\r
- case UART_CLOCKSOURCE_PCLK1:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_PCLK2:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_HSI:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HSI_VALUE, huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_SYSCLK:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_LSE:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING8(LSE_VALUE, huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_UNDEFINED:\r
- default:\r
- ret = HAL_ERROR;\r
- break;\r
- }\r
-\r
- /* USARTDIV must be greater than or equal to 0d16 */\r
- if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))\r
- {\r
- brrtemp = (uint16_t)(usartdiv & 0xFFF0U);\r
- brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);\r
- huart->Instance->BRR = brrtemp;\r
- }\r
- else\r
- {\r
- ret = HAL_ERROR;\r
- }\r
- }\r
- else\r
- {\r
- switch (clocksource)\r
- {\r
- case UART_CLOCKSOURCE_PCLK1:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_PCLK2:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_HSI:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HSI_VALUE, huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_SYSCLK:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_LSE:\r
- usartdiv = (uint16_t)(UART_DIV_SAMPLING16(LSE_VALUE, huart->Init.BaudRate));\r
- break;\r
- case UART_CLOCKSOURCE_UNDEFINED:\r
- default:\r
- ret = HAL_ERROR;\r
- break;\r
- }\r
-\r
- /* USARTDIV must be greater than or equal to 0d16 */\r
- if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))\r
- {\r
- huart->Instance->BRR = usartdiv;\r
- }\r
- else\r
- {\r
- ret = HAL_ERROR;\r
- }\r
- }\r
-\r
-\r
- /* Clear ISR function pointers */\r
- huart->RxISR = NULL;\r
- huart->TxISR = NULL;\r
-\r
- return ret;\r
-}\r
-\r
-/**\r
- * @brief Configure the UART peripheral advanced features.\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)\r
-{\r
- /* Check whether the set of advanced features to configure is properly set */\r
- assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit));\r
-\r
- /* if required, configure TX pin active level inversion */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))\r
- {\r
- assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert));\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);\r
- }\r
-\r
- /* if required, configure RX pin active level inversion */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))\r
- {\r
- assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert));\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);\r
- }\r
-\r
- /* if required, configure data inversion */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))\r
- {\r
- assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert));\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);\r
- }\r
-\r
- /* if required, configure RX/TX pins swap */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))\r
- {\r
- assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap));\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);\r
- }\r
-\r
- /* if required, configure RX overrun detection disabling */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))\r
- {\r
- assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable));\r
- MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);\r
- }\r
-\r
- /* if required, configure DMA disabling on reception error */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))\r
- {\r
- assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError));\r
- MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);\r
- }\r
-\r
- /* if required, configure auto Baud rate detection scheme */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))\r
- {\r
- assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance));\r
- assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable));\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);\r
- /* set auto Baudrate detection parameters if detection is enabled */\r
- if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)\r
- {\r
- assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode));\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);\r
- }\r
- }\r
-\r
- /* if required, configure MSB first on communication line */\r
- if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))\r
- {\r
- assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst));\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);\r
- }\r
-}\r
-\r
-/**\r
- * @brief Check the UART Idle State.\r
- * @param huart UART handle.\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)\r
-{\r
- uint32_t tickstart;\r
-\r
- /* Initialize the UART ErrorCode */\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
-\r
- /* Init tickstart for timeout managment*/\r
- tickstart = HAL_GetTick();\r
-\r
- /* Check if the Transmitter is enabled */\r
- if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)\r
- {\r
- /* Wait until TEACK flag is set */\r
- if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)\r
- {\r
- /* Timeout occurred */\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
-\r
- /* Initialize the UART State */\r
- huart->gState = HAL_UART_STATE_READY;\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_OK;\r
-}\r
-\r
-/**\r
- * @brief Handle UART Communication Timeout.\r
- * @param huart UART handle.\r
- * @param Flag Specifies the UART flag to check\r
- * @param Status Flag status (SET or RESET)\r
- * @param Tickstart Tick start value\r
- * @param Timeout Timeout duration\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)\r
-{\r
- /* Wait until flag is set */\r
- while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)\r
- {\r
- /* Check for the Timeout */\r
- if (Timeout != HAL_MAX_DELAY)\r
- {\r
- if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))\r
- {\r
- /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- huart->gState = HAL_UART_STATE_READY;\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Process Unlocked */\r
- __HAL_UNLOCK(huart);\r
-\r
- return HAL_TIMEOUT;\r
- }\r
- }\r
- }\r
- return HAL_OK;\r
-}\r
-\r
-\r
-/**\r
- * @brief End ongoing Tx transfer on UART peripheral (following error detection or Transmit completion).\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-static void UART_EndTxTransfer(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable TXEIE and TCIE interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));\r
-\r
- /* At end of Tx process, restore huart->gState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-}\r
-\r
-\r
-/**\r
- * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-static void UART_EndRxTransfer(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* At end of Rx process, restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Reset RxIsr function pointer */\r
- huart->RxISR = NULL;\r
-}\r
-\r
-\r
-/**\r
- * @brief DMA UART transmit process complete callback.\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
- /* DMA Normal mode */\r
- if (hdma->Init.Mode != DMA_CIRCULAR)\r
- {\r
- huart->TxXferCount = 0U;\r
-\r
- /* Disable the DMA transfer for transmit request by resetting the DMAT bit\r
- in the UART CR3 register */\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);\r
-\r
- /* Enable the UART Transmit Complete Interrupt */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\r
- }\r
- /* DMA Circular mode */\r
- else\r
- {\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered Tx complete callback*/\r
- huart->TxCpltCallback(huart);\r
-#else\r
- /*Call legacy weak Tx complete callback*/\r
- HAL_UART_TxCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
-}\r
-\r
-/**\r
- * @brief DMA UART transmit process half complete callback.\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered Tx Half complete callback*/\r
- huart->TxHalfCpltCallback(huart);\r
-#else\r
- /*Call legacy weak Tx Half complete callback*/\r
- HAL_UART_TxHalfCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief DMA UART receive process complete callback.\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
- /* DMA Normal mode */\r
- if (hdma->Init.Mode != DMA_CIRCULAR)\r
- {\r
- huart->RxXferCount = 0U;\r
-\r
- /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Disable the DMA transfer for the receiver request by resetting the DMAR bit\r
- in the UART CR3 register */\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);\r
-\r
- /* At end of Rx process, restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
- }\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered Rx complete callback*/\r
- huart->RxCpltCallback(huart);\r
-#else\r
- /*Call legacy weak Rx complete callback*/\r
- HAL_UART_RxCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief DMA UART receive process half complete callback.\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered Rx Half complete callback*/\r
- huart->RxHalfCpltCallback(huart);\r
-#else\r
- /*Call legacy weak Rx Half complete callback*/\r
- HAL_UART_RxHalfCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief DMA UART communication error callback.\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMAError(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
- const HAL_UART_StateTypeDef gstate = huart->gState;\r
- const HAL_UART_StateTypeDef rxstate = huart->RxState;\r
-\r
- /* Stop UART DMA Tx request if ongoing */\r
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&\r
- (gstate == HAL_UART_STATE_BUSY_TX))\r
- {\r
- huart->TxXferCount = 0U;\r
- UART_EndTxTransfer(huart);\r
- }\r
-\r
- /* Stop UART DMA Rx request if ongoing */\r
- if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&\r
- (rxstate == HAL_UART_STATE_BUSY_RX))\r
- {\r
- huart->RxXferCount = 0U;\r
- UART_EndRxTransfer(huart);\r
- }\r
-\r
- huart->ErrorCode |= HAL_UART_ERROR_DMA;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered error callback*/\r
- huart->ErrorCallback(huart);\r
-#else\r
- /*Call legacy weak error callback*/\r
- HAL_UART_ErrorCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief DMA UART communication abort callback, when initiated by HAL services on Error\r
- * (To be called at end of DMA Abort procedure following error occurrence).\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
- huart->RxXferCount = 0U;\r
- huart->TxXferCount = 0U;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered error callback*/\r
- huart->ErrorCallback(huart);\r
-#else\r
- /*Call legacy weak error callback*/\r
- HAL_UART_ErrorCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief DMA UART Tx communication abort callback, when initiated by user\r
- * (To be called at end of DMA Tx Abort procedure following user abort request).\r
- * @note When this callback is executed, User Abort complete call back is called only if no\r
- * Abort still ongoing for Rx DMA Handle.\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
- huart->hdmatx->XferAbortCallback = NULL;\r
-\r
- /* Check if an Abort process is still ongoing */\r
- if (huart->hdmarx != NULL)\r
- {\r
- if (huart->hdmarx->XferAbortCallback != NULL)\r
- {\r
- return;\r
- }\r
- }\r
-\r
- /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */\r
- huart->TxXferCount = 0U;\r
- huart->RxXferCount = 0U;\r
-\r
- /* Reset errorCode */\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
-\r
- /* Restore huart->gState and huart->RxState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Call user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort complete callback */\r
- huart->AbortCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort complete callback */\r
- HAL_UART_AbortCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-\r
-/**\r
- * @brief DMA UART Rx communication abort callback, when initiated by user\r
- * (To be called at end of DMA Rx Abort procedure following user abort request).\r
- * @note When this callback is executed, User Abort complete call back is called only if no\r
- * Abort still ongoing for Tx DMA Handle.\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
- huart->hdmarx->XferAbortCallback = NULL;\r
-\r
- /* Check if an Abort process is still ongoing */\r
- if (huart->hdmatx != NULL)\r
- {\r
- if (huart->hdmatx->XferAbortCallback != NULL)\r
- {\r
- return;\r
- }\r
- }\r
-\r
- /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */\r
- huart->TxXferCount = 0U;\r
- huart->RxXferCount = 0U;\r
-\r
- /* Reset errorCode */\r
- huart->ErrorCode = HAL_UART_ERROR_NONE;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
- /* Discard the received data */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
-\r
- /* Restore huart->gState and huart->RxState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Call user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort complete callback */\r
- huart->AbortCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort complete callback */\r
- HAL_UART_AbortCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-\r
-/**\r
- * @brief DMA UART Tx communication abort callback, when initiated by user by a call to\r
- * HAL_UART_AbortTransmit_IT API (Abort only Tx transfer)\r
- * (This callback is executed at end of DMA Tx Abort procedure following user abort request,\r
- * and leads to user Tx Abort Complete callback execution).\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);\r
-\r
- huart->TxXferCount = 0U;\r
-\r
-\r
- /* Restore huart->gState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* Call user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort Transmit Complete Callback */\r
- huart->AbortTransmitCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort Transmit Complete Callback */\r
- HAL_UART_AbortTransmitCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief DMA UART Rx communication abort callback, when initiated by user by a call to\r
- * HAL_UART_AbortReceive_IT API (Abort only Rx transfer)\r
- * (This callback is executed at end of DMA Rx Abort procedure following user abort request,\r
- * and leads to user Rx Abort Complete callback execution).\r
- * @param hdma DMA handle.\r
- * @retval None\r
- */\r
-static void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma)\r
-{\r
- UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;\r
-\r
- huart->RxXferCount = 0U;\r
-\r
- /* Clear the Error flags in the ICR register */\r
- __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);\r
-\r
- /* Discard the received data */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
-\r
- /* Restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Call user Abort complete callback */\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /* Call registered Abort Receive Complete Callback */\r
- huart->AbortReceiveCpltCallback(huart);\r
-#else\r
- /* Call legacy weak Abort Receive Complete Callback */\r
- HAL_UART_AbortReceiveCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief TX interrrupt handler for 7 or 8 bits data word length .\r
- * @note Function is called under interruption only, once\r
- * interruptions have been enabled by HAL_UART_Transmit_IT().\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-static void UART_TxISR_8BIT(UART_HandleTypeDef *huart)\r
-{\r
- /* Check that a Tx process is ongoing */\r
- if (huart->gState == HAL_UART_STATE_BUSY_TX)\r
- {\r
- if (huart->TxXferCount == 0U)\r
- {\r
- /* Disable the UART Transmit Data Register Empty Interrupt */\r
- CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);\r
-\r
- /* Enable the UART Transmit Complete Interrupt */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\r
- }\r
- else\r
- {\r
- huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF);\r
- huart->pTxBuffPtr++;\r
- huart->TxXferCount--;\r
- }\r
- }\r
-}\r
-\r
-/**\r
- * @brief TX interrrupt handler for 9 bits data word length.\r
- * @note Function is called under interruption only, once\r
- * interruptions have been enabled by HAL_UART_Transmit_IT().\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-static void UART_TxISR_16BIT(UART_HandleTypeDef *huart)\r
-{\r
- uint16_t *tmp;\r
-\r
- /* Check that a Tx process is ongoing */\r
- if (huart->gState == HAL_UART_STATE_BUSY_TX)\r
- {\r
- if (huart->TxXferCount == 0U)\r
- {\r
- /* Disable the UART Transmit Data Register Empty Interrupt */\r
- CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);\r
-\r
- /* Enable the UART Transmit Complete Interrupt */\r
- SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);\r
- }\r
- else\r
- {\r
- tmp = (uint16_t *) huart->pTxBuffPtr;\r
- huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);\r
- huart->pTxBuffPtr += 2U;\r
- huart->TxXferCount--;\r
- }\r
- }\r
-}\r
-\r
-\r
-/**\r
- * @brief Wrap up transmission in non-blocking mode.\r
- * @param huart pointer to a UART_HandleTypeDef structure that contains\r
- * the configuration information for the specified UART module.\r
- * @retval None\r
- */\r
-static void UART_EndTransmit_IT(UART_HandleTypeDef *huart)\r
-{\r
- /* Disable the UART Transmit Complete Interrupt */\r
- CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);\r
-\r
- /* Tx process is ended, restore huart->gState to Ready */\r
- huart->gState = HAL_UART_STATE_READY;\r
-\r
- /* Cleat TxISR function pointer */\r
- huart->TxISR = NULL;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered Tx complete callback*/\r
- huart->TxCpltCallback(huart);\r
-#else\r
- /*Call legacy weak Tx complete callback*/\r
- HAL_UART_TxCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
-}\r
-\r
-/**\r
- * @brief RX interrrupt handler for 7 or 8 bits data word length .\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-static void UART_RxISR_8BIT(UART_HandleTypeDef *huart)\r
-{\r
- uint16_t uhMask = huart->Mask;\r
- uint16_t uhdata;\r
-\r
- /* Check that a Rx process is ongoing */\r
- if (huart->RxState == HAL_UART_STATE_BUSY_RX)\r
- {\r
- uhdata = (uint16_t) READ_REG(huart->Instance->RDR);\r
- *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask);\r
- huart->pRxBuffPtr++;\r
- huart->RxXferCount--;\r
-\r
- if (huart->RxXferCount == 0U)\r
- {\r
- /* Disable the UART Parity Error Interrupt and RXNE interrupts */\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));\r
-\r
- /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Rx process is completed, restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Clear RxISR function pointer */\r
- huart->RxISR = NULL;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered Rx complete callback*/\r
- huart->RxCpltCallback(huart);\r
-#else\r
- /*Call legacy weak Rx complete callback*/\r
- HAL_UART_RxCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
- }\r
- else\r
- {\r
- /* Clear RXNE interrupt flag */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
- }\r
-}\r
-\r
-/**\r
- * @brief RX interrrupt handler for 9 bits data word length .\r
- * @note Function is called under interruption only, once\r
- * interruptions have been enabled by HAL_UART_Receive_IT()\r
- * @param huart UART handle.\r
- * @retval None\r
- */\r
-static void UART_RxISR_16BIT(UART_HandleTypeDef *huart)\r
-{\r
- uint16_t *tmp;\r
- uint16_t uhMask = huart->Mask;\r
- uint16_t uhdata;\r
-\r
- /* Check that a Rx process is ongoing */\r
- if (huart->RxState == HAL_UART_STATE_BUSY_RX)\r
- {\r
- uhdata = (uint16_t) READ_REG(huart->Instance->RDR);\r
- tmp = (uint16_t *) huart->pRxBuffPtr ;\r
- *tmp = (uint16_t)(uhdata & uhMask);\r
- huart->pRxBuffPtr += 2U;\r
- huart->RxXferCount--;\r
-\r
- if (huart->RxXferCount == 0U)\r
- {\r
- /* Disable the UART Parity Error Interrupt and RXNE interrupt*/\r
- CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));\r
-\r
- /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */\r
- CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);\r
-\r
- /* Rx process is completed, restore huart->RxState to Ready */\r
- huart->RxState = HAL_UART_STATE_READY;\r
-\r
- /* Clear RxISR function pointer */\r
- huart->RxISR = NULL;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- /*Call registered Rx complete callback*/\r
- huart->RxCpltCallback(huart);\r
-#else\r
- /*Call legacy weak Rx complete callback*/\r
- HAL_UART_RxCpltCallback(huart);\r
-#endif /* USE_HAL_UART_REGISTER_CALLBACKS */\r
- }\r
- }\r
- else\r
- {\r
- /* Clear RXNE interrupt flag */\r
- __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);\r
- }\r
-}\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_UART_MODULE_ENABLED */\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/**\r
- ******************************************************************************\r
- * @file stm32f7xx_hal_uart_ex.c\r
- * @author MCD Application Team\r
- * @brief Extended UART HAL module driver.\r
- * This file provides firmware functions to manage the following extended\r
- * functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART).\r
- * + Initialization and de-initialization functions\r
- * + Peripheral Control functions\r
- *\r
- *\r
- @verbatim\r
- ==============================================================================\r
- ##### UART peripheral extended features #####\r
- ==============================================================================\r
-\r
- (#) Declare a UART_HandleTypeDef handle structure.\r
-\r
- (#) For the UART RS485 Driver Enable mode, initialize the UART registers\r
- by calling the HAL_RS485Ex_Init() API.\r
-\r
- @endverbatim\r
- ******************************************************************************\r
- * @attention\r
- *\r
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.\r
- * All rights reserved.</center></h2>\r
- *\r
- * This software component is licensed by ST under BSD 3-Clause license,\r
- * the "License"; You may not use this file except in compliance with the\r
- * License. You may obtain a copy of the License at:\r
- * opensource.org/licenses/BSD-3-Clause\r
- *\r
- ******************************************************************************\r
- */\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f7xx_hal.h"\r
-\r
-/** @addtogroup STM32F7xx_HAL_Driver\r
- * @{\r
- */\r
-\r
-/** @defgroup UARTEx UARTEx\r
- * @brief UART Extended HAL module driver\r
- * @{\r
- */\r
-\r
-#ifdef HAL_UART_MODULE_ENABLED\r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-\r
-/* Private macros ------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-/** @defgroup UARTEx_Private_Functions UARTEx Private Functions\r
- * @{\r
- */\r
-/**\r
- * @}\r
- */\r
-\r
-/* Exported functions --------------------------------------------------------*/\r
-\r
-/** @defgroup UARTEx_Exported_Functions UARTEx Exported Functions\r
- * @{\r
- */\r
-\r
-/** @defgroup UARTEx_Exported_Functions_Group1 Initialization and de-initialization functions\r
- * @brief Extended Initialization and Configuration Functions\r
- *\r
-@verbatim\r
-===============================================================================\r
- ##### Initialization and Configuration functions #####\r
- ===============================================================================\r
- [..]\r
- This subsection provides a set of functions allowing to initialize the USARTx or the UARTy\r
- in asynchronous mode.\r
- (+) For the asynchronous mode the parameters below can be configured:\r
- (++) Baud Rate\r
- (++) Word Length\r
- (++) Stop Bit\r
- (++) Parity: If the parity is enabled, then the MSB bit of the data written\r
- in the data register is transmitted but is changed by the parity bit.\r
- (++) Hardware flow control\r
- (++) Receiver/transmitter modes\r
- (++) Over Sampling Method\r
- (++) One-Bit Sampling Method\r
- (+) For the asynchronous mode, the following advanced features can be configured as well:\r
- (++) TX and/or RX pin level inversion\r
- (++) data logical level inversion\r
- (++) RX and TX pins swap\r
- (++) RX overrun detection disabling\r
- (++) DMA disabling on RX error\r
- (++) MSB first on communication line\r
- (++) auto Baud rate detection\r
- [..]\r
- The HAL_RS485Ex_Init() API follows the UART RS485 mode configuration\r
- procedures (details for the procedures are available in reference manual).\r
-\r
-@endverbatim\r
-\r
- Depending on the frame length defined by the M1 and M0 bits (7-bit,\r
- 8-bit or 9-bit), the possible UART formats are listed in the\r
- following table.\r
-\r
- Table 1. UART frame format.\r
- +-----------------------------------------------------------------------+\r
- | M1 bit | M0 bit | PCE bit | UART frame |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 0 | 0 | | SB | 8 bit data | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 0 | 1 | | SB | 7 bit data | PB | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 1 | 0 | | SB | 9 bit data | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 0 | 1 | 1 | | SB | 8 bit data | PB | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 1 | 0 | 0 | | SB | 7 bit data | STB | |\r
- |---------|---------|-----------|---------------------------------------|\r
- | 1 | 0 | 1 | | SB | 6 bit data | PB | STB | |\r
- +-----------------------------------------------------------------------+\r
-\r
- * @{\r
- */\r
-\r
-/**\r
- * @brief Initialize the RS485 Driver enable feature according to the specified\r
- * parameters in the UART_InitTypeDef and creates the associated handle.\r
- * @param huart UART handle.\r
- * @param Polarity Select the driver enable polarity.\r
- * This parameter can be one of the following values:\r
- * @arg @ref UART_DE_POLARITY_HIGH DE signal is active high\r
- * @arg @ref UART_DE_POLARITY_LOW DE signal is active low\r
- * @param AssertionTime Driver Enable assertion time:\r
- * 5-bit value defining the time between the activation of the DE (Driver Enable)\r
- * signal and the beginning of the start bit. It is expressed in sample time\r
- * units (1/8 or 1/16 bit time, depending on the oversampling rate)\r
- * @param DeassertionTime Driver Enable deassertion time:\r
- * 5-bit value defining the time between the end of the last stop bit, in a\r
- * transmitted message, and the de-activation of the DE (Driver Enable) signal.\r
- * It is expressed in sample time units (1/8 or 1/16 bit time, depending on the\r
- * oversampling rate).\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime)\r
-{\r
- uint32_t temp;\r
-\r
- /* Check the UART handle allocation */\r
- if (huart == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
- /* Check the Driver Enable UART instance */\r
- assert_param(IS_UART_DRIVER_ENABLE_INSTANCE(huart->Instance));\r
-\r
- /* Check the Driver Enable polarity */\r
- assert_param(IS_UART_DE_POLARITY(Polarity));\r
-\r
- /* Check the Driver Enable assertion time */\r
- assert_param(IS_UART_ASSERTIONTIME(AssertionTime));\r
-\r
- /* Check the Driver Enable deassertion time */\r
- assert_param(IS_UART_DEASSERTIONTIME(DeassertionTime));\r
-\r
- if (huart->gState == HAL_UART_STATE_RESET)\r
- {\r
- /* Allocate lock resource and initialize it */\r
- huart->Lock = HAL_UNLOCKED;\r
-\r
-#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)\r
- UART_InitCallbacksToDefault(huart);\r
-\r
- if (huart->MspInitCallback == NULL)\r
- {\r
- huart->MspInitCallback = HAL_UART_MspInit;\r
- }\r
-\r
- /* Init the low level hardware */\r
- huart->MspInitCallback(huart);\r
-#else\r
- /* Init the low level hardware : GPIO, CLOCK, CORTEX */\r
- HAL_UART_MspInit(huart);\r
-#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */\r
- }\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_UART_DISABLE(huart);\r
-\r
- /* Set the UART Communication parameters */\r
- if (UART_SetConfig(huart) == HAL_ERROR)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)\r
- {\r
- UART_AdvFeatureConfig(huart);\r
- }\r
-\r
- /* Enable the Driver Enable mode by setting the DEM bit in the CR3 register */\r
- SET_BIT(huart->Instance->CR3, USART_CR3_DEM);\r
-\r
- /* Set the Driver Enable polarity */\r
- MODIFY_REG(huart->Instance->CR3, USART_CR3_DEP, Polarity);\r
-\r
- /* Set the Driver Enable assertion and deassertion times */\r
- temp = (AssertionTime << UART_CR1_DEAT_ADDRESS_LSB_POS);\r
- temp |= (DeassertionTime << UART_CR1_DEDT_ADDRESS_LSB_POS);\r
- MODIFY_REG(huart->Instance->CR1, (USART_CR1_DEDT | USART_CR1_DEAT), temp);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_UART_ENABLE(huart);\r
-\r
- /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UARTEx_Exported_Functions_Group2 IO operation functions\r
- * @brief Extended functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### IO operation functions #####\r
- ===============================================================================\r
- This subsection provides a set of Wakeup and FIFO mode related callback functions.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @defgroup UARTEx_Exported_Functions_Group3 Peripheral Control functions\r
- * @brief Extended Peripheral Control functions\r
- *\r
-@verbatim\r
- ===============================================================================\r
- ##### Peripheral Control functions #####\r
- ===============================================================================\r
- [..] This section provides the following functions:\r
- (+) HAL_MultiProcessorEx_AddressLength_Set() API optionally sets the UART node address\r
- detection length to more than 4 bits for multiprocessor address mark wake up.\r
-\r
-@endverbatim\r
- * @{\r
- */\r
-\r
-\r
-\r
-\r
-/**\r
- * @brief By default in multiprocessor mode, when the wake up method is set\r
- * to address mark, the UART handles only 4-bit long addresses detection;\r
- * this API allows to enable longer addresses detection (6-, 7- or 8-bit\r
- * long).\r
- * @note Addresses detection lengths are: 6-bit address detection in 7-bit data mode,\r
- * 7-bit address detection in 8-bit data mode, 8-bit address detection in 9-bit data mode.\r
- * @param huart UART handle.\r
- * @param AddressLength This parameter can be one of the following values:\r
- * @arg @ref UART_ADDRESS_DETECT_4B 4-bit long address\r
- * @arg @ref UART_ADDRESS_DETECT_7B 6-, 7- or 8-bit long address\r
- * @retval HAL status\r
- */\r
-HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength)\r
-{\r
- /* Check the UART handle allocation */\r
- if (huart == NULL)\r
- {\r
- return HAL_ERROR;\r
- }\r
-\r
- /* Check the address length parameter */\r
- assert_param(IS_UART_ADDRESSLENGTH_DETECT(AddressLength));\r
-\r
- huart->gState = HAL_UART_STATE_BUSY;\r
-\r
- /* Disable the Peripheral */\r
- __HAL_UART_DISABLE(huart);\r
-\r
- /* Set the address length */\r
- MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, AddressLength);\r
-\r
- /* Enable the Peripheral */\r
- __HAL_UART_ENABLE(huart);\r
-\r
- /* TEACK and/or REACK to check before moving huart->gState to Ready */\r
- return (UART_CheckIdleState(huart));\r
-}\r
-\r
-\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/** @addtogroup UARTEx_Private_Functions\r
- * @{\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-#endif /* HAL_UART_MODULE_ENABLED */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/**\r
- * @}\r
- */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
+++ /dev/null
-/*
-******************************************************************************
-**
-** File : LinkerScript.ld
-**
-** Author : Auto-generated by STM32CubeIDE
-**
-** Abstract : Linker script for STM32F767ZITx Device from STM32F7 series
-** 2048Kbytes FLASH
-** 512Kbytes 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
-**
-** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
-**
-** Redistribution and use in source and binary forms, with or without modification,
-** are permitted provided that the following conditions are met:
-** 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.
-** 3. Neither the name of STMicroelectronics nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-*****************************************************************************
-*/
-
-/* Entry Point */
-ENTRY(Reset_Handler)
-
-/* Highest address of the user mode stack */
-_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
-
-_Min_Heap_Size = 0x200 ; /* required amount of heap */
-_Min_Stack_Size = 0x400 ; /* required amount of stack */
-
-/* Memories definition */
-MEMORY
-{
- RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K
- FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K
-}
-
-/* Sections */
-SECTIONS
-{
- /* The startup code into "FLASH" Rom type memory */
- .isr_vector :
- {
- . = ALIGN(4);
- KEEP(*(.isr_vector)) /* Startup code */
- . = ALIGN(4);
- } >FLASH
-
- /* The program code and other data into "FLASH" Rom type memory */
- .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)
-
- KEEP (*(.init))
- KEEP (*(.fini))
-
- . = ALIGN(4);
- _etext = .; /* define a global symbols at end of code */
- } >FLASH
-
- /* Constant data into "FLASH" Rom type memory */
- .rodata :
- {
- . = ALIGN(4);
- *(.rodata) /* .rodata sections (constants, strings, etc.) */
- *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
- . = ALIGN(4);
- } >FLASH
-
- .ARM.extab : {
- . = ALIGN(4);
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- . = ALIGN(4);
- } >FLASH
-
- .ARM : {
- . = ALIGN(4);
- __exidx_start = .;
- *(.ARM.exidx*)
- __exidx_end = .;
- . = ALIGN(4);
- } >FLASH
-
- .preinit_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP (*(.preinit_array*))
- PROVIDE_HIDDEN (__preinit_array_end = .);
- . = ALIGN(4);
- } >FLASH
-
- .init_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__init_array_start = .);
- KEEP (*(SORT(.init_array.*)))
- KEEP (*(.init_array*))
- PROVIDE_HIDDEN (__init_array_end = .);
- . = ALIGN(4);
- } >FLASH
-
- .fini_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP (*(SORT(.fini_array.*)))
- KEEP (*(.fini_array*))
- PROVIDE_HIDDEN (__fini_array_end = .);
- . = ALIGN(4);
- } >FLASH
-
- /* Used by the startup to initialize data */
- _sidata = LOADADDR(.data);
-
- /* Initialized data sections into "RAM" Ram type memory */
- .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> FLASH
-
- /* Uninitialized data section into "RAM" Ram type memory */
- . = ALIGN(4);
- .bss :
- {
- /* This is used by the startup in order to initialize the .bss section */
- _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" Ram type memory left */
- ._user_heap_stack :
- {
- . = ALIGN(8);
- PROVIDE ( end = . );
- PROVIDE ( _end = . );
- . = . + _Min_Heap_Size;
- . = . + _Min_Stack_Size;
- . = ALIGN(8);
- } >RAM
-
- /* Remove information from the compiler libraries */
- /DISCARD/ :
- {
- libc.a ( * )
- libm.a ( * )
- libgcc.a ( * )
- }
-
- .ARM.attributes 0 : { *(.ARM.attributes) }
-}
+++ /dev/null
-/*
-******************************************************************************
-**
-** File : LinkerScript.ld (debug in RAM dedicated)
-**
-** Author : Auto-generated by STM32CubeIDE
-**
-** Abstract : Linker script for STM32F767ZITx Device from STM32F7 series
-** 2048Kbytes FLASH
-** 512Kbytes 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
-**
-** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
-**
-** Redistribution and use in source and binary forms, with or without modification,
-** are permitted provided that the following conditions are met:
-** 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.
-** 3. Neither the name of STMicroelectronics nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-*****************************************************************************
-*/
-
-/* Entry Point */
-ENTRY(Reset_Handler)
-
-/* Highest address of the user mode stack */
-_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
-
-_Min_Heap_Size = 0x200; /* required amount of heap */
-_Min_Stack_Size = 0x400; /* required amount of stack */
-
-/* Memories definition */
-MEMORY
-{
- RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K
- FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K
-}
-
-/* Sections */
-SECTIONS
-{
- /* The startup code into "RAM" Ram type memory */
- .isr_vector :
- {
- . = ALIGN(4);
- KEEP(*(.isr_vector)) /* Startup code */
- . = ALIGN(4);
- } >RAM
-
- /* The program code and other data into "RAM" Ram type memory */
- .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)
-
- KEEP (*(.init))
- KEEP (*(.fini))
-
- . = ALIGN(4);
- _etext = .; /* define a global symbols at end of code */
- } >RAM
-
- /* Constant data into "RAM" Ram type memory */
- .rodata :
- {
- . = ALIGN(4);
- *(.rodata) /* .rodata sections (constants, strings, etc.) */
- *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
- . = ALIGN(4);
- } >RAM
-
- .ARM.extab : {
- . = ALIGN(4);
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- . = ALIGN(4);
- } >RAM
-
- .ARM : {
- . = ALIGN(4);
- __exidx_start = .;
- *(.ARM.exidx*)
- __exidx_end = .;
- . = ALIGN(4);
- } >RAM
-
- .preinit_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP (*(.preinit_array*))
- PROVIDE_HIDDEN (__preinit_array_end = .);
- . = ALIGN(4);
- } >RAM
-
- .init_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__init_array_start = .);
- KEEP (*(SORT(.init_array.*)))
- KEEP (*(.init_array*))
- PROVIDE_HIDDEN (__init_array_end = .);
- . = ALIGN(4);
- } >RAM
-
- .fini_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP (*(SORT(.fini_array.*)))
- KEEP (*(.fini_array*))
- PROVIDE_HIDDEN (__fini_array_end = .);
- . = ALIGN(4);
- } >RAM
-
- /* Used by the startup to initialize data */
- _sidata = LOADADDR(.data);
-
- /* Initialized data sections into "RAM" Ram type memory */
- .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
-
- /* Uninitialized data section into "RAM" Ram type memory */
- . = ALIGN(4);
- .bss :
- {
- /* This is used by the startup in order to initialize the .bss section */
- _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" Ram type memory left */
- ._user_heap_stack :
- {
- . = ALIGN(8);
- PROVIDE ( end = . );
- PROVIDE ( _end = . );
- . = . + _Min_Heap_Size;
- . = . + _Min_Stack_Size;
- . = ALIGN(8);
- } >RAM
-
- /* Remove information from the compiler libraries */
- /DISCARD/ :
- {
- libc.a ( * )
- libm.a ( * )
- libgcc.a ( * )
- }
-
- .ARM.attributes 0 : { *(.ARM.attributes) }
-}
+++ /dev/null
-<?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"/>
-<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"/>
-<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{"fItems":[{"fIsFromMainTab":true,"fPath":"Debug/otto_proto_test.elf","fProjectName":"otto_proto_test","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/>
-<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_div" value="8"/>
-<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_trace_hclk" value="16000000"/>
-<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_wait_for_sync" value="true"/>
-<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.useRemoteTarget" value="true"/>
-<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_external_loader" 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_shared_stlink" value="false"/>
-<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.external_loader" value=""/>
-<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="/home/fdila/Projects/otto/utils/proto_test/otto_proto_test/Debug/st-link_gdbserver_log.txt"/>
-<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="system_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=""/>
-<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.jtagDevice" value="ST-LINK (ST-LINK GDB server)"/>
-<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="${TOOLCHAIN_PATH}/arm-none-eabi-gdb"/>
-<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="true"/>
-<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/otto_proto_test.elf"/>
-<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="otto_proto_test"/>
-<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.41926027"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/otto_proto_test"/>
-</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="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
-</launchConfiguration>
+++ /dev/null
-#MicroXplorer Configuration settings - do not modify
-File.Version=6
-KeepUserPlacement=false
-Mcu.Family=STM32F7
-Mcu.IP0=CORTEX_M7
-Mcu.IP1=NVIC
-Mcu.IP2=RCC
-Mcu.IP3=SYS
-Mcu.IP4=TIM2
-Mcu.IP5=TIM3
-Mcu.IP6=TIM4
-Mcu.IP7=TIM5
-Mcu.IP8=TIM6
-Mcu.IP9=USART6
-Mcu.IPNb=10
-Mcu.Name=STM32F767ZITx
-Mcu.Package=LQFP144
-Mcu.Pin0=PC13
-Mcu.Pin1=PC0
-Mcu.Pin10=PF15
-Mcu.Pin11=PE9
-Mcu.Pin12=PD14
-Mcu.Pin13=PD15
-Mcu.Pin14=PC6
-Mcu.Pin15=PC7
-Mcu.Pin16=PA13
-Mcu.Pin17=PA14
-Mcu.Pin18=PB3
-Mcu.Pin19=VP_SYS_VS_Systick
-Mcu.Pin2=PA0/WKUP
-Mcu.Pin20=VP_TIM3_VS_ClockSourceINT
-Mcu.Pin21=VP_TIM4_VS_ClockSourceINT
-Mcu.Pin22=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin3=PA1
-Mcu.Pin4=PA3
-Mcu.Pin5=PA5
-Mcu.Pin6=PA6
-Mcu.Pin7=PF12
-Mcu.Pin8=PF13
-Mcu.Pin9=PF14
-Mcu.PinsNb=23
-Mcu.ThirdPartyNb=0
-Mcu.UserConstants=
-Mcu.UserName=STM32F767ZITx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
-NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-NVIC.ForceEnableDMAVector=true
-NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.PriorityGroup=NVIC_PRIORITYGROUP_2
-NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-NVIC.TIM3_IRQn=true\:2\:1\:true\:true\:true\:1\:true\:true
-NVIC.TIM6_DAC_IRQn=true\:2\:2\:true\:true\:true\:2\:true\:true
-NVIC.USART6_IRQn=true\:1\:0\:true\:true\:true\:3\:true\:true
-NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PA0/WKUP.GPIOParameters=GPIO_Label
-PA0/WKUP.GPIO_Label=encoder_dx1
-PA0/WKUP.Locked=true
-PA0/WKUP.Signal=S_TIM5_CH1
-PA1.GPIOParameters=GPIO_Label
-PA1.GPIO_Label=encoder_dx2
-PA1.Locked=true
-PA1.Signal=S_TIM5_CH2
-PA13.Mode=Serial_Wire
-PA13.Signal=SYS_JTMS-SWDIO
-PA14.Mode=Serial_Wire
-PA14.Signal=SYS_JTCK-SWCLK
-PA3.GPIOParameters=GPIO_Label
-PA3.GPIO_Label=current1
-PA3.Locked=true
-PA3.Signal=GPIO_Analog
-PA5.GPIOParameters=GPIO_Label
-PA5.GPIO_Label=encoder_sx1
-PA5.Locked=true
-PA5.Signal=S_TIM2_CH1_ETR
-PA6.GPIOParameters=GPIO_Label
-PA6.GPIO_Label=fault2
-PA6.Locked=true
-PA6.Signal=GPIO_Input
-PB3.GPIOParameters=GPIO_Label
-PB3.GPIO_Label=encoder_sx2
-PB3.Locked=true
-PB3.Signal=S_TIM2_CH2
-PC0.GPIOParameters=GPIO_Label
-PC0.GPIO_Label=current2
-PC0.Locked=true
-PC0.Signal=GPIO_Analog
-PC13.GPIOParameters=GPIO_Label
-PC13.GPIO_Label=user_button
-PC13.Locked=true
-PC13.Signal=GPXTI13
-PC6.Mode=Asynchronous
-PC6.Signal=USART6_TX
-PC7.Mode=Asynchronous
-PC7.Signal=USART6_RX
-PCC.Checker=false
-PCC.Line=STM32F7x7
-PCC.MCU=STM32F767ZITx
-PCC.PartNumber=STM32F767ZITx
-PCC.Seq0=0
-PCC.Series=STM32F7
-PCC.Temperature=25
-PCC.Vdd=3.3
-PD14.GPIOParameters=GPIO_Label
-PD14.GPIO_Label=pwm2
-PD14.Locked=true
-PD14.Signal=S_TIM4_CH3
-PD15.GPIOParameters=GPIO_Label
-PD15.GPIO_Label=pwm1
-PD15.Locked=true
-PD15.Signal=S_TIM4_CH4
-PE9.GPIOParameters=GPIO_Label
-PE9.GPIO_Label=fault1
-PE9.Locked=true
-PE9.Signal=GPIO_Input
-PF12.GPIOParameters=GPIO_Label
-PF12.GPIO_Label=dir2
-PF12.Locked=true
-PF12.Signal=GPIO_Output
-PF13.GPIOParameters=GPIO_Label
-PF13.GPIO_Label=dir1
-PF13.Locked=true
-PF13.Signal=GPIO_Output
-PF14.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PF14.GPIO_Label=sleep2
-PF14.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_PP
-PF14.GPIO_PuPd=GPIO_PULLUP
-PF14.Locked=true
-PF14.PinState=GPIO_PIN_SET
-PF14.Signal=GPIO_Output
-PF15.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label
-PF15.GPIO_Label=sleep1
-PF15.GPIO_PuPd=GPIO_PULLUP
-PF15.Locked=true
-PF15.PinState=GPIO_PIN_SET
-PF15.Signal=GPIO_Output
-PinOutPanel.RotationAngle=0
-ProjectManager.AskForMigrate=true
-ProjectManager.BackupPrevious=false
-ProjectManager.CompilerOptimize=6
-ProjectManager.ComputerToolchain=false
-ProjectManager.CoupleFile=false
-ProjectManager.CustomerFirmwarePackage=
-ProjectManager.DefaultFWLocation=true
-ProjectManager.DeletePrevious=true
-ProjectManager.DeviceId=STM32F767ZITx
-ProjectManager.FirmwarePackage=STM32Cube FW_F7 V1.15.0
-ProjectManager.FreePins=false
-ProjectManager.HalAssertFull=false
-ProjectManager.HeapSize=0x200
-ProjectManager.KeepUserCode=true
-ProjectManager.LastFirmware=true
-ProjectManager.LibraryCopy=1
-ProjectManager.MainLocation=Core/Src
-ProjectManager.NoMain=false
-ProjectManager.PreviousToolchain=
-ProjectManager.ProjectBuild=false
-ProjectManager.ProjectFileName=otto_proto_test.ioc
-ProjectManager.ProjectName=otto_proto_test
-ProjectManager.StackSize=0x400
-ProjectManager.TargetToolchain=STM32CubeIDE
-ProjectManager.ToolChainLocation=
-ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-MX_TIM2_Init-TIM2-false-HAL-true,4-MX_TIM3_Init-TIM3-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_TIM5_Init-TIM5-false-HAL-true,7-MX_USART6_UART_Init-USART6-false-HAL-true
-RCC.CECFreq_Value=32786.88524590164
-RCC.DFSDMFreq_Value=16000000
-RCC.FamilyName=M
-RCC.HSE_VALUE=25000000
-RCC.HSI_VALUE=16000000
-RCC.I2SFreq_Value=96000000
-RCC.IPParameters=CECFreq_Value,DFSDMFreq_Value,FamilyName,HSE_VALUE,HSI_VALUE,I2SFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,PLLCLKFreq_Value,PLLI2SPCLKFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLQCLKFreq_Value,PLLSAIPCLKFreq_Value,PLLSAIQCLKFreq_Value,PLLSAIRCLKFreq_Value,PLLSAIoutputFreq_Value,RNGFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SDMMC2Freq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,USBFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value
-RCC.LCDTFTFreq_Value=48000000
-RCC.LSE_VALUE=32768
-RCC.LSI_VALUE=32000
-RCC.PLLCLKFreq_Value=96000000
-RCC.PLLI2SPCLKFreq_Value=96000000
-RCC.PLLI2SQCLKFreq_Value=96000000
-RCC.PLLI2SRCLKFreq_Value=96000000
-RCC.PLLQCLKFreq_Value=96000000
-RCC.PLLSAIPCLKFreq_Value=96000000
-RCC.PLLSAIQCLKFreq_Value=96000000
-RCC.PLLSAIRCLKFreq_Value=96000000
-RCC.PLLSAIoutputFreq_Value=96000000
-RCC.RNGFreq_Value=96000000
-RCC.SAI1Freq_Value=96000000
-RCC.SAI2Freq_Value=96000000
-RCC.SDMMC2Freq_Value=16000000
-RCC.SDMMCFreq_Value=16000000
-RCC.SPDIFRXFreq_Value=96000000
-RCC.USBFreq_Value=96000000
-RCC.VCOI2SOutputFreq_Value=192000000
-RCC.VCOInputFreq_Value=1000000
-RCC.VCOOutputFreq_Value=192000000
-RCC.VCOSAIOutputFreq_Value=192000000
-SH.GPXTI13.0=GPIO_EXTI13
-SH.GPXTI13.ConfNb=1
-SH.S_TIM2_CH1_ETR.0=TIM2_CH1,Encoder_Interface
-SH.S_TIM2_CH1_ETR.ConfNb=1
-SH.S_TIM2_CH2.0=TIM2_CH2,Encoder_Interface
-SH.S_TIM2_CH2.ConfNb=1
-SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
-SH.S_TIM4_CH3.ConfNb=1
-SH.S_TIM4_CH4.0=TIM4_CH4,PWM Generation4 CH4
-SH.S_TIM4_CH4.ConfNb=1
-SH.S_TIM5_CH1.0=TIM5_CH1,Encoder_Interface
-SH.S_TIM5_CH1.ConfNb=1
-SH.S_TIM5_CH2.0=TIM5_CH2,Encoder_Interface
-SH.S_TIM5_CH2.ConfNb=1
-TIM2.EncoderMode=TIM_ENCODERMODE_TI12
-TIM2.IPParameters=Period,EncoderMode
-TIM2.Period=4294967295
-TIM3.IPParameters=Prescaler,Period
-TIM3.IPParametersWithoutCheck=Period
-TIM3.Period=159
-TIM3.Prescaler=999
-TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
-TIM4.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
-TIM4.IPParameters=Channel-PWM Generation4 CH4,Channel-PWM Generation3 CH3,Period
-TIM4.Period=799
-TIM5.EncoderMode=TIM_ENCODERMODE_TI12
-TIM5.IPParameters=Period,EncoderMode
-TIM5.Period=4294967295
-TIM6.IPParameters=Prescaler,Period
-TIM6.Period=799
-TIM6.Prescaler=9999
-USART6.IPParameters=VirtualMode-Asynchronous,WordLength,Parity
-USART6.Parity=PARITY_NONE
-USART6.VirtualMode-Asynchronous=VM_ASYNC
-USART6.WordLength=WORDLENGTH_8B
-VP_SYS_VS_Systick.Mode=SysTick
-VP_SYS_VS_Systick.Signal=SYS_VS_Systick
-VP_TIM3_VS_ClockSourceINT.Mode=Internal
-VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
-VP_TIM4_VS_ClockSourceINT.Mode=Internal
-VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
-VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer
-VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT
-board=custom
-isbadioc=false
+++ /dev/null
-import velocities_pb2
-
-import time, serial, struct
-from serial import SerialException
-ser = serial.Serial(
- baudrate=115200,
- parity=serial.PARITY_NONE,
- stopbits=serial.STOPBITS_ONE,
- bytesize=serial.EIGHTBITS,
- rtscts=False)
-while (ser.is_open == False):
- try:
- ser.port = '/dev/ttyUSB0'
- ser.open()
- except SerialException:
- print("couldn't open ttyUSB0, check the connection")
- time.sleep(2)
-
-print("port open")
-
-
-while (1):
- ser.reset_input_buffer()
- buffer = ser.read(10)
-
- message = velocities_pb2.Velocities()
- message.ParseFromString(buffer)
- print(message)
+++ /dev/null
-import velocities_pb2
-
-import time, serial, struct
-from serial import SerialException
-ser = serial.Serial(
- baudrate=115200,
- parity=serial.PARITY_NONE,
- stopbits=serial.STOPBITS_ONE,
- bytesize=serial.EIGHTBITS,
- rtscts=False)
-while (ser.is_open == False):
- try:
- ser.port = '/dev/ttyUSB0'
- ser.open()
- except SerialException:
- print("couldn't open ttyUSB0, check the connection")
- time.sleep(2)
-
-print("port open")
-message = velocities_pb2.Velocities()
-
-while (1):
- message.linear_vel += 0.1
- message.angular_vel += 0.1
- buffer = message.SerializeToString()
- ser.write(buffer)
- print(message)
- print(buffer)
- ser.reset_output_buffer()
- time.sleep(3)
\ No newline at end of file
+++ /dev/null
-/* Automatically generated nanopb constant definitions */
-/* Generated by 0.4.1-dev */
-
-#include "velocities.pb.h"
-#if PB_PROTO_HEADER_VERSION != 40
-#error Regenerate this file with the current version of nanopb generator.
-#endif
-
-PB_BIND(Velocities, Velocities, AUTO)
-
-
-
+++ /dev/null
-/* Automatically generated nanopb header */
-/* Generated by 0.4.1-dev */
-
-#ifndef PB_VELOCITIES_PB_H_INCLUDED
-#define PB_VELOCITIES_PB_H_INCLUDED
-#include <pb.h>
-
-#if PB_PROTO_HEADER_VERSION != 40
-#error Regenerate this file with the current version of nanopb generator.
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Struct definitions */
-typedef struct _Velocities {
- float linear_vel;
- float angular_vel;
-} Velocities;
-
-
-/* Initializer values for message structs */
-#define Velocities_init_default {0, 0}
-#define Velocities_init_zero {0, 0}
-
-/* Field tags (for use in manual encoding/decoding) */
-#define Velocities_linear_vel_tag 1
-#define Velocities_angular_vel_tag 2
-
-/* Struct field encoding specification for nanopb */
-#define Velocities_FIELDLIST(X, a) \
-X(a, STATIC, SINGULAR, FLOAT, linear_vel, 1) \
-X(a, STATIC, SINGULAR, FLOAT, angular_vel, 2)
-#define Velocities_CALLBACK NULL
-#define Velocities_DEFAULT NULL
-
-extern const pb_msgdesc_t Velocities_msg;
-
-/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
-#define Velocities_fields &Velocities_msg
-
-/* Maximum encoded size of messages (where known) */
-#define Velocities_size 10
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
+++ /dev/null
-syntax = "proto3";
-
-message Velocities {
- float linear_vel = 1;
- float angular_vel = 2;
-}
+++ /dev/null
-# Generated by the protocol buffer compiler. DO NOT EDIT!
-# source: velocities.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-from google.protobuf import descriptor_pb2
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
- name='velocities.proto',
- package='',
- syntax='proto3',
- serialized_pb=_b('\n\x10velocities.proto\"5\n\nVelocities\x12\x12\n\nlinear_vel\x18\x01 \x01(\x02\x12\x13\n\x0b\x61ngular_vel\x18\x02 \x01(\x02\x62\x06proto3')
-)
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-
-
-
-_VELOCITIES = _descriptor.Descriptor(
- name='Velocities',
- full_name='Velocities',
- filename=None,
- file=DESCRIPTOR,
- containing_type=None,
- fields=[
- _descriptor.FieldDescriptor(
- name='linear_vel', full_name='Velocities.linear_vel', index=0,
- number=1, type=2, cpp_type=6, label=1,
- has_default_value=False, default_value=float(0),
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- options=None),
- _descriptor.FieldDescriptor(
- name='angular_vel', full_name='Velocities.angular_vel', index=1,
- number=2, type=2, cpp_type=6, label=1,
- has_default_value=False, default_value=float(0),
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- options=None),
- ],
- extensions=[
- ],
- nested_types=[],
- enum_types=[
- ],
- options=None,
- is_extendable=False,
- syntax='proto3',
- extension_ranges=[],
- oneofs=[
- ],
- serialized_start=20,
- serialized_end=73,
-)
-
-DESCRIPTOR.message_types_by_name['Velocities'] = _VELOCITIES
-
-Velocities = _reflection.GeneratedProtocolMessageType('Velocities', (_message.Message,), dict(
- DESCRIPTOR = _VELOCITIES,
- __module__ = 'velocities_pb2'
- # @@protoc_insertion_point(class_scope:Velocities)
- ))
-_sym_db.RegisterMessage(Velocities)
-
-
-# @@protoc_insertion_point(module_scope)