From e08544a94ef0db4dfdc7987c799a40da6cbcf329 Mon Sep 17 00:00:00 2001 From: kachelto100370 Date: Mon, 9 Mar 2026 11:24:32 +0100 Subject: [PATCH] inital commit --- .metadata/.ide.log | 0 .metadata/.lock | 0 .metadata/.log | 2534 +++ .metadata/.log4j2.xml | 18 + .../2.0.100.202111091238 | 0 .../2.1.700.202302091318 | 0 .../2.2.400.202406131549 | 0 .../params.dat | 1 + .../saved_expr.dat | 0 .../dialog_settings.xml | 4 + .metadata/.plugins/org.eclipse.cdt.core/.log | 51 + .../A3_Timer.language.settings.xml | 1 + .../org.eclipse.cdt.core/model.extensions.xml | 2 + .../org.eclipse.cdt.core/shareddefaults.xml | 1 + .../task1.1727452765701.pdom | Bin 0 -> 1658880 bytes .../task1.language.settings.xml | 1 + .../task2.1727452765734.pdom | Bin 0 -> 8192 bytes .../task2.language.settings.xml | 1 + .../task3.1739787811602.pdom | Bin 0 -> 1675264 bytes .../task3.language.settings.xml | 1 + .../task4.1727452765793.pdom | Bin 0 -> 1712128 bytes .../task4.language.settings.xml | 1 + .../task5.language.settings.xml | 1 + .../dialog_settings.xml | 9 + .../org.eclipse.cdt.make.core/specs.c | 1 + .../org.eclipse.cdt.make.core/specs.cpp | 1 + .../dialog_settings.xml | 5 + .../spec.c | 0 .../spec.cpp | 0 .../org.eclipse.cdt.ui/A3_Timer.build.log | 22 + .../org.eclipse.cdt.ui/dialog_settings.xml | 10 + .../org.eclipse.cdt.ui/global-build.log | 219 + .../org.eclipse.cdt.ui/task1.build.log | 10 + .../org.eclipse.cdt.ui/task2.build.log | 5 + .../org.eclipse.cdt.ui/task3.build.log | 7 + .../org.eclipse.cdt.ui/task4.build.log | 7 + .../29/000b35075b15001110f98d2c88520103 | 147 + .../9c/d0b12ae9a11b00111e1997f66d7c19f4 | 147 + .../.org.eclipse.egit.core.cmp/1.tree | Bin 0 -> 129 bytes .../task1/.indexes/be/properties.index | Bin 0 -> 297 bytes .../.projects/task1/.indexes/c4/history.index | Bin 0 -> 45 bytes .../task1/.indexes/c4/properties.index | Bin 0 -> 130 bytes .../.projects/task1/.indexes/properties.index | Bin 0 -> 362 bytes .../.projects/task1/.markers | Bin 0 -> 349 bytes .../.projects/task2/.indexes/properties.index | Bin 0 -> 564 bytes .../task3/.indexes/be/properties.index | Bin 0 -> 297 bytes .../task3/.indexes/c4/properties.index | Bin 0 -> 130 bytes .../.projects/task3/.indexes/properties.index | Bin 0 -> 487 bytes .../.projects/task3/.markers | Bin 0 -> 723 bytes .../task4/.indexes/a3/properties.index | Bin 0 -> 156 bytes .../task4/.indexes/be/properties.index | Bin 0 -> 136 bytes .../task4/.indexes/c4/properties.index | Bin 0 -> 205 bytes .../.projects/task4/.indexes/properties.index | Bin 0 -> 236 bytes .../.projects/task4/.markers | Bin 0 -> 723 bytes .../.root/.indexes/history.version | 1 + .../.root/.indexes/properties.index | Bin 0 -> 104 bytes .../.root/.indexes/properties.version | 1 + .../org.eclipse.core.resources/.root/.markers | Bin 0 -> 533 bytes .../org.eclipse.core.resources/.root/63.tree | Bin 0 -> 7089 bytes .../.safetable/org.eclipse.core.resources | Bin 0 -> 656 bytes .../com.st.stm32cube.common.preferences.prefs | 11 + .../com.st.stm32cube.ide.mcu.debug.prefs | 2 + .../com.st.stm32cube.ide.mcu.ide.oss.prefs | 2 + .../org.eclipse.cdt.codan.core.prefs | 74 + .../.settings/org.eclipse.cdt.core.prefs | 221 + .../org.eclipse.cdt.core.prj-task1.prefs | 18 + .../org.eclipse.cdt.core.prj-task2.prefs | 18 + .../org.eclipse.cdt.core.prj-task3.prefs | 2 + .../org.eclipse.cdt.core.prj-task4.prefs | 18 + .../org.eclipse.cdt.debug.core.prefs | 3 + .../.settings/org.eclipse.cdt.debug.ui.prefs | 9 + .../.settings/org.eclipse.cdt.dsf.ui.prefs | 2 + .../.settings/org.eclipse.cdt.make.core.prefs | 2 + .../org.eclipse.cdt.managedbuilder.core.prefs | 17 + .../.settings/org.eclipse.cdt.ui.prefs | 49 + .../org.eclipse.core.resources.prefs | 4 + .../.settings/org.eclipse.debug.core.prefs | 8 + .../.settings/org.eclipse.debug.ui.prefs | 15 + .../org.eclipse.e4.ui.css.swt.theme.prefs | 2 + ...clipse.e4.ui.workbench.renderers.swt.prefs | 4 + .../.settings/org.eclipse.jsch.core.prefs | 10 + .../org.eclipse.launchbar.core.prefs | 21 + .../org.eclipse.ltk.ui.refactoring.prefs | 2 + .../.settings/org.eclipse.remote.core.prefs | 2 + .../.settings/org.eclipse.search.prefs | 2 + .../.settings/org.eclipse.team.ui.prefs | 2 + .../.settings/org.eclipse.ui.browser.prefs | 3 + .../.settings/org.eclipse.ui.editors.prefs | 6 + .../.settings/org.eclipse.ui.ide.prefs | 6 + .../.settings/org.eclipse.ui.monitoring.prefs | 2 + .../.settings/org.eclipse.ui.navigator.prefs | 2 + .../.settings/org.eclipse.ui.prefs | 2 + .../.settings/org.eclipse.ui.workbench.prefs | 32 + .../.settings/org.eclipse.urischeme.prefs | 2 + .../org.eclipse.debug.ui/dialog_settings.xml | 21 + .../launchConfigurationHistory.xml | 39 + .../org.eclipse.e4.workbench/workbench.xmi | 2492 +++ .../.org.eclipse.egit.core.cmp/.project | 11 + .../.workspace/2022/3/10/refactorings.history | 2 + .../.workspace/2022/3/10/refactorings.index | 0 .../.workspace/2022/3/11/refactorings.history | 2 + .../.workspace/2022/3/11/refactorings.index | 5 + .../.workspace/2024/9/39/refactorings.history | 4 + .../.workspace/2024/9/39/refactorings.index | 1 + .../.workspace/2025/2/7/refactorings.history | 3 + .../.workspace/2025/2/7/refactorings.index | 7 + .../.workspace/2025/2/8/refactorings.history | 3 + .../.workspace/2025/2/8/refactorings.index | 2 + .../task2/2022/3/11/refactorings.history | 3 + .../task2/2022/3/11/refactorings.index | 2 + .../task3/2025/2/8/refactorings.history | 3 + .../task3/2025/2/8/refactorings.index | 6 + .../task4/2022/3/11/refactorings.history | 3 + .../task4/2022/3/11/refactorings.index | 2 + .../task5/2022/3/11/refactorings.history | 3 + .../task5/2022/3/11/refactorings.index | 2 + .../dialog_settings.xml | 15 + .../org.eclipse.search/dialog_settings.xml | 60 + .../dialog_settings.xml | 5 + .../org.eclipse.ui.ide/dialog_settings.xml | 35 + .../dialog_settings.xml | 35 + .../dialog_settings.xml | 42 + .../org.eclipse.ui.workbench/workingsets.xml | 4 + .metadata/version.ini | 3 + task1/.cproject | 172 + task1/.project | 31 + .../com.st.stm32cube.ide.mcu.sfrview.prefs | 2 + task1/.settings/language.settings.xml | 22 + .../org.eclipse.core.resources.prefs | 2 + task1/Debug/Src/subdir.mk | 30 + task1/Debug/Src/task1.cyclo | 3 + task1/Debug/Src/task1.d | 11 + task1/Debug/Src/task1.o | Bin 0 -> 637260 bytes task1/Debug/Src/task1.su | 3 + task1/Debug/Src/task1_it.cyclo | 2 + task1/Debug/Src/task1_it.d | 11 + task1/Debug/Src/task1_it.o | Bin 0 -> 637952 bytes task1/Debug/Src/task1_it.su | 2 + task1/Debug/Startup/startup_stm32g431kbtx.d | 1 + task1/Debug/Startup/startup_stm32g431kbtx.o | Bin 0 -> 2540 bytes task1/Debug/Startup/subdir.mk | 39 + task1/Debug/Startup/syscalls.cyclo | 18 + task1/Debug/Startup/syscalls.d | 1 + task1/Debug/Startup/syscalls.o | Bin 0 -> 83072 bytes task1/Debug/Startup/syscalls.su | 18 + task1/Debug/Startup/sysmem.cyclo | 1 + task1/Debug/Startup/sysmem.d | 1 + task1/Debug/Startup/sysmem.o | Bin 0 -> 47856 bytes task1/Debug/Startup/sysmem.su | 1 + task1/Debug/makefile | 93 + task1/Debug/objects.list | 5 + task1/Debug/objects.mk | 9 + task1/Debug/sources.mk | 27 + task1/Debug/task1.elf | Bin 0 -> 550896 bytes task1/Debug/task1.list | 501 + task1/Debug/task1.map | 825 + task1/Inc/STefi-Light.h | 80 + task1/Inc/cmsis_compiler.h | 283 + task1/Inc/cmsis_gcc.h | 2168 +++ task1/Inc/cmsis_version.h | 39 + task1/Inc/core_cm4.h | 2124 +++ task1/Inc/mpu_armv7.h | 272 + task1/Inc/stm32g431xx.h | 13139 ++++++++++++++++ task1/Inc/system_stm32g4xx.h | 104 + task1/STM32G431KBTX_FLASH.ld | 206 + task1/Src/task1.c | 152 + task1/Src/task1_it.c | 218 + task1/Startup/startup_stm32g431kbtx.s | 105 + task1/Startup/syscalls.c | 176 + task1/Startup/sysmem.c | 79 + task1/task1.launch | 83 + task2/.cproject | 174 + task2/.project | 31 + .../com.st.stm32cube.ide.mcu.sfrview.prefs | 4 + task2/.settings/language.settings.xml | 23 + .../org.eclipse.cdt.codan.core.prefs | 74 + task2/.settings/org.eclipse.cdt.core.prefs | 6 + .../org.eclipse.core.resources.prefs | 2 + task2/G431_addr.s | 764 + task2/ldscript_rom.ld | 65 + task2/makefile | 83 + task2/task2.launch | 83 + task2/task2.s | 314 + task3/.cproject | 172 + task3/.project | 31 + .../com.st.stm32cube.ide.mcu.sfrview.prefs | 2 + task3/.settings/language.settings.xml | 22 + .../org.eclipse.core.resources.prefs | 2 + task3/Debug/Src/subdir.mk | 30 + task3/Debug/Startup/subdir.mk | 39 + task3/Debug/makefile | 93 + task3/Debug/objects.list | 5 + task3/Debug/objects.mk | 9 + task3/Debug/sources.mk | 27 + task3/Inc/STefi-Light.h | 80 + task3/Inc/cmsis_compiler.h | 283 + task3/Inc/cmsis_gcc.h | 2168 +++ task3/Inc/cmsis_version.h | 39 + task3/Inc/core_cm4.h | 2124 +++ task3/Inc/mpu_armv7.h | 272 + task3/Inc/stm32g431xx.h | 13139 ++++++++++++++++ task3/Inc/system_stm32g4xx.h | 104 + task3/STM32G431KBTX_FLASH.ld | 206 + task3/Src/task3.c | 149 + task3/Src/task3_it.c | 238 + task3/Startup/startup_stm32g431kbtx.s | 105 + task3/Startup/syscalls.c | 176 + task3/Startup/sysmem.c | 79 + task3/task3 Debug.launch | 82 + task3/task3.launch | 83 + task4/.cproject | 173 + task4/.project | 31 + task4/.settings/language.settings.xml | 22 + .../org.eclipse.core.resources.prefs | 2 + task4/Debug/Src/subdir.mk | 30 + task4/Debug/Startup/subdir.mk | 39 + task4/Debug/makefile | 93 + task4/Debug/objects.list | 5 + task4/Debug/objects.mk | 9 + task4/Debug/sources.mk | 27 + task4/Inc/STefi-Light.h | 80 + task4/Inc/cmsis_compiler.h | 283 + task4/Inc/cmsis_gcc.h | 2168 +++ task4/Inc/cmsis_version.h | 39 + task4/Inc/core_cm4.h | 2124 +++ task4/Inc/mpu_armv7.h | 272 + task4/Inc/stm32g431xx.h | 13139 ++++++++++++++++ task4/Inc/system_stm32g4xx.h | 104 + task4/STM32G431KBTX_FLASH.ld | 206 + task4/Src/task4.c | 104 + task4/Src/task4_it.c | 224 + task4/Startup/startup_stm32g431kbtx.s | 105 + task4/Startup/syscalls.c | 176 + task4/Startup/sysmem.c | 79 + task4/task4.launch | 82 + 235 files changed, 68656 insertions(+) create mode 100644 .metadata/.ide.log create mode 100644 .metadata/.lock create mode 100644 .metadata/.log create mode 100644 .metadata/.log4j2.xml create mode 100644 .metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.0.100.202111091238 create mode 100644 .metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.1.700.202302091318 create mode 100644 .metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.2.400.202406131549 create mode 100644 .metadata/.plugins/com.st.stm32cube.ide.mcu.livewatch/params.dat create mode 100644 .metadata/.plugins/com.st.stm32cube.ide.mcu.livewatch/saved_expr.dat create mode 100644 .metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/.log create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/A3_Timer.language.settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/model.extensions.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task1.1727452765701.pdom create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task1.language.settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task2.1727452765734.pdom create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task2.language.settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task3.1739787811602.pdom create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task3.language.settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task4.1727452765793.pdom create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task4.language.settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.core/task5.language.settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.dsf.ui/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.make.core/specs.c create mode 100644 .metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp create mode 100644 .metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.c create mode 100644 .metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.cpp create mode 100644 .metadata/.plugins/org.eclipse.cdt.ui/A3_Timer.build.log create mode 100644 .metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.cdt.ui/global-build.log create mode 100644 .metadata/.plugins/org.eclipse.cdt.ui/task1.build.log create mode 100644 .metadata/.plugins/org.eclipse.cdt.ui/task2.build.log create mode 100644 .metadata/.plugins/org.eclipse.cdt.ui/task3.build.log create mode 100644 .metadata/.plugins/org.eclipse.cdt.ui/task4.build.log create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/29/000b35075b15001110f98d2c88520103 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/9c/d0b12ae9a11b00111e1997f66d7c19f4 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/1.tree create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/be/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/history.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task1/.markers create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task2/.indexes/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/be/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/c4/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task3/.markers create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/a3/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/be/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/c4/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task4/.markers create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.markers create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/63.tree create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.debug.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.ide.oss.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task1.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task2.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task3.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task4.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.dsf.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.workbench.renderers.swt.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jsch.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ltk.ui.refactoring.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.remote.core.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.monitoring.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.navigator.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs create mode 100644 .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.urischeme.prefs create mode 100644 .metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml create mode 100644 .metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi create mode 100644 .metadata/.plugins/org.eclipse.egit.core/.org.eclipse.egit.core.cmp/.project create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/10/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/10/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.search/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml create mode 100644 .metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml create mode 100644 .metadata/version.ini create mode 100644 task1/.cproject create mode 100644 task1/.project create mode 100644 task1/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs create mode 100644 task1/.settings/language.settings.xml create mode 100644 task1/.settings/org.eclipse.core.resources.prefs create mode 100644 task1/Debug/Src/subdir.mk create mode 100644 task1/Debug/Src/task1.cyclo create mode 100644 task1/Debug/Src/task1.d create mode 100644 task1/Debug/Src/task1.o create mode 100644 task1/Debug/Src/task1.su create mode 100644 task1/Debug/Src/task1_it.cyclo create mode 100644 task1/Debug/Src/task1_it.d create mode 100644 task1/Debug/Src/task1_it.o create mode 100644 task1/Debug/Src/task1_it.su create mode 100644 task1/Debug/Startup/startup_stm32g431kbtx.d create mode 100644 task1/Debug/Startup/startup_stm32g431kbtx.o create mode 100644 task1/Debug/Startup/subdir.mk create mode 100644 task1/Debug/Startup/syscalls.cyclo create mode 100644 task1/Debug/Startup/syscalls.d create mode 100644 task1/Debug/Startup/syscalls.o create mode 100644 task1/Debug/Startup/syscalls.su create mode 100644 task1/Debug/Startup/sysmem.cyclo create mode 100644 task1/Debug/Startup/sysmem.d create mode 100644 task1/Debug/Startup/sysmem.o create mode 100644 task1/Debug/Startup/sysmem.su create mode 100644 task1/Debug/makefile create mode 100644 task1/Debug/objects.list create mode 100644 task1/Debug/objects.mk create mode 100644 task1/Debug/sources.mk create mode 100755 task1/Debug/task1.elf create mode 100644 task1/Debug/task1.list create mode 100644 task1/Debug/task1.map create mode 100644 task1/Inc/STefi-Light.h create mode 100644 task1/Inc/cmsis_compiler.h create mode 100644 task1/Inc/cmsis_gcc.h create mode 100644 task1/Inc/cmsis_version.h create mode 100644 task1/Inc/core_cm4.h create mode 100644 task1/Inc/mpu_armv7.h create mode 100644 task1/Inc/stm32g431xx.h create mode 100644 task1/Inc/system_stm32g4xx.h create mode 100644 task1/STM32G431KBTX_FLASH.ld create mode 100644 task1/Src/task1.c create mode 100644 task1/Src/task1_it.c create mode 100644 task1/Startup/startup_stm32g431kbtx.s create mode 100644 task1/Startup/syscalls.c create mode 100644 task1/Startup/sysmem.c create mode 100644 task1/task1.launch create mode 100644 task2/.cproject create mode 100644 task2/.project create mode 100644 task2/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs create mode 100644 task2/.settings/language.settings.xml create mode 100644 task2/.settings/org.eclipse.cdt.codan.core.prefs create mode 100644 task2/.settings/org.eclipse.cdt.core.prefs create mode 100644 task2/.settings/org.eclipse.core.resources.prefs create mode 100644 task2/G431_addr.s create mode 100644 task2/ldscript_rom.ld create mode 100644 task2/makefile create mode 100644 task2/task2.launch create mode 100644 task2/task2.s create mode 100644 task3/.cproject create mode 100644 task3/.project create mode 100644 task3/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs create mode 100644 task3/.settings/language.settings.xml create mode 100644 task3/.settings/org.eclipse.core.resources.prefs create mode 100644 task3/Debug/Src/subdir.mk create mode 100644 task3/Debug/Startup/subdir.mk create mode 100644 task3/Debug/makefile create mode 100644 task3/Debug/objects.list create mode 100644 task3/Debug/objects.mk create mode 100644 task3/Debug/sources.mk create mode 100644 task3/Inc/STefi-Light.h create mode 100644 task3/Inc/cmsis_compiler.h create mode 100644 task3/Inc/cmsis_gcc.h create mode 100644 task3/Inc/cmsis_version.h create mode 100644 task3/Inc/core_cm4.h create mode 100644 task3/Inc/mpu_armv7.h create mode 100644 task3/Inc/stm32g431xx.h create mode 100644 task3/Inc/system_stm32g4xx.h create mode 100644 task3/STM32G431KBTX_FLASH.ld create mode 100644 task3/Src/task3.c create mode 100644 task3/Src/task3_it.c create mode 100644 task3/Startup/startup_stm32g431kbtx.s create mode 100644 task3/Startup/syscalls.c create mode 100644 task3/Startup/sysmem.c create mode 100644 task3/task3 Debug.launch create mode 100644 task3/task3.launch create mode 100644 task4/.cproject create mode 100644 task4/.project create mode 100644 task4/.settings/language.settings.xml create mode 100644 task4/.settings/org.eclipse.core.resources.prefs create mode 100644 task4/Debug/Src/subdir.mk create mode 100644 task4/Debug/Startup/subdir.mk create mode 100644 task4/Debug/makefile create mode 100644 task4/Debug/objects.list create mode 100644 task4/Debug/objects.mk create mode 100644 task4/Debug/sources.mk create mode 100644 task4/Inc/STefi-Light.h create mode 100644 task4/Inc/cmsis_compiler.h create mode 100644 task4/Inc/cmsis_gcc.h create mode 100644 task4/Inc/cmsis_version.h create mode 100644 task4/Inc/core_cm4.h create mode 100644 task4/Inc/mpu_armv7.h create mode 100644 task4/Inc/stm32g431xx.h create mode 100644 task4/Inc/system_stm32g4xx.h create mode 100644 task4/STM32G431KBTX_FLASH.ld create mode 100644 task4/Src/task4.c create mode 100644 task4/Src/task4_it.c create mode 100644 task4/Startup/startup_stm32g431kbtx.s create mode 100644 task4/Startup/syscalls.c create mode 100644 task4/Startup/sysmem.c create mode 100644 task4/task4.launch diff --git a/.metadata/.ide.log b/.metadata/.ide.log new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.lock b/.metadata/.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.log b/.metadata/.log new file mode 100644 index 0000000..45c7468 --- /dev/null +++ b/.metadata/.log @@ -0,0 +1,2534 @@ +!SESSION 2024-09-27 17:58:25.907 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY org.eclipse.core.resources 4 567 2024-09-27 17:58:59.060 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2024-09-27 17:58:59.060 +!MESSAGE Could not read metadata for '.org.eclipse.egit.core.cmp'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/.org.eclipse.egit.core.cmp)[567]: java.lang.Exception: The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:955) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2620) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2324) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:571) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:258) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:545) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:818) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:810) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371) + at org.eclipse.osgi.container.Module.doStart(Module.java:605) + at org.eclipse.osgi.container.Module.start(Module.java:468) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:496) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2024-09-27 17:58:59.076 +!MESSAGE The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for '.org.eclipse.egit.core.cmp' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:955) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2620) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2324) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:571) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:258) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:545) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:818) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:810) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371) + at org.eclipse.osgi.container.Module.doStart(Module.java:605) + at org.eclipse.osgi.container.Module.start(Module.java:468) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:496) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2024-09-27 17:59:19.765 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2024-09-27 17:59:19.765 +!MESSAGE Log4j2 initialized with config file C:\Temp\WS_Neu\mct_bei_workspace_24s\.metadata\.log4j2.xml + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2024-09-27 17:59:24.600 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.ui.views.ResourceNavigator" id and the "Navigator (Deprecated)" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2024-09-27 17:59:24.603 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.egit.ui.RepositoriesView" id and the "Git Repositories" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2024-09-27 17:59:24.605 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.egit.ui.StagingView" id and the "Git Staging" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2024-09-27 17:59:24.606 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.egit.ui.InteractiveRebaseView" id and the "Git Interactive Rebase" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2024-09-27 17:59:24.609 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.egit.ui.CompareTreeView" id and the "Git Tree Compare" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.e4.ui.workbench 2 0 2024-09-27 17:59:24.609 +!MESSAGE Removing PartDescriptorImpl with the "org.eclipse.egit.ui.ReflogView" id and the "Git Reflog" label.It points to the non available "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" class. Bundle might have been uninstalled + +!ENTRY org.eclipse.cdt.core 1 0 2024-09-27 17:59:26.514 +!MESSAGE Indexed 'task1' (2 sources, 7 headers) in 0,785 sec: 928 declarations; 1.199 references; 3 unresolved inclusions; 29 syntax errors; 757 unresolved names (26 %) + +!ENTRY org.eclipse.cdt.core 1 0 2024-09-27 17:59:26.527 +!MESSAGE Indexed 'task2' (0 sources, 0 headers) in 0,001 sec: 0 declarations; 0 references; 0 unresolved inclusions; 0 syntax errors; 0 unresolved names (0 %) + +!ENTRY org.eclipse.cdt.core 1 0 2024-09-27 17:59:26.537 +!MESSAGE Indexed 'task3' (0 sources, 0 headers) in 0,001 sec: 0 declarations; 0 references; 0 unresolved inclusions; 0 syntax errors; 0 unresolved names (0 %) + +!ENTRY org.eclipse.cdt.core 1 0 2024-09-27 17:59:27.031 +!MESSAGE Indexed 'task4' (2 sources, 7 headers) in 0,493 sec: 924 declarations; 1.191 references; 3 unresolved inclusions; 29 syntax errors; 753 unresolved names (26 %) + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2024-09-27 17:59:27.401 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.cdt.core 1 0 2024-09-27 17:59:27.543 +!MESSAGE Indexed 'task5' (3 sources, 9 headers) in 0,51 sec: 1.054 declarations; 1.479 references; 3 unresolved inclusions; 29 syntax errors; 823 unresolved names (25 %) +!SESSION 2024-09-27 18:05:33.797 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 -data C:\Temp\WS_Neu\mct_bei_workspace_24s + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2024-09-27 18:05:45.647 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2024-09-27 18:05:45.647 +!MESSAGE Log4j2 initialized with config file C:\Temp\WS_Neu\mct_bei_workspace_24s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2024-09-27 18:05:50.120 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-10 09:06:52.456 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-10 09:08:26.011 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-10 09:08:26.012 +!MESSAGE Log4j2 initialized with config file C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-10 09:08:34.198 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-10 09:29:14.826 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-10 09:29:29.747 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-10 09:29:29.747 +!MESSAGE Log4j2 initialized with config file C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-10 09:29:36.878 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:39.919 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:40.053 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:40.175 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:40.277 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 1 0 2025-02-10 09:31:40.316 +!MESSAGE Indexed 'task3' (0 sources, 0 headers) in 0 sec: 0 declarations; 0 references; 0 unresolved inclusions; 0 syntax errors; 0 unresolved names (0%) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:40.415 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:40.509 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:40.599 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:31:40.684 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.119 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.209 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.295 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.380 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 1 0 2025-02-10 09:38:04.441 +!MESSAGE Indexed 'task3' (0 sources, 0 headers) in 0.001 sec: 0 declarations; 0 references; 0 unresolved inclusions; 0 syntax errors; 0 unresolved names (0%) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.526 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.619 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.761 +!MESSAGE Error: Cannot run program "gcc": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "gcc": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 4 0 2025-02-10 09:38:04.887 +!MESSAGE Error: Cannot run program "g++": Launching failed +!STACK 0 +java.io.IOException: Cannot run program "g++": Launching failed + at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:450) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:147) + at org.eclipse.cdt.utils.spawner.Spawner.(Spawner.java:134) + at org.eclipse.cdt.utils.spawner.ProcessFactory$Builder.start(ProcessFactory.java:273) + at org.eclipse.cdt.utils.spawner.ProcessFactory.exec(ProcessFactory.java:366) + at org.eclipse.cdt.core.CommandLauncher.execute(CommandLauncher.java:189) + at org.eclipse.cdt.internal.core.BuildRunnerHelper.build(BuildRunnerHelper.java:274) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runProgramForLanguage(AbstractBuiltinSpecsDetector.java:808) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForLanguage(AbstractBuiltinSpecsDetector.java:736) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector.runForEachLanguage(AbstractBuiltinSpecsDetector.java:601) + at org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuiltinSpecsDetector$1.runInWorkspace(AbstractBuiltinSpecsDetector.java:527) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.ui 4 0 2025-02-10 09:40:09.949 +!MESSAGE Unhandled event loop exception +!STACK 0 +java.lang.NullPointerException: Cannot invoke "com.st.stm32cube.common.mx.targetselector.IdeMcuFinder.getBoard()" because "this.mcuFinder" is null + at com.st.stm32cube.common.mx.targetselector.TargetSelectorAdapter.getBoard(TargetSelectorAdapter.java:372) + at com.st.stm32cube.common.projectcreation.ui.wizard.TargetSetupPageAbstract.getSelectedTargetName(TargetSetupPageAbstract.java:462) + at com.st.stm32cube.common.projectcreation.ui.wizard.ProjectSetupPageAbstract.getTargetObject(ProjectSetupPageAbstract.java:1100) + at com.st.stm32cube.common.projectcreation.ui.projectStructure.ProjectStructureCompositeFactory.createProjectStructureComposite(ProjectStructureCompositeFactory.java:22) + at com.st.stm32cube.common.projectcreation.ui.wizard.ProjectSetupPageAbstract.createControl(ProjectSetupPageAbstract.java:388) + at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:180) + at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:744) + at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:636) + at org.eclipse.jface.window.Window.create(Window.java:431) + at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1094) + at org.eclipse.ui.internal.navigator.wizards.WizardShortcutAction.run(WizardShortcutAction.java:99) + at org.eclipse.jface.action.Action.runWithEvent(Action.java:474) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4071) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3659) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.SwtInputBlocker.open(SwtInputBlocker.java:55) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.SwtInputBlocker.block(SwtInputBlocker.java:111) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment.invokeAwt(AwtEnvironment.java:179) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment.invokeAwtAndBlockSwt(AwtEnvironment.java:206) + at com.st.stm32cube.common.mx.editor.CubeMxEditor.dispose(CubeMxEditor.java:1918) + at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:264) + at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:976) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:938) + at org.eclipse.e4.core.internal.di.InjectorImpl.uninject(InjectorImpl.java:181) + at org.eclipse.e4.core.internal.di.Requestor.uninject(Requestor.java:177) + at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:89) + at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103) + at org.eclipse.e4.core.internal.contexts.EclipseContext.removeListenersTo(EclipseContext.java:487) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.uninject(ContextInjectionFactory.java:185) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:947) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:861) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:845) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeTopicToBeRendered(PartRenderingEngine.java:185) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:92) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:208) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:206) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:133) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:314) + at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.hidePart(PartServiceImpl.java:1410) + at org.eclipse.ui.internal.WorkbenchPage.hidePart(WorkbenchPage.java:1543) + at org.eclipse.ui.internal.WorkbenchPage.hidePart(WorkbenchPage.java:1495) + at org.eclipse.ui.internal.WorkbenchPage.closeEditors(WorkbenchPage.java:1465) + at org.eclipse.ui.actions.CloseResourceAction.closeEditors(CloseResourceAction.java:433) + at org.eclipse.ui.actions.CloseResourceAction$1.run(CloseResourceAction.java:358) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.ui.actions.CloseResourceAction.lambda$2(CloseResourceAction.java:349) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.actions.CloseResourceAction.closeMatchingEditors(CloseResourceAction.java:362) + at org.eclipse.ui.actions.DeleteResourceAction.run(DeleteResourceAction.java:453) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:121) + at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:99) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:298) + at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:232) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174) + at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165) + at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488) + at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485) + at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213) + at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308) + at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:580) + at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:655) + at org.eclipse.e4.ui.bindings.keys.OutOfOrderListener.handleEvent(OutOfOrderListener.java:75) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1075) + at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1117) + at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1113) + at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1840) + at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:5153) + at org.eclipse.swt.widgets.Tree.WM_KEYDOWN(Tree.java:6274) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4776) + at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:6142) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) + +!ENTRY org.eclipse.cdt.core 1 0 2025-02-10 09:41:48.677 +!MESSAGE Indexed 'task3' (19 sources, 81 headers) in 1.95 sec: 4,748 declarations; 19,315 references; 0 unresolved inclusions; 1 syntax errors; 2 unresolved names (0.0083%) + +!ENTRY com.st.stm32cube.ide.mcu.debug.launch 2 0 2025-02-10 09:43:34.499 +!MESSAGE Won't launch debug session since we failed to locate the binary. + +!ENTRY org.eclipse.ui 4 0 2025-02-10 14:10:17.021 +!MESSAGE Unhandled event loop exception +!STACK 0 +java.lang.NullPointerException: Cannot invoke "org.eclipse.e4.ui.model.application.ui.basic.MWindow.getContext()" because "window" is null + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.lambda$4(WBWRenderer.java:567) + at org.eclipse.swt.events.ShellListener$2.shellClosed(ShellListener.java:102) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:102) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1075) + at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:269) + at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1550) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4746) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.SwtInputBlocker.open(SwtInputBlocker.java:55) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.SwtInputBlocker.block(SwtInputBlocker.java:111) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment.invokeAwt(AwtEnvironment.java:179) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$3.widgetDisposed(EmbeddedSwingComposite.java:244) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:127) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1071) + at org.eclipse.swt.widgets.Widget.release(Widget.java:814) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:168) + at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:711) + at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1375) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1364) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Widget.dispose(Widget.java:428) + at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:392) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.disposeWidget(SWTPartRenderer.java:183) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:938) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:861) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:845) + at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:2089) + at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1721) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:1745) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1745) + at org.eclipse.ui.internal.Workbench$11.run(Workbench.java:1134) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1117) + at org.eclipse.ui.internal.Workbench.lambda$4(Workbench.java:1418) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.Workbench.close(Workbench.java:1418) + at org.eclipse.ui.internal.Workbench.close(Workbench.java:1394) + at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1718) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:1745) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1745) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1754) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$2(WorkbenchWindow.java:505) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.lambda$4(WBWRenderer.java:570) + at org.eclipse.swt.events.ShellListener$2.shellClosed(ShellListener.java:102) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:102) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1075) + at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:269) + at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1550) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4746) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) + +!ENTRY org.eclipse.ui 4 0 2025-02-10 14:10:17.058 +!MESSAGE Unhandled event loop exception +!STACK 0 +org.eclipse.swt.SWTException: Widget is disposed + at org.eclipse.swt.SWT.error(SWT.java:4918) + at org.eclipse.swt.SWT.error(SWT.java:4833) + at org.eclipse.swt.SWT.error(SWT.java:4804) + at org.eclipse.swt.widgets.Widget.error(Widget.java:450) + at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:369) + at org.eclipse.swt.widgets.Control.getShell(Control.java:1545) + at org.eclipse.swt.awt.SWT_AWT.lambda$4(SWT_AWT.java:222) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1071) + at org.eclipse.swt.widgets.Widget.release(Widget.java:814) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:168) + at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:711) + at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1375) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1364) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Widget.dispose(Widget.java:428) + at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:392) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.disposeWidget(SWTPartRenderer.java:183) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:938) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:861) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:845) + at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:2089) + at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1721) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:1745) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1745) + at org.eclipse.ui.internal.Workbench$11.run(Workbench.java:1134) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1117) + at org.eclipse.ui.internal.Workbench.lambda$4(Workbench.java:1418) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.Workbench.close(Workbench.java:1418) + at org.eclipse.ui.internal.Workbench.close(Workbench.java:1394) + at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1718) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:1745) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1745) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1754) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$2(WorkbenchWindow.java:505) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.lambda$4(WBWRenderer.java:570) + at org.eclipse.swt.events.ShellListener$2.shellClosed(ShellListener.java:102) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:102) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1075) + at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:269) + at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1550) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4746) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) + +!ENTRY org.eclipse.ui 4 0 2025-02-10 14:10:17.060 +!MESSAGE Unhandled event loop exception +!STACK 0 +org.eclipse.swt.SWTException: Widget is disposed + at org.eclipse.swt.SWT.error(SWT.java:4918) + at org.eclipse.swt.SWT.error(SWT.java:4833) + at org.eclipse.swt.SWT.error(SWT.java:4804) + at org.eclipse.swt.widgets.Widget.error(Widget.java:450) + at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:369) + at org.eclipse.swt.widgets.Control.removeControlListener(Control.java:2574) + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.SwtFocusHandler$2.widgetDisposed(SwtFocusHandler.java:67) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:127) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1071) + at org.eclipse.swt.widgets.Widget.release(Widget.java:814) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:925) + at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:168) + at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:711) + at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1375) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1364) + at org.eclipse.swt.widgets.Widget.release(Widget.java:821) + at org.eclipse.swt.widgets.Widget.dispose(Widget.java:428) + at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:392) + at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.disposeWidget(SWTPartRenderer.java:183) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:938) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:861) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:845) + at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:2089) + at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1721) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:1745) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1745) + at org.eclipse.ui.internal.Workbench$11.run(Workbench.java:1134) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1117) + at org.eclipse.ui.internal.Workbench.lambda$4(Workbench.java:1418) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.Workbench.close(Workbench.java:1418) + at org.eclipse.ui.internal.Workbench.close(Workbench.java:1394) + at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1718) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:1745) + at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1745) + at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1754) + at org.eclipse.ui.internal.WorkbenchWindow.lambda$2(WorkbenchWindow.java:505) + at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.lambda$4(WBWRenderer.java:570) + at org.eclipse.swt.events.ShellListener$2.shellClosed(ShellListener.java:102) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:102) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1075) + at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:269) + at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1550) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4746) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method) + at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:508) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4845) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) +!SESSION 2025-02-17 11:07:52.748 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-17 11:08:08.193 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-17 11:08:08.196 +!MESSAGE Log4j2 initialized with config file C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-17 11:08:15.704 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.cdt.core 1 0 2025-02-17 11:14:56.257 +!MESSAGE Indexed 'A3_Timer' (4 sources, 8 headers) in 1 sec: 1,094 declarations; 1,418 references; 13 unresolved inclusions; 29 syntax errors; 846 unresolved names (25%) + +!ENTRY org.eclipse.cdt.core 1 0 2025-02-17 11:17:37.076 +!MESSAGE Indexed 'task3' (0 sources, 0 headers) in 0 sec: 0 declarations; 0 references; 0 unresolved inclusions; 0 syntax errors; 0 unresolved names (0%) + +!ENTRY org.eclipse.cdt.dsf.gdb 4 104 2025-02-17 11:18:00.026 +!MESSAGE Program file does not exist +!STACK 0 +java.io.FileNotFoundException: C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 104 2025-02-17 11:18:00.027 +!MESSAGE C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found +!STACK 0 +java.io.FileNotFoundException: C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.dsf.gdb 4 104 2025-02-17 11:19:01.357 +!MESSAGE Program file does not exist +!STACK 0 +java.io.FileNotFoundException: C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 104 2025-02-17 11:19:01.357 +!MESSAGE C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found +!STACK 0 +java.io.FileNotFoundException: C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.dsf.gdb 4 104 2025-02-17 11:20:59.891 +!MESSAGE Program file does not exist +!STACK 0 +java.io.FileNotFoundException: C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 104 2025-02-17 11:20:59.891 +!MESSAGE C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found +!STACK 0 +java.io.FileNotFoundException: C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\task3\Debug\A3_Timer.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.cdt.core 1 0 2025-02-17 11:23:31.989 +!MESSAGE Indexed 'task3' (4 sources, 8 headers) in 0.373 sec: 1,094 declarations; 1,455 references; 13 unresolved inclusions; 29 syntax errors; 850 unresolved names (25%) + +!ENTRY org.eclipse.ui 4 0 2025-02-17 14:09:28.315 +!MESSAGE Unhandled event loop exception +!STACK 0 +java.util.ConcurrentModificationException + at org.eclipse.emf.common.util.AbstractEList$EIterator.checkModCount(AbstractEList.java:751) + at org.eclipse.emf.common.util.AbstractEList$EIterator.doNext(AbstractEList.java:705) + at org.eclipse.emf.common.util.AbstractEList$EIterator.next(AbstractEList.java:685) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter.updateElementVisibility(MenuManagerRendererFilter.java:187) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.showMenu(MenuManagerShowProcessor.java:256) + at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerShowProcessor.menuAboutToHide(MenuManagerShowProcessor.java:114) + at org.eclipse.jface.internal.MenuManagerEventHelper.showEventPostHelper(MenuManagerEventHelper.java:95) + at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:469) + at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:495) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:259) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4273) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1071) + at org.eclipse.swt.widgets.Control.WM_INITMENUPOPUP(Control.java:5141) + at org.eclipse.swt.widgets.Control.windowProc(Control.java:4773) + at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) + at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1478) + at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2305) + at org.eclipse.swt.widgets.Display.windowProc(Display.java:5039) + at org.eclipse.swt.internal.win32.OS.TrackPopupMenu(Native Method) + at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:237) + at org.eclipse.swt.widgets.Display.runPopups(Display.java:4112) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at org.eclipse.equinox.launcher.Main.run(Main.java:1459) +!SESSION 2025-02-18 08:46:25.126 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-18 08:47:04.949 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-18 08:47:04.951 +!MESSAGE Log4j2 initialized with config file C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-18 08:47:11.383 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-18 14:26:12.500 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-18 14:26:26.537 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-18 14:26:26.537 +!MESSAGE Log4j2 initialized with config file C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-18 14:26:33.753 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-19 10:27:40.840 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-19 10:30:14.071 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-19 10:30:14.122 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-19 10:30:23.446 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-19 10:37:17.109 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-19 10:37:26.231 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-19 10:37:26.239 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-19 10:37:34.253 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-19 11:22:57.294 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-19 11:23:05.808 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-19 11:23:05.875 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-19 11:23:13.822 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-19 12:52:35.546 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 -data U:\MCT\SoSe25\BEI\mct_bei_workspace_25s + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-19 12:52:42.794 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-19 12:52:42.803 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-19 12:52:50.827 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-20 08:33:03.535 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-20 08:33:16.840 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-20 08:33:16.845 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-20 08:33:25.057 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-20 09:47:14.434 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-20 09:47:23.460 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-20 09:47:23.466 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-20 09:47:32.023 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-21 09:13:17.423 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 -data U:\MCT\SoSe25\BEI\mct_bei_workspace_25s + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-21 09:13:24.697 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-21 09:13:24.704 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-21 09:13:31.977 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-25 07:52:05.009 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-25 07:52:52.380 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-25 07:52:52.400 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-25 07:53:02.221 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-25 07:54:42.621 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 -data U:\MCT\SoSe25\BEI\mct_bei_workspace_25s + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-25 07:54:50.204 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-25 07:54:50.219 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-25 07:54:57.878 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-25 07:57:15.665 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-25 07:57:24.866 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-25 07:57:24.866 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-25 07:57:31.545 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.core.jobs 2 2 2025-02-25 07:57:36.745 +!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.ui.internal.Workbench$39 +!SESSION 2025-02-25 08:06:28.531 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-25 08:06:46.198 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-25 08:06:46.198 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-25 08:06:52.291 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-25 08:08:11.038 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-25 08:08:23.210 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-25 08:08:23.210 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-25 08:08:30.447 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-28 15:33:52.839 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-28 15:34:16.983 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-28 15:34:17.020 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-28 15:34:24.524 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-02-28 15:40:59.790 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 -data U:\MCT\SoSe25\BEI\mct_bei_workspace_25s + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-02-28 15:41:07.386 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-02-28 15:41:07.409 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-02-28 15:41:15.683 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-03-06 08:38:11.624 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-03-06 08:38:36.421 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-03-06 08:38:36.433 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-03-06 08:38:45.168 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-03-25 08:32:05.952 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-03-25 08:32:32.847 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-03-25 08:32:32.858 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-03-25 08:32:42.062 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-03-27 09:56:18.813 ----------------------------------------------- +eclipse.buildId=Version 1.16.1 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -data /users/kerschensteinerto/ADS1/home/MCT/SoSe25/BEI/mct_bei_workspace_25s -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-03-27 09:56:20.780 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-03-27 09:56:20.783 +!MESSAGE Log4j2 initialized with config file /users/kerschensteinerto/ADS1/home/MCT/SoSe25/BEI/mct_bei_workspace_25s/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-03-27 09:56:22.801 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.core.jobs 4 2 2025-03-27 13:15:24.077 +!MESSAGE An internal error occurred during: "Execute Debug Command". +!STACK 0 +org.eclipse.core.runtime.AssertionFailedException: assertion failed: The application has not been initialized. + at org.eclipse.core.runtime.Assert.isTrue(Assert.java:119) + at org.eclipse.core.internal.runtime.InternalPlatform.assertInitialized(InternalPlatform.java:183) + at org.eclipse.core.internal.runtime.InternalPlatform.getAdapterManager(InternalPlatform.java:204) + at org.eclipse.core.runtime.Platform.getAdapterManager(Platform.java:662) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.getAdapter(GdbLaunch.java:454) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.disconnect(GdbLaunch.java:338) + at org.eclipse.debug.internal.core.commands.DisconnectCommand.execute(DisconnectCommand.java:35) + at org.eclipse.debug.internal.core.commands.ForEachCommand.doExecute(ForEachCommand.java:36) + at org.eclipse.debug.core.commands.AbstractDebugCommand$1.run(AbstractDebugCommand.java:215) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SESSION 2025-04-01 07:52:47.715 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-04-01 07:53:57.710 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-04-01 07:53:57.721 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-04-01 07:54:07.580 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-04-02 07:50:13.635 ----------------------------------------------- +eclipse.buildId=Version 1.16.1 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-04-02 07:50:28.883 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-04-02 07:50:28.885 +!MESSAGE Log4j2 initialized with config file /users/kerschensteinerto/ADS1/home/MCT/SoSe25/BEI/mct_bei_workspace_25s/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-04-02 07:50:31.113 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-04-02 14:12:37.568 ----------------------------------------------- +eclipse.buildId=Version 1.16.1 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-04-02 14:13:40.895 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-04-02 14:13:40.897 +!MESSAGE Log4j2 initialized with config file /users/kerschensteinerto/ADS1/home/MCT/SoSe25/BEI/mct_bei_workspace_25s/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-04-02 14:13:43.139 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.core.jobs 4 2 2025-04-02 17:13:01.518 +!MESSAGE An internal error occurred during: "Execute Debug Command". +!STACK 0 +org.eclipse.core.runtime.AssertionFailedException: assertion failed: The application has not been initialized. + at org.eclipse.core.runtime.Assert.isTrue(Assert.java:119) + at org.eclipse.core.internal.runtime.InternalPlatform.assertInitialized(InternalPlatform.java:183) + at org.eclipse.core.internal.runtime.InternalPlatform.getAdapterManager(InternalPlatform.java:204) + at org.eclipse.core.runtime.Platform.getAdapterManager(Platform.java:662) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.getAdapter(GdbLaunch.java:454) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.disconnect(GdbLaunch.java:338) + at org.eclipse.debug.internal.core.commands.DisconnectCommand.execute(DisconnectCommand.java:35) + at org.eclipse.debug.internal.core.commands.ForEachCommand.doExecute(ForEachCommand.java:36) + at org.eclipse.debug.core.commands.AbstractDebugCommand$1.run(AbstractDebugCommand.java:215) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SESSION 2025-04-03 08:23:56.793 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-04-03 08:24:18.559 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-04-03 08:24:18.581 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-04-03 08:24:27.688 +!MESSAGE Started RMI Server, listening on port 41338 +!SESSION 2025-05-26 08:17:15.582 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 -data U:\MCT\SoSe25\BEI\mct_bei_workspace_25s + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-05-26 08:17:23.867 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-05-26 08:17:23.960 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-05-26 08:17:31.863 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-06-18 09:24:25.271 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-06-18 09:24:58.244 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-06-18 09:24:58.259 +!MESSAGE Log4j2 initialized with config file U:\MCT\SoSe25\BEI\mct_bei_workspace_25s\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-06-18 09:25:07.051 +!MESSAGE Started RMI Server, listening on port 41338 +!SESSION 2025-06-24 12:47:39.968 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-06-24 12:48:10.624 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-06-24 12:48:10.636 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-06-24 12:48:19.221 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-07-21 09:10:34.232 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-07-21 09:10:59.776 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-07-21 09:10:59.790 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-07-21 09:11:07.570 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-07-21 10:09:36.077 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-07-21 10:13:22.722 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-07-21 10:13:22.739 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-07-21 10:13:29.947 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-07-21 10:36:27.072 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-07-21 10:36:48.132 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-07-21 10:36:48.354 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-07-21 10:36:55.050 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-07-23 09:16:10.411 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-07-23 09:16:30.722 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-07-23 09:16:30.915 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-07-23 09:16:37.993 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-07-25 09:39:42.106 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-07-25 09:39:56.701 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-07-25 09:39:56.715 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-07-25 09:40:06.032 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-08-25 11:41:41.378 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-25 11:41:54.226 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-25 11:41:54.230 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-25 11:42:03.561 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-09-02 09:27:21.562 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-02 09:27:42.672 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-02 09:27:42.693 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-02 09:27:51.352 +!MESSAGE Started RMI Server, listening on port 41339 +!SESSION 2025-09-03 09:36:54.104 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-03 09:37:12.073 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-03 09:37:12.083 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-03 09:37:20.075 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-09-03 09:54:50.899 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-03 09:55:01.931 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-03 09:55:01.978 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-03 09:55:10.414 +!MESSAGE Started RMI Server, listening on port 41338 +!SESSION 2025-09-08 14:20:24.233 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-08 14:20:42.642 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-08 14:20:42.656 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-08 14:20:52.374 +!MESSAGE Started RMI Server, listening on port 41339 +!SESSION 2025-09-09 08:18:08.523 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-09 08:18:25.752 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-09 08:18:25.764 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-09 08:18:34.427 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-09-10 12:58:33.628 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-10 13:00:49.592 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-10 13:00:49.603 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-10 13:00:56.990 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.cdt.dsf.gdb 4 5012 2025-09-10 15:07:31.074 +!MESSAGE Error in final launch sequence: + +Setup exceptions +!STACK 1 +org.eclipse.core.runtime.CoreException: Setup exceptions + at org.eclipse.cdt.dsf.concurrent.Query.get(Query.java:112) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:252) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:336) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 com.st.stm32cube.ide.mcu.debug.launch 4 0 2025-09-10 15:07:31.075 +!MESSAGE Setup exceptions +!SESSION 2025-09-11 07:35:49.449 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-11 07:36:01.484 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-11 07:36:01.496 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-11 07:36:09.574 +!MESSAGE Started RMI Server, listening on port 41338 + +!ENTRY org.eclipse.cdt.ui 4 0 2025-09-11 08:28:53.061 +!MESSAGE Error in CDT UI during reconcile +!STACK 1 +C Model Exception: C Model Status [Element task2.s does not exist.] + at org.eclipse.cdt.internal.core.model.CElement.newNotPresentException(CElement.java:485) + at org.eclipse.cdt.internal.core.model.TranslationUnit.makeConsistent(TranslationUnit.java:583) + at org.eclipse.cdt.internal.core.model.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:65) + at org.eclipse.cdt.internal.core.model.CModelOperation.execute(CModelOperation.java:346) + at org.eclipse.cdt.internal.core.model.CModelOperation.run(CModelOperation.java:613) + at org.eclipse.cdt.internal.core.model.CModelOperation.runOperation(CModelOperation.java:641) + at org.eclipse.cdt.internal.core.model.WorkingCopy.reconcile(WorkingCopy.java:365) + at org.eclipse.cdt.internal.ui.editor.asm.AsmReconcilingStrategy.reconcile(AsmReconcilingStrategy.java:95) + at org.eclipse.cdt.internal.ui.editor.asm.AsmReconcilingStrategy.reconcile(AsmReconcilingStrategy.java:51) + at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:78) + at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:207) +!SUBENTRY 1 org.eclipse.cdt.core 4 969 2025-09-11 08:28:53.064 +!MESSAGE Element task2.s does not exist. + +!ENTRY org.eclipse.cdt.dsf.gdb 4 5012 2025-09-11 11:08:25.895 +!MESSAGE Error in final launch sequence: + +Setup exceptions +!STACK 1 +org.eclipse.core.runtime.CoreException: Setup exceptions + at org.eclipse.cdt.dsf.concurrent.Query.get(Query.java:112) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:252) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:336) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 com.st.stm32cube.ide.mcu.debug.launch 4 0 2025-09-11 11:08:25.895 +!MESSAGE Setup exceptions + +!ENTRY org.eclipse.cdt.dsf.gdb 4 5012 2025-09-11 12:33:44.913 +!MESSAGE Error in final launch sequence: + +Setup exceptions +!STACK 1 +org.eclipse.core.runtime.CoreException: Setup exceptions + at org.eclipse.cdt.dsf.concurrent.Query.get(Query.java:112) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:252) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:336) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 com.st.stm32cube.ide.mcu.debug.launch 4 0 2025-09-11 12:33:44.913 +!MESSAGE Setup exceptions + +!ENTRY org.eclipse.core.jobs 4 2 2025-09-11 15:59:47.348 +!MESSAGE An internal error occurred during: "Execute Debug Command". +!STACK 0 +org.eclipse.core.runtime.AssertionFailedException: assertion failed: The application has not been initialized. + at org.eclipse.core.runtime.Assert.isTrue(Assert.java:119) + at org.eclipse.core.internal.runtime.InternalPlatform.assertInitialized(InternalPlatform.java:183) + at org.eclipse.core.internal.runtime.InternalPlatform.getAdapterManager(InternalPlatform.java:204) + at org.eclipse.core.runtime.Platform.getAdapterManager(Platform.java:662) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.getAdapter(GdbLaunch.java:454) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.disconnect(GdbLaunch.java:338) + at org.eclipse.debug.internal.core.commands.DisconnectCommand.execute(DisconnectCommand.java:35) + at org.eclipse.debug.internal.core.commands.ForEachCommand.doExecute(ForEachCommand.java:36) + at org.eclipse.debug.core.commands.AbstractDebugCommand$1.run(AbstractDebugCommand.java:215) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.core.jobs 2 2 2025-09-11 15:59:47.666 +!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.cdt.dsf.gdb.internal.ui.console.GdbBasicCliConsole$InputReadJob +!SESSION 2025-09-12 07:47:43.121 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-12 07:47:55.665 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-12 07:47:55.735 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-12 07:48:04.178 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.cdt.ui 4 0 2025-09-12 09:15:01.610 +!MESSAGE Error in CDT UI during reconcile +!STACK 1 +C Model Exception: C Model Status [Element task2.s does not exist.] + at org.eclipse.cdt.internal.core.model.CElement.newNotPresentException(CElement.java:485) + at org.eclipse.cdt.internal.core.model.TranslationUnit.makeConsistent(TranslationUnit.java:583) + at org.eclipse.cdt.internal.core.model.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:65) + at org.eclipse.cdt.internal.core.model.CModelOperation.execute(CModelOperation.java:346) + at org.eclipse.cdt.internal.core.model.CModelOperation.run(CModelOperation.java:613) + at org.eclipse.cdt.internal.core.model.CModelOperation.runOperation(CModelOperation.java:641) + at org.eclipse.cdt.internal.core.model.WorkingCopy.reconcile(WorkingCopy.java:365) + at org.eclipse.cdt.internal.ui.editor.asm.AsmReconcilingStrategy.reconcile(AsmReconcilingStrategy.java:95) + at org.eclipse.cdt.internal.ui.editor.asm.AsmReconcilingStrategy.reconcile(AsmReconcilingStrategy.java:51) + at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:78) + at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:207) +!SUBENTRY 1 org.eclipse.cdt.core 4 969 2025-09-12 09:15:01.617 +!MESSAGE Element task2.s does not exist. + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 09:47:38.717 +!MESSAGE Error - No active DSF-Session. tmpSessionId = 13 (contextManager row 121) + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 09:47:38.730 +!MESSAGE Existing sessions are: + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 09:47:38.744 +!MESSAGE Error - No active DSF-Session. tmpSessionId = 13 (contextManager row 121) + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 09:47:38.755 +!MESSAGE Existing sessions are: + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 10:07:42.275 +!MESSAGE Error - No active DSF-Session. tmpSessionId = 20 (contextManager row 121) + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 10:07:42.286 +!MESSAGE Existing sessions are: + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 10:07:42.297 +!MESSAGE Error - No active DSF-Session. tmpSessionId = 20 (contextManager row 121) + +!ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2025-09-12 10:07:42.305 +!MESSAGE Existing sessions are: +!SESSION 2025-09-16 10:38:18.830 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-16 10:38:37.649 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-16 10:38:37.659 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-16 10:38:45.262 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-09-19 12:43:53.321 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-19 12:50:06.275 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-19 12:50:06.481 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-19 12:50:13.934 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-09-19 12:54:54.583 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-19 12:55:03.828 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-19 12:55:03.839 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-19 12:55:10.998 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-09-19 13:21:58.872 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-19 13:22:09.538 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-19 13:22:09.550 +!MESSAGE Log4j2 initialized with config file U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-19 13:22:16.872 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2026-02-28 20:03:06.192 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -data /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-02-28 20:03:08.242 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-02-28 20:03:08.242 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-02-28 20:03:10.465 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2026-02-28 20:03:35.411 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -data /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-02-28 20:03:37.421 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-02-28 20:03:37.422 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-02-28 20:03:39.520 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2026-03-01 11:22:25.664 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-03-01 11:22:29.389 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-03-01 11:22:29.390 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-03-01 11:22:31.833 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.ui 4 4 2026-03-01 11:29:06.661 +!MESSAGE To avoid deadlock while executing Display.syncExec() with argument: org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248@29348a0f, thread Worker-9: Launching task1 will interrupt UI thread. +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:06.661 +!MESSAGE Worker-9: Launching task1 thread is an instance of Worker or owns an ILock +!STACK 0 +java.lang.IllegalStateException: Call stack for thread Worker-9: Launching task1 + at java.management@17.0.11/sun.management.ThreadImpl.dumpThreads0(Native Method) + at java.management@17.0.11/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:492) + at org.eclipse.ui.internal.UILockListener.reportInterruption(UILockListener.java:214) + at org.eclipse.ui.internal.UILockListener.interruptUI(UILockListener.java:180) + at org.eclipse.ui.internal.PendingSyncExec.waitUntilExecuted(PendingSyncExec.java:92) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:142) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5959) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.handleStatus(Prompter.java:81) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.saveBeforeLaunch(LaunchConfigurationDelegate.java:245) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.preLaunchCheck(LaunchConfigurationDelegate.java:197) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.preLaunchCheck(GdbLaunchDelegate.java:371) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.preLaunchCheck(DSFDelegate.java:211) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:769) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:06.661 +!MESSAGE UI thread waiting on a job or lock. +!STACK 0 +java.lang.IllegalStateException: Call stack for thread main + at org.eclipse.swt.internal.gtk.OS.Call(Native Method) + at org.eclipse.swt.widgets.Display.sleep(Display.java:5640) + at org.eclipse.jface.window.Window.runEventLoop(Window.java:824) + at org.eclipse.jface.window.Window.open(Window.java:799) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.showSaveDialog(SaveScopeResourcesHandler.java:250) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.handleStatus(SaveScopeResourcesHandler.java:180) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.lambda$0(Prompter.java:73) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248.run(Unknown Source) + at org.eclipse.ui.internal.PendingSyncExec.run(PendingSyncExec.java:68) + at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:172) + at org.eclipse.ui.internal.UILockListener.aboutToWait(UILockListener.java:140) + at org.eclipse.core.internal.jobs.LockManager.aboutToWait(LockManager.java:105) + at org.eclipse.core.internal.jobs.JobManager.join(JobManager.java:990) + at org.eclipse.core.internal.jobs.InternalJob.join(InternalJob.java:355) + at org.eclipse.core.runtime.jobs.Job.join(Job.java:531) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disconnectTerminal(VT100TerminalControl.java:469) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disposeTerminal(VT100TerminalControl.java:415) + at org.eclipse.cdt.dsf.gdb.internal.ui.console.GdbFullCliConsolePage.dispose(GdbFullCliConsolePage.java:125) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.doDestroyPage(DebuggerConsoleView.java:304) + at org.eclipse.ui.part.PageBookView.removePage(PageBookView.java:810) + at org.eclipse.ui.part.PageBookView.partClosed(PageBookView.java:743) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.lambda$1(DebuggerConsoleView.java:375) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView$$Lambda$2129/0x0000000101685818.run(Unknown Source) + at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) + at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132) + at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5039) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4519) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.ui.internal.Workbench$$Lambda$158/0x00000001002a2058.run(Unknown Source) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base@17.0.11/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base@17.0.11/java.lang.reflect.Method.invoke(Method.java:568) + at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at app//org.eclipse.equinox.launcher.Main.run(Main.java:1459) + at app//org.eclipse.equinox.launcher.Main.main(Main.java:1432) + +!ENTRY org.eclipse.ui 4 4 2026-03-01 11:29:07.742 +!MESSAGE To avoid deadlock while executing Display.syncExec() with argument: org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248@29348a0f, thread Worker-9: Launching task1 will interrupt UI thread. +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:07.742 +!MESSAGE Worker-9: Launching task1 thread is an instance of Worker or owns an ILock +!STACK 0 +java.lang.IllegalStateException: Call stack for thread Worker-9: Launching task1 + at java.management@17.0.11/sun.management.ThreadImpl.dumpThreads0(Native Method) + at java.management@17.0.11/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:492) + at org.eclipse.ui.internal.UILockListener.reportInterruption(UILockListener.java:214) + at org.eclipse.ui.internal.UILockListener.interruptUI(UILockListener.java:180) + at org.eclipse.ui.internal.PendingSyncExec.waitUntilExecuted(PendingSyncExec.java:92) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:142) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5959) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.handleStatus(Prompter.java:81) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.saveBeforeLaunch(LaunchConfigurationDelegate.java:245) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.preLaunchCheck(LaunchConfigurationDelegate.java:197) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.preLaunchCheck(GdbLaunchDelegate.java:371) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.preLaunchCheck(DSFDelegate.java:211) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:769) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:07.742 +!MESSAGE UI thread waiting on a job or lock. +!STACK 0 +java.lang.IllegalStateException: Call stack for thread main + at org.eclipse.swt.internal.gtk.OS.Call(Native Method) + at org.eclipse.swt.widgets.Display.sleep(Display.java:5640) + at org.eclipse.jface.window.Window.runEventLoop(Window.java:824) + at org.eclipse.jface.window.Window.open(Window.java:799) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.showSaveDialog(SaveScopeResourcesHandler.java:250) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.handleStatus(SaveScopeResourcesHandler.java:180) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.lambda$0(Prompter.java:73) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248.run(Unknown Source) + at org.eclipse.ui.internal.PendingSyncExec.run(PendingSyncExec.java:68) + at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:172) + at org.eclipse.ui.internal.UILockListener.aboutToWait(UILockListener.java:140) + at org.eclipse.core.internal.jobs.LockManager.aboutToWait(LockManager.java:105) + at org.eclipse.core.internal.jobs.JobManager.join(JobManager.java:990) + at org.eclipse.core.internal.jobs.InternalJob.join(InternalJob.java:355) + at org.eclipse.core.runtime.jobs.Job.join(Job.java:531) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disconnectTerminal(VT100TerminalControl.java:469) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disposeTerminal(VT100TerminalControl.java:415) + at org.eclipse.cdt.dsf.gdb.internal.ui.console.GdbFullCliConsolePage.dispose(GdbFullCliConsolePage.java:125) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.doDestroyPage(DebuggerConsoleView.java:304) + at org.eclipse.ui.part.PageBookView.removePage(PageBookView.java:810) + at org.eclipse.ui.part.PageBookView.partClosed(PageBookView.java:743) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.lambda$1(DebuggerConsoleView.java:375) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView$$Lambda$2129/0x0000000101685818.run(Unknown Source) + at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) + at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132) + at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5039) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4519) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.ui.internal.Workbench$$Lambda$158/0x00000001002a2058.run(Unknown Source) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base@17.0.11/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base@17.0.11/java.lang.reflect.Method.invoke(Method.java:568) + at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at app//org.eclipse.equinox.launcher.Main.run(Main.java:1459) + at app//org.eclipse.equinox.launcher.Main.main(Main.java:1432) + +!ENTRY org.eclipse.ui 4 4 2026-03-01 11:29:08.823 +!MESSAGE To avoid deadlock while executing Display.syncExec() with argument: org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248@29348a0f, thread Worker-9: Launching task1 will interrupt UI thread. +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:08.823 +!MESSAGE Worker-9: Launching task1 thread is an instance of Worker or owns an ILock +!STACK 0 +java.lang.IllegalStateException: Call stack for thread Worker-9: Launching task1 + at java.management@17.0.11/sun.management.ThreadImpl.dumpThreads0(Native Method) + at java.management@17.0.11/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:492) + at org.eclipse.ui.internal.UILockListener.reportInterruption(UILockListener.java:214) + at org.eclipse.ui.internal.UILockListener.interruptUI(UILockListener.java:180) + at org.eclipse.ui.internal.PendingSyncExec.waitUntilExecuted(PendingSyncExec.java:92) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:142) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5959) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.handleStatus(Prompter.java:81) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.saveBeforeLaunch(LaunchConfigurationDelegate.java:245) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.preLaunchCheck(LaunchConfigurationDelegate.java:197) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.preLaunchCheck(GdbLaunchDelegate.java:371) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.preLaunchCheck(DSFDelegate.java:211) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:769) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:08.823 +!MESSAGE UI thread waiting on a job or lock. +!STACK 0 +java.lang.IllegalStateException: Call stack for thread main + at org.eclipse.swt.internal.gtk.OS.Call(Native Method) + at org.eclipse.swt.widgets.Display.sleep(Display.java:5640) + at org.eclipse.jface.window.Window.runEventLoop(Window.java:824) + at org.eclipse.jface.window.Window.open(Window.java:799) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.showSaveDialog(SaveScopeResourcesHandler.java:250) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.handleStatus(SaveScopeResourcesHandler.java:180) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.lambda$0(Prompter.java:73) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248.run(Unknown Source) + at org.eclipse.ui.internal.PendingSyncExec.run(PendingSyncExec.java:68) + at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:172) + at org.eclipse.ui.internal.UILockListener.aboutToWait(UILockListener.java:140) + at org.eclipse.core.internal.jobs.LockManager.aboutToWait(LockManager.java:105) + at org.eclipse.core.internal.jobs.JobManager.join(JobManager.java:990) + at org.eclipse.core.internal.jobs.InternalJob.join(InternalJob.java:355) + at org.eclipse.core.runtime.jobs.Job.join(Job.java:531) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disconnectTerminal(VT100TerminalControl.java:469) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disposeTerminal(VT100TerminalControl.java:415) + at org.eclipse.cdt.dsf.gdb.internal.ui.console.GdbFullCliConsolePage.dispose(GdbFullCliConsolePage.java:125) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.doDestroyPage(DebuggerConsoleView.java:304) + at org.eclipse.ui.part.PageBookView.removePage(PageBookView.java:810) + at org.eclipse.ui.part.PageBookView.partClosed(PageBookView.java:743) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.lambda$1(DebuggerConsoleView.java:375) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView$$Lambda$2129/0x0000000101685818.run(Unknown Source) + at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) + at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132) + at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5039) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4519) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.ui.internal.Workbench$$Lambda$158/0x00000001002a2058.run(Unknown Source) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base@17.0.11/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base@17.0.11/java.lang.reflect.Method.invoke(Method.java:568) + at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at app//org.eclipse.equinox.launcher.Main.run(Main.java:1459) + at app//org.eclipse.equinox.launcher.Main.main(Main.java:1432) + +!ENTRY org.eclipse.ui 4 4 2026-03-01 11:29:09.911 +!MESSAGE To avoid deadlock while executing Display.syncExec() with argument: org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248@29348a0f, thread Worker-9: Launching task1 will interrupt UI thread. +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:09.911 +!MESSAGE Worker-9: Launching task1 thread is an instance of Worker or owns an ILock +!STACK 0 +java.lang.IllegalStateException: Call stack for thread Worker-9: Launching task1 + at java.management@17.0.11/sun.management.ThreadImpl.dumpThreads0(Native Method) + at java.management@17.0.11/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:492) + at org.eclipse.ui.internal.UILockListener.reportInterruption(UILockListener.java:214) + at org.eclipse.ui.internal.UILockListener.interruptUI(UILockListener.java:180) + at org.eclipse.ui.internal.PendingSyncExec.waitUntilExecuted(PendingSyncExec.java:92) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:142) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:5959) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.handleStatus(Prompter.java:81) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.saveBeforeLaunch(LaunchConfigurationDelegate.java:245) + at org.eclipse.debug.core.model.LaunchConfigurationDelegate.preLaunchCheck(LaunchConfigurationDelegate.java:197) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.preLaunchCheck(GdbLaunchDelegate.java:371) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.preLaunchCheck(DSFDelegate.java:211) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:769) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.ui 4 4 2026-03-01 11:29:09.912 +!MESSAGE UI thread waiting on a job or lock. +!STACK 0 +java.lang.IllegalStateException: Call stack for thread main + at org.eclipse.swt.internal.gtk.OS.Call(Native Method) + at org.eclipse.swt.widgets.Display.sleep(Display.java:5640) + at org.eclipse.jface.window.Window.runEventLoop(Window.java:824) + at org.eclipse.jface.window.Window.open(Window.java:799) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.showSaveDialog(SaveScopeResourcesHandler.java:250) + at org.eclipse.debug.internal.ui.launchConfigurations.SaveScopeResourcesHandler.handleStatus(SaveScopeResourcesHandler.java:180) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter.lambda$0(Prompter.java:73) + at org.eclipse.debug.internal.ui.sourcelookup.Prompter$$Lambda$1906/0x00000001014aa248.run(Unknown Source) + at org.eclipse.ui.internal.PendingSyncExec.run(PendingSyncExec.java:68) + at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:172) + at org.eclipse.ui.internal.UILockListener.aboutToWait(UILockListener.java:140) + at org.eclipse.core.internal.jobs.LockManager.aboutToWait(LockManager.java:105) + at org.eclipse.core.internal.jobs.JobManager.join(JobManager.java:990) + at org.eclipse.core.internal.jobs.InternalJob.join(InternalJob.java:355) + at org.eclipse.core.runtime.jobs.Job.join(Job.java:531) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disconnectTerminal(VT100TerminalControl.java:469) + at org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl.disposeTerminal(VT100TerminalControl.java:415) + at org.eclipse.cdt.dsf.gdb.internal.ui.console.GdbFullCliConsolePage.dispose(GdbFullCliConsolePage.java:125) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.doDestroyPage(DebuggerConsoleView.java:304) + at org.eclipse.ui.part.PageBookView.removePage(PageBookView.java:810) + at org.eclipse.ui.part.PageBookView.partClosed(PageBookView.java:743) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView.lambda$1(DebuggerConsoleView.java:375) + at org.eclipse.cdt.debug.internal.ui.views.debuggerconsole.DebuggerConsoleView$$Lambda$2129/0x0000000101685818.run(Unknown Source) + at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) + at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132) + at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5039) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4519) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:648) + at org.eclipse.ui.internal.Workbench$$Lambda$158/0x00000001002a2058.run(Unknown Source) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:342) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base@17.0.11/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base@17.0.11/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base@17.0.11/java.lang.reflect.Method.invoke(Method.java:568) + at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651) + at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:588) + at app//org.eclipse.equinox.launcher.Main.run(Main.java:1459) + at app//org.eclipse.equinox.launcher.Main.main(Main.java:1432) +!SESSION 2026-03-01 11:55:46.278 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-03-01 11:55:49.159 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-03-01 11:55:49.160 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-03-01 11:55:52.043 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2026-03-09 11:19:38.134 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-03-09 11:19:44.711 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-03-09 11:19:44.712 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-03-09 11:19:49.971 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-09 11:20:12.886 +!MESSAGE Unable to connect to repository https://sw-center.st.com/stm32cubeide/openstlinux/updatesite1/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-09 11:20:12.894 +!MESSAGE Unable to connect to repository https://sw-center.st.com/stm32cubeide/updatesite1/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-09 11:20:12.901 +!MESSAGE Unable to connect to repository https://download.eclipse.org/tools/cdt/releases/latest/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-09 11:20:12.908 +!MESSAGE Unable to connect to repository https://download.eclipse.org/releases/2023-12/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more diff --git a/.metadata/.log4j2.xml b/.metadata/.log4j2.xml new file mode 100644 index 0000000..b4d0b50 --- /dev/null +++ b/.metadata/.log4j2.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.0.100.202111091238 b/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.0.100.202111091238 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.1.700.202302091318 b/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.1.700.202302091318 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.2.400.202406131549 b/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.2.400.202406131549 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/com.st.stm32cube.ide.mcu.livewatch/params.dat b/.metadata/.plugins/com.st.stm32cube.ide.mcu.livewatch/params.dat new file mode 100644 index 0000000..92f80e6 --- /dev/null +++ b/.metadata/.plugins/com.st.stm32cube.ide.mcu.livewatch/params.dat @@ -0,0 +1 @@ +NUMBER_FORMAT=0 diff --git a/.metadata/.plugins/com.st.stm32cube.ide.mcu.livewatch/saved_expr.dat b/.metadata/.plugins/com.st.stm32cube.ide.mcu.livewatch/saved_expr.dat new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml new file mode 100644 index 0000000..c205158 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml @@ -0,0 +1,4 @@ + +
+ +
diff --git a/.metadata/.plugins/org.eclipse.cdt.core/.log b/.metadata/.plugins/org.eclipse.cdt.core/.log new file mode 100644 index 0000000..e2df4f4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -0,0 +1,51 @@ +*** SESSION Sept. 27, 2024 17:59:17.495 ---------------------------------------- +*** SESSION Sept. 27, 2024 18:05:44.544 ---------------------------------------- +*** SESSION Feb. 10, 2025 09:08:23.951 ----------------------------------------- +*** SESSION Feb. 10, 2025 09:29:27.913 ----------------------------------------- +*** SESSION Feb. 17, 2025 11:08:06.149 ----------------------------------------- +*** SESSION Feb. 18, 2025 08:47:03.116 ----------------------------------------- +*** SESSION Feb. 18, 2025 14:26:24.713 ----------------------------------------- +*** SESSION Feb. 19, 2025 10:30:12.37 ------------------------------------------ +*** SESSION Feb. 19, 2025 10:37:24.243 ----------------------------------------- +*** SESSION Feb. 19, 2025 11:23:03.900 ----------------------------------------- +*** SESSION Feb. 19, 2025 12:52:40.720 ----------------------------------------- +*** SESSION Feb. 20, 2025 08:33:14.774 ----------------------------------------- +*** SESSION Feb. 20, 2025 09:47:21.538 ----------------------------------------- +*** SESSION Feb. 21, 2025 09:13:22.658 ----------------------------------------- +*** SESSION Feb. 25, 2025 07:52:50.38 ------------------------------------------ +*** SESSION Feb. 25, 2025 07:54:48.75 ------------------------------------------ +*** SESSION Feb. 25, 2025 07:57:22.993 ----------------------------------------- +*** SESSION Feb. 25, 2025 08:06:44.337 ----------------------------------------- +*** SESSION Feb. 25, 2025 08:08:21.167 ----------------------------------------- +*** SESSION Feb. 28, 2025 15:34:14.538 ----------------------------------------- +*** SESSION Feb. 28, 2025 15:41:05.270 ----------------------------------------- +*** SESSION März 06, 2025 08:38:34.193 ----------------------------------------- +*** SESSION März 27, 2025 09:56:20.222 ----------------------------------------- +*** SESSION Apr. 01, 2025 07:53:55.279 ----------------------------------------- +*** SESSION Apr. 02, 2025 07:50:28.338 ----------------------------------------- +*** SESSION Apr. 02, 2025 14:13:40.386 ----------------------------------------- +*** SESSION Mai 26, 2025 08:17:21.426 ------------------------------------------ +*** SESSION Juni 18, 2025 09:24:55.993 ----------------------------------------- +*** SESSION Juni 24, 2025 12:48:08.467 ----------------------------------------- +*** SESSION Juli 21, 2025 09:10:57.433 ----------------------------------------- +*** SESSION Juli 21, 2025 10:13:20.621 ----------------------------------------- +*** SESSION Juli 21, 2025 10:36:45.901 ----------------------------------------- +*** SESSION Juli 23, 2025 09:16:28.326 ----------------------------------------- +*** SESSION Juli 25, 2025 09:39:54.461 ----------------------------------------- +*** SESSION Aug. 25, 2025 11:41:51.672 ----------------------------------------- +*** SESSION Sept. 02, 2025 09:27:40.283 ---------------------------------------- +*** SESSION Sept. 03, 2025 09:37:09.775 ---------------------------------------- +*** SESSION Sept. 03, 2025 09:54:59.716 ---------------------------------------- +*** SESSION Sept. 08, 2025 14:20:40.275 ---------------------------------------- +*** SESSION Sept. 09, 2025 08:18:23.549 ---------------------------------------- +*** SESSION Sept. 10, 2025 13:00:47.310 ---------------------------------------- +*** SESSION Sept. 11, 2025 07:35:59.311 ---------------------------------------- +*** SESSION Sept. 12, 2025 07:47:53.162 ---------------------------------------- +*** SESSION Sept. 16, 2025 10:38:35.578 ---------------------------------------- +*** SESSION Sept. 19, 2025 12:50:03.803 ---------------------------------------- +*** SESSION Sept. 19, 2025 12:55:01.788 ---------------------------------------- +*** SESSION Sept. 19, 2025 13:22:07.450 ---------------------------------------- +*** SESSION Feb. 28, 2026 20:03:07.673 ----------------------------------------- +*** SESSION Feb. 28, 2026 20:03:36.773 ----------------------------------------- +*** SESSION März 01, 2026 11:22:28.450 ----------------------------------------- +*** SESSION März 01, 2026 11:55:48.249 ----------------------------------------- diff --git a/.metadata/.plugins/org.eclipse.cdt.core/A3_Timer.language.settings.xml b/.metadata/.plugins/org.eclipse.cdt.core/A3_Timer.language.settings.xml new file mode 100644 index 0000000..ab272a6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/A3_Timer.language.settings.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.core/model.extensions.xml b/.metadata/.plugins/org.eclipse.cdt.core/model.extensions.xml new file mode 100644 index 0000000..4c78a73 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/model.extensions.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml b/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml new file mode 100644 index 0000000..c5266e1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task1.1727452765701.pdom b/.metadata/.plugins/org.eclipse.cdt.core/task1.1727452765701.pdom new file mode 100644 index 0000000000000000000000000000000000000000..e6dea583aa73fed3646bf036efc19089efcfe1b6 GIT binary patch literal 1658880 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

= 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 D{1X|c literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task3.language.settings.xml b/.metadata/.plugins/org.eclipse.cdt.core/task3.language.settings.xml new file mode 100644 index 0000000..7f43ed8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/task3.language.settings.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task4.1727452765793.pdom b/.metadata/.plugins/org.eclipse.cdt.core/task4.1727452765793.pdom new file mode 100644 index 0000000000000000000000000000000000000000..dcf28cbfe70a005cacc0d68b557fe5c701bcd03f GIT binary patch literal 1712128 zcmeFa33yf2_4mJTLI^`3VMquNAV5H7!t5+b2ojlM5)j9TfQlke28&Zg>(r{P+B(#s zwXIsMb*R-=TU+O$YOS``I*Zl;=hg`<%1)x%blF`@Zsjp7(iO&$I8nds^T1 zU3)y^HP0Ai;%LGTOyP(h8q@HZF%xz+X8a~&YKu)_LyeTkmM&jpr~N;iQrK|K|HJIR zrv9}DzV^V^9{Ab=|JQk-V5Bhx*IBa*_u_Zy|8*3;Hu!4~eC>g+J@B;$zV^V^9{6AK zz?S>BY}xYYsx^msH_ohEy!PM8cq89OY^?Uhw(x zrr_f@joIk3w@AG$4RPVD_|0)vVMC=U9K_j}f}IE?XO2JZ^N%0l`{K)gR#iHwXLDvy z=>bQd`_SkUv`*pBGRo~{>u=cv%v((>myBO>#M0|Md zG>!XyT?gI_o3HKodJeqS1@&4_@a~B53WtDIa9E8W~8qaU0-VuWazoWn)cJMUaQVd{dB)yG!v*R4zS|3GqS zg1lFgt{Ar0#cEsOZj4oJ*N>Afy=9YfC>+{>@6ATPrF4gDjUM*|?S8q_LyqeCcRU)5 z(_;#LjGpIB;cm3ENQaq*(Lni4)>j4eckx>!g@1K^+Gq*~&`#pdf{C{Mx*Tat;UUJ% zyo@l}6b?L@@pS|?R*^5A>noHkH>rtw0}8ID+(Y)a_Rlwyd1lF~BUUe8v20B=(a5~%OW@x}9WMHkekapW!~D6;O>-Js z+Gpu_`c2%wO~G;0*^p@L@Pg?ru`C>!XTPjn5S7&S`(jd@5ZLjemeMw~^8kIWp`9sE z+7UgkkEq=+bHNSf-1I8tbzUAZ!PB;9 ztW5I7?k^@ziww7MMvSUX;eG1xhPry6w72g*Z$U$Qdrq8%0Zz6Z4MDy)KNNO!I9w%A zdl*k`O+u}`JqMqC^6If?77BM8FFfG+5qj!cXE)8;T})QVp>JMZeSMu>lM?<7t#cFp zn{^sW%|gr_w4C$vQgiv&gc-A@Jrh7%U4QejLmIcAY*OeG})aM5-S@qLekof z+UJ_b55H-ju@#*pT3^@NST>@yp;dm}zG?N%`(3-&=w6c3(AF}iy>VV${hY@3xoZ#a zsI$+=9;##S=EnAxx;af$ZY`L+ps=-}9`$^p-fR>#&#deu(LnvV54`;TQMVp&U0=y* zoz=i-nA8-Mobp?Qijj}|iOfKa;|yED}`*4EZaSTJW~ z-p!~#e-~b8{onZ@`k{=6_fl@d)v}Hho=;$X6)F4~fpsU64)?hAe=F-%A!~V5NBjG0 z5l&0v?y`GsZQ7@?ebU5wlqw$Uc#L;Fzn_ZG*e7gq`#`bx-4P?!v+vx#eci~~4YiXO z$o%BbzrRiD=Et2nS#dYg2bU1OVNBOb#>a2?E-|K#wY#u_v9gK0j}tq->R&Q0H-fqG zH3BokiR_O~+`*WW?;@Q0-_Z)@7<0n*gw52aUBA7Y`hPa&ls^$_{(F7(JNU8RpXWEW zL{c<0uivL+`TgajuKIm*uJ)cVaeExExG#FRZ}a<;2-TRPGu%EryS>>Br`r3&q;7uP ziBqOVxbJzmT$S%o?BV_^FYdH7Zim98ZhqV;6QqL+U$)S(pF7aUI?%r&>9}KF-0ib) zIdX{V=I`GVW&>++*+)d}+kt&|hhY(_F&)p&+rB$w;SNsf=Et3w;12X~M^SgOhx+N5rN+{p>(M?#2k!m`=Op#cj;OJvOPEA9t#DFvZ2kF)qh}9lr13 zo|hMQW)|-0NnOQ#HP3uWLn|)(p&0jv)Mc%Rq|;lbul&~aJXjwm)MnwbPDFL{<1$}H zxZXaX!_TREO@wMp=f=Fa6S8oxO6umvWxkAX>DMve8>oA$hkHq0+=*GZHz#!!H|IWN z!rXYiyvf78gSroTxF6*k#}g)H;og_j&5t`V!M)qVeT2H+{-?_xd2zG$KOG)V>gLCt zoZ$Z5!)5*N;I02%F3pRZwf=Wt{g3MA$K5``Wqyj=m-WAcxBhqeI4^G2`rm=|KdP&^ zdFD$2)^X&m{~cKWi}VbmZR4(U@{QjKS?hlh>wi=?Kkg)LV4bHKM@733n72BxHg=Hq zzKn0;MZgy^uXJGT>OgyZ)grtFBl34q74hK-O4py~<(;+vC>oN~&Ch$Pb}+?dJ&JKh zQ+JAo`=7kHS^JNo2}xbW%{O1t(26_G!`+d(GZNgAJ@d{VS^JNo=}F!ExXhOkE^Qq1 zZK7_ghkI3C+^qda(fp)teq83u2v_z1tiK{fiwFnV-}2cllNUE@|50>6QdeD#2^49-ud*>a;S?hlh>wi=?Kkmc?*IWOKSpSPQ3R5fHuFZ>^wf+~e{zrB5 z<4#U+z4gC{^}pzQ5vnoWJLJX9TK|h!|D(F8c>6`i z;T#wH=Wo5^;i3zYI$1c)Elmp}9F8~R{&OjHuJmwz?Bh&W5asyC-9?utbrk3QXg^ce z+`gcN-t74N%)?R40oM=bae_)^FE&IKQXPoe_#L zr42rxNx5-uOX_6tY4-TAFNyuenqTx+59d^$Pkb6PIA2lpP*O*6KJffzVJx3NdpM6# z=S>giY12(&)^G9Y?-1w7q>kcz7~!T~)icJ!9^*{( z$3w^B#P(D_ZD?q0mCL%?t{po#zEdfWpF4WTtG(R#{_=i?_rvfV(RS48WsMuw&0M~0 z#nO>-iA4>qt!r;`KSKthX(u*XbZ%;+-<4Vy$`P;>Xs~FXf!WdbHwtsaz{hhWtf=d z%3KIT;{PU0-MV#amLIf!-7+1Ede&WCBs~+AjIOw|YA^B=v=8_Rt_71z-#D#x{Xur@ zIq!vRT3co~I-b)c@qa|eb6V^2qh%y`;*=aDC(#BN#IzdXKek+o9oM9mjNP(Y)HjUtK-D{Dm6#Ztt)^?I7yWX+|3kkED16B4{lvDM zyynesnOiqUE2@9rvAl}eP;~svnBtyRr+f}s>v&xW?zJiZj2JO_0W;Ew`OIi*8di^_ z&-s>BJ=uEX!R!{jNGj?*gilY$Qhn1W9WxO_U3>!_Sln91?|M2-SJll&ak#dIhL`2JLqDdWo8SWdplenI%2?7~Ix-Q@g#i>+Nu znv-Gk1@C_R%kh!+x9eRQS2ikWGU)qF<6s|I`)_<+p>d^bp{2aepBw>8pDO-stii4) zAIV0mVb#iYYgVmrS+RW&+XSiSWcUQry?}Wp8Bg}SLE$bG=o~k?j;Fh|-9HiivYo&V zsTYl-KdZ*VT{yn;rTD2_<4EoWxA*JpIBg08$u>}I=QHraKgEA!%-E@E_$CRu8Ljm;zR8ZCPW>!Srw*oY7u#2dzhsIE1Dr~$ zgU`ZUXs=Lm<20plMmU@vv5w*Irg4T@&7CNlEk!~n79FSYeMN2`PHybKDYmGr15UOZ zXG(*4q0^)&3m?1kNlI>BGvp!<664S(#NJM0;+os-A-py@|I!~Mzjzb8kLLS5v)u;i zKT$qoP4itJ=w!@x$4NU!`HVBomvKpdDSp^&ca2|vk;`}OQv8hB?grB#>?h4er4wZX zp>uR<%`yMI6RqD3E7sU0Jf8n_ZH?C`{2=?FFV?JF;}pksW2=aicQRs@=@GAsojA8H z_UL@GlHYY^#7ci$G2e7LSZfyUQpWEmA~iY2)fX-ET3oiyH{$1~sB@s#PJ#iRq&Zz9 z)^e+LZ11r)U+uY&-}{*nC#3D!pdf|2RFc2h0h%24d@d&?Y`)ra1?3MV;G`JuJmQON zTBqx^?1)oj{`1zYPHs$hqHG`q)H|DtUY))hC+m2K+pTrkx~SdW?R;`ZRya3HN9$Op zja2`BT;0vvYZk9{4H=aCA!X07WwpIOUvtpnsN5#k&+(av=yfu3u;1QSk_Qj<@2~j1 z(u~|I?cd9^X5lWqSqGi}Om6=s=ab)MZ5e|;+Pu?`J^u=Z_?Wa#n^f<}{lvfgmc6g| zJhtaCeqU%tuJFgzBQ{^!Oxn8Bv1a5q((UsH)oVIYHjqNfKPc^UTb!)>^0%UK6}M00 z23KOsyCwHT?IcYV`~ODNFcuCRy)b{8rGCfQjU4P)4g7~T;ms? zh)8)SqZ&-FWc)rs9=x?ZpW*kf%&719{*yHE;eoa`<9*ck{PDKQtN#+eA2Xva_UlWU z)TjMAGv#)=(v144-+t024!`rR{C>ua`n6ZTv$TQKcm0(19`)OF`+Z<-ld^%x`1(@X z@8dXG$5(tkW6r9@OKsMc&D|Ma1vLYS7Plr_p}76tM9t^18aH1qS-H+7`Q!R&vJa2R^w)t{g<7DhGQxdm}9FGYfIUaGxW@9IsvUt7eykn9t_0c!>yOQtC zJDn>c)#UGy{I!Mt*h|l}XU$b=Cnq^DpE<0k$>Z7#y7LL>2W1gA5f-uXNDNOPm zcQu98-A%#!y$O?upTzg!rm*;Jp07F86nylADJ-9C3O-~`{y!D)bxzuK2pBJ;`*6ND zaO}8%d4u_35(AJvT<|{Ya4socX3Vb7nu0H%p)M1aIfSy0^80Q&+X{YDsdGPUt<6s$Wjm&9dUzK%!lbz2* zr`A7??}cj1*nj)^=#20smwqtrU>_fy5x(Z{YQ}xb$46&`ule<6+_ydbnkM}YeEmJs zjQfF?-}wNJ#eQV;nMlbme8_Z>@7Vr>$p0DnC6dauzy>)w_VN#>4#&rlboiCM-l5~C z$R6i)UTz9^+@E`_52K#$OE_+F6=EC)UT5|dota-mJWn5WRlkz2*v~)5UThGXMTQ^gp6ir#C~B{tn8Go? zrVML^@_IGz;|obY`4#0aCj8Oq{Xul!iKq9Mv|m^J-sb%N1$u4qM9)p=_yyq+r-y?& z`4#j7o^#vb6ZFs*Y(EhDQvHB->wG=ov6P-oZd_ugw(k>s(`V%1QE{St`iAm(h;Mv0 z{7*UfFxQL`-qhKepSWa{@DqJ^*gAq2>y2>Xt+@DJe7W7e4mZk&5B@2v8^Jf&+i}n$ zdgAsKK5(fU!#BRn$``#G2yYVbQC2=Uf-lk;Temwkh0pjD`!ydQW#w-sU&ir=1m*@g zD3Y?VeS$0F^Ap0l9QpK1weNGj;gVHf^wNJtI$uEkt*-xWa_uU5!Iw!)<`Ox0k+NH& ze9;SjmkxYmYdT-+Z6LoB`PiD3FZD!!3E$Wv2P3|Itta}+$j6qfe5oh;d-IJgS@}{= z^j8v4ESvE_ztj``RRnCw%BP;{uO=T3S^3mc{Wauci)^j~{nS(aBgn^=tbFRJ{xRfZ zOIAMhRDUh`*dm+HKtJ_V|77y9B`cqLs(*X(u_Y^?da8eC^07rWr-6Rzss8EYV@p;( z^;G{1^06f=pL(jFb+-$)$mTWBPd(Moy4wX?vhrm;-$33z1Z;`(z4^7vY}O6Qr=9Kb zp`J(dA2EyjYZtL&7J+qIWbE~(hkS3@Wczy;S^uTKu(o!An`};kd~noW*32%`bL68} z?Oj7Y+_LJk{wuzG!)@%BDSW{e`{Wy4{LE>iT#=nSJ~Xi@0cHU ziTxtNHJvZ%*k4#D{SB^h{>_pTN|)o=j~Lczl_>Ad56?d8>5*66a_+-&k8UJgPPD(Y zeR4ck`Q-*KtDVr(z7=8~ms8spHnp@ZsGF0?49re!pVe5$rQi0MJgl9`^p4&o(a=^` zpVX_)l^oVAO+6@`$#jYy!OmnV_&KYwVRpN{yvx_jrg@F6nGCh8>fIaXHMTT0*rM}W z8ui@+vnbfyIB!PXyf#duXp#|^7ZiP9SOM*`)2TOLbZgfKFq>N%TN~%K6--!A*50mu z;YP#x?e$G<^4Mfo??Gm*A3YweCM{gHa_Ooy?X5?xZCk$NaL(Hwy!?=Y+6Df*HBhi* z^@{atC1f%*k-snK@>|;XG2SuIOZpFu{AMmTu7yX?U+(AK0Y}?-7fuNfS3!q~o|iXe zJQrADOyid}FTlGSybUg0@HUI1bG^-hGJ^L6;rF(Dm%rG!#6(B*{s~h}`mh7m1 ztiRvN!QW=<{&&wCjoE`b^FKFc7PdFD{>=Ko6m0((;V!~Wg!2jR{FJ9G zfrz}7SK=bVA$q@wp)IWBZb`XWYg@mUqiZSe8QI=iq5E6jBfzNCo2jH9b>$RD)OON0 zC5~tvj*Vp7V6@-XP>y~r;`iIG{V97E<778CPUO8Q$*7N~1Fa}{qZ40sMW@6O(P1hs zviBJ%9`mQzBNE_^r0lsaU622G&xnocxabO3$H8=E9+x4WdWR$99pk#zxc3?O`s*pnvC)7w z_z92C;Sm9dpPC7--Bbs0)&CRjo4Q{g1GVkKI@ooW9Qx;>|1#FH4xawGs>9m9KlQB5 z>Wi+#RsUti4A|f47e9SLsNIU6_66rEa2S6PkNG|hr-+1$NLR6yI3jh-fZIGC-y*Lm z2aiK2doB8VJN;bWYH|Q_-iPxIrt541{jcj%V;ayq<57Nd-KXm!=Dr&U4FFYf28A&P^SkXH(Dm z%ybnU#8p3ahAr{NC+#NqBEfk1KKgHV>C(?WcKW%^Q1#QFoXt8{cO{N!onilU`l~5( zJ>&mbnXwZ4MrzR%-X+xiqs{R6=zA#?@9LO?=_)o8N3_oHCXdgb$b+v)z=ysz@=lkY z@YzRhn^gU`P|tEuo4XQ6w9fE9dVC(B+<7sd)O$0M^9)^oN8S6f@bm^`#k(iwV7iLU z#1)S^+l}}5JV73OMFKu|q5mP5p77BdSylhvsb@Kuu3|HBMC)w#bC1tU0NxgT( zA3SFxEmqIE`;Cwxi&ao0ll*@?EtRH;8mUJR-la}$@ZO_=RePdr5 z@m&dVMC*)P<@uF0tLsa#U&Hs_cMxaYXBm ze8F_pSQ+U%f=hoA33v^q?CVjwk0S%xiTG;@!E!PsaF95nbw@39IMt-H#*~zLZ+gn} z-l!7pHyKHv5V6;Nn)Llb+>0-#*sKWd?gYz8Ih53Emew6}o$J2BZy^ExA_2eM!1*vr zhu?=WPC`&{_9TEMqL{=Htt%IQG$!T1FPSn^-i$SV6ti)x4Xa0uw=;5pKi?FN(#qJS z<5Ayd6t6EOtX+Ox?ZzJNhPrSaAoQ)pK!IX&2 z#1XAC`9hBmYm4v|3HY%7k8yuAYo+60O2lU3h}N0X-Q#mRdB?_l@~$r>tpB5; zagg{gUSCT7fF8@il!(p56^}YoHhO#>CJ(+M0Uy@?QA1t2uOB`#-}7ETQ$LRHpRr$g zfp7=mQTBkhk%rFtD!ymh`d|5{jL$z4tPf4e?KTdM+C1e$&!10`r~8jw?-xtfx03s) zi(V10{dC@z^}6IA1nWanB0eLIXq~ACd;WZlJp3&Z`19|S9qZB)e&YT^jR*ZL~JLnxYV6C$Da3- zDk5qozga**H4+ivP9{EGJVU9Ec-YciKY^ry3lvN}h`O`Sy+saKE7L z&Z@(2uQpv(!0Xl(J(i2wE^$QbY`;g+Ufl*!4&EZZ{%)NqTj$b~_G*jv0p0q=9Moos zBU)$sKPBze4I4{7j`^s4BdyvHuMc(Ic+vLyNZZS$^SUJm^Y2NY6JFJ#+vY=f z;tS_fBR-TkqPFjFd9n}bb`E)E-kS^a>_fUWP`BBdn>`*T*v*LGE+V-8tUhdYxYXUT z(i;zlQV#!%1paLXXF-&n9uE_=`)E5Zu~<@4F^MBucgG7Hj@Sc!H{FIrOST&lYO?J~ z0sevLXjfg>1^$P2+^6?j-PT*(QnH(HS*>-n?oJiSeybbnuJ}PDz~SAkqn1YL0Z!79 z#Qu#0utXGdqyE&oJDrj2w*TI49|^SE0{xvK)vbT6ee8z5e<~ z%Go_s$nOfu9+w{{n!mf%-`K^0{6sRxGUu? z2MNCi&}TWBZo=UnhfCe*$9w#qCXY503EJ;Ya88ZVWjscHv^X)p$EgpNhvZENBstMl4;SUoum(s|(}^jnUmn{Xno zcA#VCHTJr>_SetI!yh66-X`$QbLo12OByd3o{Gm>?6{h4uko8WqB?dT;qYpCS4L+^ zPR3_iYr;Nd&->_#+C}Wq`%)U37r?w}Zu6YRxmezE< zdtZa_@7|ws_(#O&-(AYGUTOMP@S=9_UJ-LvjuJ;y$DX%2JmEi!a<91;CCjZVIVp_P z%7HyS(e-Ohw(b8$Qh8xrOA}Y{k{%%ZQQZx6hL){~fUh|A+*5)!_Zs zr3?QYcySL9yeSq_YA7~wM0K>>=J2E(c66_>>ugR2*d5q00UfuiF3bCsq*h%^!>p#Z z#)h^9T+Wn+7yS(uLuzz~o5T^-(Ymwgr!i^w!w9s!NPx%j|0p+Z^txI;JRvW5%LtaM zwynew)zNyp!;^MDpU^qYJIx?RyYGpvM^vZf|7OC!xvr&c-u$H5w`>Gs9PRl9fpaC@ zR}khAPA4$GZgUZTu+})ATOZpsPdT*J+xL)bzxxj5XdjWl|Eu8p50@_eE}L)M?bQD# zSxl*+*u)Xl(RRDT6T7gZ`?6>Ql*@+xpd*33ol|Wc$X0@SKGIUBdTM;tqzZVS9(3= zW<_V8a&ySFFY10Nx}x)KV$W+*w@Kb&Ja2B3+%wSH7|%Fj&+iD9vr&#WID62saE*OG zlD7N(l*2zF0e`L;jf&2@<;8Oj5WKrArsz>@;)v>4_<_Tda@f)RGTBGuv43RBj@!`j zrRwt9U3n|%g&u9~e~()XsnK1yJ*st8$6jl^cKfqc{j|7&$Q}1!#TIg83c}TDu)v) zjp@U&T%SMl`x}H-t81Hl!mqT*auogD@h#?vD2GL>6Tg>MkWaga1b+XVvOQgTF24(3 z&+nx@ET+^DY>6YPW6`^b-^GsZ@8|Hl^IzKUrQOg`rMhzZy)D(>N^4@SM!1#QV@K7o z_ezg9Ym)dy#OGbgHTBVhU3w1Qis$o|IRs1*#U_rZj=kUZcwj@GJJ7N3VadE&`fc*? zi%7tGZ}4_=>3Q)Saq;uF2w;jRHgQCC?E6MCuZkU|^8?n$$BF7 zSWo01F6@FT^Gj(L`tPTNrwI=bZYAw*!f&mPZTcyGIGbR7ZPd4CD57%M&-eS!C`Y@9 z1bk0}FMBUd&-T0H>-qf>iz($5n>eC6_VfLY9i`vO@_XXHwBI@YAH7I*S-)?N*TIGC zoI}S8@2d%xt0@(3#MKUT?0=YjZ>Ox|rFRnOb0Pt6?oS`>{HFWo+<2C_;Qf(cx$0g; z;)v?l|4oM{bI?2Vf%E54l>K6?70P9hiYAKC5eJYg!l+7v8TEELT%1+=wHpquuZCpOZ)1iv)PDQ1)1t9`<(+ zFX``eAyaC(YTHU2Q6243f2ZBcWZk_!IbRU;-h_p2VFP=3Mr3q!zDDeMOKL7`o6jrr z>gUX#IWul_PysLfk^pZN;$?Nj;i`gv%1Ve^pJ=+o5yd$0$Jx)(lyUukv>Qh{4zlp0 zPJkBCKTyq3rNUX_i0W9}KRJI=HXb|PnW>T-O{RF+VGy)WSwD20&vP@)w43-tkLT-} zS{hpT=cR_W*^PTA9ua#+5iCdbjl|WS^Nm^joIRfR{arR3{oIdVH#xuln6c>JIp%1D zlf+g3#l{@8zdK(b?a#Vf)&sf;*({?S-H`A0*z*h3Y5D5;qM&MPTb)~J#hyI~mZP@4 z#MK^j9Q0IjzNl<5{->{q1pH@$_bZn!{>_7@J`lY92$r+uNE}feOZHFB7nOlkHau{Sy|w&hv8dzjaDCCE6cKw?5iDmT9Lo;Vx~gNzbICrVY$JJ$4UvHV z!QkEM(&O=;#`DJiF&0y5C^m6Kbu4X9_8DSF*?!Tym)2(|zQB%eqT^or`BK*p^*Gwr zkk!8cz=&zxfj<*;kfbM>+f=65#RwbE6*w@4&6#MIB%8 zerYj9k75%?M2A^+K(ena!;Z3JLf*dpS?zruI^?;=70wQ?|F!PjDtG3$wKUqx(6YZO zJCU%C@N2>k2=5VIB(Trk<|2N0mSBBt)VEJ4s&FvNp7F-pJCxgKEeia8BYdBN@1a}g zE3Oy5-3M??TFlrznZU7X>A#HWL3*z$t9xso-4{?F-&F3y@$DnjT}j>1#`HXg`qQ>n z)8+~O8CM%~z+Cq1%lVHV=Cr-A<7kenmJT!KFw$4Q&Nb0q#(ckXw!Xp#j5+f!{NE4w z?ckrzvDVSEjX9n^y8JiBtjZX(_Ariv_A=&&?%t6=i})M;;&T!8J#j>QXbx_7{+4pI zL)kCGewXS$!S$E2m(lT(>ay<%ds)_5JKkhn;V>v!rEM`g->|nAERiy4W8#SFI(U=m zudy=xOpyK|614w^lzq*m%X<>@;zomyvheHC6@8Ywk-1gki0V3InZvCmo%OdYKEBDr zXQb8*?CMdBt`A*$Y917S=s=8CTCs=ra@>`x#1YkT$mV3;?J=El_({a~LyvOGTHks5 zyu@CMm(068c8WPGM~Ne<}5B@z52JcIIeJX6xm_c;fFtleoo{R0MI=y{HE4z%= z#)b3e$?-+V4m&KYISVWPw_v;XwK(GeB7f+5tYO8K5ic( z{ji=cc|EdOcG3+z~kj&jwN zwqs6XWAh9`>~|dp9HTg{mfNAu4s;yW%j5km%1w8Az57jjECsLM*6{+~N1+Ey5&7;x z98n#Io#XMwjvo62ynXw#d2|2Y82XHe?rU|QqyCb5yik7;|3B$Y)Qex)llQP(O%LH_ zj}cVI;icYqyM#R2T=n|Ax&LpBTCp`eZ@gV#F-4DJ6Gv3X;b$fL9I>OvQCYkb`@sy_ z`-kY5q`E9`d!0naS=(%0UcS4%W7HN9-d7VWSJOkdU7=a3V@0F8P9pvMAp(983GjFi z#F*_}y3A|YcyV)U|GE!7V2UU&fcIL z?IIHJ<^KOMySsGpyS)w@@QocWc&}JYsiD}!5!G?TpS*E~9X;;z{T}!)dz|rX@t8eT zSIX}*xXYrpy{#oRzpy6tuv|?K;bzxF)vUg0haEj@0^TY6!|T31x&A*Un*YQOd;OpG<70(OaT7vbp?hz%fcJ+B7q;c|9{LQE`95`+7-2=;FiZeFv3~li0b-g zrNgZy9kM-N4*ikM$9lxKt5+Gio>raqyo%?Ks2}C@2kXD{fpYE@?FZ2H&5J#M%)u`F zB@*Bc0(X-p|2N#wAG^msP|m%GBdTk|5YHd`QZC+y*!Iollfxf8|2KxYO~n4cLef8? zbs_DKEgQk=M!1H++T4pZp_imRL--T?pCq_GCwjkfk$%D+*0q7@h0i69D3=Xacy$%h>C+9mo`@{WVFOL7mc2Ql{4tu^~mfRR8 z{jYUlLR+C?s(KopLxy(;j6Yz^j!24|QN?p46IVYZLdcnJb0H%my z6Gv3XF_V(xfnM0r>(r2UU_VVB*unAt*uJVO%l~ud&uiksYC>G>xP@T3T5dNwJJ4~= z4PJXcMLF7BB*42Kyn!w~)xSKvq`m)PF{OrL6Gv3Xv6H>_#*SWBguFd{x;+T&xC0&V z5%JD1X?xpsEup<-Bf1w8=+nL4Vs1H_u!7(72;)`7w*3&lZzfn@n_l8uu5%#D;n*9! z{`M((^f{4$@AH&(11&#aufKh0F-4DJ6Gv3XaZ|khh8?~B5&AvwU%J0>{6BV@>au>% zu`iE35AWWc(Qmn$UU2K(!P$Y1<8Dm$bGTho$#q1e^y!_W`WJnr}e`@-Hm&@oeWW!Vw!BLY7R2itNt!nOBc zX9qgIb+ff2;5`8Sv;VvPnCC=vf*~T`y@?~LKX!rY%HkRA z4+5Uk(QmnFTlFT6sE*@rP1?KnUice7hy=WMrtCg0J$1b0K@6XchcVuButmme8W-Vi0at* zpJbf({w8_TG%w`8A7u}7>G8Uf#!JR|?=|SLoRy=*5!G?R84geQpG;^B?pH`F)j3uw z2mDu}YrUjq@sGMq$bTa^2TEzah2uv3sX9)q^7x-m-d>s);vEYf^Rr0G-yWXF{~YvK z&Xyx_M0K3_E06!>lw0QAt)lEbl`;Di|L>s---)E`iMnIR|I(PV=`9?IBdX)uJ0|@5 zaO^Gq5efW#F=fB&(!=)m@I3zap~rGIy@lhQT32;^`>}+7<&VibIey)RY%0|Qo>DxJ zecq?{wb*m6XODgULHhsPxpgh}|5&LhC1joLIl!3mD+$8=D8k|VUP@@-y<}GqoGz>J zEB=)6_XGi-h{$*Ezw1xsaMIn$eH`Ma-j})q*~kfQ8mJy!o%R3nz5j|II93tSevr!# zu32P%+50sDwuq=rFX>O!aq=9`4(#iFXEYz%Ch`5s@*DP#P1tdj>aup&>pj{Yb6T4l zTjHkyC?j_Khkz|2YSTyhQ+1sDx8!c2Rcq!rQ5~lq5*5>Zc3lB{j7KnB}_?+`dx2%XiQm)p6=8Nk1)@vVHRUV^WqsreMd@ z|HY2TBci*VfGr|wlidTTj?<#&C!`$qm5&Jh;qwxY`2Dn;`~SwitZJ=4>~%UBFEjYd z(}hhuQSPQMoxgftjegl@ZsB_(fxS!x`^}0c2?r6}wKl8qEB+LIs|ol*M169&{!|X9 zeVAM?E5|?OJLGK-{_Zm6hePngJE|+MAEM@vd87OU0=9^#O~>j_)$yHUJUg(jJiaeL z=P%!{+ChW%*nl1QQ$)u}(jHCe_E0-m+r$7$g zwZ5u9IEF0877_U_zfOOuj??$|#w+%fpJ~_laF-LUZmIrpHFoq>UDhAD?1&s9{=SER zEh6$=e!Kou9jCwK*@1oKKMuxgz$1avW!SjFPrm3#9KT?x9WyB879g8g@YSRb$Q+1rV%CiIe${)?+4_)0- zcD#cfb*d|m9icxeI$K-R4s5Eh$G)oL%nv*}u&?~ZpnoL1a`>Y{#@uYrj%5DumjPP< ze^m4%V2g-+SJ)Xtb$oAqGH%7b@(=R(Lsz%Z9~B(`k6U2%rslEOj@Tn&$4&%n5mB3_ z>QB}2z0W*5u&<&+;Ez~ebco{59~DEe!>t!;hrK>8>l?3MXlZO{;|FaMA1Lu&%7b5DD-Sww(`2O+9 z`M?VNQ&FC$J@|WPsTKHv_y3GruDWdh%GecC56vNO`r%a!?&-x&Is2a@bd~dmex2YM=7QGVC}` zv~Iu`b1Z zQ%i^)XA!VPL~Ww~A*$o-i;{hD1@=`e&*KmK_v@h@r=sI*)s@eV$Q!m@erj!z8fw$U zT32} z=X~t73-(o8+(p0^5w+=0`crlM;5g3??5nsq z@JGNatAG3+JM11NZHK!N%3WI*II-g~0=9^#O@Gy&s^f+G4aQy6h%;J3l|1@v! z<|s<5=YebbGs++Q>wr( z6@Sgs4!PFV&(ZN0)y4Sby4pJ-e{BNr`}9Ju^|_IEQuTqm;#2qBvmAak&xXwBoh#P{ z{*U|^?8EzX1@~{N!{WXj<2KD(*c`t{v=4hz!4{G4J_Gfq);+Jx-Cid4VNb=DJiK$P zUwwG~f7~;wD>uFn7rm1S*dU^|jMtx9_q-o?_}JB_d%!#9VP~aqUg|R%{8v<$?f=QX zihA-iTl`e2j>A5U))uuxY?|)uK*#yLll@E|?CUcyj~{ZZTYYxMj(4|iM>Gu89}Cfs zEh1`@Jw8_*=U?dAF`fMJX@A7L)Fu8n>@ycT{-bKGKlJ*p9)~R8ejonDrL`?S)h6w7 z2mxC}lf_axG=h@05q}V6oU1Ek#pUBPH=Xh z<3|U$b}1wMeC8^GNPx%vf8*UaOZL|xUeFIXCKpT*#U_rZjvqbi^#kna6W{+A>dUpi z?!)>2@dH$s<*mnoT5sn3mIiNeqKxonO?6zATc1m{uIjjOA9vg%ynjo;FCqc&i@_V> z(&hYr7GBKS;{DoUN)5#(j;M|c|Ctw2eN+4<8V$udQ$2RxIUk@$tzxt1O}%eNH6c`#OB5YjR$`vE#w3q^Mwu z$hX81)p7Bc-Z;aKKAR%HXZcUP6WH+?I@rUA=zV0`@3kIxS++IIioI^j=%?7j9MQ*e zHo~!z`2|s3mmHIfx5^sI(f34r+{!MLWsjig@p$ubWA@t5D+gIjDKFR(M^wippCsc= z?5H#W|Aa@5@m9(DKc0P?h|YI9-qem6d$qN-)On9_$UIXykzlzR;Z`|TtE!G4uT92V zWj%TLMI_)o61)Rky711%ONa~JE(9<|6q`7rI)40KGTy|F%0U5d&;IQ3R=FcO4pm*) z7wz|ycm3?>jXQ!*-*6m_a;B{jx8Gxasa!?CA0h$Y-N88`O3%hovVwCM!E)2R zqr?%d`;*PdzOvt2^r!edO<-@ZudL+xzwv7vZrHzO)y-)O)(@Fa`g}s**tQS%C-vd{ zOCOFe``k?UrPZ-bKZXBs1nXPt%MFUC94=k#ji>KZj=m)l_<0?Czv2uzA!j8(rlJn~7@x+6A;X1H`=l{psJ%^o7cn*1`EPYKp>nm?&og@Fl zH*djQe_j#(_`K3`HkHDWxY~oRpTChj|6F-JdGs}r0GH?g#=Cup&SQCTQ+{CWsI=UT zT&u4nj;OB74o;qb?#uYCz8!<5?#N-U9?MMHHJjqB<@= z+2Kh!?5Moj&M&#`56{O{^3I9zm#VHjyuY~qOOxMHox8#^lXe|*yI7TKTT&GY}`uTx$5c+a2X9{JXN z%tyx5o@-3sYC;bJRV!a4JWAkvL|?{w-%0$wfp8gteo%R$)&GC|NxSwfL7(-tsl>N^ zi&d*~xZ<_M?|lbSjy@;i`@JvE|Bb)VrRVm$@QwZ67lMK*BHt26RL3tCCw><@DnHHD z-)1`hg?{hb8y&762jf2;XB<54Rlgv3&ynz#U^yG%C~>t1UBCEeGVk=Ajy+#$UdVqa zxY2nd_uhqYd_=h6ywi85n7fg=MdFC+y0XQacjklZuH)s_8y!8R+GQ%b9(MNTv}2X9K0tw*6pJVsgTQeWQxGyXYem-N$D++VA!S}JP^0kwI;5|(MQ$(?eBcj7x=dTOc z(f8IY|9k#RtqcD|N2%(vet#|SJ5Mgx&xy~liXHgPaW#E6*|^$)j_Y1X?j!9-qWDE5 z;LZA9%UV?bjN_dX&&_>;_Zh)*HGQRT5l2Lax&EN!KGJ^D9zSvOp5OBl20G_S<-neQ zqstyEr})pAUpJ$@rBT0FL!=`1^y>@`J`fR(5=T_WuS-1sgDJO3^8&nnw0SM}!qs1# z=I`Sr{QFhKoK3&(;1NeehxzrH4sUzXca!AkHGlfoaZyA1iXjraA+)O!ozi&`9e;7V za4T(l!-AF;{x2a~3&jsR#@tOmxJn#R9XD+6`Jsh8%?kbAZ#ZSA*o^#m)(=}YqN4ym ze8@M~82XhPGoQXS>jG0SXiuknTYd@OxdiKb^|izi<#59-UOW7la@}*bL&}kP+Mx-Z zb(T!%7oO>Ds^^*bmd1FGCUzZ2u)a6_#Mk?3UDffML%nwR26?oTh~NMF?FHUUmoDpG z-0nV}*B@6{OsS#R#1Yl;o7Wtk*o7Va<_7anX#dER9fzW$S#{a|_j=TQtsSki8~2L3 zpN_-hEr!(SC)|$Kx~k*GL)~@GGSbf?;1`jAH`o7b7r1ocoeR&=Ry@vk^aE2wzWWhJ zRL6~*lk2KtN52)>yd(Re9ooV5|Jrudl^S=JcU$AUx&C_>`~3+0maFAP98n!N9qhF? z<3s!+67W8kvP)fhj`p^AUVGmfb2a^>ZxcsU$4##${eJWwG!h!ulDSE zv#D)vds{QtviMt`xpl3x|_%-!o?R{k+p|vDLH9KBa%N z&PrQ|^b=o4>pvXsI6pbh*>4kh^g)rJ9c2Aq@6x3mviU~6&#pU9qsRK*$XeHrIHEf4 zEO&Ud{2%Ql%#&|xJ0vf`&E-m(A+YBObZu0f*oi&wY9)DZ(1O~*lxd95eqRvqi%5VY>;K77dKQl5EI6MKEJq{fG$oE`-Me;hIMv4Ve}}!C?)TI7 zhWng;A5!97MQTettizL$D=|sE)hGB=d{d(eD%Yyig96aW!7_qNuV(HlM$OZ!>>QD9rHM!5AK=IlVn-IpilS^Lk%4%%2Gz#9x6^Ms}g?<~BC zG$n*LYmZ=xC^m6Kb=)&0InOF~^zS3{Y7YBlQbhtgc>cfkN|zq`zqNVIvb9SVuUHn% zC|fqdnK8R(sK0`G9jWt6lR0@;eqV=5l%UV89)<(z8a)!V}kLQh)!w(_>&x^o$FiQ7% zI-H2-b<_t-M85kIN3`z!lRTc__dna`nb@0?C-?u?GB!oR`KxvBc?}U!o3H-96a8-f z=`WoAsCla6e(!(m`oBmXZ7UM+<^BJ)Pr3A9{)+HY^VhTJ0aHZ2`x8f0$Dc=e^A~pX zzs~0!>C1h7vi}3b}v8$VU7_ktxN-x5cpu6b}kGJXWV|EKmmN7N${i|yVzz?b#^3)SU~ zpE=w%Qh(ICWpzuIM2nyl5x%U&j-wGyRnhv7jt3u1*8i#*gI1bD3f6AD~my#H@PkFDTD?b~Xxq@-dJN3`x=cJta7{HiHY{|)WUH9uC( zM@N6vm1UM1uC+AG~T!&V!d~-!y&{sutU3imq#GdQt;(5dTxzROaDIo29 zGQn~+Rl;qfWLO>ljPA>lJ>L}s{2~(I9ZOj^r{=*+hzs6N31EsSHgQCCJTW`DFGcLA zT4VpLA{PT`^T3WX(XoT5a=hP2YRzwJX=t7upQY3Fp=7)%*u?qqP4xu%&H3_8za`vn zb!^j5@dI`PWF5BN;_x#Qscy0VwL_E~Qj=vKuSEJk>c6OlS z$=@gY`6||I>2o3h9_#-EdyX+bUPN5*p0}8yN3n?`s^h6?$$q*DJF0Ha;_WdAkDIHW zM#o;N%i7`lpDUyd$ys4L&fZ7A0^YBIx1UQ-x3|NK zXzRF^H5p71`L42SlInPRoY&siQT2Ql?}S0Rz5jz9Zr;-I?(=SLnVIH2fHk1Xay7zj zfL(i3$J1AOyeCpF-q)D|Q)Em5*aP_gp9zOs9{KQm-UG%`$E`c^EpbG3JX4eK7CWlG z%;KFeNbw%f7ai+8JCc5mueh5!+8a?sjw7pX0UHig|0Y~X_%7ing5zQ}ZKF^6{ebBN zx6Tj1w*z)kEamXbkCSmWU{CUB7ZJa|4VVVsqg}f6w_JQ9#|z#Z!gO0+v56z9Yp(DCef$$8)b9M_9q zL;~L2|2N?~E?s!%#B;<2kMe zz!akr@V^3GH@Nh$9U2#<<{52wjxil)qa1J6x~gN-NnX1@M>+f>65!nk-tSy`K0LqO zpF|IsBJw?eIHEdU$aw9J9Rq%u;vXuXO+l;c{5pVhDFZ1!;5`Dz z3_JzCmOTI8|VKgJfgbNey6qAID6}w^tXYmDUPcd z@CET=X9qf7T<7elO|zJyN3n?`s^ed;C+myYF|ablJ7f^7F9Ro`BRbC`b|lA% zassX`{rtkfJ>v{wCB@e%d1ib6O`@p5=#*128_sau0cP^MB zicK6*9WT9*94Cq$1E-~Udkkcb4eV$!g>Kom?fq7~zOV}kX={I9j(*G4C^zO8u|ssc z>^&bgkiC-lMI^vGkg`QCU3h2VCA1ZfJ?20#MdW*+-E*prmmf>c3k<}LfeTZ-69z&% zw1e~i6H6tPbg?7Zw>Qt{HNCufHa<*KJ5EEt z^>*ob@M7lD&o3i@DI(tzM^wiv_b2=If!Hx{eTuiw0Oo-mXQ4wD3M93Elv=zCA^BtQ zEgR9zF~h)P2`dR#6V7BDpG~m*RnIp25I?XM3r7+4t=$VKhga*p`Q?7{>2o3h-)rGJ z)TN8xz4;~K>&-8BSxl*+*u)Xl@#^i~{DK_=FU#Tg#Dn4davM7Av6uCGGQZPHIZE`V zRqbz&qTg~g1BDxLwF4cSclOrP&E(PNL;~Kt|7W5MN=X;qx$vS6Cw~4H!E)8Tn#2*+ zvH2EuX)ek4(deS{Z6m9j~)0Hc<%hAH@*YBh`#uHP$7COXXPky#Y4wyPr301|3MX$ zdpv#*r8*!`%8Htk{}$|->+FojKMS!CcVASs1;m~nF=rzjC61_$*UwDmn?aNn|A_eh z9@LGpEiOF|Uci5-^?}q7j)RCJs^g8$9{;J}eH`%5B9V*#ph4)`Uv=8{e^p$k2LR%M z_=oyH_)j2M&PF&&TB2t`p87!aHxMjmGYF0n zM^wj~;~k!~|3X4Vz(2M<{^9yS&>p*?>j=*tU2iz>6ZY;aX#YLIv79YO;%W~%-u$Q6 z{u?NV{UQP0T=3So^tk;)yrBK*dXBT@XuG27c&pWG|5GS8HQ*mAb=S#+3=$s`N0h_c z9g}ru(D~%evQ`BC=lTDMC%Sa;e@?!x1qAOLf*byW#K*)D)$#U84o`e?7hz%G|HygK zciaMjJ>N&yna&=4PF2RA-Y=KjG$(ej&v0Cga{Gz1gSzk3Cf8{P-9$P3A`;;6{QpF2 zJL&L#C&Y=z+w~Sp>MJI3MC-nDrNa?>z#nu@z&9{j=9&PX|NohIvFft(jGn)kxqvNv z)BJf5=27hUp;giUCyOC9loN48b-de>oG%&lIQg`-NPx%te8s@s0LB| zCF0{&mr?eP9O>1hKjhLkQkT8kAdc$>?M(O);S9nkLX|DEEkEt^eYxAI);(&d`1ITA z8f>y{W27x4jwr|X|K_z5$K!)u-da1Ur)@jQczGoozqM(f`1z^oiLvjE_*&wMiw{3& zF<63>k=_I@?IaSk!#Heo{Y&?O`S7G$3eOn?%gt27MdFC+_#k>-t(Nq?2>tT$j2I}* z(4Oh&dPa5TnxE#(n>`^p5)gY@2$r*Ql(^c1jt{;0sroR=S-22y9(XVOSG;(Bs$Pa3 z%h_@yu6XG9(3_vCImgUf#^=Z#2tf;a44gTkJqKdXo6ep*^Mp>)>G8M@Jj>lESK?|H zx<2yer|OF+M_&*L`T_6%nfRVd-zsi6KUJTHKI;RcoQWf<>mz@Dx`lFk`DP z`YHX9>-5#u_eOn998nG*Hz)h@>IW%DpA-rBUTO*_WnB7J_)072K5!6wz+K__1mSnw zdpg#bXXty+xxJFrl>2kQ0P6mbdP}f{JykWuCa$9XJ=C{$=dKu~3g3GPw#`kov@vl+ zIeh#`a$HdTBzZ^WXn(&2-GB)EaVNS;EMSiLsc~)-?@pPwdomwB29C2`eN0^KLC3%6 zdGjIrV`(3e0Phj-dbsrL`8UCf=EGNF&PF*BM^wkZ|LX8$KKzt$OAh{tM)sxF0f9X) zqRXvy%0KM?@j%cc18I*B36`^|7LLT#9&~&%FX?}SyOKvA6bbO&1#hrR&+dOQp3VZ` z4ep2@%UL-}98n#gJe;)u;J%cT>kRREkyusyBifkz_6#mS*BH;9*V~$#+UpwhftJQr zo{4FUU(+V*)8O7QXCoXXuJ(*EnSy@Fd7;6hDffoc>m3&lW?wRCf=d_vx$vSXQ1FIZ zA4m=1C~-t|WD3qt&I=7@OjUo%^CXcAa?{XL0|Eab=-OFz+V$`)so2^K|F%VQ=g)|r zDU~8(&kh93*$BtMleMns$P`BR0kR($%$`d8BNE`%f>-C#g?|=aM4mE&*GK?UM6rn@ zq9apyXL9~o>=-=UC!gW~^S}sRmoeAzukZyFh%5hFmXh5WIDd+@y3q9KS=RTG-mU@79AT@ zm*xFN(o0t~t!!Si>X4YWj`!QqZ@HSm!i_j0Ix@xkC+FP;|C2oYA`=|17+iy~Sfs zJ{U|9`5tWd=%ORjxwALFZX)k*e!B+@MoRs_4$l8iI$u&r7dzgx?M|)6l`|Vw1vfl1 z?uHbhf0GtB!flBCDLOKpPjJ^)SyzTsP>!}23GhAx?_!rO#~0an9&uYv+J6XpF~Js* zZ;2zKE7SRNhb!es9QKpPcU;G6TGO z;H~?rJRDrl5A5Om|D@k~_Pna?-!yZ6ZM!@VQP<}E^_SSQ8^Llm!cpRC&u_8kF}Kf? z_TP(8;q-d@sv$dp_Xn3Q{PWMr9=LK_iQmcFZ~8Q z%iRnSuEY`1mFe#H$3K%tpA-pjW&MA{rKkF%Se@V|{ZYrk-RQGEFhhhhaYS@wO1=It zl(918yj=cBG)Eo@?79P8A3MAB`P0B36LndZeo3EkoXrs7_^7kvW9)d$Jr5+~5#Ne` zL;@UH|38b;nU~&9;RtQPd4b^ir(zOEq;95cuEUXX;19W5j`BG1mr|9JC;$I5*{yH( z`MIEyy$pfgp@mkrfGU?S<(JmYl--^19NLR~{2&tWe1o#g9X36S=L9*OE%VHfV+pKN zLs+YaY)=?P*qh*v9ju0J^eH^MTdsm2oF$Hk?U^3lbG}31Kjej6epZ)_luADTpt=e~==pg9<)ZQGt#dgi6c@s({pUnp9Fts_u#C-OkLs_oN9FHxOwOZbPQEpc3=03^rt4??_bZ|nG;#p zTN>+T>>ZDvp*y1Aax_EXByqK4D0V!YoG%-?CwcfoB=GB0@Zh8AGLPoNbK_{}9Q0VO zM&<^IBcdbIYkqRRY-l_Fy_sPY?`v{%kgZK%5BL91o}@ar#y=TX9BVtyMmZ8!dnRFz z&;J{g!#^Sc9{2xGW}Ikxe*QYXWF8s1BIay_qr?%>k?HO8Kc2kZw#r{QWbr=~T@9+! z@{jjf6LRkBh8_)$Skv zAII4Y6^`~;NOWY%PfzxBLpjDA+8$1$p~h%7P1$oA_Ov>Cg7wVS4ptpoOxMw&%y*8v z08BBPuPOu56+c19~k9K91&faiqn&Q)zC*N zcYH2?1dOuhyUIRTJ7%yAr*gFmxF>KO~%NObz${*PKA$nn2BB((vohMgrq& z=rGc*BhXG?nTS6gB3R#BUlT`!Lx%rwN&4eUl%r3I1nqD?We;`fss8Bmjr-&C=&?RG z>SN-F=*aMHZi`n-nGXo=Imc*)&hnsoKV{ET=vwRSN%f0xe?@<`#cY3k8$8S13>B`# z5z&>Y^!j5>5qb1Uk-!f;|2KJqOW!JP*dJ@CGSvD&IZGT7U71R+Kh_*WxkuCeF^f@l zfBYO>-?mD%KgRnl9iMhxvf1i~nw~LtBV22`X{PAN^zE9g$2A-eiJwG#Kh*I4|H-FC z>Hd1`@Pt17u7+!2f+Zr~5=W$Nrte9~dMx-gCbjQKOwZz5(+?eSKh46A*P)v6=(XI8 zaH(P6rTFK7|Cz^gK6&^-B;dInIMMl>VBev}#p_QE`#8Z8QB1q9le(FH>pY&|*9^$T zGxz?ghUfn#ySX6T_b9$@Rkm!TjebF3-!znSL^Z4@HJr1rp_A40ArzDTshYNJKBS%Z zBUs;>8u6t)HWb@4{oe5Wd<1#4gGk`#Hh5kUrDwHgyuYhq4iYR8#UzeM-3;%`u{}-f z0l#LCto>c$wAB8tW+^(ZS6w;wH?>*&yP6{{hSaDLPQ($>k*O+j`z_YBnllObLnPq4 zhO*K9Oj-LI4=)-=r=iDkH8Mxk5JyBurs@=j$9!6I5pDfJuKkUtlPNL1zo|J1UAL>w zt?^IB)p=l9&Xyx_M08|$-nO5{g#R@J{38uOXHVuNs$p?{DELOTaLfgx}qb)eFMET zCj41zqz{M${BHp7A1+<^XW^yRkNYg9)KF~Vi0H@+yg4~vU4tDpSBCrp4(Wb>7dqU! zr0a%WpW%64UN<+dWgqWkC1}F?DT3u{xmgaPBf~w)6>636{)|A|iv+wM1ut4pgm*5y zh`Qi?OaN0vv56z1BQxml$@Q5U?5MdfSvRv8gvT>AT>qbJ*M8gI^}MmIHMeeFgHL?R zMxLXqB5=$+>=pvY@xy*ZIGuCEpAcRrJV|(vK>lFz2hUMEznTyHFsw8DTz?VY4(p(* zg+r!#UUHs%7$Z;moQUuDVd69PTAD6?&&k(0Uhv8-rj!?Ki6f#TQ~i*`lXBQm^Kshm zfd_-@&%^lt-^pL7t}MSd^Z1kRcj<4#9EQ{oZo`IZUD1&lJj>&~19spSk%0FgQ#hr- zrKfl&cph)oO~DjVY~qOM$PB*M-nOn?%c(Pty+_KK=|KI zxYU*(CLD<)q9ZeWVRC#v>=E+l10n(5t(1-SnZiF0o_av=SgRao%aJ%DIx@o_Pma$= zvX%|IJm~kzK473nXVezGPZDkyReX!B#F4@&+&43JP4XPau;>0i+Rg;duj%~%=jMt8 zvD6w{Tq2W9mf0t>PcrkJi457yBq@rBBqWwtlBit>ElO2eYfCLvrK(g>w1iSiOR2S} zhT4kS6 z$^r4ALMeUx|G##wi_h2R z8VzX#AM^b%bP9B&^Bz=q@_qoHe7z<7|G(DRQ^$?odQvOD+}e!zLvh$eD21En z|7y>7@q+tbdHNi3(Z_r&I)zj>VMt^Im9w2bNk=(K>g48Jo;+O^q|3qo|7(Awvb_3M z+!H5EncU@}*6XJmPDK7rIMy^3%W)_3PT#w5r{E66xiP>>{2w0$-*Gr=YirxZszWdY zl`FjVb~fp#7on8hj|A@(8r>(}RC_za>XaO+n=m9Yf~r|wd!rmB2c_)p+fPU4R5?yX z#`P-8mgC>W`oiSiw^SsF;HIsVSgfW*u-UdMG6McjvV}^L_I4$XHm4-{evEVNOl1&; z!dl+9T)lU)Uln;JXC(baTR>70xlEC^<0Z(rLuC<9`+Zl+-#w+9PoWfN2ho2c&h;xT z+jUO=9VV#hmt2o3;TpBz5=z;L_y5$wv++54q_RX0Wf5IMs?(ND@&+|0C)cA&&|mW7 z;yS8#p|j({ZRmf<%2k~2X_odjUJ%OP=r-$hTS1Y_JS(z=6w60?DtUvkQBt47H-KNPx8(hGB`eVLqUQ12O`->&YnPJu7Us;2 z@R>79{*HSbcQx)p9NC9`fLmeZ{Lhcz9L|1PunLJUVMxjzjQz3Kp1@!7Ox*9g6C8G^ z)l7ap4;LA)YqZzzHJ{gUEMMC7@NJN9ZEVD*!#7u+$O!7TPWt_D1WSDgrSxrrzPDYx z%riR9`1*>YosKiZcdAArLSLMfbl|7YxmaXdIvdR(1~o^RkRHZy!r8zz_J4I18XdLrTv z=RM8u729!A-qMWTy~t}zm&KR7B1!bl$5~7k17X#>sRw^4WOo?BjIJ zNXOabl(wO!?=mS6IvVj-4MwD2cl1_9>7?QlfxTllxK*}-P z-}mdR<%%v~p_G2!|38+#ZsW1DU4P0b8ULAG_kY7bMD8ze-^HDbI|?@e*I@I0rAM)M zJq~O_(q=|f>#3AI7{70_&K}W4nP_i9DV$vYAG=Q+-y5eITJ&__&?Tfg2}6=M82@Ur z&KCV6O1$e!*3Rw?2G-Ci{o|1_S7rI@Ke2PN+p=r~^ZPo^Vl;wjM7J_UM$mRhvi=(} zA0GA)O6i+|z6CBmS^s(Z;z5u!qHhikokFUcFeEa9whxo_pOj-nN3vg3*a?DO`^6En zkg-T*IouQ2FY@hg{*cqwGp)0@Hj*S#j$?2Zt5IyUGe~3v6aL}h{x<2bi%<&p;iNs* z#VhWtz6|cutWL?Hx(P!fBiL#o)F-OLath{8wpDG96{~2p#^};x z!S+2@4z6$Q_N<5dXYi{Zz0k!A?%w(m;G%Ci4xK`(d%2#9jG(JCxqd3;7;$A9cT#=}JXH>^|Bt;w zW%a7>_6cd&iu+0ATdYR0J?6^6^`)+Rz54!`bl62GrBCMnYg~M$zOB9lw(5HiIp`D; ze*|GjWCXi6di6~?Ml4U`E|x#9zIp%8ScgNeU;o>y@5yQ0vaTGlFYZAc*J(<(!VSO? zUwR;MXW>qeVtqwK{g?JbhqbjCA-1)1vtS5zzcsOY=@#&E)+Hl82d`^C`FPWIFWtoI z6hxw1!jQ-a_9*l0PB}*CJ}k$6Id(7Q`M>>}j1w^E+}ANvOvpQ|r}dki|zDI|U=VMt^IlXgjPOF2q6Nw>FR`SWm>BI8k& z)oXm2K2iPyP+Wxq1li+p7ON=*TWOQ#6&b;#%aZY>bQ(PDB9y|-^M7Oi>f$rwi_@0? z7kzu+#@qC&n=m9Yg2_XZ@kPo}Iwp-fDZd4tDhJR1kA2a~)pg>#NjsU*;q* z1*4GK)Xq_YA((Qf*S;=;Pa6|T*?Spy-*@qu_T})V+tt|Aqw_PrG!Mn4kczM9~E9Rt9i`A40Haka&j9}VM$^Dqp z-@&7;38nO1g}${ez7Ksx;9}?7aTcqQd*Tv?L`E>}a;LAtn2~$3-+CbVzHPE#O9PR% zmnzS1Ojze%S99&Yqem916ZL|Tw)= ze$45KsMr4N>)y@awB=1*$1D9ed55Zu-uNc$VUi+)5Gnce~fIg zIz^7^CJc#;VEP@&_$1{Rxp4+pvHa3IGvye8jAo6t|08}`a8I5&p}T_JcQ!X-V+lio zC73ba?4+U1i09gX)Q?cg{=1R3&Be?AUDk=)RfXuCg|oKTF;T*h$O>kB==92Xxd>bQ z!d^fA5{st#*~op6<*xJF_emzXd*&Z;^x|2^%$u|Lh@<1WQ0-E#g*cZ_F%#BuO)|mE z6oip#qS&NUJedLic zI?-|@|59{Zg8LjNp{Y^eFcD2hQ5uj1(Iah6GEn_qV)pi7`{^M<|7x z|Nqr3)#(2NZf{)r5P8=2M%x-;NMr^3Y?+Kpqt+*#d*4&ilNjlHTQof`$^8Ev6SjYk z^2+$|N|L+dh$RQ|Rre#0o;PQ~q6J4REbbJs$Ecua12YoL64r8khjLw^pIFlSO{2CY z9rhAR*<&?&zlYv){ttTNmMMCfi$+=-7{M%INMr@yD0O-(h?hEhwO6~$L6lzCkJ=Pj zKcZY`_AXZsO|nmWu!eFrFoJoMT~mpy;2Sr2_GqG9*h|Q_$EYFby#l?b{~z@F_842V zfnpv-7!p~*z73u|4kg|CS$pIm%Gje4S?nK#vhAadTON};W*t56;022o&-11(si)4O z4a_JoOBfPa!M@8qd+Y}fdkLlNF`l$Hx%f=G?4{SY$6m;@HZY@h=bSJkvV#4(oZfow zGp*n|YnNjWeNH-Q^Sxv<1nEV3grv$h9hvbuUdGecV;PmQzB*{hBHj}>xy|0g6nh+m zvol+JZ*VN7&3_#|+v5gt&OUhLahx-r zj=I9i_)3prk00Tz&5hdFUIP~l!K{sv{r9LFNJsq$rR>lD|LUG_@nZiRym2#B`(JBy zN)FXc7!n!5tnVbxLyn>xqt48+e{4ZapDM@I$aq0z*>%I4NxS18aI>fAir$%CaNmlv zSdC&MtmSyY1P5&3-lM-6X{bxFi%?46&FEX9(d*J@p^Lr;aTcr5wnZ2c8NmVPIDHkQ zc^>D!@7Natw`@w6hv)z5-uBA#R+4+d;(dJdx^EoC+#@y+QjCNlkrB*}zc(rP-@#G$ zLMi;R|9{`bOTFjmiz{C6zk#!uEk?qS$OvYC*ZnU^@UO((nH_)VJ06DIap#}NT9sFx zs#!DXbCVY=NF|UtkFA=jy52a!vBE@87`G{|6IiH>GSZ9 z-Uc}qvtpDmBr<{n|B&Dx%>{%}&!^kHCo$eKSiRo=hDL|T+EAlydwjic#L@FQ<{h}? z;8`6L3)~*=Xy0v*PQ7ckb}9cQxX+j&kKh=qcdWr}%{l#h$W$xiD?MWW(Zj%LZEnQI z5{3jraL{*>aes6R>1cyOzWqnvT*N0GB4XN_*{D1v+D$}h8vRQk0vRS^3){|U$mU8Wev)GMbm9Um;JIZx_vK|=C zo>S~3l+xRd-kn^$t_Rkk*Kd#eAkQ^m!91EUB(j3}+a~Ly(F@^?l&sod*khe~ zok2wJi8yNmqnHUpA}d%hBH2%j{vPS{h+UJO8Aqg*|2@%L5&! zM}G%>)&@o~6V`GyQm$Va+aegJN3#zWdkLlN!S{db$GLd1N8ftm)?xLs1`(SGDQ3cu z$O;arb$S`EM>CF$UYOrL5unGH9#(O+ME<4dT8v|#F#1g# zxJFAEX5+f8tgrMa?d113TL;$WgdxEa9CAl;-D&hwq@#@rrEve2v~G;G*Sq?{om7X8 zUw=WKtpjUw!jQ-c4sA`YJB@yYbl=ObkD@(ob)?JnCuF(yuk%^2`J-pn#I{Lx>=HZt z9cQr{#Y$Mq!}Cpt-s_FujPcSog;I9l`M>(Oz2=VJPM?@T^u3R>n2lm242g{3u+C)s z95JAed7H6@W(Snt*mg^A8^U+C z@m{%ljiZHGJyY7I^-OP@G%4<*Qm&ngHZX!&!dkB5Dc2Lp_&uh9bZ-9l?J;Ht^q%s6 z)$2?mdRfCb8yLYXVbyzz2^Q{?jNfA>!doxT9vM8CBvr0*%5}C^u2-`Cmd9n=diLm= zGCjG$Ddj5QtPPA{mavxVY|8a=GQW?Z?}@#HQhNFSfBktbK6ifi^u{ej^v=Lp8yLk* z7!p~*5et&}eaw8)mE_yQ$0IEyRjxgeb*akiW4(zzr*{_bcaE8Z9*f;5R>F|T2#$C! z8860QW3iJ^N*~Yv)&IoB=Z+UnpBpd6oPivR*(gTBkjMy*T;z=x7n5#cKK{7;dE>>H zqmXs|y2}%fH!^RH*$}rcZVK(5`jO>uWTvv=ZAuwA7cCe3^~^3W{lXFuv;Up&=I7f#wqLIO zucSQW71DY1pS}BIM`!zt-TWs*#SXXPEOs+Suo8wuR&dlRv!jMKBmU30xWD^$xQVp) zXsR#O8+S*Uzs5X>voX7|1#BRFO=&;FCp zw=&cIe0hDezcShXQ?Ek3*7cg7r+(>!d&X-eNho&Mt%%)}fmOng$O?}6ezKn^n*|R$ z38m~H`~S5rUe*WxJ}RZRI2u{K`ykKSz?6Zxj4&j!f^Tk<>?g_=!prXeQ*sl7q{_wq zzhOhKT>g5xm_MFjZ928b0`yrM7{yE&5?R4FFHP3dWv7x3dkLlVvj1<`)Wv7l(`mhl zL8Kl|#912{#Y`9yS;4VUvYsyc9_h0C|FqnqK~m*n|KG6Pmz9hEF=U=QEn}})W^G^; zGhr>)c9iRtcR8dCPcJM!NECakQ!O!*Q&m%AdsD507!Y?2oulac>fL zGwv$fc{uX^*Cg%ZE}XT!DHB^0h6F=!+>PFNMVX|Ygi?5KCvCZl&mFI1d;o7eUOk2! zYjab!oO8mE$Ow+F^2RIn`(@eve#U;*`kC@PjI2hLX~!#nKco3)%7U)DqqEz+q=2+y zhri=2c2g!;2}2?)IQ}=uex{81RO}>_vcq$v9p~b+`1F@lFxAD2J=UQ&Hizgf-@Ir8BbX%&iLBtnu4Fw~UP8L;{=YXKZ6bcT z%Gv)nxbd*p`Z~_vE>B=5%|pw@UboEJzzF7Y!dk9y+@efv7fwrd%)+hD27d^hB?H-VN{gy!ANqQ!F=UJTJcnS(kd{ z>b3qP|K!QOHFSO}zXN^N2Busv6V`HFYJyYyCF`wno_P>^38n18^ZyM$aq(i0zV*h| zuzLTDJZl3}E|>{JA}cuc%w)Y)f$Z`h_hFAB9&H}!ay^JFCtv&Pik$heFtxkW-lW8$ zXqS3=0cUMs6fD$;9z{CrC6uzqGw6-u#UAU{Yi%NW-@#cMnDP}i zjA)S+oOYqp>-I0BcJFn)q}XG8M0w8*l)r_{yQI{V`+dsynY^#4YQm%rA}B{iKXi)? zKF57v!*C=|aKgf(+VYsS$ci}I{6{Y-yj`jM(abUtL`R9l?#)xGw%o=zeJCpL1}tSoCY$rGIU zO;1lH>9#?KP@bNV==p~fG1enrqxbZ5k>6r46(Wl;Bzb}}pY`-ifwwC$*_9XF6G^Id?XGUkYjb`@N3rMEan^>WLa-2qq|Cutbso-r z;eoNHFMIO*U&Fs_IqiErl5xga)z%+#jM&-m*K2UjruZR?utL@kcT3J$^8Vcj8d)mGsHf0li=m-X z$slrX#o4lJUI{~C<3`B+xd}BSa__|bBoT^`qTKe3+!U@`khL}KaJj3G&s{qd!J_{G zoW){w5QZdAaL#5%XAc?VD;~jJZ(Fbf7VG!gbrcD%lzy)NH*!t1jWI^;x?0+U>ahBs zMy|zdbr6OmPjJqOW<3pw{^xOb(vo7U7V#I`SJAF1{ZAr`cc-3lRfpZ{p0ap)%V8F_5a2?m1*&>VH~$XtN#<^TFj+E(oJGroKJEBhnYVm1}%kg)1+NB^yf{>lwW_ZDB; zb&Wb{fAM^gufLM(|BcSzTK}IG$6du=xmgjj5gig%{gX}b-5uR{K>b&8Z?a-#{N$jP z!nMDmJnaQ>zpC7}h(*T$39DSb&-L9udgDVGa?ekV4-Nh}Q;9%VCM|=6RnC4UIFELv zAt_%oZbRNA-OE1m{xO+h`mhh*|7o00`#jOL&(Gxf*kqosr0uw}n@Y+mVbwn${g-+; zm>Vm%@^MV4j&bYLhsd*&^kcJzWHj$W|%xZU`#qx_kO1X7;8ajySV3P!?^$OwM8rF%X( zB7T2d8RJ8aq!fOx|2LkbGJO5J^{Ib8a;*)l4#JSg2!1%z(|-c#rl3DZQc6Gn|8G3a z>6dlEhl;;*;cWi8)78DFas>A=IEz)+8WM&iZ}7v5y>-ahwBLQv>q$uITST63YhJq! zc~A9GN-u-xI|FC2nM%PzSoQI~oF6`({9m{7VtD&ooSpz@x)Z^wc~ z9#GNy1DwTXD#0RQ)q9Q!F4)Mu=TO#L&)^P6uO}g;kN+k$vStuceecFNr_IxU&WdeC z->-2Nn^7!;A;}wD(Bb~y9+BpD+zGBe6A79)rS~V~y-=flz0wMcxn!MJc`oh^TsM2t zui^g~_cxpyo2`Ve=qR}F!&%!}Y=j{xdvL*05BGzlyBORl1h!l$+;@}rM=oCO8@!|T zE*v&*_R$G)%U8QUfm~~AQz<$KLn0%%;CJr-i4nHB65j3T&ykeU{}_3%5D~7vZ9k%2 zx6N6+;Fx*J5Zvrt1iO&7A;OU44K7&e^&{3Nm1o=fjwPh@y+|Ie-L&7}^u4cmz0n4# zqVL~0i_KJuOv0*<_YhrJmAp5v@S}P-*Nm??C|b+i{>px0Q#ynK#s*^M5crx z$s1hwGf&?pr2A0tB@%pnRqK=IH=5Vtv-O8PXX^i|l_UDLL5{^_s*ovRNb&|3J(1L3 z)ei8CwP!3LrEg2}+@X1Web_Tj4Nvry;4CJiG6_SHH@J8MPhUOhHnH}MC8YH2LLT}^ z`*=6c+5VxghG8h0HFd%S9=aFNkm#+(S!{aEO2UxH2rfQ2`MQ?0ZHkbM|>v zT>o!;Nb}lx^leXH{NkXVX*Pl2+Y@IoS=odkkr7<7!2Q2U^v=Z9TfGf=dRY@UK5E74 z`XNW}G+*xl$g>!&Y{HPp2rl{1)60lawVT!3k*9ZG^88ivTD)(0c%6OuBcWYN3Eoq1 z7Ne;W*@RUu?@7A!1oyuh!FxJxrt0m?wez9qeb&?ahNm~Nv#MUZ6j`hps+w@~al7Nb zZOoqEGG_PNtc&ouL}6x$1%Z=lO}v!)DpmGRl5>W+T){@1G~ zlq=fuu7z{T=kVXFS#u7rDVyI|KeoEYt%K#NbrshaVjNY>bFLi2Mw<=#DgPn(U{QAi ze5-F~vaPQ;;_}!rDBSfMUST+`dMfy`^3y)h>g4VG7_iqqj@=lei8ocY zPlmg;*tGVz!TD3XpxW<0{O@_uyrYkqH@9N#`{aAYnCh|kex}uTPjo(od!E<`|3e%Yg@}vg?NVX-rS-k5Ny7LWw;D1z z`VxGVs_zTrg0bpNaztRo6O2N{#qxIfP8Q#4O%m>^UVO;Wx7H1ABoTepwBstl_#Yx7 z!kcgoMj_&2dAmGmf)u{$4K+zP)auoM$-}pHrsFw%+aVW>)$0)*;qQQRDTs^Z4dpUU zS|4K%6b^mKB~~vFU!j;l@r^(}7^^oYI>H}`1EUaevAm&YX7#!C!%(UBBIW7Zr^r=( zw9RTTR!2nRs_SuJ6e2Ek@`f_pr18~gl5ptn)OUwGeMt||_CnjN7K~+NiSQ4?fl-LK zSl+G;zP=max%C6zvh!#N=h8bZY5!Y$U>vmV6V_J~avOn&46Mk(& z6NZyaxD|bW^P5b+FWBF$e~<|WPpXQUAgm8_34^09BRv}0XbCv!Octm>|PyW_)z)6&(Aid2e5}6K z%}eVjPpw~`>(E1)gsRU+pOrVN+?$t(H`Ui@l5psL>bpZuJ+0~L>2_SLr(4M@?k7Y> z__yQ0C`4Q=Z&a5Fi|s=7-J(gtp~p3r%)`dZ|Q`z6UE{0DGg6e2E`H|i2^ zp1{tg`d&>E4lT}d64rJBdP}+e{t5DmyNfgt{*yQ`3K18}8}*#m?p5DkG)XwLPJMUC z!M8Tk?pcpii+h+X5kB*wU=$)QmdD>UGwuFGO%lqtN)u9iFWGi~Y<|1{r_0xtv|r<^8?&rqovr^Dz_-+fjXY$kCVBQ`eg{lgKL= z$C4$&XL(TrMj_&2dF2OW?YX-q3FB|yX((^pT07mcILbI#vky)%GN-A&eK{X*lMoln zEC0Daj!3?}G)-92Wz*VY4!*elz@Yl(lUFcylOw`s9u6em-Ec8(28Cfl_3 zn4>SVo~}6txq|TkazyyY;=m|GTr97mHH&YtCJ9USRNo!)^vx_LP<+hSHG**=(GmWI zI9V$|#KrO|F3RdVO_PKrGt_s7Jbi^?0@ZgFas}gwcKuiTvgx;GoC(*v(S-e3OKpA? z>!y8JcWrIVSe~WW@Xy8U|NE1Oa{LsBjfE&vjHiOf64L$g3QZE0xO+1i%5ASyo+HJ3 z6LQ7Iml7G_{~Cvlg@}vgRZhz4yHS&bC119VSnC=i$yJ|>ZDQk}6A|Gr$AM9ZxL980 zPknta!TX&i2}@?H?+!!oWpuEVH?P-FKk9BHO~kp#0;5pPZRoS|DnHHYdqk6jCG*sG zhrITap4V&cMy|N~ZTk_wmVObovS+x7HZ;+M8%0bOtQq_9Uy}{l^Y(iL$2FIg_u;?p z>-#UyBg*kHZn>31Sz|67eeNLz_b;|Vasgvxb9%cL2 zS8CqVsIXMVb&qQI`LgvzZB11}vc9PK42{&0P|YhQE>G*eW{_U*siog3Cc*UH{b)23;4yisg|aV&8WKEsh<6e2E`*D}nkm&UidCJ7s<`-F1zCF>2{wuc ze_z~qD}lIJUdu_|dPCY*?OvKDY<$~$Tv_IOPjHm;2GSikoCFYCv36}9!rxKg`}@?jgHTGkDeLukVO zZr@V-1L6gXxFztdzILXn_2cWh(*JAi9y@IO!h|h%stgW0!8k7t(C%2*ukPZ%J~nFY z`vaB@9@tSduJ(hUuzr|8wr`Ur!oLzn8HI=w`9ke~^xCEBzf9x9rhe+X!?MAHi_&GD zMgOPrV0!n=&W;M(4}OK*^KloECBnZM2WBDSVtIv8*dvAa7n&q&;=X9hBYMt3@XE&A zlEYhAC*I$a1XeFcppWsV7`?s5&mCr zU=|`SmRI;q7O(8bMIYD3T8e!`@cu~|a)|49+PdoZ1+oa{Kae59|2q!MLd1!Dp~5p+ zynoa9uxWGk-C*GZyw?Q8wX|~;$nFn%~`x|-f!BPez~4aZ|nD8aUjN9 zSSQ}k(Ic2&CR;??9>h7Ag@_B0FVwMr7VoDTA2w~LzB{Z7Z?)p(d#Xmhvs?QCS(r-- ztGKfJW1F40SYF2;rGGo}+x1x6-omCK;4aRY)brSZaq<{2)>y`F!K~j>jqn?BuI`8v`9hsM zDxMlg#@cm4*hF~~5__xVG%7uA)lweD&C~lAEu#7-kVR}zMwSSFBF@PqE|%ZrX33Qxh%v8+G>8g*Vj9?ZT%bMQFn-EaH%Ex+ACZPc<;8)3+ z*)w4Ot^EDriwqoV$*{@7pLnM?&&V2c>^_<=Y;w9ZWabuaAz>}=s=~AxT^5|$=Mdzs zA^&s|MEHl{T#XVJ%bWO;x4u$+^F<u^|Ji|gxeYSOV7c5}4?@y5{HvTU8 zBmAG?u(1$vB2Q@d4YKulmBxonyQ}XGIr`S{p&iFneZNMo*jUEW2>*T@7=?(7+>c}5;jdy-yQPw@dZl9RegU&u3)@g>$Bf~xVN?X7OuH$g*%u%&gLlEmHqQB z?46(Ey30WJ%&Z}|;y&C~Q@9pW;p_V^&m+q56b>5;QKlHr?sVle-p4da*u)yUb+n#y zkn!yCIAHtdnjSvuXi3MjL5WQi|EpvXn?FRF2>&@8HWwmJ%>z=p#h)3 zpQ)#N{2^QauV{SOWXBN=)OUv*eXHAJb>KzjNE{gJwj@i0PumoXLd3=LCO?wJH$szy zO$*g`hdh04X?rq1DaKvM5^+8W2S%Yf`mB>TWmHz*SWOZ(9j(4Q(0}UcixFCXYo<-G z)|C2WJJDS9IGua-tSeiwxvcHv*#WLC_WS$^)@EGOSZ^=f zL8N=6sOo=n5>XENo7h~4GR63&d_OaO)Y*O;HXUQr+GB!E!WMsrhaZ`=zdEt`G!jJk z%-dpfA>v|rQ$Eh>o2yB}rsLIjhdh049f`e>N%`u;#?r4N{9|!o6e2E`#}u6&AM0$r zhD|5iwDu_VySNx(`zQUyDb)I1FDaAO@3+Vzm=7acgnuRu%tBJvPX5&2WZTzinj~zp zz6NxBuA^}{viiGvTz9qYtA9rS578qwIFU>d{)ISfAVgd&f7-TL{omIlVH4#~XxZRo zHS6j(vrn(P3b}&$9CAhYKgEGrh`3nZw9~!yt<1l5S7?&3>1_4gp`+MWBtr4BUTpK$ z7qV8Y6O5OVAi}>B2Sy>{VtLc9k@3m9UR?J}O%gVJSABPoj$e0^UN8Q{{!h`nT%3A7 zuuk^nvfi|I(tsT59{G~%IyIGJtLjd&=_AtLjl)Jlbw5X*Ezi}LnT>S5v|rSMQ!}AF?l(`n`(v(d~N9VF<47V|za#{@<}) z^3w$V{e(L9)KJ*;Gxdvy`c1y9eN@-Q50F~>VZKQ&dqnxyqXgJYsO}vtpPb%shP%H| z&s-@O6(@tJ(|u@y&@bj? z^^MT@u<6(6yG74Anjzvup3pBI@#Y7yU;S8(51VdN z-yP<9y{$N2wN2`3SH9{KY=W_Zs0e>54va#?#qw^b$h61$f+h)@?gXE`=0$`Qw7yf@ z$!GFBwQY-jJLEm(LSfV0>K707mwZ_}tgEOTn~YQSJ!rxYU(Pgy>V0Cp)F++s{cCrti0QQ z@7-4--qateNy4T-Vz>A7oI_5#_+p8486~Z!6UciOPVS#Z_?SX43K1vrgl>P;yH2F~ zj??(C=@IqaAxGbuC6%@bxppYJ4#zDbON9R&92kX&i{<^c;I%{5_iarQHa!Nuf9N@f zTz%D5j;;7amtZ`V$OxYaCBEH2oX8XU?bW_MZc^4?pz&eTU(v_)OG~Va>Mx1|Zrq8*u;RA zkm$d*80**b5WbG~2-=+V)q`o^W8@y=|jT>i*^SZr% zP*2(F1tT3o@x8`57=?(7<=ydm79V>IC~SH~eRs%fPt)Ve>9#(ZFY5*4pD52#{8MrB z*t;-S)GXwD7xt$|5==%tVjfE&vjOR|KtaN?aF(GVXU6Rnc>}&5=@ZMCT zHvSj6BA!hS2xDWR`hTI%%DeNhtbNyLlCX(u1FhJ~Qm%bd*O?kNMy}ZSQ*uP;+mv%K z3K1vrgzn^$S_)soMj9VBy{o=E&>j11Klc7a!}iDpV?%$kMEE;ej3R)zSl*rQXYe&_ zD=FZAsJ=Ta8$7B{efGXULn(5>*sujzBK%P}FbWYD%e!mytiIuzBy9SR`tFct&q?t% zN!x2f9dg0gurpaA{01Btg@}vg-BpvdXRRg)n^vmt4s$(pu0O7s6knFI`Z|#-7|Y2L z;qQh6qY!biyt{sw)#v8@W}DOBK)IpU=$)QmiN1FW%V)dL1FVC_1&QleQttQd?z7SFdj^n2>%ou z7=?(7<^Ar{tiBU8N!aYxuo~*ip469+>iZ6I1>+JTBK&i4U=$)QmiPPlS$$_|lCW9U z&qeA3pR7S4)prSU1>-UzBK%+Az$ipqEbsS!%j&yGlZ4HK)pv(J^i^86>bo7eg7JLx zFU7~Mf@@$E*U$gW*uxs2|0diM8HVGY$cD_foBx^rfu!a^U*~^u9-;dV95xoBOfjCj zchBOzRg;9x>=_d31Fu_fDc%Q=D>nWWxgz`raoAXhxLDrZcV+ecL6d~dk^1h?hrVjd zR(($*S8V)y;v)Rla9|W7E|z!C=&ZgcG)dUJtNQMcr?1e(qZvx7?*rrt#y@F&hFe}v zosH-JIR~)UWZyRE0sgx)8^?c1Ha-`}w`DiJ4tF~|?(YwJ8Ml`3#!lsb<3*I?BOEps zqD(QKdoIi3eNU5w%_G!zhd%In?N_!!4Ps+A|2OvI92*M}7t33|Nmkz)O%gV{J)efM z9E{Z!V>4Pxt0iH%r8Gp-0$A>v}W%TLMZZM5TE*zD@e=I8@wwdG2^ z${Ja)Hm=Vh!XJhMs}OOqyyfqUKJWTkmhIGH$xV_!4%KMdi?^hcmm#?@R zvpE}iAkw~fwvYce)mB$k#v2%9G&0wUZG;+Wf36(Q{=n^5<=s(=MeuA7-|G7d%iiL3 z65>sxwME#Rnt(fc&-bg7>oj7w#sdFKyAFR01&HuFag<4jxLDrf>wER2`r0%}*gRf+ zcgWGVvaoldFhzG*s&7x^GCwvpktM?K!GTeTxLDrf`qFHyRg;9x?i!4S^7fA_ z3)8xMeY21Y#>OskMEJ9DU=$)QmiPFbS$+FylCXKA`tFd2kN@NQ`VL2~VEj5+B7EjX z!6-yrEboaev-%FzBw_O;_1z&y-)H)@G}Wl~JOR0aaUNMB{F88C6e2E`_ryuw{}R-m z$7zzVd7Ap}kfU$qq@Ec*zO#@k7#EQx!e?$2j6%f4@}Brx7T>ouN!Y9{LC-nl==*%a z)JYvyq2jv;xq|Ujl1KQ`&%r1}TrBUe)n-7ty5;h`3nZUw@qK4_9lFuz6qg-603xs>0OC(<+p&_-;Y2V7!c|2%mXdFbWYD z%X>2P?ptd8-K1)1@ z|KWLr{10$;Z6vy4JWt;4?Jv~6e^^L$_bm*1yoT!VbE@v{~$du-EmFc^0*{XT8v zzXyZC*~aFH4b;G&@gIf7tS5R*xCN7!JYy&O*yfqO&i~>(q8w{+)Ugm{it#+fnfB8(Op}Do$ExoR>uNtvUoCRM*t8Q_BK$fW7=?(7leK4?CJCFDs_zbY`lS9meY24(7@KVW zVA<90KL_v(QYFtIJ;?I{SFoR2${vdTvBihSNn1L zPC~BOm@!B7F^>sGA>v|r&m5iAcY-Dfo6k|-9dht#`>~Bp+s}`XD;Ss9`jqv)thWbp z&wk+9?2+kr&9CB~VXXfdb<8#E{;6x2zP|tRJfa+z;jpm~Ws31U^Mh=CUZP3D=I^QR z4taQ`{d#z>L$28P2V{xxnMa#stpE`h%X{YitiEeCN!a{D_1z&yU$Onz>zlGxZW0?` zNtOtIIS!0M#KrQS-A(G#+t)PxMw5ii7pw0MLnPO2c3&g!ZSB3UX}Zhh`>~&oT#tXr zzGiF)T8fsMi-I_q#3aFj`ixLDrG?|b#6`d-u|Ve?PbcZZyM zT2)Bvdk49X@6Rt9mgyj6#I{ao>VrfI_F8*Ey8%)z(1&HEn${dXYp1tVj!=xg4Pb9b$txLDq* z?|AEC(bp{dak-9plltzkY;awl`0PB`EOiIQX2}uZ4<-yoA>v|rt3J!%bJr8YX50R4 zhP-{o>Yi!wjUj0-%_TT6HgnxV^^M>hj6%f4@>Xw`#kY$l37dbbzB@2^dl#nC^(W&r z_xYA3PrRspCPKli*Xttuu{bab5f{r}y)=urN|S`mzf<2Ga{9+=UN~sGhh9f*Zbzv|rtFO-D9j{5k=H=?ULtgutFd@D%r1+*GS1_{9Reh92FbWYD%Uk1L zhtl>lMU#ZhuJ39ndmT#u2R5PjfVJv70J(y3A~_=b194y!lKqC0x90dPzI`=G*!+hWWD(3W$rj-siF5WRE|$OMoosy`rfS0GKNr<;l2f0b zPw(#9Z8yDltNKnv{sFjyNFL#zj03X}ak0EFHud(&YTx5EN!a|j`tFdUZ`FjZ2~#VS zulmkLu3%hDRD^#H4va#?#qz#5I5Xb4^-S3Oluc`oIr={B;-gjVT&%L|8ks+2ZL4d+ z2>((X7=?(7<$dvotUWK(Bw_P&>bt|b)=~C8U-Qq9D;U2=mI(jnI4}wk7t33_Wmex$ zHA&d~qWbQzE_`;MEaR18yqqi%=eOa&D8w2#mbbPxtMAvEBy3)xzB}aT)A~#HQO)-u zS1{f{mI$Bz70*G$#q!pED_eidRYfRkx`aBs(VTUl^v9K5)8i|R+Fod1it$czMV$W? z2S%Z0o)vQP*1qChH`4a`m?jCE-&EfnmJJ^6X-xM=dtb5nCFBZ5>BkZN3LF@Ph;#A+ zuh(9i211|5vqaja)FcNR9}9 zFkvtX5$EIuL1m_Wwrr_M!Z@vla>q~fP2YQ3Cke!!vUU@UEt?P#;qQP0qY!aUUJxu} z{8WBKJY^CZzy9FmjSNzbf8|nj{qaCY00OKksgD z>z>snBbMUb3;CmQ?L(5OGdkF!D}sep7ujHAxuTMnie)!Oy$fc)x0*?;zx2 zzB}aVQ+!2zry*A`9!8c3|8yJ}g@|+Vg3){erg&Xl?YUHwgi;p?_3+!v8)Fj6%dYdBNy!W%YemlY}i5>bpa(KE)U78}K}G1>>1yiSTd7 zfl-J!CodTNAJOOSn_GUQNy3&Io_mr#zS0nmEtly$qu=M~y>D*0N)v`H^)^R*Y z=f&gN!^Dd%#c_Ya;tdLqd*hmvx#a=L2ftZ;cUafD%dUf3p60(qj14XKkR`%@7Dt(c zh;#CSg8w{_>U&a?ge~LMcZZyIvWoYXc>l|2`6qH8#63!u2>&%47=?&)@`8@7ym?0T zy{t*XmJapZp$~oTi7xF2A0QWuat}oHeZ)B!g@|+Vf{xR(`rgwdVar7I-62Qc$_djt z+)haJ$q=a+|HVl}xF2CK3d#K!D=+By$XjyK+fI{&Ez{L^hraa5=;_8Y+Kgb7|GlX``iWo^BF@PRCe(>O zZ+vMTu1P`}>l2dkrFEp*^TXtOMs}1zpX48CpG$8o*IZ%CzDaI5Ywh@wai*cN%73q_ zycVtFqcco#q|sErnOx~ge?cC?+!Wba#hE~ z_(rR?%Wm?XjB6%KgwMPwWfCIJ$qVLw+p90tXWK>CLi&Vq^%c6k>w&FDBA33}%ACG- zsr_Fndit$7ANMERC%9#}UnWw&va^VC9F4=qLX^qj3Fdy5#k)|Ggz?<0p}h6Ps*Xap z`$wVLS8OXbmN`AbUy5@!BhJYS=FQ9MJ5e=+x-QUDIpo?`zGbQ@RG-*ZY%Ftngnt1J zj6%dYdBMELMBhWS=K-!ge@Byq@mfGbatO$CWarNQfTQ05czxEa?3Y*KFGj6>6S*6s zZ#mDYeo>TU-|tWSxX*CROXC>xl_Jt|A3$s))OtEPbxjgnzNOjD_5%QB z^>0IP`8)irRdEtl8Sv%Z0j<{{$OM;vVEPYLKH*j;L-YSu^IyTOE}Q>1R;K9C{J+!u zSNz%ZFQn{rlf+ZLv(?WWl50=GNZHBzVoYo&Ef?jmWyQZPmK$98bc~yFv`X1<16CL_ zo=afhzG}0$+#kae8Stgt<5!~C1XnRn4o#JtaS{qyOQb0v?|BGq{dX~5$G`Vo{dyml zN{yd?(d7L;_%`#>!Ex3hoU}e+uLJOPm4)`khL&SP*Up}E`D}ZOGn%%U%q2n}x~O?F z-V%PVolsR#TX_=6WgLLk~g?|U$a5z*YCK{$&@<2zIg6V`kS34mkVkAzB_A{JOR_i_h|T9 zU3YgEmoOvbQ%_nZ(YKoL=8`G6`a-k0_LFg&5a-Iod&SJS@s@wHS9E zlhri*pQw}Zt5`$D`e6+>uB0fYSN&+aTF-<-Snm$)!f{`E=m^@{*NkbyPUCLHA%l7| z<5)XNeg97>LMHWX>p+P>a%_2GXfuCIP_ z6xqLC%-*XW6bHC$Tf*nQfh|XH?Rn;F)(+qrCs=T52ihKXxc17}4vZ(`Lb*Ai=vqP_5nUyXZZY|!j>oaC&{!7p!%?ZI_`aUui0+T(r8=ecidk2m2t8S=ioR{E6W|4-H)FG)Q7f$Ap* zvB!O4kC%&asdWqUK=J#5eU1O0k=<)|_PWxM?kj+Zjo^c899V=H<6Sv|U%eR5&)^y- zSa4#8@momB;8*{S?Z7;!GT@6H#&4tio0^;*#%~JW$rvj*x3v5==_kugaeY2sqJ__M zi>=q%fF9Xfw|*Zxj1Rp?dm7L4*>(Eb_XnL3xCM)>>*M)w{BXp0cFy(_mG?={k^|!p z7dnmEbYeHL!#J=DvEG+*L&2{vF`H}q5jzNWacVc_IpN>n>^6RTD?|8dxAB($d2Ba< z>}1G$`0P9Wf?uyS{pP6tq3}fp`3J1PXC7qTe9Ka|ZXVBkCu?cp%X_C&M;xB zKaMYxc=#3SCx?K%{Y5}!F)n3qZ@u5wI6ZzM*;z-#WZR!-+z38)84ngA>c^EMxb=hB zj^l|JEI75}J(4oGZN1oz;8q#%v14ejj|R7O$99|#-^m!Tg7ZJ9oo>4iJNe_%_^F5$ zJ4{kPIqjbewPchD}$F$XTE}V13+<6`(NwoIOO&*Y^E{Z>wv)B#~LmcyHOlsGU zkL=a(Qt4-rXQs`e>EAzc+R^jo9e!l-d&Z*I=)QEk$e)MX*GvCVTu9xWSw=*f^KsZv zi28E)gF7Bz{gtxMB25yuCT7qGzMLMmP80il(}p>E_UV|HYoD*3(NA{V{C06pG8fCw z9(DYAMRDo)jo}?{d1{BxMpQ=4%~3_EpPqe{i;urCEnGi+RUhfAv+Uxb1@~N+wd0R9N!a>z^^*hR-1w8kjz1~J*?M;KpZCSm zKF2raqVYd1X74rcVc&e(j2C=aerEXs3I~)7* z?)jtm|2lc(yFmX_iqLTn&dEimvsZBceQsWoeyldf?m8~KC?yE)e=;5yo^vwb4_LuD zj`8sUrk8ZTf6NGlt#i~*4l@2-xf6#cigBs>VEik7kF}5aw`~mBb=_%2XuDapc)^@Q zZD-PPoN@~mA#Cl+5j;32#<_xc!GZ&4*rMyn;K9W)&UfL74EO^iE$b?9KKS!2&bN(F z*m{KenM41b{RqX${@Ko}$#-?NyzC3amO|1Fti0eM_Rn_SL;rXw6HfLKZR_K296WTZ z+egUt8`)b3f4~ZS)@hXY;j7|#i?Co2zFhBVqhC<34_|Bg7ev2=Rff$U%6&favof*Q zxkR7Hbos-UlQsV%{Z0R&ntux?gZz{)YdUCaPom$&UsoXCJL?@wyI z+VXjyp>1D#!E-WnU3abJpK3M>_4;5)KV(Q~>ydcV??diswEjZRImiV*H_v<=<4&%J zas9gA2N!eAZanz~dxTH$Kal*4m&kwmKpV zZNIksx$L)8|MkR)4B?-O{C`;f;jw(=wTTS)j9X#rcPyX#W41jaPsTE*KWu%_@_!ub zzYU(q5c&L%vGoPZzcSW;KRl5keEv7u`kv)qZ~7Hd?ciRChyRiKnM2OF_<^>&d2{A1 zIA&hl6e9FIgriJCZ9M;H93ez<(;17rgYm+1TQF zop>peIO%7fYI$B-6_@ud;*rts5LStL$b93o_`b~-<# zJoHnc{@a+1^dusVlQwkrqn-BCv6#Mmirl4!BKYfB8U5abf4Rn*LGPJO^-TDr6dC>g zBMscrCQH5iU=$hHBOFRu#U7jWPwdf7oXB8x5$-}cguZsP$LD%RJ2JvS@ZI%*&EN3K z4lRLq9+l&<8b6tKIcMv{Kn&-1fP7$=UiygFpqz#m7#pj zm4BYcKLbAbl+U^H`E#6}MDWhSkx%)Y3r+6v_~*hWpYl0Z{#_oQIuRMlzsB;X?BMY) zfKNWHKhA}wEGyPuSR&&PGL(Ob3HDA3cSQbNG}=^`ocowH*H6ZT+=h2mdJe-!RNf zGCsTd=RSngU;8iNFUjG*2LCc!|AmGeKF{&(2nL}-OAi0v@Xts7mGDo^;eP<1_Sb$5 z{4;X+{EvS};wOmw${haZ@Tt4bmGEnG_-o*=(c+l`<;dbM1g?I-P}mv%WZQpZ`$(N> z{ZJ2u&Ky2+62lEdH8;u9S5&AdSy@EsMXC?CudrGGsGpM730{xHVm=ivVp{yjPT zQt({{pE4Gx$6oo_k4ycve-8gF)`$nw{=y-DFY2$f_18`v70%7!*TP4B`@i5H2Y;sF z9}!;u2Kdxn`@i9zl*4av_`zA&6FxVmQ~9xp)UWit!i*e#r>$StDtmp(`&}J>KIwyh2K+OSU)cx$Ecmy=ukC|>F8np{ zgFg6_P3wnxDBKRd8#48CfvX?tL8up>I@9{09&-8Anbr?&BbR@r9e)a2IsUPXKhnSC zzEOYnK&6!H2F73B57)lf?K3`_HEZ&;8MCIz=LhZUwUY7V8arMUw#~?M^9^H|j#q^p z``|N%sXf3gw84DFE5E;EBN?v>!}{PehRJwUpxi>e@-v3XcvTpa&nGtAi7{uVhb_PG zCsTc~*(fZIS6q*e`Gp6O^A}Uy?enoyk+KG^OA6*5E3Gu4Vm)!4t!Rf&k+YsDzs1vo+#;WI(=pJLAL{eD4-n@UT^)l=`B0zF zbQmKde`pW^&ZR2uI}kG+9t(# zke|ro+Cj%KQ`V7{x3iPCtIY50zu&R)W_A{)x3$l55;aY+zf!J5?smv6HDliPaSZeL z^tp~PW(?omDE0@^C;91f9hGLxM4!+6U$g^#j`!1!e#+-F{}=g;u^kO&^qD?i`l9QP z@^0IX7BhNBpU?bX5mtrPs%qL{tPp6oS%PBkH07Uy-n%sK7WSCp8pYV@@f1D}#+|R$n<1c}Kk}0{-=QIBoGIzs%z^?{!>bhA!~=S9<&_ z;a_Kl4)OWdc>HVN|I+O8gwMau<6j5=X0yw;eEu&z{x9L*YIbSz`8Rv~o8jMKcIHxP zGQQmE@o$Cyd$aRmpMQtPzXSfgX6I6$|9g-Bd-xBS=pLVcugAX^{=+7k?(-k;_z%E; z)I=Nj{D(dM!|W41fW=d=1Q^0$D$z1eP8pTCXAXZ_H*liBtkK7V_U zzdih+X4^}B{!Si$C-}q7wv&ARP>(+p{wOopZ(pQO$~PQ-xf$$_$D~jAqu^JY!E=21 z!y zU-0+^_Dk)Xo#k=6vV5I3IL=GvRY? zI!`g1pXu{Y@c5h$dBSWy-tzT&`4HxCxsKk>T&TqL^5yP&xm<4-zEFHkU9P8dA62fm zE3flBWrst4puQZ|f5dDM6!|tj9CAgGKVZDPha%2@5&F+V7IUGa0ZYuriciaSmE$M! z2izj%_vVw%%b8F9#(Z+ITjz71Z6;4U9C7q4_kfA_TurR^XHM=tv05|WL7pcmmg{=U zm*@8!4ZK61ON#T~sIflojcVk5D>47qN7nZs-6?KgjF_svN#ulTo8@o|s@5B-fmcJbv_JRl& zQ2)PsZaL@9+<6ZTJD<<6@A2lG?>*<9dv2LK?_pB?mXufj2Y&05@%P`*k3qu9XcLx) zUiut-b)XDw@O^o%{PcfDo?bs3ZMCVC$NH#RS5SvqTTsR;jm|!-uc~zk`uu>v=dbE@ z4f=fFz~^u3b&>vS5t|q%rS!j}*HuV<4}5-%T1OWAm3m!xh-!AYu z>Q${H6=5!{?scfj@$`SC*P)8kJuQsGQlF#TYMrqNbKyQ1$E801UfWlMxvjcal>EFX z((7!hd}^(@&C}{W25Jn~Z;6;b>RP>D$NC%Pq;)&G{yVgL36_Ck4HD-?;pE#t^eZ4o}Ul6`_I#kTl(~&tw=*ubOEmItzYZ?1;sPQ z|F(%Xqt=I(H-xIAS3EJ8357y9%%NnKrKO=VU8(z?p3($1X*bQv+CZlIRN z{=TRP85)9v}icwwar4*ZFPjfD2Lj|xeDof?!@Wp zTNwH_&K!^KQ_TyAUDTjOi-tNCo6d~3jpcs4q6xUxT<5M*zgJ#_j#?d-v%2@dK6p}~ zX?#`vxWUaS3EJfmT*v(Jn(iWZp*vGsRe zw588E2OM*qyUM*taMZfnCy9Ejo;9IS%qH*^je=^<&>mYYc9qBIw%uS@Zc_*l&6oa^omu8|A;daAGWy zYJXLYH;u2}M$W%5_mFI+R@hi-g>pc)ikoibgn6?~~HJ4lF0eiAC?S4EY=PZLme$ zzi*@bu|jY@!RxOD=iUsvBnEWf9jQ&zkg&I9Y-FotdF|B8GBjY!1bM5qVTCj}^mjOmv4_c|C8f8e z4zhC{+c{t-lzC64-BxSk82RGIF7xas(#`?9u?*R{#@R_WDjCHYu#4dAjrRvxZBcYv zvuXG0d4wN3hdG5TqvJ$z`tW-`MxSd!|Z{kiKBY(0s8;ZFKnXwg#icvE2}w` z6}?M4YEE+$?TWm&D+;*lc%0QZ-@*9;&PSA{mOaSMBZZwcC~G}4e_E2Tvy(P6XlEVE zvYnmSpUCkx&kdM_YiA11+W}6O41YGVEcyTIzPPajml8?qB)b{}Z!TnxbG$g}VD=r+ z^D3ynjydc)M$4+PvyS_6>}D<3fnrn=Z-Ls@AayrY>^{Y+1 z^kD;uhp~q9=Q)tMQ1Je1;@{fW$y8j3cRtH95A~MhVGY3XE``k1%!_-bdDJ38JoKej zmUydN{W&7pce&u*0GT@k?=q9GgnfOo{E7bC%4+}H`g1s)w{8-=dm!^L^IC0=eLgs} zJmRHG4u3w#veXW~;ou~@)EL5yCk8x$Ytbi|BW`t)=n-9aqI4hJfb)q5s9HVT*I>3k2Ve!N$VuuSAzEg z=DCmngUEZgojYV`iP^x$X@z?rsAhO259W4&_trl^= z#+OxB$^LC1#xYjb@jCf3#6x5|-mZ|@hk3vHjp3>9fqJh{2p1ewpogQ%!^XP_etWG; z?d3E4fkAsQ4sm?+o&&oGz8#lj@~It$`5m>cqTK~QWWQPmGI2YwCuI5x{-1N(@Avu% z`+Ku4od>FlOLcds>-h-5MWqj{5ZqNJ4`{m+fnt51;rDXZ<+z=7-$C_VD!9XOE%*2F zCWqwbqS=Q1jsD;2a@;P0EBgO|=>G@KVtY4f$j{|gmGJWn*5$a}1b3RS7vrpfCkXD} z^K#Y5AZ#zj6IPewb{AZX8(dtSjBC#l+_&>{GyQxf>mu&A_szHVA#r)6eGWM!Dl^QNk=_+17cvoipnf{kPSnxs~O`HeWSkjb>pKm9M}vJ?o-YeHP)I zigOgs!8m{C%FrS&sGc!~arOK;$}0N(&5HBeomtOoS(me0=F8QBi~hfOb7x|_*(v$C zS@m4J3G1T%aZPn)?}{qpam`S67q?=5F;;bocM<%D%)BDIpXid+u8P~SF2OgJ3;yA%=!+hOgkllL;?!maWh`F2hG~>J+c4zt>;|r_H zw69Km^>m!pX$~41MF*XYb2iRraXyF>@pjM(zDMFpvXNhq-59snI4>TAvQ|4tjK$zB z)Vm!1?wVQOm8{FzZQHksGmIM?cO>3V5Zqhxb2ICC9P1+Px7C$)u0r-=+~BwkxOT4K zewH_Xcg?J4)SuO5$7{rcIV7V&2Y{?U*@Uu}+fi`u;L-7PDh7N5wvG{2}{ z-`-^=(lmki#|u9C?&3dLd=zi-M1Fo|eV@y^i2nug@tvb(Ma7~YD?Ur`FNDk$%-^zg zw4HjFBi_1o&FII9FK1o4-phwqh;d3W)(~91UxRCJ72Kx0_1-Dn97w00M7vCtj z|HQQq3+_#Mu);xv)`A=cwdFs3Nk!4@Zq+kBIZ137WcJ^w3d%eu5bhE?=0>Qh~m@J9*8 z61M%7U`$a`!2GQ`C;buNcg~1|A6b{Ovjk%X$3dT8@>{`~nXLCT2NROue5B+M*2R9; z9U5^D6kPQAC75rUBi`!z4dHePb9=Ea=IR7PT&y8Dd$E>KGTLIJ7|$DTsort>4%yoy z%*9y1>SC@LFEwK=3;A}ySGd2oBhEcBR#)`^-w#DSxAZ}F4-|Hz&o60o)OhQ?H^lC~ zVY{cYE^YUaay#)P?qtD5pI>sO;MV2mVnP(=Vk}^F>3mLHnNHPsF+S~1oLA%g3(mK3 zK9BR!C_eonoJZrF=E}3tUy%Lth5hLBOD=Ypc`$I#U7E|I2*g`7WGUvWh^Zl1vmAH~_D|H{JQD5v5y-8MS~VSJ zi?Q+lQoM=vhZ6MpB_BCXyv-l-+TAH@{8I7(>(X{({lT<0;=U*RjXuBRTftqHmz%ln zQKH5IMwjz<4^huz{$KI~_D!O%G)KJcCi%Hp^*jjkf2&K!H_iW(`K8rA>Z4Y-T#xe} zoF7E3ZtaY}%W$s6>wWMSzln2eyQtMa`rBe{yuZrtgIclQ2cbV1B=2k zXN{K!VJu*Ek>A&eGtY1Ru^;if-!MB3NG5x zAogp#?cMpgne~mafYrrZy!SGnLUYwt!n)qvz6OmEe9Zp`HL=}orq*^jjhJN_T^2;`r2Qt@{9Qa<(0 z=F5=%neF%~)}{N4zC$Yd6|1dLbnjT}#Wff|IR0|He?#yu_49RzpVdDPdQIz6-@QU{ z_iaUA3n#nLS2*rFxb{=Qebryj32-y-vkm%~b?JC7D(!8+#KpM5aaZ9xxg0i%x8Esm zymicsx9?b&jyJtO%&uXPzgO@+ufbd5da7M60F@8p3tPUy=<~%j@%9yY&P;`w8X#xX>j;o4@VITjuY&N|Xu zp5G6~_`&%bg%tPW>) zCwzfwvOP5m?h?pgzGt~RZlC1p_K>qZ{gHK~xuQM6m(Je5K;}w|jp7{#=H!Ok)8(uq z%@yqlb?3O(LgqHXJw7Kl+@5Y`9civ;Ply%Ay$doA3-0YXx#9No0P9F|MSHqeaG!w8 z^MdY#o0pV;x33F!_zGNJZ_ zF{tCO#CKadd=$4E5w%lqsr+B5e!>mx4$%KE`dN%CtZa}g283!nSalA{3EL}>7Y1E} z_kY8Cl%?wSD5{>Xw71+rc7Mcnm!khKZR>b(yT!(CHNW}5v)eXlO5L)*D8(4V>ImAe zn>0ZbzjO=1hnGtW1pl$Td`jUSAL9$FBghvkbi~Iv!q$5!`s`Bl)#iwIiu3X*m3sVx zSx1nsn>Znej|g)7u8=*-;-h${!}IYw(jtP#@5MTTeBIQU-&64WL$+M-kIu_a*Z*MF z5#*b_Z;C?p7YlwhWXB5r9r^g3()N#H9YMa?1LycPfkUfX_J0FslpN{`UtRu+pDe_)3a?GB%9(7QSxG#k-sxhW1MVYEG4k|qwf4{`v zAMp2L{Jk50Z*k@OpI=b@gW=+TDHwlsYU7<7^4gznf2y2D2igCzP1klP!-=2x7YhF0 zA$zmn|J^)am6`u^7w@&d8(2q}&m92quNC||Ap4Nuznzz#j=y_Z2hHQ(vG!L?oIP)1 z)7$|QXH1+^KX>Mwgdb41t{xtTj{kBwcG)9Bl%Tz4`2n+Ib(6~T!!xWScR3RNzHB9{>-%NMvsM>#^};W44-s6<`OA7U_t#tG z=Vq-Jm0>Nw>SC^5sUdDJ!Nr`vtXy#W=jUdv3zi|^tS;vEbMaL+NN}rhZJpqrn4g=q z9#}S-buqU;b4Lm;`ns~?1^2$Z+|2dBGW7pe7jyOQ7B$|lz}%t?bzHFqf8p~=v}fgm z${p|*Wvb*ja|PO1FQ}f;x4XE;oWJZ6r#=4lclqtkjISlEi|y9iij>_4UX61S_Nk(N z)pvE2HAL~0H=?+qcN9;ZfOAb0Pdhz|C$GYJZ4{5k-i7fiblDDszYcs5vJ0_K3hOIn zGvKFPAUh1_hmbu6vRmW)D|AkR{HsxnDvc+ctmVn>(}mrbW0j$wG)KH!*Zg*8#y9R; zSY2fIH@*AG{km<=#MgN=!kA->{bWuL6QA?*)rDU>^5B}aUU1l=Ws3hQ^&=ZG^y8=|8sE7u)-Txl&QYJ z=%V@f7s}sQs2WmQI>cD9a>#v_qYA*azD*y z%H9`T^!a7zvn_Y`u427A2iL}$$Nh$NX@7%jhE8NJ#wV_xf5iTa%`G;HcbEIJeKx$Fl4$ie~&tIAIm=f+aHgUiaRBq zoyhlAmUv&6u`ZbtW~=&@XTOHlO->lWagj1zs|I^^Yb zf5dr86s;kTO#b8h%!%iYU4eJC!Pz|e(fK$7v;3F z7Ch2H^2#Pjnp ztjlpb3oiWY;`BsZyF_r0%*WLYJ;+_mx*WHQ;GQbD=iu7E2=2msT)jvZ?v;Z34_tef;C`Hss~4q$+&ftp zaeu(`ltwjiaX-S^Z?g_m=Trf`>kT$XEI^{2LcMMe?9ZdH-ilB z*_$J7-&^pJrywb-*FBIKisSNaS(oFAJXOAx;O>NL3oJH@+aHsUo1Lf1G1suVi2J>M zj!|h>^<2K2;O>j}=x5Clx4%t&E1kLydHL9?>~VXsF5<4E=N3shaeE3b8dy2{X>-JT9iqM!$k_W%$X@pdBvrA; z9mKkH{TAc7MXi~*0|mDN*N!q&*t=JQU%!x)URH`S`@eFG8>}wJ74cj?TyX1gE&6G5 z#C!cMA2++-EpK35#Qg!!4I0H{?$tSlIiTpRd#thoTwV2N1n{RgQk#>LA|t z`guL2m3VUn?|58$2J`mb!Nk*Zh~w7^3-yzB0~%+Jt8Wxs@c^K1!Cw8I#ya&lRX(q$ zSyT?pxow^^!M*d2T0Ab;=S@*$hx)v@%)}aQ8~^R<@hVE zy;hXtufG4)lYhbw_CY}3|5vjP7iThmiT=MF{eQXW|M&jCd~wEYS(VbW6aBx{rR!Zk zw@25h{B@hK6a9br6Kv-`+xdBfB&DU|5kOVr9``ZUMcnVq^Lpw!#eG!i94^}HgGN93b_0DIgQSQl~E(Q|sFoVd>mF4h6c-xu67MgDphTs+|?&E+Tl0`ZOU zgw>_}te=b1cHpxWf{V3;@~;K=N#SSMYo4eRAtj!%OWOMt>(YKU&%;4I+53gyVl81P zjdX||@4Kn+^P7c*_DMPcw*N(=F6rl?G3(NPrso1lF>!xn?$FI~?e=W%zUp`3aOm}W zj4Sa(q4YC9VVL&w(6+3LxjJDhu6iEK=8vH}<9&O@#`>IO{Q-350) zT-!l#@6FGZE!g88%DR|~4j%_`4-#CgAq+iIaKFjVl`|!ei+Q}&rMdKc7;}FoxczW# z8FTmRBDfd_=qK7lRPiHjRKXq>b9JkWxZmsN(v)_xw^(p1aqVcqoh8~4##>=7j|Dt# zE$b3o3M}G|5ZrONc9G!TxFKAQERQ>tbqOv7)=$lNb_e~?(8>6F70$^~jP5Z$=`);f z;dL*ZgK*a3JP7A+qWJfxx^n%`FUW4NU3)qaWm)3X#`}G|A$D_Qdv-5oU1axq_57LE zOzKR$0ir*|JdvJU6XE5aWTWUp+=z9hp%<_&%~j9k7;ZD}tKj9JqoP*F zoQ$&x=ftShv8Umjk8=dxKaBHoSC)nRj?%+BP$F`F4?EWX~ z(srxo&$Mph-Y)!oKdyaJa4+_`>3LfY?&GY>`MZbUJ|ei!;M$i3_eGzZUf0r_VN5mq z_F`SZ>LRY5w~@tU?|%jNbzHlWx%knoP1U>H^ES5G^YeSGi@57ld?7KDK797J;C_Pl zYv?2OPh2=iZ6dkb9B-xb@lF5<3Nk5Ose$e;1)$c?A% z8^w#Cj^Z<_qj*VM{NIy!zm4N(z9?CQYn2X^@r*-p-Uaze$l`Z57jyYD<(1znwiR}x z-YRt0tz_cD@BH{i$>lJ}Jr5R&?+Vyxb?Nz(zFa?lri(;;j31oedqSq#6*oShlbKJc zdjCI+JHhWm3OJcct#&Tu`5%*3t20#&Goe-Wu=*aHPvCqB=k+)*jpDEId(2<&>B`e$ zFUSuV7dby*&R;Rn;o<`p{wzP}%@(K>&ky5Sr;bDHOR;gN;$W=cqtCCHEBN>OaR5mf z2TGB3JqdZ-IjqZZJ89iy_e{Y(8rPmAxZmXC@|Zy*7%Lva2^ z1FATWxd(PI^9~hvFBh7P!S-2!gy~|dw8uY}brS!3{k#~JQ}NFd{0s2@Z-T!-fx`?}u?!S?8;@%^; zkK$VR!yNHJ`-^-I|LP~pB$&R6yut>x$HiKJ)usK5=fR9(;w}^1<+v7ox8qLq{i~iN z6IAhkI7Z)Hfj-;uE)#ZQy+BDyAnyp%4)*N)h;?cI zs;hOvBre7yj*Gs#0)4jQzM7xwk`#nI?zgOqx!S|T#dySVf5JYQEi5*Q4{n#At9OK@ z?XAR$j@8B7exzJ+)jlT6t=tCh3kA14KUd#_4sds3UCiyTxy|^jH}*wf-_W$DaK3`` z1Dx1P)Yuv)`lm+BsTvQ#zM#)>{(${L+u+3iHFR+0`^7KF?j3~PSo5#cLnfs&K6puf zyY+qkfZbhL7u#J#WhE~92K$nTE~?b(V(tLu!rzWN2-k}7$RTll zuHM5D;8wCO;;vWwdI(GXQDwQ{qW`a)pg+UE@gcoLp2WNglCl}Q4OyD%x2MW+tjlpl z|65rnxDB{g^!ta*%g4>`e=BFRExPREBfI>*82Hc?SvBf+HQ>UdFQYW?QgY@$=KVB zw)}n+U4xjq22K2$9ysxT*UZ8>K8h|r!W689{*b+Y5cZ<~ue`;<;zJMh>pN|4_BgK+ zYXMf5v%9m_P23v<_fA~l`USJUvz~YhA~l{i3MAiC zY{w!bC)SH9-(=nC^5}+6<#|n%2Yq+tYEv5Im*4L5v&-W(e6K#fWZmiV=zyT|d?w0+ zKEG;HQJxv5JP%_0jr(XD;2%Fgj4D~Ks@BX%m#Yg&sB%@|mCgTEZSZ~BYG2}$*ZqPg;*@2)Dd#fjn$7i?&GSaDW6tHM~o>Q0x3 z+nIVU-jxS^e$`k}o_BtBc{1Bs749oo-RbghJ5$f+yYftg%p5LH$Af=%dAxS!)feXR zR(HBQqJ1@r@+^Ri=!aRGu%9Woa$L^h6zCx5|eY54rN(i1+u1 z@(eS-SEu^1XE$V>#Ol_q%!{9YvhHAcFovS?+%C$4wS+44$L5GTUG)pgV}>`~pT|CcfOM`yCbI~s> zk7@N@dC-4b-NEvp$^X=hYtW`juZ^O?AEEs4m3kh&3S}(a6@Nd*-ve;XR$R!9`HK7j zhV@7FCSajIHAmd}{9ot~lXav&s<&m`L4P3SsPZUVU3qrKd-SKSJS%@;c}&*v%F~{8 z2g`$$L*?01ltgp-}RU?Aqzi# zvnyANy&!)e@45OxpI<$~;o>f*{z8A4yF;Eo(0Huwpg($;`l%4*L7!iZwRv;IU0(Wy z>9Xsgq z%opWBpI?2pD9?QJ9F&?zJo7X9r;hsBaWn@yJU^YujBvR+>T)d><@yt3t`OyV;+K{y zd;VR088h_r%GO`}+_8BsUYGA;Q9g_@s_)|Rb^CRM?2P)p3x0dp`HdANW~nr6;7{e_ z_vAv)f9St0D|b1KAF)2++9THdtDh0&JZ>YDQ@GSC=Q3vHE@vn0PcaUt{x4+T5#?O5 z5y~lM0$w>W-mt9PiM;Ck`2l3V;c|BGyAjGMW(Zz6S2K&snf$&Y{ZKp=hVsmp zT+U(m-(lzj%n^6L#(r-Ge=pInExc>!Qi|V4T>P5Br+NBbEcDox;$OfIa!`3cv{!MU z+agnW(N9^w4#OB@82VpZ-X2>iOWxQ?j~@)i z4w3%2zB!71jrqn9j2Q<$7RAl@j`rq>y!3#yG=((1u5aY(=Z@@K87oedM~0K=*vJBoR|J~r`-7?+2~ zt6>@4&nRATWkp@@eii*{>dI#}X$~5Pi@SQrpx-n{eE5f^pCP*nJ5-y%@i>!MCd4Ui znnv|^^bb*V%uP5k=Q`$XoM_L-Vmy5;#<0g+f)oAjv9S4AjN^_4=jgRKKg9o|{{Pp5 z>JRJV&Q8qPhb?wm<0IM`JJo*d_tftRR}U`e)vF-ov5@_zvM#cJwI@Xo;-4h=XF=xA zg1^wr%hhwE>UnKZPvk$@PB9j+vcA9j52?g9V^^=|3Lg6EVOI*?TVB0(4A$%AEED2T zxm3HjRB*1vd-Tudh>zSVw_ja}Lw-fSZFTv6B`HFXU;iQacSGi3i;vZ^v$t7i8~Bws&|8?iLOe_ukB_ z&(5Lx9KI>br0wMT9Nt=Rwt>tpg3~2meUit#`W)VlbtLPv(x_JU4aZo**5~j&@P0qR z{d2fJE9=trIUIFiWqmt`46Cs9sdxo~hdy&S=I!Q)`|RcUvrEvQm_J*YG)MUJ5W(pI znLZX1#eIh4_NOVa@6RJyhwo2ZZB&y#dkO9U$dn82ts#FZTEL&BEK9sEZF?+n35R$k zf`@U%@X^fcdw?8w6m|{z6YKX@CcvSB5ofsIjDyT^f-}r;RR8#XI^Wn5n>6l??}lT& z!RjLZ*V0bSP~$t*K8B$!4#zseaFk^@>>mC%oPTuXXt5V$Ke(=){2tsT4j1>m+w3Dy z{j*_bF1ZP&> zdew=?h{$o@aE!;Tu2j961VnbC4junS$lNLT%QO6H5|GEcjb(j%dk@FY)Tv<)_0Osg zalC&)<`L%guk+eV_n==NWSIbm{d%9^JPDcQf^%kWzuFQ9+skvT%lE62(hTw|`b=l1 z%DWg-nuhUk4Kg*{#Qm0!Q*@{GWIWd!ztl>MFA&m%Tx-tZqGLn~=Sj0a3K_KSQoVkf>Ppx60z#15=?#Ga7pY0Ze@0e{Tv zS1Mu1uOl#?u)0!y?W`Fpzbm_j!JosH;lvnPjZ21M?5^eyEq$o=qQ;Uou0|Yz_vpLL z5f50CQIDMi_1KSP$zC^KD;YXuSP@ku@p=p1V8~z&Z+Qc!i22vLLVQWF_N*5#Ls=%o zQ58#^GQp{V4A$2j=ltCBFIQqyu^zvkbrIjqYe|X_#2+L04UlQF_$VIuU1NsNzt3&_)+pU+}lotOhHH8tFpF7@< zx&19HNc$VP$LjL^ZKMDpe`77d`TJ4GJZte$jNiuER=vw>hxGSTtV6VC)H8ngL)Jxn zoj0r$A*eq<`>lB$C)Pu1P`5Qd;QR*X$5AxW^vAY98~ZQ$`F*w@X)~(X!cpSE^HO=s zmY+HV*?wy_W!a>^D@DE5V18rcsb(9XsMtJ~vegyiKnp1I3!U=B8EjZD?)%*#$-~^mAaF*je zd{BdWs6m|%JIR&j7r!7o!E|kXOHQM_42}E)Pq?5BqHJ?h8!P#e$8Wo|7M0?O(ODm z53{UqubNMb_JTgl@%{~&|1xjrOwX^ub%z?v zTdd3XtCms}@+G zzGs;rCsD4ETjKhyHH7TNn8fl&V*YPG!xeFb{r$9z`~b_1CDz}_BQ6im9 z=Eft@cbg-|vxVEJ*Bey+U061CeP{OT$aaEP0GUEVgI$#;cz)&e5Rq?2?#nVkj)~Wi zdkM}VkQpdAH{^|1Q)25s-mfvTE9)Y@^edzkMfESr&Jpk9d=cl9h`9os7$d3iSW6$O zUe#FE)oUr`ik01M(2s0_yw@7}q4lbW9*`Q) zfbZBjFpAFkmn}m0ZyEA+8??{O3ZMh+eUr@~UjbQ^|LjBXd*zs`=Q_x4^w-YrMwES? zlZdNM6Z6H4^^cLWSte{R9As1y4`T$!I|j0+2;LpJ=ZnIF6lgO4kNiFBqBwK&b0Y-| z@i9(u{4*efe%2gu^)8|LqNNHuWc$Kc!0KRbU$q?4zs#(K5ce#>y$~|!cOCaT!_Bb{ zG7{@=Rwm8SWh2f-f^!vQZnl^x9=4ybFL6Iwl-Rr9Hu6T+L0q~YZLT(|iF=*k-T|5W z1$S}sew(G4a!Y?A=B+I8=spfz->+EQml=7N;5`DFrv&d)Z=E~1&M^`>#>xaZR4}sZ zF~NBbGOsab_^#ROv9iQEE2@4$N7kx}^XTkkMZ|l-_4;I|vkg2oSD8~9(TlFs2dPnUjmI-iNeySDo|60ud zYq`&lNA8m+KbaDT@>4Cw0#+CCIX^*4+d}o*AncqAnd8{bk*5XolcMVKi+os%v4E8& z9^J38^}+k)Y8MC|`utjqpUe^0#@;$oaJ{4UG?oc*RKb2~#x?M3E$XoLd7Ka8ycH+L z{sU^nD%Rs+EMR55e9^lfzSDJp8zU+0#D$+77h{OpCzv~GE0Lep6?U={Nsspk z%Y=D}{PdvUJq=mR)y)x)`d!ZaBrQnirx#ck`Pt?tD+LJIi}-T(Vhmr4e%kRb3FId$ zpOv4`e_0*Gwf%g*{{73#hxfDneC-Os{RA@Tw=H+H{rzh-9)+Ln#M1LK`bsMkPZ9Hf#B#Hiyjif`3JzpS4s~ zevzL>ZNsvOxa!+`aKB=GM_KDu+)-@=cW1mWVD6Zmyg0@_^niW4vrL%h$ML9L1rKA1 zQ5^)YU!FK-3sP}B>JZkIh+{1U4B3mZg!6M($Q&v7R|n(RP=y`R-@RA|ak-y`oSs+_ zx2NFtgA8)EIpVr~ML)Z)u(O>Ac=cM$G64=1jyOevGZZo^0QC{qRp#kuO^J0a!(Y-) z^fOi$@wuOclm-wV_Y$0c>mf7M;-k3k&R{>QsJi@;H<@LLr}IP6fQmXi_@dJ>@i3Nf zJd7zuq2Dz}Ja&#Z53u3u+l8@!l?ifCGUCh@oJElNv&BU5*voR{2d~6|_JjV@>LR|* z4^B!^R6jo&{l#eH;L)pa-i8x%=F#18qP|B@!a3iSXQRI$`%e`1UyL$?Z;rUWRVqKZ z@~fKl;^=QIEAoZ8zHiY0vlgLr6BlC&SHIUo_I8Vn;`%uvKdmpc&Bm|an^`8zqtGLz z#KSs*<6$f@>QTYFEJuFwElB65hgcWYv+ieE%G!&ugyS!R%yQ6Gi zZU&LzN*v5j=)bKl;_Limq%?u*_hZ3d1DPK!9>0ItCY7HoRhM7pr*$k#JZ`tjuhgp% z4`T^ipQACR7>)kf9P#)CrroIZ{=`1$eD;n;zio8|_#G8P@ke7U;rKh?{ckKD_P(0n zciM1&kKT=SCE69fPQ0?e>G}vp<=91(V;{((zcxoa;YhC?2j@ehQR!AD%=6pv==}t* z6J!s!IQ&j&qiDx(tNXA;3B%b06>Bnojs6|$BENGx)jfZJaMR)4<`1tQM~(Z_x;|$y2AGB=d)E`==kWfN29McM?CTN1V0(?x%fx3t}tIe zcdhzi$48$z`b>+D;z>Iv`1tj7`&?jN`xmpWFke4UJ^EC^KNm9StF8T$j!E$GtLYoe zzmRo>`CW9}pD*~AL*@pHhy8B|KD9givSW?{cIvRO=>^V5`e`A|)PH@~7 zdqMU-FYNsk<@mn0lR8<#%kn!Xw>@aq;N&qC6N=jMGds6a5hSvoUQ2Z+E=kU+_vre;Uf`Yynk(R}PE?tS<6D_orG)*`fID z1^-~Y?bY>mI<^Htqkg_WBHgOUEww;YR3^IM0JJs%gG=8=>B0T$! zVwn&}d6_sEpEwTI|Ho7c&KQw56VH=VeA^Q1@b>!6G3Bg__<9{x#g&pG2=Pk=e*|R4 z3I0Q=byO=)vkuQ*G!849h^yY!Rs9C*Zwk=5iCZhUnDdWmX702iKaTB&OOMycGGU&G zW9S|OKaWA3j(Hd7e{nt%+D{JMMFkeTBKx?YgSTQ+6Y! z$HV-<%7l5M{#8Ck+i|=%@%|&hv+FWyUK{EU*n)H%uVh_`IM!0YkiBTXj{iAiz7zZx zgK=!A!Vc+gtOZydWdEmXe=S9Yk}In&724)@A|l3HElZyx^{DeZ5SBOM?8 ze;vkx=7?u}VaGq!)i_$Z!zc(A=$D%&C3+qtYG$sKBP8~OPx!9|~4hdI2pd-h|7Ywow& z1$WQSm$FQNLuDh*MS_DqyAFM&%frG1l6w8d_v7> z)I4ew)`UlWi`VMDE7qr5`XKwS7xq7nGOuvdc#i$uX7~LN)DJ1Ewf|(jKFzX;xK$SY>xDIH$o6XS^0gi?Keqcsbs~_S2i9XvzF2I(b`Hj?{}<#Nm9*OHO+b@;^a# zFUX9BYzf}u>LsYtld(RUb&%c5gxy&GuS4H$j(E`QNIou?fO52o7jI@Xnlb0dYgH0{LA3srgGYnxBUVvS&Ifh$nlG%47wZ7J9; zQU7Bx7O*IsV;XSQLiRqKh@r8sY=Y5{d-Fss{Y4r z!S>f-+%)!JM~df0X8t4XE97g!_BprExNz*gtbc4r$o3NY56w5favoFF?d6rRJy{pk zH?LD@KdbANeHfp(`t6PPg9ZQG;JDP(ldwbDkF@}+BN6W<$qFWZf59IL*^$hj*WPbm zq51S!jBl(=2G13gc*qCNUJO*mP8GZ%dD@q-AlbggVw_=hCEAyfGX9<*__+T+_GrPs zHQ1gkmF((h|BZY5=?}Ls96BnjeP0sJ{~fsGIxGoZ$8^8G@l)N63YZRC>?Q{ z1!oCl&KI27V*D9e_jDzuaQ5T*Jk~{gp3jn$q7WbJ6V6WL_pyH${1<}rSxr^tmwvsR zWdrTF??9ejX)eYQj(Z(sZ)5I)5#G8`r_g+MEcOCgnJ~{)zvkT_cy~ee5y3lEAoLI(3|bHoci%FG*p3Ol5~|HC?n%j=t_u=@L| zRql7(mm%|x#YXYMCb90Q?Cy{p=;pBdE!Gw0>-%-8-*J5O)!0j7k9grrNq%yIm4p8U z>k9L6zpfc&M4YLdt@;hsH>v(vjT!2e*hG=p>#?R#k1?G&;-fE4@{>0VbMSw|y25;Yzfg@e9Djevbh7v;KKiEw zAKz@_-!II;|1IkxzR2T4F~PKXy#8Rp?+%$E%s*y=m&b$q^6D|Zurfi8%7e{_E%eKE zC*Z`qvTiJ7YH(sqq4;%}3)CUEw$!2GOtGAwtMDFuwK?Kr{+O>Hu^vnJBlV+L7uhfR z5hbM<#D~3(k3PE|elSOT%$jgNLexY*QjhV4mG$#_r@D$E!zz>C>r+2jaM5SiFS6Ju zKK3cmkE{=WA94LcmI?Dj{#Aa)x`eayM7%#!@V*uONMK!5SU`@J{b&7R)F00@jhVza-@ErGk$>zaD+JIpRg{d;Ye|2i~}( z9%}(sCd?D%RQ|p~@NUBUdn_)BkJ~<vRh7yJhxvrO>kh5fCm z!Vc+gtOZydem?1h8^QRxZ8QF?$N0q6^Rtk7iMhwO5_v1*dwuGcvrLeK;*ov0m*6ojWonOJw`5|exVdVZI65#QwvEu|Q_Y3IJ_T+^_p=7c#kqE z`&;@T`&S72*MYyOqsGVoF_gEA)yjWr{=Yu_J*wkcvo5mVt-Blf4m!S+-PZr(uwFB6 zC+43Ji*>TV_&=Bb$L+wnf_%)KmHo=+j=vk;?Z68yyQEGK_&))nMq96jw^x;=ITywO`<Lu+;~MbCHQ-!~^Fo~P zzpC5%Q*AL??l0L7wvD54Cxd;q__&ua?lQq& zmEeckQ5GNL3#%*0M>`|?;d95o5;8Y4|Myi1eqx%Dv;J>jUCHr6l^PHx))mHGE6Q;P zWbYT{xZ4|_*vHAderp`Y7gi?B6aBi%pBP6tyU}NjLtkx<`1dRGjZd5fRPkQBdx~|D z-^F;4qyQnmV=ck)mqX@Fi;v=yio@d*O%-;?{PrsANZPO5EpC%*{>y^@E@VFy{7;3y zGxlSS`;cYAJW)>N@An07RTPciig_phI-kFt1!;eO$GVdKCMo6bX5DufClHsrnw@opmMao1}mtd%Fn!k&r17{Kv!o)>L7K^f$%=RtMSd_EU7K zs~lccQ7j&iB0gft*^jl0@gtaj>S6wRe`p6qHegB@z zx`;2vg-S{>h<}#gqt70Hg~dnlX{*EILZYhjOTS`#VPz?ULX?}`O($u zHITi9xu=h_zfXmFg?~f)sm5bpjFrja*#ICOaqK0I+Etdnn^;$nZ`;)@!9Nxnv*0g* z%=vaQ#lp&CMu}qL-;~II` z+BvZ`a`T>olleABK}|Lgd@Av0L;-%IdA?JA33%({Yn)2>wC@AyL@ zGm80tOy-qPyUOC%urA{J?W&7yS1Ps~zaBCTf^WZ{**u37+TS~I63YZRrd_ExcAOcI zIa+XD-GKgrN*ric^H~@1{dR@b9^GH4cIEiTL*_K*pLcj>f6*m54w{H{1S=b;*Dfxu z(S{xGOvwCM@a|2-RVc2r?8W+m)fMF1xIS0#F;|~>HS_=Un*=`;*I9hr3$VI^d>hxu zUC#a+AoEYb|9yfVit8-??W~LVeq48Taea&6-wT;X1^)vv4#GNiXq|21Lo5^I*tkX> zc6Kg<%zMmP+HM2lno1mq>*rY)@%^~Q>__((ldyg|X&}xKIH%w|5a%8^m*T{jY|^X-w)OrNMI8_O+hNF$sOFVhoo6>3*m{(hWw1^KpJJtFweLgp30e=flfwW}=tOROu%x9w`V;J*o(kC=Z^ z=LA30uCn+mSr_sBcGbhRE5w$o@6RE#R`4(I+g0c}r%9_>Cdjev3UTZ>>kz-23eMvj z(5|S&>2@`_HR~e2->!Nnii&I1t}K6Y8@%6<`4=CM8P`3MaXooEmJQTv4;$C24Ljbh zkl9D@Z;(840BEBEj@Tlo8p2T&S!%e;xC))0mO>nluxi8+o@5<65FQ{Fi zUvl=(2UF}vymUflyXu*0SBqFS5LZ22yEywBu&SSE{yCdNF(xZ|PEp8Txf^~&C7 zkg@d`Q&8W|F=5GetO;>jI$}bu&yv)KgX$Zx8oN; z<}ktkG{H~g7i&q7U&y+`eEl5flnJ;F&3wv9IM2gbiL*b>hjG4*6S2?`o`@v3qe8rH2{fYdR)Bb_1D->UJd)J_-9I)AyV<==tigMiUwYT6th$$Eg zSeY=-Z*R)aj#mfSseQ;yS^FEdf(-g)bHrCamf#25TLyne))k6>x*cplsvcCVxpM4* z_xssmMDaBTdhIQ^Z=zu@mI?Fx_NL<7@eYD)H^CdeA?=NCXv?^3=*+r8?F}DO+^P2F z_!!ePpno+-e9b-C@lG2U%!M8o`{%5VP<^Y74CH6DamOuzOtr;E@wLB8)OWCd$*{YE zb%psl-c^2ae2gI)CJO!~34So%Gx+0JSD0_&9l6c%F{Wrhzif^eT@9j8)sGp^2ID=0 zKZkXN;*V|<8xYk4#uTm`$3pgG^C9LF*G&}hj{Cl${R|DwEEDD>;vIS0@i3-nxKi-W z+mLwY8{J;qoy)pH@!kcPpHSAR+u%gIo{IZvQxAvCI-H;3HR@n0$}<(?jH%b+ta0Vq zXfMd$=*OJ>;50nq)W_GY&2DeBvBF&H*^PAut0NR|YJ-KcTkQv%cnj8q7h=A71WwFb zr(kT+fcnpOOu!g@BK$V-1;}3n*?Pz#S50{m@_))FZSu^G!fqwE+{wk)&rigAu)Sy0 z`*W--Y`=jfl!5#MmR-`+#}JkU&>jQ##!cfUHYK0q5641oA(Z z;-mP6|7=M6=Ns{|9ZW^Ww7Np=zbi0`uiC%k?~3<(Gyld;+3nA>L#$s+Enpp?`d1q< zh>M)#xP_2W9k4#)8*fe2e=z_-1>b%psl{#Cwn{2q|$Yw=P1k9G-uF#a?6N3pIj zU&p`7wT?d!GF5`VFu@PTe+Ivtb%o-eZf_eD)k7(lqv1!$juqv2!^EGg-%)%`Sij%D zseZ%Ri8000X4ZdGn+=I?z9H|$_jJ}3if=V+RC#`?igC8uW`XN zjIpMnOw;D!+}D+BqrD*iB0)I&PXYUEr#`-EMt1w64It)H&+ao>M<~A3MiAmI7F_g6 zQ!f+T&lB+#Y+o6E$NIn373Q1vb)n#6Of&T+=HHzBU8rFD%HZF?y25e!m?u z4+?(rccFsqD}#S8>k7p`-R3qZst3fHE5~DyeU{5{%dTGk65J0m_1`QL<|W!2;@j~s zrkMJs;0@T2_Qp5ry|{agb%okncVNg~v^U4cm|`mWS98R-T$dg1v@ye6=y5-09ijSG z8#IWEHtx7zLFNaGjpADm+>m(Bu={(~73Q0GM}D#VX|0e?wif(9B>2I25A&yO$-2UP z9q%f)IsW#L*;DYpOz?y8p27b$>k7pm-Tt=qhPt1&vnU6~64MUma@#x#rt ztW22a$Gghg&hCzo9V~b!ZAiTH4SX4Q(|WS5P`qQvK>f?~_E9wbP@L$`r=xG2J`E@Q zKYbHdjuv~N;$HP*&i%`&QyWK!i@wuw$3g~nnq8idN8pA^)Eu_~$_80>OXR)VuyZGW+ug-u>ihOIaq((QS-4 ze-xZcAaf0K?rdu~YF$SCPE}En_~t56<^!~h7iWKGUBq9bzAwPY7zFYECipi(=AVM! z6tz+BGRrTT&8~lm``8H!$kU#m|I503KN-7~|5P6NkKn(G_wNb*?~{2%QiUDT z-*2-H;?jNvDQEHs#wV^FeFT}WnR{33L^~3BL~07%N1nEdb%psRk9;op-$ha5PJ*Az zV@N;9rG7w3sM=i;1%a~RHIoETp;VvN&>x@kl_HewvS zu@4mojZkXqqj5L97wi3ZCG)DtYe9dAcxc2}!0PhjaG;mh8Vi^|?MKLJa970q&dQ`$N`RXCS?9BI8W#Ct0{8OuYY1) zzF#3E{fa!~_!mP4{k1vbdw(19tAYmnivHWmN_#saUg?evlu|uneZujsgUqcK7sdBQ z!mki)?UtN)detm#-Nxzbi0jT^wa8I1bSp)HZ z1GkByHV@*wJ&Lv}z<;#xL4HQx;r#qE%Dlos%XI*~1LdYP_ zP9sygAin>ykY5!v?bqp>vn=uSe(IrW0$_)zil^q6*00ms;{7gc?*p^Ue&!tceR?~V zNpW*;sFOsP6(oy0?1boOD+KfO|ahJWJ+ zo1?ANI~u<$`^5M&)4rovM~Z6(1S$_qyB{a!7>yVgsIiF}_e?{soc2cmTlgTm4;OZi zK$*umX#C*23A@F(H`DGq){(Nilh#dKj6zy0X`sZN zCb;t<(`>O({Lr-tuJ}IMOzv^4gSh&8!c^2(4mA^X;$l4F>^%iCe_-yz+n9aux}DnL zg5O@wV3`1iBA+-Ihd2&mX!<3BbC}p~ProOfY^bKlCIQNM%k;mnu7rOfq#4A=_{8xM z$J4JD{7a30-S69xR~1y3U$$GUFIZXPaXVMnQ_CeD#v_i0b~OE8%zI>4lb7teg!~;F zhqkjul~1Bp5%Os(*gyR)))nBB#l*iu@E?TCYl6Qh$xk+*9R7Zibp`m;l2rbf4*RF0 z4AURO`997yI1vNW5pOMhkp18~|E~b|6Gx37c`IpuvLWZN|3lUlu%B8q@nN&$e+ij& z%zv~`lAmnQIr!hQt^l8UBjUr~mX8z^&1fU|e^2n`@7UytzZvNNtuErrykaJJia%o$ z!EcNAyD?J7~W&9Zh4RIl&IH0 zUdgn#FY5~MU0#`Sl;9774Cc3ve{_>mWxp!JjB=c_a5m#a45)Z( z>4W?auJiviaM4$rBYyn#r2Xlk8QK@`|$A@sEYfsTLo_PaK)#r}IiC|0LEG z;Jdt{{O$NlAalOp|1H4}SHOOq zSDG=e+Zp2ujFDA;HUqIYb0E&;Q8WwlrhLa#<+}MSPjp%o>S`a}`(4&y{$O`L;RYrK_+S|ao0(_U(W@3Eg__HB%rrKP1^6zn&4m4`3^V8BJRj#(I1vLX-dg&g`Ucn8e=fKeJ8Jy&OG*3Fc`eia z3t3mdex27;yuoJ2zZ~yxVE!{bll*jE$>d+lx&nO8EAY4D-vXI?1^?m%KQLa(9_AcMTW?ML-zoSHL1r2ApRE*mCF8!u%*R>hjAxhJ6KA)~i>2eFvqJ z;`(jD`xG)*UpGhmpD~GgP2`oF_I}N}0({OZtC)}OH=4DJ#Ygdf9x{CK{eQDCKN8o_ z#q_)q&LSySSG-6`DGUN zBRD%pLS~}iEXto>c(=5lUuKPCUBs99rJH7`I8) z)yk&omA)m>_;tGAEriTT%=_=iM7;*`OQyZetSi8G`DNB|f`2+>t`PkDlKgc3$mE~H zx&nNcS7yO}RfbuAzz<$mv zu-WnNf(&x1IpXCfCHd*RlF5INbp`mGSKx2Qe-bjwEk25uuT1a*c_owo9P1*!%qz6T z+r*Uz0$Wt8oz$ayxFazX!bT17sW3QPt@RT*aQg0lzCf$$q* zU>4%7r4Lo#ifh}|Y_#^-VxIrf9!dMtc_q_+%>S*ffc-A7D4QL>FJ#30|E1<6Kb==H z`I!G(T>-w!E6U%FUkRBp&g=0@?-e8NLh#2!W*YNf9_Z(l z(E9Q0DJ&D%872bXC=atzDSr_qTUP0ZegW_zS;5S2NF@2=| ziC=ytBd?f;E@WPreJabQ>Xp8w)9_9byt5#K`MEjb|FgeumT|vZ4V5zOJ)d<2_?%bH z6Z}gdgZZ)J|1%L+9nyIvlaKkk)fM2oyfPd1&qf($UxD)xoXc?{22{MY^g;Cvu8X(( z!4>oTSALzeKb==H?Z^Dz>I&H3S=mN>*zEYvLPpI0UpX$xPv@0PKIZ>cSAfrX1^#yY zHzD(p^LqTsiUdE9S2Fo4Sr_qTUZL-RH1@wM_@6^&E%RUP@8y-?`t9u1EEC{xUcvap z*|{!?=4>iBP5JYR_}WTuon=mI)X)Y58-|=g-+u@L$TvEA%a;@RL|) znX?_srs|cxrBwTM&NhO#D`c=g&m8e<-DUQsqXehp+M2>vliembvY^6Obwfba5(^0(tRKxVGszmebv@=7LuHtQn3 z{=U?q6`j@oJpHYu7xHWd0j}GS467*hf3(c$NuqRAM0x#wX6sQz3J%;5;Or zbE5Cr_V?#;k*_UD@;e)F$lKen!SBQ^huld&s{_T+Y zkHtsvTdk9PKdPJ@>4Uef&Ft(hBI(5yVj({K?f73q z<|pQ_I5@#iswrLBN32|&*X~Ou# z+S#-nWOf&v`!^u3@YiyBd8KJr)WiQr@tgaB>=9MM{nDh6MkilBHIpTNhb4qF+ zMtLoeSF-p6SXYQ|^NO-xm7%F0&IveA#)%l1gLrG{gZvM!v%e1PV;nVpXMEECfxMDs z|76w`vY+xwGsb0@cdIe7>d#c{HQf?La}US)WE9P-#Q7$krNHOYPQl;HT-oTw>^&i` zax(lk=K;u;;KZ8b+}SwMuIHT=Me}#SKAXOfg-;tF_T|Zb_}tll0_4wd*TnBUp0q!Z z*Rt#f+v*D0k0MiEQ}ylmXG7*M%zyWQ1V5D5viN^yUBvhD8tp37{67gk{M&T3;GZS( zTE@C@)0Hd};<&tax!|DBZ~CX;+`9pJO>Bhp^33h5i}+q%qiKP*6LIDId@p1kWBz-; z$;xYb3|ZN9z3Pp}6jz8x$NM*AUKG5G67?F&YgzXGmvx2sF0WyHw&x`?6-n44(4M1Z*_+JV8>0$c3Y0QnE%g3jx$I6{-eoy2;>)04v&w#W_5-5 zT>w#jP=0s(-SB=ti;v=!`zQFJ{F24rn{^T2%P+LOPxA`|{~*XH$LJ$od8VIVLhHwK zF#)kMA&$*2a}N=m9*{xKcbt1RAiszmiJqU2VqL`d@{2Zx{ER-!`59~WbB9`d6o0Ts zR({bNkUbve?^ZTluX+PA@dgRrFv!#k-i3*J4ds_Cdoh2vx z{6K!m;$uE#b%ppgzs!aGstj|d;ar0ABAkeUxdpBqE%t)^53Z~4Q^7sg;o=YLlJ*Dk zOP2kZ|65%l`(0jv&5nOQWRP3U5r6n_k{`$`S^P^`SBUTO3jFQ(S3%|$i;v=u_D%3Z zc_oYg57tF|FR#$JnIUB>&J8d#WEp|%PV&Y&Lfa{R&egx zfV?6$Bzo=qDb_`NFRv&soBWM&u=DeB$h^+{k9W(;D|!R4$HV;H%BJg8Zvdvaeo64& zh79KC=7>N3bD~~Dc_qtU%-^l95Z~pMm4d$tV|X#o{`mVOKaf|l_?S;wT_L{9E3khq z$}o2=uHOmget3--n2UI8>4W?auC4ER+kr3U|DTLb+8@X(8TQY^{NL&d*>CfTvf1(5 zL*`&-b^OVLNq!)&WbqGRT_L{BE6U%FkD!>>i}|1Ko#2P^N*2E->mt6*D_zw3vEBfz z{6DXo;P=M+V!?k^j8`)D|IRC7nGnb3m3bJSI6KQAQ^TCkHp`t?xX5rS4%yD<4P#xz zw|PYi>Fbr9m4c5xe;(%R=7>L=8ptaKO63>p$MZ0Mwz6Kmn(OWQ@w|G$YlO@Ki;LpV z?DrbFbr%1N8FJb?mvx2sHm}T^E%=KdgZZ(w_w(XJTqW*z=j3DlZgqwDHm@lART<`; zi1Tusx8Ot!sCaAXgW?)o7jGAXE9Uv1-;lK5&nr3Y$Nb;w3fb@S3T$@#8z3X*|6gpI z?a(vM%C#d4+cM(RgLvLxTS_WL^;b zm%Y3aTtA-oJj;YQF0WvG;_Q3{GVd|x%U^9kUJ)A+y}a@^>mt6FS9B0loV_Xd==0}& zCHRxG@`~R0>+!x|*>t_?jlabERPesRdS7e7v)`MUE3Zg<#s2^KP$P7a(oi`%;u9*z zdM?NO%^|xtmt$2?BECZTMV3S4*ZG*gTU{Z(%P;W5Jd|NR?)=TiJZL`Vqw^38D(=*G zK~6)xO#9rGX`{YS_A9Q9yZME9uNuBS;#Jos?GNOaEc?-cSY09eZGKTUJAMzyAh%ln zS6e0df&7xiKZNe>*mokwr|DNwSJAI`Rd4+b zQa?3EQ7!nj2jkomCvtM_$vDx+o`$}?r4OqAQepoTlzEn;#;f-e`*||PP4lO-Ou$Z+ z-l(0;pDH-GcQC(MaP0G0s=ce<5ySV_iaYPpX*6(>`DXrctc&=xpT~-52HA=GBd(rt zPh$RAf`4anKaZ79e=pAbB`nKvRf2C5sVlKx3`V@u1@An_@H`~``eYMVIrcNmzkp@Z z9C9n&-yVTD8BvC_cN7ipg%j;*ctI4Mu+-VtVlT)}aGYOnMw#z%xcKW^jGgLx$yTCX zJM;IF36CA%)hEUmRtMQl-{WbnHmZq>@q^=H&3gWm%w4l%@_XJa&G=2`Y1~h+vc#kQ z(O!=vhJ$#xf8cn}K;~t^TWb18Yo{0nTTSX)jyyXtj<7n?T-7@nF2)az`#NMk5ZrGQ zTrsWA!9pju#Mni&cC1w+x^Wf@w@PE zE4!2Jh-*$INYC!}tSf`xQT0O$(Eltr0w;3G0^}4`5A#>xyxo3R{BOG@_+l93)uj0w&YYIpcvhywG)5P<@C_RnTr z{Qc`rsDGLLGEKm!95X~Y&}T0=$rdAuzpEGD_rAWcd$kI793JlkmI?D*Gu6CBf`>kP z0s3ll#NVBj_}z+B|An~I7EnpNa-74u$nUg2PuQ)>t=jz`1Rs6=g1=cj>|G`LPx`%g zA#c93R9)?HFJm3VrFpHC)8F^L;9|kWn!^Jv${F_);n6JO@eZdWa zk3N3^`d4$r-{<(tR=X1{T^gK6Z~hB^LmC- z`DH)$G0PH9#Iq`-8YvME;}gfj8p6W1%v)cQm`}<35RA5A<;OL~0#;XuuPm1SS@>&Q zzlUb4{%!vAI5Ae8ui7|#vH;~=@D0u%T=`n;1^ERm>z9S?xNLyN>u*f@CDp+t;sE21 zg#T$hLFE(J<2ZYPgZY3t;veMigwVdYR7aNJ@b?5PJdkyT{BP&;3-=d%6l&q&79Yhw zG$rj!b!6H6-?6R`Uk#U(pBHu){62VJD)=uY_;Nm z_{8yNLS~`hKb@6V()+R&Vw_=R)Ah>xvKGz}yyGB)zS11=PXiP68pI(5G zuQcNt#MJ`i@&*6T+k3!iQ6%r?^91zb#+yB&&>OxZuE!k zMxXw}a4uvu>hCAT6}X(g=Yn^+<7@E8%C!A~{E=n<5|I_M-;6l%!%oM49WZw~{uob( zY-3*0=d5Jql`Q_-L{^C3<&~Qi|9!y7dOwaXOY;ZvN)|uX|12xS@AAq+ivJm4kZbG_ zM=z%MLwO~O|0R({{9az6n=KOmKd<=T1m**#kKzVLd3h!H{e}JC6-JT> zyfWZ)#eV@XmkR%1j`Z^iFSxxp|F>X5Je*espg(crjG8~7T=AS+hrE(;f5?C#B8&LF zykfkZNoL5X-^+zu6kGf%OH~I{y#Ca#q$8r7_C&t8#|Asy&uYk*q_buSL-?79SElb-U z$SYa)-y^a@_Pe|SJ01VSz&tDb8*iTG59F0B{-;D%h~MQE_}KBk0L)v8|KDl;Kwin> ze_dpS_+4JX_&WagfI)4sN4)Xc6o05+$>RS^WXXPh*ADo;jjkO!l(u(YA_p>xgO8OS z-$fBZk&k$j(cblg;P+z=_*pO+d?v-vq4Uzf&4Js>{(lqeKZqU!HYR@v@=k*|D3*Ap1Wx*J~86 zTh~(FLN)##xU=Hl7q5>|{L>=*6?*2mzjh$j?~KXhvmXDWJc`bK1?Q7dbWR(b{cxgw zoP+;=j+uz{e2~5SDSKN%_uh^)-t<9huen}i##Oa%xgPYtA8BAmkwxQ8*KK^1v41FP zNjdHvG}mvgHoYAD*Z*e3+i_9U6EgB0S62aF3w$5oVMl+wx&IhocfdIh_zUx)lXx50 zUfJIdIwPmsBi^i$-M2T_t3q+ZcnL7qFl`iXR%v-{ zoQ3u|23{$cAP;mSp39VdgMk^Xcpg>PCCs`rJ-$xkzY)lrS0h9g@zeL)(D)L{0Equu z#XkX&Nq#p)pb`jCD??-+wh;ZA9I3bl0I}j zBL%jUq|XgXpL>9PS@hZBXnS48#C6b*)-KJDxydq!|Fe+)v1q|z=C#SA12Ogk5q|>_ z>w^&AgSWxCH@&4^{~`MyQ1-tL9Z*N@5pQv4w3GS$4;~NQKc-x2LMk{O?~BZAf0%C4 z&VzT9K3@QfwYfdwE%!+4qx!kJ>hpuh%+@C!bR;y6UsL$jsJ9);oicA)G#qfK5W%C>3wj zE~Ss||LUsG-$f?rlRFRHwOun_gAjyHpTqI`c=69xem-m7)Lz)t`D4)0g30ESd^YGv z#n%?tu8NQInduAO3e*kmWbL(GPmhyD7U_|j$J%$XRAe`L0B3i1VEc+5Tj$SXV9(8C zgL;b$;-~viFlfze|4sXh2?z0?s`yPF!+PBw@iq+#_uqpq6ifzRq9lY8-+7Afa$tur zT@-I~Xn{W4v%&Aj24UgAvZ!8j|LriAA9>pOdl)bi75~&g|LySM{(I0^kwNxzAH}#- z|2=4w;z!LNR3-e|Zdthh9#kQiOg`&z^7jnIR|D)y#dmbx{x@Yo%HPXHme-#t6!9-n z{5Jw~x8k20=sy*nJ?_n~J48l`*L8Emd#mC_tsL~2@NTz#;r?^b8o>m4;A7%ht$1+F zf6zyYr&Zqm6Cd};9dlBFJv(0%S;Wu%r$reS(}xVg_?nm+^dFqiWf1Hh{7MuJxy0#F zZ@-ZJ;C1uqbMT{1+aum?QK0{2tBwCu|260v!BSjvz2JCg=J&sYzEZru!sfp)Z4__c zsBr&_rGmp`^Cc6B?EGE$25$x|`agTb+n50tf zKL@uEnc4bC|2Y`HI)7koJ@_Q0&&;$we*ak~eL9HDY<-#$DUA<$3a1Zxi@{jK+auoL zr?ftP|5+z}P`6oTwm#B-4(_4!ITP56S)C}}v3FV@zyGY0KG;`anc4baP;rodu#e#U za|N(dls@;T^hx!fb~egIfW3j~qIf6HXW{-=+#l$F z2cy4WS)@m99`pKN<720Xsa>em&hGqqEZF}JzDHybKli`QZU0Nx!x9Ga`<;p(HGl9k zOdrKN4=UXM4t_!~8GMP;A(r?aRea9_`=;VsUZDT=Z1DTB!LNxd>KC~Gbr{Q!-oW|$ zU0|?Qw@19o7J>fP;kg@2)vZrN2HDU3FXK}E@8Ay=KWhG9)NaQ=s&M~1_(#EH@>!3Q zzrPc{As`yE1=B_GF1P0Ge^VCt{vNWa$nyF_g);m@)VhDjws^g}@b9`yp#N2P_PFj7 zhU_9TQoOF4B;FmB-Kf<=j#Ru83irQ5_7hBy2R{Cz9PfdBgW+Q{u0vYm+y^JP%Y@Gn zZ|GmhPVjL&4>=axCpwmR*Squf-}v~*?EZU5JCQ~9bN_8ohK2ZHv*YgsOi$t8jlai0 z@BcEZ@t^AdhLi}F;+pFf$3t_!{~dy!!twS7_8i4Kw{ZVEq@Q52`I3o5cAl>IE(G>! z#rIVH{x@wxsQ(>uxyU4axNc~$r6heWQThx5c9iI|`=NpUSIY_XzeBJWz%q!R`(Fk(sTJ^uI%^=Tpgc}(f^0n_bt%>dOG|4SlQ7ci|RG^zYb&h(U-7&Wo>}ztoTO;`d^3VZp`n0%Zfz?+0Xqi z<5K-^SqH_BnqP+6ZI2jj8tp3OyZ@rBmtZpatjEdU-4$OyU@v02DBkf{Ws5}?@pJ!cQHF*1;a6wpDqwC`{1t)yUuHG>>pXI^U@5M-UU59M@cZ8~^c0Tw z9$?o9?>@T}?tjZ36ihZ>GLgv6`xM_3z`m^b+UM_o(GPb@ z=XGE|RQfCr^uJn8p#LqyUI5D=e(rxgob{_TlSsE z%+{wVk&-{YR{H#o`=(Gw?Gf)gHm#4}|JFsHp&N_LY<*DBa2S1t7KuJXx54W@tv0y6 zzVGL0ef<8nPWtRBGPCuO{&(n3N+0wTLk|^w8g)(UVNB`&#@wt^vTU9UjJ+2xePI6#?AO@DD*4CoHu!9C~DnM)ZL*+IUP6X zFXRu%=6p7^2e{5~6!Ct3J`480L;oR|YvxTBogS!}L#6SL_sgHhg8lB$K_Wxy=1J{v|M5xu$x7t!{)%@vFj&LeBi{cK zRiE`bLDj3FV+0fAvGv*9|LN?T0!$UtMDhOBsy>^~P4GY0$X6OgL)Xipl_E>(vp@_B z**R13*8p>u;{PLEp9OD9gvYm3u%5lmlwZs79{6?WI-C#UT!ed955~C%&TVn_blmmw z3)u@!=kNQWgR0X9yj_QJeONF-JB?q;u@*+@8MFlJM(hI(z7u%@^|ITptAFI;D2za_`od-#g!VgbX>hBvb?ym5W`~Z z?|KW)q9|H4B8paEjl1%xC^~s?6g}K0ik`>sPhc+JbCc7_`{m^8qo{hbD4GS_Qpj3` zvT*agQM3RxUXcCkl>NUVwsv-Zjt{&f5Z7$78Nc-UzdVW# z!G6$f4WsCbJ);JDZxS^)_Nu7C_?c0IC%(YvyfupAgVCSvwj_#se;LIUSU2ip+sEOv z525d@s6m5=q6W=3j~bl!OVps|yr{w2b-3So-zYxzh$z0|-6&qXMHIh+_v%B>v+^Cp z7BBvqt9kZcya)5i#W~jLf?Lxsqs@uufCJtU3yFvP_$^j5=AQ-=Q?=kYkvV-G(ICvx`iSvZ&Dyc_4! zc;AGCYeW1?ewd;BfF8OWJobnWe!xD@Y3|Rbb*863Z~ORm-!3wwuk>+EECKPOKDlv! z09e?_{C_XD>tl0&ycvfkIMlNtzEoMDdgFkc&oZ<0;nYd`JfigZ53p~sI#K-hRRMj} z617hHye2ZU^hs8yc3z!c5AB+Jaw2W^PxgPwx@bL}R;?x^&6DOVr8M6HWH*P?#2%q)ElSNdFw zUdidR8?dO&_J|K{nX6AT^$~1!(q~_hnWYcPF&$>SuH9SdgPMJ9NBc+YZyZ{ct51tR zs}BZ)WoGGfBlI62X6H_CyGuV6-E6@@fx+L&ofc<5BRCj zamJ;1Kl+tE@aO69*O}=7TvpVKG#w`r3< z>yQ2-Gs_=ndFY_=xk~ACEwJ#1J>tXG`|HMrWwAaDJKP~>WKIrpUW~M&2K#@L}H%^}=z+$~)kGKhcuBzzM@=xn?y~xbe z#}+8k2Xolza|f_%SRMH1i?n|bK7TfT9u%3G`q%KMZ+{-$TzyQXh!0u8W`C=liDSw=IyQ4{DCn zXB%+ssq`6;8XptBb>Y?e?#J|=wstUkwzOwxzf8O@V*VsrO2b&`*Vp;$P5+5_7~>GMP3 zb>gs-1e3+5*NMYURD75#!}gr-BGX$Z3X zQGs=u;DhV5VOR>Y4Dti*|6`sgoGpV1Kh~&@|4Lv{o04V;B*mPDWiVwdcppU;!E3D6Ck(s5BUZtibppU;!E3D5gA~Q=LTLzQyx>4zKFR-t&I#GN? zb*?_Cby{J4&@Z#hEPZSlqV2@!Kc2*?JeGU_uqz|u?6jHB~ z%-$u(&u}O}ETr{w69 zUMCgSr&MHS>Z8_4W>44o2Q`2A0HqIqZk1cN<*btm>vOKi%+$xmh*<{=Lp~mc9AxJG zFw8X*-zKI^zf<1_jn7%iA7$Vk?^xrbcS(;=&N{8IKSqnpOn<0#n%Qf2<1+==xk{gb zX?=3mX@&KfEiyCp;dPps-?NlH3-S5}rO%sbeR9@Ah4on}GBfqD1%k$FxzguWU{{Mi z$Fxf6leVRklP@(~7f0+T zGPCs2>!uOtTR1L890DwAqdnr|j|k|a)=hQN2RVafX6fVBP33qm^cjJC;2$b0)AC+drbO zJN~zTK5E@oCw=}YGPCs2>$VZ+D}Am2wp{c%p>M7}dfiqheFlrnEPdR%&CDnCO)h>% z;`KD8&qKNT=yg+_^qC|wv-GiLG089JTbw=>z%CYjTJ4{!k6t&`NuL^#nWc|jH;q8w z;`FHn_I9Pum|T7Ix~We3+$=J)^l51+DV}do`rHHT<4T{;a`f@mO?A>|jmXT>=P0eu zYNZdZvyDJ)v`5^!OO8I?x~We3yeu+FA6hs0NVje($9tiVshz`7udl|Qmid0ot2^U+ zLl48b7f#fVQxRkJanSf6_qurb3i|x!nBvwqrTUiCy3MyLqdxs4GBf?5)@`N^us$Oj zpbl&;`n1_GM;~w9Ru_FnZZ0x2^|1xY_{Y>Fr_T;}-B9UsO2s*a%+yD%n@p{C`XCXFY$yI{dt6!{f8A6keOigk zOnq#DApf9maQYMj+f(UNlh(&yH`Pg>5|Npyk1Y_SPgkW+Z(uJFecBbJ^hvFo>ZH#( zA~RDTwQd@Tp2GR(-@uMj`ka^2C$(;>lRj6A%uIc3fiU|JMxT+UuRx5CK<{Jv4O8Ps zAm^D{R-Xrr54fE_CPSBM#~8PJBIS?Nx~)$Bs1%vxkB`jf)wXTjsYC0w-QCaRqrXX? znWE3|{{f42w>{$a8-u7jy{(8$H|o_zAnT8-o{5cwmo0~YIOd&KRpv+~V8)a!KL zqkMdNP~~Ky=IL|0$RvGeotgtCO48>RrOyMvKFR7taffZ~y3t(6&F~x9rTu}u0G2`g z^gK}xzx$rMkq;~W=YV}f@y}4t3mSjun-6nEx&r9=!_*KfGoL=D1d=~qQu@3D?3YTP zAJh7%#aUhT`BY@))5nw*(&r^XX$spz+VBEtEdH;59FvP>(w{OzEQ+M|IVwp~%dq zk12sBpHA$8vk%UH;XEEE0&BwQI4{CE2q*IDgesiqF(+W7VghWKa3{bU;2?jXXXSi4 z>L}>m!3mB#4o~?*FV5=fk2WGRpFd0qCVfs&`kV~xsY;&@Q~Kz|SzYz%E;31CJo!FLAM_h6GoL<`@5@oEP!C6<28~4CH@S8c^2;d9>5=GT>ieL0y+irq z1#qu(tntZX)Bea)Z?gP>-hgH1^M|W9uPS{$0QMWD&*v$9^3|Ixeb8^P%zXM#y+Q3T z_e;2V`4RgSe-V8;bxrA$FW+bAGaBMpWJ1c!|PU({`-)HHAeuHI_ zJ|CNY{=~LjJ9kU|ZQHedhYraXfSC9(`#0>L(R<+aexgt33!`1ltDNT?RX;nrpxCWNHV zVM?E4fK~lK=b!ER%JlbPKPGl*f1v)e4B}7fO(`BKYgf|lw7#87yW4MHN$US-RsTn$ z{*OkzwnyA`x5C%KMt2iT79S}Ip=2-mD(C;xfIWxlqPS}Z%V(a~H_wr)XPMfjEr91e zzn>|x$%kuqgQO4hf{{Y30Mar0C zg}?iOA^$R~vP0Y7Qe=?*)GwHMeUeHC2?z0`vE+Cg(;C=+DE=F4zmViJ{yI7@pN&C( z!I%s_rzqtU#P?{-sd0^PqPH7sVjMMlOk14LW!zAl7vt=Q*QhOHu66qSpMN2H!Q<@h z3;F+aV&m@oyoVX@cXIQo_MjPX-7kzeUu4mE)8{N|zuWPKt&aZ^Us7K%%hJ*{HN~W<+GNq&guNQPB0mKzQ5m8 ze4haOo#N|Q(BIC29Djc;vU2=QDC=+ZBW}EZMn3(E;$NBJ?}SzCQ1*`noMq(L-#p;& z--UndX25PQ{HGn}`TMAlzsGJZm<&GA6ZvE;_N3U}vAf`PGsV}Zpue33X@8I1TV&<< zn^5p~ImQI`j_-vNb#FXst?5rk*W#=KUSiEDwIP2o`D85mA7}rOc#ZYBJ>t_I$QbX$ zYVo5U@8d-V`QNSYPdcS*&ko*z6aO)a|3qNBF?|&OqpezRVn3a~m|Ex0v7H2y#m9;g zU$Nrr0c=0TcUk`Rre^^L+|%Q9kwxQ8pBF>*mhGngY%KaA=kIfYxm5AL7+P-%tFuG< z`(Gl%w?ElWDectL+fOlTF2{cruvo9#Bkp~P?{6;Ho}K6~7?Z{4^fd8>b)MrJj@Ofz z4xjNgH^09<3)21`FS2}pJ5=It^dpXcIxtwDv%P(ykiQ+?6%fzWiKiL<^@ppyd zUj*zbrjO!2*ZBVCg6;94zhF!jpXcu-iVyq$WA9abOY-~Mvmov7yF`}nZ-+|!jef-W zdo?gm3;*exhWzdDVShg^GRS^!U9P>I)UUCRDE|Kd`ysn@2sDn_VeDGa^s-KecVo>d)RK}FZkW8HJ#mm#cLWt(mOum ztHS##S>rwq>vxuw9(VFTD9pH<^{(ST6t9nRK8yR7gvUJ@KV^p+_i=}d4BvjUKae}m z#-UGg{HXckP`m9B_x-}!pUg8{HA~LPY+yAU|HmEe_sPA z>u>BOxcC|e4Dy4scUGt`b*y5C_V-kgkz;=u9<@=jaHojk1{2v1Iwc`IW)(aYNxT_fJNsKe=Mx+*J~z&Yx5R20N0m>< zo1V?e$Ql3Ux$$Q9HXMIDU^^@Rk$$}Kg#jIJisLK6Yw=TjE`M%U z#y&A-nzJBhy#FDxa>kob$#|P}$mj_;2jK+w*xPYpZ8jF`!TLT-yqi5GXaD7RJ;brb z=k1&^-ig)XM?KyHLP5A|x-qje{_KWhA~iWfD1{A0p< z0moT#J%X13zJJ#UCcs0gk$u=paP~b7%qxngt&L|hpWipv+0Z_eGIK z{NK^@9TsHYZ{`#F5y$@qUVo7M4gba$ERD7_uQK)5etlQ4^nUujC#Pf+l4JPZR(z-6} zUu!NuBemZr6p74$9+)}CKD-A%+3yp!!0Vk^8uWN4?FW57Ypxz1KWZ<_3h*~~{M#!2 zJ%GVHw@3WXc4>Zn|7ZdJMj|V~j|y$=Z>abW1_pJ_9`QeyrTD%3MGNr5LY77RNnSIc z_MKXvMibohEfX;58nSR&JXeXY@Ew*Vy;j82sMQm$ z6~2G%YxgtQUVWdVljI(k^8H;VvO@eO!4Nuh~Fd@ z;vcX0X92T7@qe7+Pp6f9{PRRsh~Fd@;;&NtOM$sb`2T%!ia(uJ^6_6UvWWjn7jK>@(mdPKcZkk$V>WRta6Od0QG{kGv z^ZGu>&O4QzFMu2Cb9==9eoK8H$a|^#b4;8&k0le^s~@k6EV5tfIH3#&@uP;hIDZeA z&zU}oFK%t~xBK35>H`v1<3ByGKM^ePCHrR3vNP0_e$3=&$M-cbKP$d9wogj-Wt)c9 z^%H&&On}GrW2P23p8p~LZ>D&@QT^Bl@N09qN!?h;8ryW~<&TLQi!9=I{g^=|9LBGv zE;0Yat?_yn;lHFus2?NNM1SSii8~6`A4ht>NtZN^rUp7btobJ%sQ8{!b=cUO%9nZV z-A`l%_?tTZeH8!SfjLt6FKw3MPvy(J{OB}T7V*1$(e~udUE8(id|{qLboL($OgqJ2 z;pdCcdTt`djxj+V6YpkRk5@d!c->v`Jd&EPskjo2lgQHZXW}U$%lC7Fa(?cj_)(rG zo+bR3H4e>J%bJ?66Z;C5_}qN8??+^jy?qql`M_MR_+C`=D3G7>+Ixw}3i4w-iT_`U z{~BPhR<}od`H?C9R9xldA1bnl-}RT>O4^sUP5MhS-h&nYXuO`x^ih0ywd(IOuGdaP zQDIDo$4q##bFAW-0nB{G^JM=1&S`8DmKRsmB8&K4e@7@HA%67CZvHF==04%S;*d~( zm#~ulI$y02Eb+PiE_pxocjZwu3I3mSG0uKCkz*#AJoh_(VjfIt<+$tR7qWMmviBiy zzv-yrE7qj?n^eBc>u>BMv#gN)2y5DpG5ZoGwkDzBJ9AMKorSf-nO8;88R)h8t#Y~q zf0=MUYTyyTUk5y{d!31zdKTu>S-$~`{-xhHL74lWWdCEzeysT?e&PNcU&;4jbAO$h zS9$HnUI5Dq+0Xs0S(mwZgT9j-eH33gF6IAJf18&ddjTvf#83ULiq}b-lui*&aN*I|sy9m3Z~4S?K!R zB=i%EAv@DNwqBWe<#_f6<{-sWo~l==I2Vm`>(!(KMHcb9{xU%s7GtNG+m8P*ygo|t zzZa@kmNiwcCLJzVwcmyjS=2_jg0S( zlf`FppE-!HmE!9JY%ltg`6s@5VxIlov;}ar&fk-|i!Ac9t5eSIgdcg++1m%0^A-Pk zTR+TmL&?6l$Lj3R^WtogLG~y2H5pu+*4?$Yt^NHJ|G$7mF0)5`%{Bi07NNd=(q)1P z^Rbqe54FSDI}q5JOc%x1EXi}fg>L}`w&!p37c9%qAJ%Trn04bMzw!k)8R;B16*C*)}4`wewayrF(N`{#fg*KX_)_utg!DS1vzS*`r2 z$9sXuQ1RZbq;Cm*U2^(4Ok=m>UjghbOdrMl*QxoH@x95DZV*fsA8ShX!q<-PPGHvv z-+-+wpV{wy6YCp1cC5F+(ni=e$)9JdMW&i(8k)>AjJwn031D7SdR&?_&otg$8293B zt;h)ZA${G-#F*oM6GIa!V%<1t{6itq;7RavyCuRHHP&<2cy#FCGl6g*#*qa-o z<@?|bFM2BGoxBM!+X(Lvo@dGaZt(ii{;T3?s^;^DvVKo# z{5S2_$$N+l;{9H|+lnUMT@^2K)#T$8?~G^*^D0ws<~E=hWs_IHgOs|waXwXKrN$}oJ7~z>9*VyoF#lBi z6I6WVjGMAUk2m@YmO;Em@uD;({j8QaW@%bKNJHyLw&@(WB`e?Muy-K^|=7QCp{_K3^x zP0e?^?oxhd59ZGImqiwh``0NHNQfVHy1Ip$Klu};k79f`A62n}e$?|F_Y<%T!hPm= zyLIi;!a!uB-5I_17$Nwd;KPrCz{+gzt`>7_Q&tOazACEZkp^sp`DWICNsp5Os z_9^S4IKrAfhF7QHr+N>)ndX7|+?1e&z^3LK+n?C2`h_W5fnyiZW7q+9zR@}?SGu!D z`F+ZcA|u7y@ihBcG{*iZn90t5)Yd8cDc&l}Yp<(>`obyLzh_K{$LK~p=t~@r@nZ|c z^N7kP=02Arlj|zZQq~wabLf0NrK!jw{%<{0@_u9Ip^6{wQWOPd%W= zcYY$$!rw>nqvlV!Liq7r2EP62`jwCW5|Ndf-)%az?s9T*7rGQo zWHb){QhM|U_FARKYJc4mdVXfg5W!^ex%p?}41J38`zXA|`q&=vh|esa8F!N}(s8aW zpnRe74)zCF7WrNJCPpRu3&v4k?wNUB-v{{{eYmrKDR^&ktntV$ z!92$L2iIFut`iyLf9W$F&dfP;5I@!cjvv?mr#zJW4gba??Q>h1`PxZLI!ABb-!HPV z^e}VJ9HhrRN{`2YmHr_fwV$fvCJxf`FP|RIiL5L=%p5ca>G8DE!^G!%$=~pAJZf}G zkMumur^h;xMe+Eh%bRUVPL%!XDY!o3#^YmPP;c!KkNUjue)SZr-x(9+!Q>-5KUF;6 zN6}Pfft~nVyzR|P8h3TQF<0ZHz?(j+BT;577J7 zKHdbq=9{{OU{m8;ijRJEdkoAw75xhPcPeWB)V+w){1cD<){bvdzng{jtEcWJm@pq_ zw+r_j1gEFedFb{{0N$j?$&6BKC7I8QxL@gvZuBFEVy9#bCd zPc5smL-k2h(F?GQRDAVp-Kj@%pFlZ!%Efpea`4nLoR{G>^6X^9^5l2%8af%jn6a3O z{qL!zIFDep{_j7@Zpd@vde)Z;2bKX$${M%D7K|Ad{GP*mSGl02Jc*gEu zU>-S-<<6t2=ZUP;JR+1~Av@te$A2*}*C_rm!FiOhrsvU>f+aqwmz}z{J=tBSH)HAe z1_Oh2pFLtcbG)7T-9BI2JoNnGRP+;!3GtYyBfAhcj%O?|Gngid$L*Kuf7AUSYn-^% z>wl+C6g~X;7QTspN#!TEUzTG5dD@#l zsQ)aB{EYnMp+H0Ss=7b*QDD|8{`39(x|DG|4zW{qxip0+3)u2>cEfjV_7u+K2~v$8yDIZmlk*Jl3YSJ<1lS^rN;qyeVFJm zxx4qd!omIVX$K1?4;%lt9xl0Kh@ z>`ypJpQDvN9e_PW>GPI-9?sR^Sit5=IYF!@CVlaEHjTjO^L_ELm#Ej1$aHuYJ>iC%A%A$x%0B{_*^D3^XP+4 z5q6g+`bMM?#EyyA8O?ESk6iUFexkn3K&_l%-iz8XZLL9Wn1kX2+-{zZgZv67 zJD$36${)FTqOd=vi_AR!fW=9@GJbISAYV_bRr*|*(kC}>6xL^n$RvIA{Gra=-F}nA z??R=|^}ybt^m$r6Py1Wr;C}zKTLhEA=NbkYj~f-=y})9vZjX5Cx2fl+-F}UmFU|s! zJ9OQiwnk)8-d?ZfEupOc5o6B(SgTKandzf=T2FhQs>v6*eiJ)%zIZ`o5HHr{DQ%mO z-H2<)`#LZmD&G54pRYdOGe?qb7(Bb*6ImJjO^JV<;{OboAB2B;!xVpRUdZBGW;~{-3@DFgqyz4=sP5efR0x3MR;d z=rDFpNB`h>cE#&P!ZTxQWv90<;v&XsoK!|V&KM&ni}e+&sfK%>`wfw>i+Z|!1Po6=i2_y zUO!6V-O9t`Mcrl@A^Ur!{f+$yXaBjtqR!bPp81mRZ%*7E-#-PD#pn6^e8qPKuvlL^ zKE9uc_t}H~wicxQJxFAQ{0&s%@BWH^I53l#K8k1c%l5Znb#|z{JsrIO%OLx)&+W#k z3mz?yGMVs?R{TgN(^0$G{#pM~>uTK36}ql5y;3k?KGxFC4)*?>T36@# zn=PP3;*EQ)$RdC1b+ti(hUV8&#eWkpsMYp}EBJbniSHc0DLb^k?-Utizpk%cT9=%t z98UbVDSp)K=}$6!6j%IL^(FY6s?h%1^hX7g!RHhuzK0bb_WY-RDts6^?DQJHz}|3u zb`}_id;We!WRbshUqUFnzZ~xYZu*Njp~rOCJ{|s_ju@DZxSNJGPJJF^Ke$~!`3k(h zIL5g0?2NuBv0D77#~b|x%OL;jbriy^wD=#i*K1hJ=l_|t0Q1k-7V80uT+$(~d?)FP zStH}GY3p&`h!g$m4D1=qKu{WPOz*IBtW*z4Iekfj}uG%A>y_sE)n7Dr%*UfVCj2g+md2v7E2$4l`ulr() zBL3!z|9D`EnLdhV|I7AECeMW8hyAGHZU%Y*mXYIslV)_>8T;EP{w{dkOYy&I?YGx+ zLeF>1K*D59CLil*_%O!K-+l1<8sVGMprF5%1u1`@BeHV*ZBZuPjJ?wlThlSl)6ug{ z?~fC4GadazeIGR5XDa&#Lm$MwJ>og%WQ;dk&3@G5jb4CdkpFc(Dly*#g+-GkApUa2 zKLOa8OdrK_)_Qe3c>Q4p<{V?fd{#+_CB8|DZw|0npW7pz^Hae(&K6Kc(RF2p$$M5- zP8~NW=Eweui?v%7E`~V{*4k!DsSNwMai~44d zxOz8L$1|=+%y>XB8GKGr;zRCt_C5|Q>YC$gW%<@3pP27GGtVEG!`r6x49WHTe?+EN z&mGK;`?E@qSAlt-)rjKiMS*(i@UC6;^XWQ~;rStX>;oA!<#*IV=Z8;#{YLob^5;OB zyq4wnF9nmq=ldP?*YW)rMKg;OAAc@eUcY;WZl(clfa1XX3sBmO;GVwk>Jf7mthJKh7*B?q+VOcz40;y_q(OYmT+o`||jE=AME{ z^RT0dXE(*OA25e1p0h0v_o+#AyZF|M8wcxrGV|{ui~5@%ot>1&W&+^+ikdz1SjGEj zw3&I8skh1>GmjE1z5i>&Qw(pKGw~?diT=UywFahG_!jWzy5#d`2f^g>BpxN6wu+|< zFeY&(N4#K_x^K?(Ke_%?iu?6=W>1kt{NF1(EdlYPe{go50gUPg7H;D`*P;Am_1Aty z{bwxktv7sloD7+vz5OagQ~zheue0XioQM;zXFY-QE}ZBe>-!*kRsEld`ag4oV~rPn zVCQGPalKYB0XxYt#Do0_=hv~oNHZKS+S2lvd7?gNBki%jS=GFGg8I+0i2pl{N&v(^ zN%7AHW|7#r=o0<8A{w9MAde6Ao3WIKzp(Ge-OQ)yW)|X!w_5Qo2Nw0(9`T}2Re$qa zW4=Af&jZ&9Cd|j#$nv45aDKiW*wsuI#f!H~^*8o&HUbuqt3A8#7g^+I$`goZwi`5L zFV;(rA8Y=ZYZd>MUVoF!2gXaf_w9d1WDxIHX>F71|1+Odye|Q>PVv5zy8g@Srj!PD zJKyI=-DX)~{^WU?nONgFyFbAEb@WlZq+N=i_w(z*|Aol%_)FUN>|2~%c&0pp_@0S5 zHWTxC)`2(=$BDJqtWEI$KE=<=ah`><2VP@zXYPg*HF75M-T(EVaR&$6KWiiK?B%4! zOO{#tlRUzYEqH#OwYgwIcA6+RcFsFDisr71qUuigS%aS=@pE^aCq~hH%9ieH;2f+aql&sNJO5KDZB zBgfYYn3EOXa#fG%^Eqwf?lJSMf;`RNQDlYqn=(IQ*zsenKC8FzFWVx;@6W6J{ytS? z5&xGi@AvH6wFgybvLExs@%IDf0>yu^x=!_5W4?^y+lhE(OppfyLp+E<$MbJs`YWE9 z8P}=A&sO6kuslCsC9;VB8{baDLj1@Nj(-R+m?!p#m;K~jr}9~i{(4-83zqmOUl(^N z?v5zNKc=H3zH-Gk9+>G&7sbo@d6+zX$E+!W3Gq<8oB29X@l@jVV#V{hov&-rckuJ? zYW)dAJ;m*`^~ZOC$Rs^z-Z~hOk-bPZ&cC(5+$?(3c1_P)ho`FO`S%9F5+BW56j4)% zRljcfN5^*uFj%+SBVMt+oj3XXd#_+}d5m{$+}x#j)&PUOddG8=nxEl*T`BJO>$9E~ zS;SBMx_!GPAiqAL__4Pz>n)~_;uY2Dex2#8{yJ_^zZuJYR;lUNOHb?4w(H5oZgU*s ziT4%7`yQ~L3-79%yuOYvhxl>xv0%b{iH=4p@qM89zK)^_sa5f+S5tkR>u+)_pb+-r z>1UC}AMp4zm9T zvA<$F=)9*B9bb2>jkDzXSBa;8MqgR6tH>b#f7VuTy;_%aQ6p~nD|S-+``|U|wLRkN zZc*2Fe{0OQNqgg6ae!d5_;|#LuaV+A4A`TYE{d;vJ>zu?ZmW3F_Ehv#ytjJm zQQrRd?L$Aym;evCn0U}jaDJ>nPf>w5wnu#Z8(Hg7Ut^j~0C{$vEwYFo>rp`^48-40 z@gtd5U@qAszTpIaJu3LbwI1JPf+armG0FQ);z~SAd>1P|^uHBTnJ$WN;Ll%7>OpWF zT2UsLAP+oi@`Q<-3dF9NFO{d_M4wlAOcYhUkMl*xSuekkor9E}ScFv|U)dwR;ft(3 zD($gkWIaElezPpHAAOWY84lvFQv6GSLA|y|d}BAikJ5NEvK}AmH)B1%wsPYM@zpB6 zTY*8{c6^UnzGPg3>#hpaZ^q>C*n~tpw=162z&yz`QGDZ9mdE6SkJNR^#6wnNzrI&I zE;49;^9SosyqowQQGDnrDqa=7n@S?A7R|f^ACH4!VSQCyuXstYUfylpqkGrxCB>b^ zoyqt;uXs_{Dn3%YPk4Er9|!m6|9gVT;(OhQWf|8nSt{9Dl$C+159=4=J> zQzh2YmFOSPrbn}Wz=@uxJ`NLKhJ*8ena-xCS<1>W8#55 zj;Ap&&6y^OZ~oHqn0-%g{Y;rbJZ1}x9^c9)B8&L3?ocQqA%6JO@wWt~wea6^iofnq zcp6)e?|8uyAJ!f8elv&Ey2Ipp$A_9$oQ2It2Q_7@nF%ahC;vI}*^ z@u22co}ujeQms48e)5rgMbTH;y4C0JEwYFo>ken9r6B%O75~}5{9E{MJ;h&lIJ})P zo?kB%EaeOAC*%DcPBd2vI(2Q`&id9!Ctma^&Tg#PD=~NM5#QFZ@VcY&8o`A5I6GOs zD-~Zkuvn`*zK&|$!RtHT0?IMM&;ONUM3x$7u^S|0FV-2(Uaa{m=P-Q~-?lQR?-#tw zPJUjjtPmN*oAgTt*P(rq5j7V#%_(%ETPi2o+VkKUp3QN_PFr(bb+<6e*N zA;D5yeeUAemAd-<&K;9 zQT0``0cIJg_-1d>a~5V_fO%(c3d{~n8^w2Sq~crO$5{uz&)!yKW$@E;7G_Vv@$U+Z zs`GbVkm7gy$98(LC3Xv2kNfO~A}fQRp0hCfA&wvQe|8IH|5GV`e$JvU_BRn(f%q@Q z-lf@UrNfNBi7%(eQFz@(^tdbay{BB5J$q6A8I!>$aboxo(~j>%ye?6Er={kbyH29~ zZY@a9x7l4qR$#sXmE<)uzZ`!rV9r$h_h!bsVHG=cyraKh8G-ROIEr^OryVb9_3X=p z_wJ^t@z(ovoH4TOMt{t*GWe5tM?P`H(>w7u>V)IJ4cPmI|K5`d_l2|X z7EGAWshRMhPjP$?1N*GvyIl2!`gwcgwUh~Z45 zTG;s;eZm~nKYPUYU68#`kYfQn?&Wp#0xXOCP5T5MDk`X7Ic!1v&BmI2HuRhg-^{`9 zbMX5d{9ZZ~=fo)Lf}X1salN4r@(=i&f3S}+XAj2`-^ZU9s^-_6UFAJ8uZ`WT%)Wi0X0`ikCf z5*K-v_*yBxlYzk+p7|bVWb0I({pdN}1QX%#TGT0oBW>_*;TS>$K09smWJKg#hQ z%+opW^&E`%oL0EjfZwYS$5l;mVs2G!@ATQ=ztA|3Q}!=`4yyh?xHzjG8LO2ab$&vg zWEtdtT9=vlFhSY5xHNTt`5fe5m#0ww=cxL>dK1-e{nnTthxErA^`9{rd`?la_YTE} z`aeh2|J8?O_giTT%z%62jrz~BXuN4Xtx-1KRQ;cW`aeh2|JBpd{g%dy!#!Tqf0p6L zyV>CE+Ec2(OX3nJ>rM< z&Og7D1-bLf)PF0>pI;Vb#^=9ykE*X#4KSa!VEQP2Xjmw|nN``L;=5{7kwLt!@95CJ zU2&4l3~$v&Vs{mKo~m6H@6T$V9)9KvT-wi7$P0`K@fhuh2l;{hTeTN3jfLmoeY5xJ zO=LNZ$-90$SM4vdh@bZ99g0YZU)BFA)c>j@6#vNdKE1@@hKI-1P?G=j zd_nzZtjZVe1|_xKlf<*C|5d2}Rprjx@gux%pY&Ipp1eF<@K@xPFhp9C-Ez_-6zWRU&IdeGv` zdQd!0{Ik_KF9G&?;eWJU;q_qE3c+OYvB!xI*CSk9-2$wt_mBQ7&w4Oz0X*)_>w83& zn%5eY`1?-9kNRKrjI#GRJFndRLB$&HJnr#6DKdyRsr$g8N3yOayB|}$&jW+HZIAe| z6AG`#s!+EX6W}2i6A!LOIRCy4%r8t6#gCnzXFaAgreFrlv-2a7Mf}Nn%%Tzw)6Z5T zKUX)zS%mi^w$1#i!kn&x->We8RfxAa&64+T=zq=g|K@%jwjWa=!n2`##E(6htOxmj zWcpF%uj-9O2E9L77aF@wLrWuU?5;!{RrJHPe=|-P>p7-(-w5>rb)(QR3w=x_^sWR~ z#kIhF3Ow>qRa^Wl1jgUZxEp^vyZ?&U2RLB-c=N*R(&|Qn3EGJWBc6te=U`w|y??xS zo^`3`u_VHDd{v|Vvn=9I)};<*tRa5Hm$MV~zq-A$^ZuN5sl%Je>+!V~Eak1w+qK4X zZXH{9>C(Pav%aN0x^?SX(mjz)yvHlvlYlJ|-lvY>b&C6c^oz%b{eQ+J_7R`?_Nk`4 z1SXzNil-MaeVxqs>Fuq3dFo$vAHn4C*hEY`rzxIufEl8AjKL^7{CN>_rdb;$|3h9q*Xpr|0YYvP5rA z_}(~<5iI%lYy1B0GLXbKQt@FfS62$(Gn?DGo{VE~pS2pj0Aq4_l7S?iX^LkqFvzj? zh@WYp`UmwrVkwQi?-8rU^?#N@yx*<fxM;K=ESDUyZf9s-M-k7m#HU|92Xda1j5~iXXM4dY$5*t@krEK5?w)*Ea=AeBXHQM;5jD6n%*E z>j!uq&Cx~ib9>r6klMfXB*|k^UcXR{`OUHd{7s3!9M7~-SbOJoK3QEe^%?us9Ic`ii;=@74NpW?TlBU&f^Lqrzw^StiWx@UVeujd}5_zwr> zII(~23a>Bb<-8YXbB`8GfXB`2xkoCVHo$aNJo&3$+Fy1up3X&jo@b59ak#Lx4Z zPzeW(^NEVT1eo5!|DPiR^EzQo^jH1p+*1YXjcf9LH?QaRP<;J>L4CGI{GVr2<7%%f z*U4VgQI-|pPv*6W>vI+VrFcDv>7)4hrYU}ZUgh_9f05;lcjwlfyXm;PO7WKigSu^x z`1x60Tm`Qq%pED10FT5KdI>jwCjwK+G_do*y!FCq9E_`(B8&Jrt_YQIP+Uz@{7ATS zmkR$2jRJ9%u;#|qBEfp&n!I1)sz&jx1mj&qdytkA9>EeMt>CYZ~E%_vd4M zKHu~x=zFU%=QhMa_J8YXO=8LZ-^KoUyF%xE9b^2`<9h$q!&4*Z*^9jZ#;SELK6j{d z>mKd!2%B4dCjG#?JrwVOz%~)ymyhIiF7CI)bqjvr%H#XHU^4h9_ZX?h&UqLk&Y$xR z$Lm&#@2v3kII&nPFhlL>fj)v|k)OH$aCTdM^bd}|Juq0O+arGY5u3m1{?Z&)u|w78 zd7VTC@$&i*&-t*c$?jssi$(CfK1>_MubiaThwyXgKH_;;zcVJ6CsB=fdMchXfl+va|Fv6qFu*Apf)An7O>HV;IxE|r==Uu?87QR>iY3rR?_rtHeK=ACk zUobg5Nw_6>=pMy`o?;%>>-LCWooRWp_QObHe?M&AGa@6kA4d0A&wEnwy@>as-Z{RX zg8Na;Limak{nqQ0a4xHHIsPBW~7PZrj<2TUx z7sndEcDA4I_`x-A9Dfu{uAMe-nD|8Pc07N;zReWRq`di#J?7=R`5TK2;^lm2-fcx2 z`^-KD^UmKIuXjTeiRFqMf{v^$WHry!+)saKMJq0 zcDG0T`gehRllUpoU;Fh0!4eF!P1~t&O~S-7K`enqMuL0FTV;*@_2y{_`>B z_K4qVlA71K`(fGhdX>l`exBE4XTm_^jQZp3ycL-Hm_CZ%njVO^Yf$r zvn+4C&1zrA)hmksU0^;{{NMO-61Ar&ob!!TsIPJU3{7S0>_K` zU$YytMDaVDrN-Bfue^5G>@2bZ{4T!CUWMaFo~~ghqA!2vUnzb+zVh=QAhH7dN!>u5 zHv1%wAGMJI|%~{k)x@{|J#4;CFf3?9n*>R+S9tqk%|iWHO{ri)JZ6FsPdCNW8@@@2Bh^1f8)@ zZ;$xB{j>JPlBJVp@3n#r?o-*^X=D>`nc^J>>~yA$;`e5H`(n-bMs<%5^`9{re3U~S zpXvi@DuG?3_#Uj&zL=}go*p$Ki^iGz5Z)KVP?NpbH*xX29GIJh|NTZbkB9cf+$z=I zU#LNU!7_-K*Qwa|VOJ9``Ul60nqBjN;$7yg6NBHEU30Hsa(NOL6VF|WXALmVDxT-_ zt`k{fZ=G0!YXK~SczK;@-fcw_@8gR11z=Pk@WJ7Mbt17@y>(rBRj?FKpO{%*+6#BD zn@9NRr`~U@d0FwI{?}md-X8IX4WeDl@3c>m@j3oAsQ-+~=2QMveL&56V1Hw}DE{zZ z%V+lQ-@^4)RSyFe_EJto=vdrce%{g>BkA)|`m*n<#qZuqaxM+O_%!r%zP< zZ(z^IiFoObvoqxNz~3L+9%pqFJ&wAy2L1jc@aH3IqX=z$wEA?xlf8|Uy(d8TlilCr zj}ED8+$E_~=gkGsn`LFi9fp+-(gQkj9$U~2Sk!8J#2-z`A9tKWJ^o%IgZMwrjr%t0 z`uBqFioYMQ7czYmf4q_UKIe>m(*@WoWK14D8hEnzEX8**u&B-Uh(B(U`ab8(`JPx{ z+Y@hpdcid!lk}ncHT`VShPvUTel56C=~E8ucvc7YPq+2c%=@q(6T4KtU4YnS8JYgD z6QBGsLh(-l7W2U#@h6-6{txYUE|@8pJbdE+X^L+iu=g-s6n}Dfo&BE#zJ+@6w@hSa z`rl4~Kg#i5#Dj^!1&eV)w*~M=PvqX4@%zo_rRwt_|AW`fzX!pO`fQK*lga|)ZzrH< z|6?LU#-m-wlBUf{n)bz9Y}*tsk}DU)zee#RS1mxjX8uplR^y*hZx_5Im^^$k{?9AE zw}4gk{nLqR{9jL=7fL?v%H)uc4ap4j?Egq)%J`?TiG^hU`%0hn!2ZhSNAaiY)BaD( z$-SR(!H*(?_&*Bi-o`yAwm|IzEClt!&4mB6i=*AlE9!SL^4~(#O~&NoGXr4kT^NhK z3%ADWJrv(;%eNN!#(rN^w*Scn8UXG8h3L>&Ch7B8(0(E%eRfp(Gz9iwrO$8nIUBm3 z6_k^6AHl){MF#Ox-lTEEZMu+=ihtAJ@cdiY1X%O}_J}`U>%~8BH+lJf;o*YG!{_4P z^i+=Tcwl=oT@-)*OTqY0*^nFm3r`f8qz~1fwEYPutyd6#Epy6Gl8~p{=Ze}^B}NKDSaMK_unZw z_CmXte;*SW#LxLpE1!ga;t$M!=a03(s`|gay_f%ZJJ8R6sQ-+~!zcMq)&GU4{|i48 zd)Hs0^4}X&|1pXUSl$CHy={}-bEvkcE4 z=)am#{b`0ll>W=)S@yr#I$N}v@PEC;^M5e@7oq+$CJ&$Uzsc>65A}c1!HVxW<^PQS z%eNt!0XqH`q5iW>&;OqN38$$)3o-u}!3T@?!?``qzu@(|IA4sSCHQ~!d6@Axwa@vZ z30@!L7~^l61;*dABX|549Vs%%eyKld{H6Ywdh7UG0b8v2Z}jR<@V=o%?FEyMkL!=A z@s6(xu)P)E>jmpi+6D>$Z~S|SOwvc{kH!)y`ME{x2FY_I`J4 z!TFc6Au#_?|5+yK!}-s%Kj9?*k5Kkc0k%r%Gd~#rT8G3g)qgFj5E;ZT@vm?y{%0uu z8es1d{_pqn;y>7bEkgZgOg=t}|8l%{4Nmj`i@>`GV`0XBG5+7;n{h72`5jK=pT#d? z9rr%+(~dY}{Eq+se?7?G;CA!xe(*o#q{iQ$SaANOeV9A{Q2$vb`9tQP#u6#%1KXWG zYk_@T>9Zm@|FoRk`S*&*Ab#op($kOn50mE||2kkl5&j>B6z=~PeIS@@J_^%>4`b{2 zz6ADH#kZ_b|L2>K%s#*WSoEXFBz>g+6R@Qu|0AwgAB11Dcni_z$IXNNpU6qdkJpba z-b7>&Kj*)eI{ixjVd|~p-xk>26#r;1{{{QM#XAWm51-3_rp7zIzXE%(;=4)ZzhM6- zrf2nkiw_i;qz~sm&;Eqd_}}y$PM;=teT?Yy6Ms&&+kd70TPu;1{}vx9GCY5vZ)g|T ze^}f?@wWoDSn+@4`9IkIEk^xkOddY*e;dVz`oFlh@cq1<@_$DE=i89X0A2qV_Y#?& z|2_K?PV#?urB6R#FH-tk8LU6rkGcLoUu1;+;n)Ag=P3S5fgP*(zfu0r*neA$`p=j= ze2JdrcrW~K#(eP%oTxvBf8nh--^ckp&NYsIga1PQ2B(YnN#L(?H1RKc)ph*Yhk^00 z5SiieH`s)e^no9oJ~hCuRQieB}OwZ+pdu`oH8DvG?~63iV&U35oap{%gsBB9ruy{!74? z@{e-77xphX2Pbk8zDGJ*g8QYGJcJXuV97$KTfO{Z@{if$;Q6|69^SFxh-+{NZQEcLuN*DZa1j zHvVivaQx2~nZfaw>6h4#v3L4h3hW@!=Z}(L|DD8t#Y9e+{O$gaQ4b7L9TUzdy&Ocr0_eLLR66d&sUlG%!{v*qLao$z^$Y6CWH zgLl8vl35~)?kl7FPupos;&03^=kIyI)GGcP_2=5r^*)WatDV$*N77^&WdEl*xMZ^d zG!*Zc(~kdoVDAwA1`VT~&8vLZTbJA-m`pzFaNtLiM?@z1{mWeYDbFF!mV$UG?q^!M7tU>f`wHhfQB=Dtt5iQf$q&e>&JVbkaLLDx ztEj>C_Vd_Go(qj1`%~w+_eF*m_q;kw&okKR`0)(mk{^UWzOoMU>>I&k@pt zdGpM~m*d|9SkyUt6ct@oc%Ch7D40w>jtk5w6Vr|lg<CH2RHF0j{m(v6HFfK)XwMS9WAAvYmcy_$*Z7ra19M z8S|6OKRgmqoR}VcZrEz~1B@z#feAap3=o^Y%=b`vchxtQ+^4(0!i!bJ0dm z*gnbhDTuGo^L|U`2qtVVXV0WgFRf5~xG=gDwb~v<8+~W_OrN5@|AymCd5{9l^ZQDX zMR7*=_nUFDD3Fl7h#zM!YW~vum_91nxR<)`K4;vN9jaa}#r?o6!=GRD`6e{n#EUp~ zyr`K=abL1MiZ*`5&M)id(C3;geM~Sx9-haTGmhsuU|wUIsA!Wo|2!6r1M~P5k>$_h z1Z7yrPRv`!|28n6DE@Op^T@KM=g|j(rMRN~UW{kk)}8ux=+yc|HIaz-UB&w)us{(zut@T*;7m-DN zrsrd{-HD%$014t=k{vW9{Q@Q{y*N7emhje%*-G*QuJ+gl#vU-Nl+`hM<`zE0yLic@wr5n04f z&vC*(gi1Jw{}5$oOJGp1?NPMZRq5x08K3yp8&6Z$ESC6G{lJw2SLaR5<9V~J12CxD zj_+qLKQs&7ue}U)fH6THn;%Slbv&iOT+B34(dPT*&kwEJvc|djVOejHMf|GH8aIPCw%o#>N1^8=m)$CuAP>(Y^rOx`tpArGh8@ol`R9>n9GFLIM3z5~5|rT} zJJAz6{-=R?ndzgVEoX<~*s`YM82u+>gLO{@GV!9PaJ;Vr`U_AOnH6Ez?0T(s;>oTk_5jTam6AbTO(+50p2)Ovrb zqw7@X-9)ncPr>i)T#ofW%cgNp*L_SZqmQwd^;y0JUhm`#F4}5tp1Q9lmY!G3vF2bI z9@NT__!*K|OQ)7pFg0!r^Jb;rSK40Aq=d`ZIaI zNw38BgyO@ReL2?Zj_-ZjpRv7aeI=6QgZDlDH$+y5zbW&h-*@BsJ}_S~eN?o=i79^d zc`*g~KNndcelwBC{!bJ?dKiQjA4NN?Nb#%Biz&#Dy#SU){S96BFerS$MZ2y&+H{gn zyd^!*Q?MUuHv)ERRwF9faT~Rt{#)bVb=um^1(V5Vf*gn8Gkc4UZwI_SRPh~U`OLV# z?XRnIE$}~YvUU%VMSiFH=c7#iS`K?x9F6mDIME~2Vl7lV1!oP;%W=baNB@3pXnW%&LtE$-5xYe{Fd`X(G!XZ$Xj0s8=rD&IE=ck#s29 zX-UZ6f)D!p0+B(yu5P%GmrddvapZVWvupc{-8=82>IV9O(0*X;Re}leaNRI5>v)C$ zGe+@rO4SYZId&$poW__7=J4Wbq{t$ES2yGXaml}!KaPJQFsdKf`G!#4kPpQ5_@)b% z_*~sc-p_Tz%vHx%1p(vwU2ZC_*NH6RcX3UACK9p}es$ygF)&{% z{;8q3PR5D!SL@K)F9qwzRq}op*BC>`_XBEEk?`%dNh+>VaqS``Fptf)7t6Bi|7MbJ zP-opdOQg6sM?A4UD>j9U9h5%*OzD$~^St_OE3!iV;QnaER*D}rbH#p&|Ctnjpg+nQ z{}l~ImS4YIf0Rr%(3vc5i0umm2RCf0y@U%2)N#^dT&N1=jy7 zTCw=3X!q0e*GFGtzdo)wPGpgvbNeCs9B$JKIeygY72Op7gQ5DUSlJG3Kl%xl;oI-( zs_)-o#g8@niZg_Nk7HFog8Ots*K=0D}FAJ+UUu2X!g zE#F$?LGxUGbA4Z8t_?Q5dVSIgBv_Uy9lZc!!hF{05Nh(v${nHKw>ZJOvJFlY^p%ZpUdpuf_mlh$ zZXWlQ*t1``yW=a`yPvx5w=Q?Sc|OFT>-E9PT|^d*cXHiN{0rGj7U{s-CSpKxBmc?f5WC~yfgNJSGEvLm`~|x?8W#xKGgh` z9Ti`ny7`-INc$VLiDiZS&3&4QF~{E-m{S%11KIvomxKIq?k+OOe%ik(?O1~ORnopg zN&C`{Zi>-(pQ89r2lhPS-)CsyyteWz!DRBOytcBh;zP|}d9~uJwR~p(%6zV;Ury2{ zc=z9~yh3E@e5OHUFXplH_aIv$(K%*$stiL8wArvBXc+VP|2uY`Z?QPha;_Q6|*!LCR zPwF|IH)wvT3x@$4kkicJ*}qO?l0Hct@a-p*ttW3PeLey9JNrlMH|^Kk=2zqYpdYPW zx}K~T89DsziZKkhuA%wAQ2akf(W<{F{{Q;*By@l5D!iRBInSR+9Zc*eejEJ2(RlnS z{Hr#Dto?+4{~}di()Y_MiF~C-kHf0%M3$;Af-?N&@D<{3)!jI2abmu&!WgVVT&#Km z=Xj?}z5HVAU$wQe|8IER&QTTZe_l>~6a6{a;_aT@O+-e{d?@bH)|-Fj$fd>b0cy^& zLvVk|$v7);kJ=)fn>jr)e_3%c@V@{*3V6(;rP%*ohV?a4O7#C|`wlp(s^k9~@3X`n zTP#trqoUHm8W2%YK?GDR5fY6h8e{Ket+AJAerh!KF1`2OyHweQWtYW*1u=-xi1PoQ zxo6JIdH39Xclo>L^SSb#`)0l~-#?+4$MG2dB_jk$-97_bhHkEXKTa)Bj$>?s@{H$%2e@DJ%;dcEy+hsb2( zDgJL&cn?7K9}4eY#eZnME%qUy-{=1c(dqH8Wi2H6k2&r9N3QpJUD@+-fPbwg#Q)2p zBZZIkj=47|gpW1G;bU*ptDoRE{8Ntg77H%Rgz^0K)vRj{Z!l!XDZIyPU0;po>;Wl@2wt#7kLM=Jm9JYmiWf4ah71ldZ#KlD14 z?-~2KUgaW_ji>S*wZr*agLTlsMe(8kR{0)WZ;bQWi6r4Y-oF%`sra*~#WeM;7v}q` z>v3UyHosBu8tThy=poJb*4OtS{#Oehy@A;qb=i&>t@F<2aY zyr7R{oh9sPV&+Mowz#_Bx&+rvxE{g~W~?jED!Xw0-}?h)*T21W zC3t^R@3%#!1g^|Gvz}p(?)bnSqBrWX9q|#uPVzk3OSt&BnC?*EdnrH^#s3;rbW;j(XJlI9yo&%$n01^Sn1|<}Wcy@R6)5KM5aw z_JB=?IOO=KbwzxH)|FCx>@PY4^BX5(c3t63E8tDun7YIBsZS$3Zz*;)?ylCAjD2gL zCL&V;*IQRi&2zZNLWer{(r8PiS2!WzVgmvxGggu9!WOvj=my&y!+L(=&?f39T!o?0Hml zmavEBwb{Qpd(0a2y0WKlkv*Y#UCN$+i_XCOl2xI2USrL3cA@|8(_idrwu?8f)qPaa zX3^&Op;1hxKD|Vy1g<}?vEDjd)apJH6>ggx^Sa2R)Vv-mIw?N>yjIe7UZW;Bd!|8l zp|a`Rt?>eFXYKI$Tdz{q%96XfoA?~}Y zvS&ZY9wzp*8l}DmGUNV>z6Xm;EqFAS&Ay=T0SXWA|M$h-$&R?yHx|$I&Hnd5X82%c zv0oSawicaa&zB+p6GXD7g|Y{=y6+ju-|*kK^?CO5qvm~}Fpr5}sxJ4%euH&{_~=s1 ze|v?07G%#?_^&JeGxkY+&k>ng@Pz-a3aZC zA^sE51e5sxv$E$}$lf9L9NjjXe``XT|64={;jgywH=po1@su82&uHJivwaVd@NZQ3 z_dpi)&5ro!N_D=PmH!WlOg0{wN$=P7-GJAx#f5dXFZ#Q_6L1ZRqJGVAVgA+UAb;;u z{=Ne24;*5A48Nbm_h)duNP=I?pm%>pU+e`~7xC~_fOiW;cD$+V=m*)6%8pySbJYO4 z6%{dN-_#0%Fc%+_vQ+O})oqr;i)J4wCox3j|E z7qSf%{)4LCY-q^0lY4RKcc94Bf=8Ke;$YS^=P%Bj`<{cc_n!X=ra8~)cRenwf&Ko8>yNm)A|}`an0<-a3-v`k>TCXA`zY$t)7koqJRm-r zDL&2wzN+`f?-!_do*&6f)bp?(>OboU$HRQuM8zMzxp<)d_d~t5BR>8rFaG@TB%g2e z?JQFZp2Qyh5OFFpTI|5*p&tGc7CZ){KqU)A4!PeS%3h2PoM0ki+DWj@r($Md4I7JHgF zdoT}Nd|rcWUuDmbB73-Bt4n;|7oF7audwT5+s-F8Ir)6^^~~6nb?ea4ymf3#H1UM} zgtN=+kH&~yzrQBJsscXOf~SmqS-;^TlLwd9RkL0VQMeQFe7?ec%i>N0?!wf1mF*GN z2c0+Q+gUf+S5qr5WCZatL)o_kI#!8&ZFY(FHqUbVtL<4Kx@whgRurdY%AVEGu};}@ zsTZfg|Ey z!{Bhd`s0kge`^O9x4qEIli>cZKk6pS?fQ(7vni;7bpIh zthYbtkNpJ89dYn&1-WCX?OR%IV*e*b5b zec$DXleH=przb>Lt$ejAiqoUYp68+Cb+M=2sa~9d`}qDi|7V#zxGqjOA8~QQn$mxY z!o9OjaT1S0aq2I+YmHN)C5clRWROQDhx_-z1zY=rrvd1324LN+??HJ2T*uE$;A2kN z5x4s?N1j+#QhBmKbP*p_q5VRaZurJ;-bT@Wv;RD0&vNMal+B6alTL^lm}h+7JAXhy z_ZR)qx3f$RTw`{Ei~WS-;Y;ZFQQ_WTam_wzQSJLE?Gcwy&%W z|G_eOa9x}_C|s;>1F+6H+@AU4@dr4RAg#8E0?In^Mw6L=gCmfRcpNTIYSxlgT=n?wHqLdd>Mc_X8QmB_YlYjXPI)SfhVt}t(OqkvCR)e{;str??E4mc{z}<5 zI!B&ZtH@tnpEroETKSSw0ou=)Il}e~+yXjw6ni@C;KeEUy~+c(5t%%=949kB9qz8s zaiGF&U#B>UM}asE+*fqh8mFRj4zq?h`=EDVD`nrH9C6Ax=NQ;TbkX}T%R~FRGdkns zP_6t4w#lD?IAd^j9f#+r)po?EZGm5S!?63_;P*WbY%4PP@J+;$LHH*qeAN7b{70Ps zoOYbWH~ZiDweNq6Jfz6!{lq}*1z0!5t-1tH#_uxBNvuf&yW)bKhO7STaAD7G`h|Wo ztRwaG5Ag$R7oTfj1L~$7@oBvyWFzdPbMO-WByWk3sK*P|aMoGOOVg9j=Tm1dcgU`r zlwCNhANaVn3UNFA9BY?3ch1;{4}3^uO5-LuL%66ljt|txfv+mu#}prnL-`W)$a{Z& z;ESS@?D|-EO-Wm5vI}Pm&aSthV}P>jhiEVJEVrL(9UjW;sGtNIw^ z_i*JmYW_fV?tjMJb;u84)Xxvheb!k^ek9V?NwRC1vTHSTeCHU5&-k)repqWP&pJQ8 z5nW`D>ce%uwonN|_8>kkKYm19u#dAN?s#0(z&z&j4t|4EuN&BoIhh=|WH{j>HyC%& z*3f}{pdE3?>nv{Oc}LhITc*A9)j`;EvTm|Zop+?QBo-L^O#V9i_QCVR*}N$3SY_{@ zEjsT=>q{0}kFSG8S8aUBp=>gb&D?SJG=>h@BgdVZ_;CvTp3Weg1+YvGTo)%ZZyoOM zp`(-V(CMi$v$i<X_Njn+rr&ZG6e0 zEaFs#If!~V5OaJW)*rL>p1B`-nm2KwHrDr`yv4fe_&_f<=x&D^pLwvKC;S05FF$V+ znH+vgo?uOPxc5WHGYa>@y5xy48qAX?M0ag@qK>(fJVD)Y_Mz?!dPCVaqja9AV`e{3 zUKL$*KiOJ*pJk5@_yMg`I-G1jlT2~>x59rHGW`U<%Qp6RL27w_eh}(E%LH&F4yxV{ z8Vs3n3a4?#?~fE&9OQkp=py`YwVw$F`8h)QIT zy0v3s32&OhTL75~!RyMubCB@L$5wv)%vx_{LO8}S!dawnsvz^D!f9Oe{lR=+mi5qC zY>D;e+h?MS@Yi{M5{Ow>1|fe2KZxs6T<1m65Uk5X_Q$oWv!mV~kpCZx|46H7@UI?U~KwpHH?opJx;;GIP#gu`(iyraU| z3o-{QoF=u$)ma>f>tNJt*5${QqzJ_DI=F$t#~x#FbA|tGh}Q%)#cLCh_5JPE-sAO1 zg?BV$+6vy;zxH_LcEFo2gVF!8ObEyEdaS}Z88T-noZ|1>E}k!JafsJWqRZ!%{3Hl@Q4rF>LeE<8lIbR7i#p{J4OL%&Hx1aSQJj_Y1FM}_E%pHPv&X(T#9=s1=@D(Bx zz%gdg{$g-{yzVtz&tmTX0ar&{ZK7zX<;tPf!vpdY>yPvE9@z1i1B%aSRI4?mv@@tUBfc>PLb zeSgimr+EEb;jPEo;NYV8yv;pcxlQzW{h!E$aEk33vNc}6T>?V>{#Wpa;4FdvhF8Sr z9acNv&J)Ks&J87Bjh_TWI6o3eNvqfQ{N|M|{Df!TCa7r{)XZcVJncZ?kUMxR$|B z?5oWlelXU*!B~R_W4#}OzIVv;3|oKylE1erfBz4-FFU;W!h%`{@xDapKCU4zicH8) zmsjw|@%jd2`Y4z!jPlvf{!E!zBo$XSOs9x~GzE{gxKna?XX+`4WKnIbYF9LFo>hr^iznWYM+)O=-&L%c2)T|Tem zCxH;Jn4=EA5;CaWcEo=O&lf^X@w!T62~XFT=BmC_E4(iu^DVxSaB zmBKp_GN&rEuPYOh1KFdVM8}gX?Q=(M9-reZ}7149eH{75-qz zj7k26|HgmHT3=fP*4L3DOL*S;nh;BP!xSEB_RyJvcX3g^a>MEII!$CkI4)l&E1Y?d zsZcnj@)awcCf36@HNxs5d~bbCh$TN4Df}wPtXBBpd?nOWzJ4OIzQ1POQM}eDJk;!= z-wEC&Me8d!oSt9nL?(pecwMV-evG1FyD6L;>uVOT!(!3p^Gbda$i_0*i1l?S*7%{Q zCrG7eDC`*u--m6$g?-Sl6?pICV_e|>mmVgr29wvJVSC{@YPTKnC7J7cGGR2|!}b$d zpKr77NnD5Rqwp}%hc#iiDE@QNeBp-I!#Pr9LO2}PVTUW6mXJA1;gp&$Y;jTsqbrdzO!iDGie2xqK;V(TXuE2J2JqI?RcH0sE zIXqv<>*D!3>_U+xe|3FnDfMO8c?$0m$Xvy6QGBUiUz&#c&0$xFOaRB2MeF;pOBK$w zkah3SKxQbzMe$|+d<}jsV%VD^6T+c< zD+7<);=&p?6m@PW7Nue1alM8M_=8W!g?z5BL4E?u@j42)OB`B!S*i5`l};y?w_Z&W zUF5%4Uz5b5yt*B0yx9w&j~a|MZYcJrdspG=@9fBYFytO!YymmUxnb`hKQG3=ZKJ5s zmXM#GDdzq_{*PDwV@(={nqxO300oyhwBnz|#rn)<@L4&N0rdkfwbMe{Y(?+@QoWI{O1tEpuUXMe~Xp>Rsg7q&Q1 zUxyzix_n;APsgjNrw+dxlCKJcuEfiiG zJU><-ce`$DokqP3!Fv2-e;dF#dcZGAC#WD9?)~Nfs%{%y>#R;)q{+unk z2>(C6p9Y2SyC{5|nGe5A;V+N2r`LT3{9>Mr{pvoK;aG!MmcCc!E5UR316kFC+f(6U z9UFe5;9hyI`kk1J?^hd+y#ULE@l52CL3mdyyxSoAfWo^Y<9A{l&&~rP+VlHf(M3Fe zQ{*>b2>)({{|IFMsqj~LzY|l0s{GJ=V=uruiv2e$lKOd&1pf(zk3GcjHw6Ex^E|$J z`Stco!?71&nJ}KR)6Acj6yCddK2hP_Rf=!tL7MM=qN|v1k}`ak;We1QBd}(TFl+Gt z@GolIh*`MCIy>s^0mZww@*j16IL_DYh_9*+$2;*_@u=fHS9BEfZ&u1wyy2@`FHJnE z89s{t>d!AO3x2$pi%b|#*=h8bD?If4!@p5@rRNuWkdF5n(N!F8@*6P3_ZJHPJH*++ z!{4m=MX1UT&G%2DgK+)zk8VI9T;vw>JYsXmpl;g{Uww{OC-_*{<9P(?H_HTZV4lG- zdF*g@!gE#Uuf9D;olrN-==E#Fo}!EJ{W^h4oA7JqlEX*+AJK^2jN+>+GwTH1iR9rm z6xmc>VTYOA*^%fbzYkKlO(1)k;Qr0eV?G}C`Nfu-Wx{wW{$Q7v^N1Nt&7%?Limuc=GE#sceE99~dqCzd3O{Qe z5vt-*&7%?MlUYYG|7N{Q#T)wwhmW3U#4UnyA#hJ zQh2%QluRry&#}K?UB!Hp-^@4m4-Wrv$ULv`YpE0J>*0O>(Lb|}V*ky0nc^G!2#5b~ z$i6N3*ZT8|kF$Ne*F`3bSHw5=5f1MI$PQ6>rSqFTNay!J(N)Yh`OSP||KRXPLT0kU z&&qE?RetFFo*+61*RK^mIp49LtE-0S>0!N=P^<_6U2degrn;Ih$WC& zsc`bt39^{z_3>ATF2eWg1XeA(eqf*F{QML$Y9DZ2cAcO*s=WF0mB^;@3hPaBheqNX z`Te=VHT8d^_Bgz;4T&ARcu;EgPxM(m*QO6M_qkjmqc+lsDK9vdmk zv#CkU^T=Hwv#-L>%40%ReyBVixtHiD_TQ{m#e9$4UEv=H*&_u12E9&a+;21zp0i9C zPuU5+M;@&3P^?CFRCssi=_e$yb)JnpMsyYPO@14`%djUvKQkOX)CjECre=&lof_FH zvCCOfPY+Cf8!Q*^E_nV|2NvJ3GP|F!w<^+$J-=~w%{q$tH|wPr?=rl$64z{8SjR@8 zcO3N(T=z%O=*w|oZ!x+9_`x3B^Z~=M293Zv`%4Y-{~YE2b+F@hr#-&0yXs#vK6gLz zW|0Z|Ta<6uM>xLAAp5AoE4eRl45sHd_7|+HINwMLFyt@x4-Wq+$oxy;XY30SRON@B z-_MB-!u9JE-H<`J*grVjS0M9_;NH|-^)ngwWsQ7OWP&&_k8oa7IK3br}qn}YX zx_Eg#NOTdtU#FTI6vFSX@JB&rio&nX>}Tjk7Y`5hpJh{dh4nVM(Z$<{sWWkqP6e_?vYDbJpQ4#q(7PudLL%Y0kZbXwMFuC$O$m9vdmZkiS?r z9R6y^e5>$l!s}Los{GJ-yjFA+`)}6k6yIMd{2#Dp6$Jm5KlpregRcEVYB(AGUI1=1 z!}!W>!$0;F?Ek1=L)R_}|GrZEJC9Q9$f)0lu44X43NVKMQQIqgyw^19K!yKFnEwP- z`Jwn9)j)I<`)}5tV*W?roPzxy`7>l23;wMaTK~2FM)I1ler1>O56rOsQ8@D()miDk zw-mq5;xxa_jRNeVD#Uohfn#29P!$Qy8>MvcOL!q{Z|9<>n{&aXyQp*}9eg)`96 zgYmxK2xsH}*8_?#@SOi=1FMHq8Q=PGIKGM3ibu`=g`$J}_Ui=Q*g?41KRDb=Aaj-A z-gcp1C%94f=G7G<6U2degoE<~hl73Bs5=zSy*cWHx?#t|zg2V*zF#MhNp}9+r10;7 zjM@j>_HkyNpc`g9yuXWVDzC9#CU?vvzLDSeE8M3b`-1p=`$hh`#f`a#_fL@td=F6gV<0+t3Z@4-@hI}cKPkKRml74uC}fFZt73mAX&){s&AfIC-* z`A$%kABykMzY!gT>#x&vgMh&ut?K{iJ@9-#@%yfx-Z~w;Piyo(A``@cd4#i<@(;cG z=(Y;y!5r(fy75BCdGwK@i}3w*x}`xeb$H}!xSmCvv0jft%@}na3F{s zWa;&Ef3|r&PEFMBxQ*FP;q4BY1`2PK`g~=^{Z(Vozp_jKhb$w%_Eb0rL8h_7sm}g< zrM8$E_4qtObP+z?pUqMU2H_v3@LNFU1i`=mq~gz4vV8jf=rPBNtnV*Y6U}RDh1U); zrz^a19Lqm`j+C zW3ZnXga0=MK9Bo9TsPvnEQ-d$ma*bD+x3h6OK}CZn=jYEhKHT{_<>VHaV4)4{`7po zevoB-zOia?T;cEV-l(ydC&TZ?na=09Ucoud`?$CIXNQ~lV0076;=E||V~{%rkNgqqGP>;+hs@aVozv%Z|v zp-b{H8LFpau<*OMPKONka1L*pt*1#{-Hz< zx@Il*zVCMoV$3=ScRklLyxOWJKCwS>{(TG?)NVWCzjuzdF^@Ct*7Fo|g=OjWuCBG~ z(50Px?r041)Zwjz3~IO?@!w~8^MsG-eLlYznE*}_=a2B3^@1}N0AtA$LW=+XP3?Kg z7Kie5>{g`^{q5-UdV<310GU53yoDaGe2nY!+DT*rIEh_lsLPFT z9gV9yuDx-YocTXoSg*$p!u6oT{ly;;ucs?NF9qJU4kmv1huY)Hj0NL*wdnHWYNQej z!oO1C-vk-daXaEiE)2z$P}6Zmy=Ga$qtD5ib-i=f4(BHu2Ew~l;oT1z)P9FouD%y$ zLqk3;_T&1n$b@i=VT6OYxqN*ZGA}Vq6hE@j;+TGA71nkBePr8tIEyW@dVf9k1<^(L z^f@)>CxH+?a>(Jo1{u_PJK{(GRQx?kPM$W{9^N}5OL(qcCRSovCjKH{9bR9^j9|DZ zezeloOZHcNkES4Z{@e8-e}{^$5I(kW2|nhE!^gruc81_T*0uz%3 z!gqN^QUpSIRju&9gbeDf9r5Ewh4LyvCHvLBVeEfI){krQdY4yUE4=?!WD=?zphWtIt9HqSiZqyTRs*9AfTUjbM|pnB9q2R zVoo?XKX8712AOq&^UQ9l&aJS#7I7@}g5@O~7$@z`68-(K*Z?NFN6@z@KnOd3acHMNC#9ltYV zj#M~Tm*!Or_jw(^m*`TwCNH-TW<4B-d>w~5GY<1}95^0_IFCb44e#RYsJ91(XH#FD z|IP6Hcn23h`(Y}s*4=bm$D@9-EY*QeF{L}6-MvSWXW%dWfcQ8^@o^n&ztf?_&wUc@ zYMzzkRn6=1w~7vuTOIVDwtR$tlfu6jvQG;B^DU#_5#Zja@+H7(OH{4P1&A*DSO_A>_9drieK2N*q-Kf&)2@9vo?FM zBqaRwQubi)Fdp^Tj`)SLVtZQG-JbEHvo?F0vpr*!JvdVsulo8I))d);Z)oOSM(%hm z5S_Kz(}L|$`+)K2|HrRpdZPGW7Z%xrJHzU1&&Q&(HhZwFCh=OS_*ny4)Kfd+f6XYe zr}-w>^Iy?fn?0@Ao^QpT2|Hrl+ndda;ul+6d&-~_^Kd+Je?0PSJYqZ^ypD%2;~_sD zYh`^7`u$V0{9}`fq*eBxSOTGSeJ(J%XHTIkJX2NcYkNxrdaOYY4;=9o<^txo< z7(DNsaEQoc;3Y+x@eWjYjUjui!mF`(<{Z%M%LB_Tdr-VDpU_%#(LTq#&*UbVk+S|` zqHw*R&;~M6=i--6x98cW?@99}eyDmg0rj7CkpHG%a=7hJv2R6_lf<{G{}Vbx7WLYW z_@(DnpPTVJ0Ta#^nJ}I+Gl?&1yYu%V$X>y4QT)<^%s#W&14Fmh2TizCbh&-4mNKt5 z`Gx(3!^fGzgj)pv-^bW}E%%vPo)2+~ac>kIglq1Pb#h&aZoL81NI zEWEA)*B7`(;_8jP8`i6db8xN2wIPZo?TQQYbRyQWUviND*e^N%-v|C6hY-Kq(4GhK z_e?4KO?W-N`-yB|9qD|gJMFZ21wS3`aL7(jxYw(73-RSQ;5 zZzI>3{6=m$+)p6$jl%tt%I~c8I?HeD1z1-GeiOn+UOW8nki(lP{24{~f$ebDEc~BE z7scP}lRBMf+Qj4(!1Dj2*fDWS$nGe1yxQFMDRw;xeXe2Rwjz^-$AL0_PyDsQ!~C7t zK;d0u@l2gG=PXU+^vWfibHP6kn27xj>muIGIh`*=>$d3ynfHkYL8h_7=l4O)x*g!n z`JwV{Vk6N({(E&YF_t07e@qmI-vY921^=~!RoycFhx)QC|Bn}4S$3FS%nY&vy|A<6 zWXPhP+7Z9@RIwd_1kAFdljzE_qp1ZVJFri2cAN`Y)KzE4|BCGh^kG?c^blQHc9`DF z46@@wWyj@^y+8RI{u{r}_f2zNHV*V(S$13_y0YwOZlN}o;k7t7F>_=B=H&#`pb4nM z6RyLBT$zA9W_=Fg0r)N+55pE!_g|k=6pv8fm&F6#3t(NugLi(>^*r3$V^6OT5Ab02 z?-QShqIswzA3h#M3y~*_Vq7DmXb#rSxzq5sox^NQyaDq6g#04B2J7L6qacs{*&L9-;S;5IJ?87-vChY*s--%ssZB@)uVEty589YteU36yi zl&s{&9@7&zd-lWgBb7Zj6x$P6$4l9BnCQ&5Ct1iAA5^QR}20-?LvJz zqbfhtIyUJqq9f#g@%Nfex=i6;57|2u{^K6s{BvyHIx*=MkqP4|J5B!IsPM3cPI^q? zP0PbKd64ECdjZxJ;@hlL#P@>=A2ol{OM?IIQQ3Sqk#^4a|9R07^1t}|0VknGxcT-P zWZzf#w|aaBKkqW>ZIKD%74iLs!b8oUG(+JH%ELE#kmh@+=nC;|R$x;n&3v8&&Zl(4 z)ect+T=(L-7MIC)RLPH7MTD>-ffAZBn_@9>2F&cD%E`4|39C(GlX` z`<^e8?+X+@_63u$zq2ELPk+93L&M{Jn0I z){CxCyiq!m`Sl-#|5FrA-b(P_-!hx;tnXEuTo4^0|BJsLXY#KEfAV&a#XjAR`2DlI z`Ni8}Z$3}nNo2x!KHrnEr{MgWycc8-X1FMR|FJxLlLx8!HTeM172?}eaFgGY8z}t4 z@w}zNUzg3d{YgZ6v94Q_F>zT($p7N+otS)-!ao+WnCEuH9~|%T9sK;rUP8h>z0o_G_3>3IK9bcN!LWiyF4 ze0BI&K;{O8U;I6lYQJHBqK#hc#T)%U>j?2*{Q2$4s{fvRD`c^j+Y$FV)QdMC@B8!X zE|Cf2sd$_GzFqnIcRc?G!$ol~eeRLDKO+y)d_O6=LVTNPMDfP{#PR(cWL{VJGqdNH z{mCGDvB&qzq9f#gtD^nz?HyE9a+Sg#n$35sjQ!cErm=K8ZhgW_zY=4jnr> zgW^7KWXHdCM*OF2D>_1a9IfMz^~S`M@hAU`=jyzm&sUZY)o)GNU0xH`@AGZ)hV@U` z53-HKzrGFg@J$w{_@09Q!@5FzV;fHVn%s5xXo{wwKer?9`(!r1M`!ViK(Y?<-@SjI z^r=l$gKzTN?Ef8pTRcCF;iI_kQvdx!z7bjH)s&M(CIinAPI&DU-kFd+U-0_vTJ-*5 zu)j|{Fob({oGZGBZ}6~gRCEOWR}DV-f3d>< z8)R=$_|ts8xxx4Fu)koL3_PE2^mWePJ0bg!;Po%$;@dU&o*fT}t{~sYW%3vM5r_Xc zWS&>}SJlF|YVbYWXGMqa|H=4;EB^qC@Sj%r|Ay?_foZn*={!GX& zRQNx7d~%D*Tsg;X5n8 z*NTpy|LOpX^7|`=|3ef_-Av)H_V^B-Urj+xWtj{-pKt6VIKQTD3EBMxZ_t6c_;v?a zdR|XO@5s7>e4`KESO#t|pQnKHX}xjbtZ>>BxGHer9BtYt{0;dq1vxm?>@#5N6!7y) z4a2w5>-;|i&taDx@u0_QiMKky^87whbOiZV2UvuUGX;l_P5RU}3?IdVmU!_Fo?lJH z{(@yP@Vt0W#YV;9wTEnH!5h3&u6VlxEYI(bqAM709AJ^Z*pE2;vmw({;onvZ-|7I% z!@W>+1pQYBScHF`!v8a5)%yX1CwqJc&#$Ipf59>tcs}2kDZJ|;dzbi&QnHJAwlU+r zP`i@511!()+eKH9@8*_o>_;5m_dy2p%Z_-+<+bpw4zN7jM?^=^e|3OGeE(hHKLgob z3?Icq26}u4&#$Ipf59>tc*1uXUW@#mia9kEeoqDWQxWf}AbRRQ9d5lnAb)}5`0fu} ztYLP<_-*Dq@pcDT9`D0NS1{h#_Y*#Rb@<~UGmGJ)c<4E`#9JL;dAQR=N05JYfJOL| z75;~iRqqE3ea(w^@ce4(Vv)(flX#o;dx64Rf#;tqf0yOr+Z|weet#;uf_%5Md}Dv& z`2HF){}cRSC)L8YI>7R9zY`rn|J4E3M(nMot`mHODw_6dh5uyYKmQ+l9uPdonzp&f zX5f0fPs6^1{hqcxWcOf{C>}N=7w_&MOZz`JiqT1T|vGvkH}x-uER&opCj z5BF)&LH@h@zw9nY9b^$c_9+hkUyyx6{2zIqy>BMD{|OYrbC*nJhdeobX;! zc<(}Xpu+p7#WVY~s`Py-o(C|+v!kErBEH>y$xbTa8~u;-cNkcM<` zbEEIsVR}icE6jJ3gzpN4{|RKiVfZK>^>uB0OQY}MqAz6~7zck|sy-t^k!d>Gl1kT93_m&HwbhMTeJvo?K%BA^bfR z{=txKrtt5x`Im8jr>8RGzQyTBiOy_$nutA(ls&B>+g{o8b+JAE{hPV$X)8Lj?MV(l zh#%}JI6tSK23b|_$6ioukAGihE_=F)&TM;nYhN_a%R=v1LETb#m7^y{RM{?kMsM!;C^&E_7^OZ;V+kugn!(p;PT;R$iAoW zYVZ3z2F+ULts{6pfpvNNBPV6!kNt?l?*p0PfA6o$x(Q;o(eS`VxgV+v1u1QTjfS#Ph@hDjl93 z3q=?4&G+%L6ksU7upe=JFM|yFb35V*%>(bNvb@mk^Iao4$ba6CS~>giI)WhlDuw?g zWHHz5h$ocU`EL2<2HW!!`wN!I!ehn>Z;itHUlh$ijdXaU)cRufqyFbIeGiE7L{i%` zBNm8O>{QJ!VR)DU5RUtdz3?2h+Kw2X-=kej zNj_CyFav!v>j>pNeL&O#5dOXjALoiQS}}YSPrO#;eY!6YCe1w%h=a#JN*n9SvLo3Y zB>6uBTNlT}agaS#*->6(M`(L+ihN+yv*RSuMRxf6)>GWaxd2CeU?1V^=m^|4bJo(i5lmx#_#9LRqQN&f#)+4EP( z-lFW``&ZKYR%?XyOXnl%ChH*lqID?YAHl~U{A(3H-v6KRh~Q5?R;>$x&n4M}bRiA$ z@u29;wkOF5S`h4$i8{TP-V|V$j);t#8d7rwkNc2 zE@2P$0<1IJ9@#g~n6B(u1lg6!o-c~*3GSOq*i$Jw$sXB9;l`iz=b>h(bATDxQ_NT^ z_Duai?V~dK@EO<(uuK?_tGb=PtCj!QLtvZEBcA$+TE|2CDDi-%uD6c;B)W?BQHc~# zC_k~6;QXA4o?+&W3?IeQItKSq7FGG7)~}h{ijI)~a>|t8&-}H*-xad^DE#L-x>n!A#Cv8#<$pUo@8nS9=|^YBTTZ!({60-|g!ostvrxXxJVoK7 z=bwq*-Hv!V|DLqjH*aVdyq{%ecaaI>6~+5(g$M3uUd3=xJbg@_c)QzK{CHm>xbFA^+9wBnkeF3jZF+s{O%?zj^a3ct6QZ)PI%< z;}!9Zymspe>i^7tDSzM3!?(Mg#P|C-(G}v`R5;@MS%v=!WZoD2nZL>ATis6LzLif45R_Ja=9@u=5vypPK|!u(4GBmb)v{#TI2***I|>t!$A;rjI-k;%eycAEA3 zYlZh?6wTU#;o$Gme0*~S(|pg0MOT>b)9;i=&WSxYCz-J)ARAo6~yzq ziRcRR-IVfs){zPy@5RpQCjQQ8S{vU|K|I_xq9g3TR1mYi7`|trX3n|**YVh=V81wH zHLeQeBK8tyKV|lC^)V>kz;yhd2ODtKWJf&bE-&7}`Zen!k;(Gci#Pmqc$Y!;I);nl zIm7eCn=6>d``<)YINr^Yc!O()e=}t67yP;V*A{Q7U>@#WqJzHgquhQkLWj<$p4+3{ z$)|K_+N0Ci9nCjJ_h{d}TMv96nEM0?@qfFr=V9nVov|aHJ0UvQJg)6~qh~!KGP&_> zKnVX)g^%|TX1&YsQ9So2i$4wf#kr~X;Y)bve_z-v)NR&H_g_|)=85ckRoT}YI!1|o z^KOoCx(I&e!M;4av)`&7%^D&)bLw#gitHPx>>CeVW&uw|Ja3^FzhHfuHAQ4{u`iib#qd%5;SQS^KU=`OJjZ&(x^u>lzISgHY;^POW9ax++4pdr;^zvSXV)6h znUguls+eGU_!**GuZ{F!|Oo}b|m!6kxvyk2&alSfoWuM^;@DfGXdGfX{6uGG=7Sm7TTTa;V=jOU z`qr^$;oslmGr0Reeqg4U`vdWVxHx_wKU?+t^S}4L=H|DS!0 zGcR7yY!ma>7I-gCSBmbO`P+>6LH;`X(7Vl6^?pI`I^~bs0C;wx{KkLpJzvjfx ztI9sq|JkbkFC1H^__eVC_?Kh*!(s{Swfofp60=PhQV{ubk|7WBA&&FD0N4)6VO^l!YM1;pvh3L*1zZM(I@ZFIOaBTzGAMtN@TVTK z`8E~r9B$6ZB9j|m&3`kWT>Mb~=kyeQmfXIH@w1;4@#1%Z=*}6xR>TkHyt5DY{LQ&R z*|)w<@pGRf@$9-mfe!=r(oRK)0 z-1s_vw<~FRg{*_mr~l-_X%Z>|1(4ZShO%<6FbL z_`NMUbMoi)-*ZquT>MZ^=BWL_(qUfwg8la#)PI)Ajj!XU>i-srGk(;6&zYw9!I}S@RbpTHU+WaVVE;X*Qgr6z&+EVER4DsaO;LEV^^%Pg7&xTyVkjYc9^}=QdLI-Cd{r3HIM}4;Gy{<0t*Mu@CzSXI~RMSNnsC zWnTUS``@{!|16UmpYzAyH&ghi|8qMFKg)i*iSY~czjIF)-8th&{qNjUm3?PJ$0f?X zr|T5IVE;S!BGH+XKd=9tdx5g=3g}Y%gJo;H_yzmlxv2jvlN(>h?@EP_`aky};b-}w zn;5@9|2y|S(Va7X)c?*cQ}#U$9jg8=f1^(E3--Tr|4(%0RRwg&Tj^7sw{|Efm!Bz^t<0i&0(ErYhMR(5lQU7bwiTRng9d!Io**CRL z@eB69^L7)RIr;PYU-O$F&c6MiOYIM;4)o#|?0@HBhO$gPu2gbrFF`m zVE;W2^`CW8{FW5IuPc3E=k{Ijp0T_IPWD}(>_h#Zr|N%o%ji(Ukv&%nevWM(>OafW z1>d9);iFbLeo+7Csr&b;ueJE&@c#0w?DxMjJtXU4zgn;6-7gqqZ$&P?C{@Vbdz8IT zLf6YKi{k1v(LuzQc|Sa79Eb;P-}9m~Kc7iUPWJs%+4lx?^%474cJkuMA6N1Dc~@lW zg74z_mcqx}n>R_}KfLMjv@JO)^Wr&1F!IL}3l#?OHB#9-9l9`Q?TBl(sB1iv7TvQC z=j^OAKc7j9PWH`J_AQ65&)B>uuDMjj6Q4ig12PXEpEqEcy5PHbu2A@2;kTu>SNN}Q zdOU55Ov*fazZZ=B@obvtDT6HDzx@#N{=+?RVLkcqVq9HuAs0Wy`B{Aqir0GK>%*Oa zNq5K)YP@RSy5>{TvTJ@m#QuYI=8tF6vK#vhFTCD+)ENWgRd@UO#0PdBKK2(Z zQx|;BCleco-wL`;brFeIjokEnvMoC)^X$ca0F048pPD6l3}476XKzP5zfkP`xOH9Q znY8epedmbI{Cp-YJjD~a?dlEU%2V< zv@LuR2UQKf0arT6%JN_6JuGim85o;YK0 z_Pq#QZ?kz({7HX5o_wI@;lC;}b-{P>#2V@FKY*@T3jeE3kEd;^NttIa`hUjAAI}zv zo-)Y(gzHmWOYr-KSWj@zRy6-N`2E9caA9v-pM&Csy5jiy5O!2K#Q4*{)HR=y7T@Ei zTy*A-XVT)6ec;8}hx`9NT&wJx;pY<{@Ok*Szlvq*g75MPv2pmQjq|q<{Li-7^n9`{ zJ}J}oV!P!q^5;{_M2}e?kWXyy{B58MpTDys{_MWG#xrU8J^OYMo%#7pT7DBxliSX| zeewJ-HZO`ltMTK>2W}qzfg)2Ee2%A?Uk?8$=xQVQtM}dXc-oeqlzH|ZBN+MPiG=`z z_`*YHZ+qzKMt?H@iC4c=*LWr^xMyD{(Mk3#&+aF?b?I=5d-I#^J6+j#9(1Ymfz=x# zI;EigJLC85=cE5;nSA&rlF1-`RR2H!3h27U{t^6q-rC}u`_Jd+>A#(a*yZ_s_x$Tc zH=W;9m*C0Bn|#MQ?&5bRoli_3Yhptt^-UeB{*pwa$)udqDGRri#yM;C}Dm;xD^wO8!V^@A0%wbmz$* z)0UEb;KAh&YV(3^m3`Cm=Z|~y+vrvKvjF=M)|n@M?#*v&--1}|TY%cU0R6cg@mB}< z`NIcp9{z43lMi3z59a@ZofST6^Mb|M=XOE|gMR%U~nU0y_*HhW|SLjgncTG+H__;T~jb0tUn?z?G z{@k12Mo$^m6s+GS$ILu1b8!LeT>wrOAg=X2h@a~fKdAo;dO6hi>*M|W37w}cK>cT# zeEzHaDTC}V+$;4et}k%k)Ij{ZH}2!U6rXDufX}eDb+!Z_EWlaHLaY~azJ=`WxT+wJ z`8g9hXC4W8*~svP^f90gW%M%l4t2);I?-gUmA{fUbuW{;L+>^#Akn^#97kL;ZDfA##9qQ~s>T?*FY8%AbW;zZbrN z3wg8!P)#msfqErJtE9F_-WRS9C3HN>-<6eXPx=< z$O#152VPu$zXn}u|FP~yKYv2!feYUjnY{SU4>P|I8;6hjzi^z3NW8B9rsWTxKzQrV zNYR}yf0FNWG5O={L;YW<>i@Tg)g^v%0^!+(`p-J^@h2w`6hGv$vk&!up{oDiKIq4f zZ@}~LQU6&cFTNK)%qNGB`oHjdiQl&qHZ6X90^r%XPITvsU-JDhX3jhNP%jp#`oI3z zy2MXT0JL3;uwP)E`S_C)029AO=sDQFMX3My%qfp}{d0c&Lg#;rQ2$vbFTReSSpywD zR-;927(R;EFW9vB@d<#()8V2!U;OZWFJ+Ly`nl)=T&Q!4-o=IWYSDeTs&FCq>vK?i zRQ+Fs`oBok|L@MIOa90SgvSf&KkLjFKRJOQ`@oBfAL{=iRsX+x*Uz8O`Qswgf0oIM z@8u6-V_6>%PNn+pkSJx$e(t&$+jS-#s_>&Ht;x|&+Hyygv{^0u=Ui_Mc z&i@vn{1^r)ZRHy z;kq5ymAIzi8i?x++*7@yi|H@=fZ|gn{49p{#j5`QaJS7LwVz&$dd{z@b3AhG;o?xzs0Eki&g#qp~BCf(D~nD)PI)AXRmak2H(WS;iLX9ZtOx3|L?b(HvjnqKs>}RWe(QLjAUc!pox``hb?DKdW0xlQPtt1>Psb`d zPKFHXwjJ??W%hgLOrM?cz1NFR7nu-_nbU-Gs>10C8PsRS`6;$I=KDfdNk5&k7`?L@ z9{;G*tc&p1c~Z&iO+Iv2_!r~(RrDwGpZKRsqwUOtO#3yj*bA_1`t?ZPTS5AN5ubV_BgyVR)f??+$!rpTuGPI^d0Wv~T)Ejs`g>h7|w@EklZ zMogC+h^v6duw%)Y?CLN3ukq7ha9o$*?x!Vk|6d{E-*K#E9pv83Sf=B;X_ z_y4m@2#4p(lHV(w(;#y;!$gH&eO`LLaL;6t1dWvk?-=y~;ygw+s%OP_O!$pP7#(2E)v7_%7?ge0(5RT*ZFAC>I$doCZ zk4y8)y^N9ac)e3}rFlhhHm^6l-lp&$z;o12I|}isS-ht2+gSi9G6FL0QUojSBQsuapmJkpVxOqCgi7!D|~V|{U9?^ z;Z&85EB6>i%8TnT(Up#CD*_=u!K=d`2N~3EI|_w%S#eEz2oGcxa1y;$m5??*UW_~;C!cfQqY_Cqz{emk-7 zP!jU+JBTjA|Bvq%*=u-2FX-^k!gJJaI|^I2h_bOm^&EF?d# zRrq&62DRIc!d6W)d8LNe!^7thSvKG=wU2~%x59e_GXG$>sIb+WKCj&HdN@ytOb~~8 zeN5pz2blp1XI2hgRm1DyzaqK zwwo_QfjiE@6@GnGW?ZS^_WT_!vH`xSeI-2jp1$b?4FpQr| zahAZmE=A2;x*Nksg>4Sa)NO85HvK8HN8cWKcWpC~V&#lUHhZJ-jzXHsCL{k7j*X3cRK8c`5i^T8V26uGgZd zd~1fSzkkVJV7WXR1?+_mudw|;{J3(%?fE%gWP*O$b#N)><JYWO|8uSGV%H?_;;@0SYizu=A0qNuRLlYU&e;rDPh zhz$MSncr6>4XV{ic!(|gSB{!rjyh*YVTYkP_*IR*wxb+-0oE1Z_h^G*@XdU2_`Bly zJ`5ifcHA?QU-HAl+e>8A{5GXGx(RQ0g@^nsKV0EG=J6Z+JX?7~kqP41^|1UPh0_=^ zm`8RLb{tfi*TmvONyPILnaR4+yfy_Acr8P&A&(ZLzAU~J7v@koD!Z|%9RAn$AfAEe z;@TOw=Q-5EZ+@ELqa>R;t1>)-ZezOicUT=rY{R|%!cG@MA*HqtMevilo{B?bQ z`CSSRdx!F;72bnBuc5xb9P2#G1aX+xM->igemQE49fh6xas1OB?czhVc4 zwzzKYp}xOjUy%voSY9iBr*IB|46P7^RoL~d9K2@q-4#cPt^lv7mPx)= zG*bAjAcNXzM`5?EGI>q)-4*EHSvKHr(s!5PHHc$5a>?Ya!8ZOIt}8BM*!ug|%+HEr zl)q==`5zo!VYl1-xQ6=vit|M#=qJY&eGAXaia$Z-uL|e&9C6L)`z!t;x&m=+X;8>d z@agccgA8i79fjX+o*CCv-(PWy$Oim%eSgJ`3a<<@4>4R+`0dR;uc5xb;sKEf;xMoG zDxAk5^Sr`&B?qq=eSgJ2MOT1V%nZxxKNSAIA%og&M`8EPGI>q){S|MBY{1{7?>G7S zs>1sK&j&JGRM`CnpVv^|UC~cuf;h};Z-p}qG7A*WOF4MW=zA;1iLL;ztqqFVH<)=@ z0d6Z0Uz1A}qjA9|VB-3g;gd$J{?qiTejyot%ub&uDPmaSe(MKh*Q{EYU^y z-|Ckq7{qHQg?}DoP`m9Y?6p3^&J%W;`v-iU68kl;Jw%pXpWOG--h2+Cz4{!)vI`X+ zYWA|fFl!j(fb`A-V`Z`5XjG z5d`7is_^fJ3~D#y@14GniRI}h@;tmpL^ka&9d;!C{$1grt}Oc(!$pO?Kk)8j;^P@V zU!N115RT*ZS%vcoWZqXed|!U({$J~%I-c?I-w|DDUNIRlh}Sn2eqYE86a0Nzr0yGX zsARv+*TEv2_LmMj61)Kl4>fbyB8B(5$15Mt_ zMpqhS z0xRr0t~9Uec*etDzMbew^V*C646n<#R`|Q(Icm2Zg$4&?@tXb|#PYpFHtjDRb`Y=2 zcUO3**~<@SxTw(JDUVk^p7H%^C^8`&=5_f&3J1G{<(MnZuc4)RRmU?verwT{<`tU< z4C1wg!fyi^)J{7J`|X*<4Rzzgx@Q{@iOGqGUV`b{6E8m z;eGivY{D=5FZtU}`FjztE_E1%{r>L7m5+yfUN07zke@EDJrxf2NXu_hIDJaTRUHrc z_}JI6u5?^MA_n;h4tbxs{C3EocH2?d|2J82O@9tz`8^_=_LmMj61=+<-ouc2n&G0t z{&#u2^6`xC*ApTW!g0Jls&M`fGOsC|w@UM>j%R%Qmqk~aS2~_a{CrX2zYQ7GZaWGG zY?Z}p`g0J=dx>n?Upnka@ZM8+gCH}C;iAF;H+sDC@r>`+aFGe&I9`V+obixZrf^;= z&8s?|@$sjNt~9Sn^RuxGufe=r4sMqtzRQtI%ctOiP0QhbeGi&1z;pAZ8n~$4b`%cS zm=)Lb=OC7UDza(5>98e<>ner!HDvzFa8cpFtGu}K@sQ8!w;~h5adG`da4G>&iN4y7 z!hz3NoT_NE2sM4PL-BX~t6oDdrO&Asf6m(Om(=kQ>_dO$^${pS7{u=eWd~}007{Wn21Fg8x+(uj$VpRGuKR zgqPe8!hMH3moa;J$Lq>=OManma5!Bda}mQtg@f;{ z<($T|7zvG``_Re@L>J*FpGR;~^m@Z5qor_O1deDOI=H@==R!SRZ9w(?)hNM$CksrwQt(Z927z+ZP?LM8Sg&fk|HgT9pU8lK_v%8jq*7xot{ z6U1R&UsgEpL1q%eM1_WY-XHq>3}=pNJU#sWqAS2FHJ%&G@EYV#WglFy!}wge8rM=> zvz#6E_JHCFY{&C-;Ldk&g@#KqOjK^%@NICMCu*_Ei(4(G2q=8I~4J^U|4S0JubMTl3#(cz=!SE65c`13M(P2HDJ zi9U;E1OB@E5-PC|VZ0TaMbQfMYm9f;2|lmf_-emaY$-B99Lwv9g2LGWGJ7&iR5tbzi~?^sFo!@Ymg!uws9Ohnl^j zJ;OzX!&~{ha^vawg_+JWK^((t8D0ZkO$=9@iR&m_z+G`0uD>|EdV4^;0@LNsX}~?( z!4(egkt43E@%8-gBDw-`rN)==;kUy-A2O)jb`%bukQvw1eGw~qifn-I_;-q~0Iw|#3h{~@ za`+EG2DRIcLZgwHyr%9;Sb_eIWdr`Y`w~_>r0|}B%!>>c6^=O6=am~@&#&i2CWynl z{!`(+3YiZS&RIElRgJHQ|E}l?@Y>3t5U+13{CNGzZv=9ctmo{r$LdNGGCkp4Z9C1~Rt%qMDx&m=+ZBWS1Duw?AWKg^9C>+^4Gp?!o5>|X8vH^eHeF-bp zD7+sK&zRw&!clwqymG^<{i?#tS;oHqukLGipS$MWYVy9mS^s_%+^VghV`qiiE(g!5 z0ru?KQFH}(KH8udo=x6zoU3-n^ZgY5+nGG4?n|iJM`Y7H%jW{B_7c1mKSQRG;5FXG z`m5fbt2$I(6Vz+-wd!EeTh#G5tA!s&hp)z_;tStGX$?9+0_=;i5v5?Y#NY zG}LcbT_Q3;9FFTB70y+Vxmn?~$Pw3!e!J=h(G`d*GRV%4YZd+-kU{OXqtN8}OkPv{ zcGbNi8}Qfl+f{cfyhkAO4~B~hO}FrQ4fWeqPl`+shk1QW;XDVK*A>o@Ie5+Jx2s+e zT>)OP3%9)DEWzdLJCH%`wxiJW=}cZz{ccrnkq!9k`rWGc72aUT%w{<7y3yw~)bCb} z5Sbv3;k68}LB5)~Q3e01z_E#E)e>Ao9bUaXpmhK^j@S9X{mQ`=njMlOt{MGyRk`R2 z#I>10G5(wVys2qbm^X&=>dUbn4!~J^PxFe}$BGt^9S*tUaE*p6*0Jh^knMnLR_(Ip zujD_tcK-hddSHtkg=UXr=2fcSulinO1MznKe${%xs|HXtYPiGu-p{L0zhAw%$OLih ze68M0;h<($qgFFc^9DKMn$ho9?<%?iacyoe46oHYDg3?h9JS4kLi77Fc}?~E)dz@d zz+czzS2s|2heL)kj1UXWzwvnu_50P0MJ9;DydI%&T0^Ft^$PDlwAdpDuNnPzbsNzY z;1!u}c|Bg?p9&eQA9fU4+>yy^s^6~eB(ed2lYYAluR$D5E}6Wo26i?4uWo?r7K>Vs z|4<&CuKc|exK}&CLW|G+xQ6=u>MKPi=qJY&>kh92)z?GjF2QNJQ;xW1^!wGfi>^Ri zu?w?t1)mQ8KFFXJ*imSCV`f}a{eJbsA{+46_50NiD!iv5^8&*~g_bowuc3aw`u{{G zh{L=-qi|k^%zJ{)7dvH^dS ze&4Kn{T1FQJfEceUFP!|>bI-Mi%bxQc^#v0rbA|x;IuB};5DP)uKrMT1$f1Z2VTqY z8qCXTa9fS|np~=$g9|np|5t8}e}BOBC2ILtXV)+GfZ_@~H(yo*3$@#hLhH*i%u4O^I&tHkX0P70G_h^G*@J$RIK5G8TeHcC}9NjaM-&CK!axalh^DCb}F!!c8 zyaOPE8g577=s6z0@;M3B_pfXyGC>?WZ_Isg4hJ=V<*^I{zrHKYYu4uxR$^wbt~9Um zc?5GWp2KegnGS+~%z0V7razCc@??=!{&wls6*taz>E`YqSlLeDb%M+}f_JPwr^@*K zfR$ZECWynlc2+nSK;}|~b7C#LdKMo_Li${4<;9{)@#>_E0Oe~>g^!xQ@&;06{!=*i ztrV|LzWDxumDh@Fz+ZQsvGQt#cPnJ>5xnELA5MOkfsZr1`yy7}B{D%A=Jj@kgLQW0 zYYOM=9K2?nXRLfebOm^AVo)}g;Wdb>$)S~xM$xLCxbS|@s%E$#U*Ch`3S2i|-i950 z9ctmYVVQAFou{nqC9(m&-FeE&_Y@v#{z}wvI||3QRqN1(hJ2jj$91^K1aUa7Llh2b z{>oVl6BUlXJV#tJ&Qn%S7hQq4HZ>^3>lB5Ln!ghLx*dh%XJ+!6I!{@N{+VS1{<`y& zl?xT#3dnrQa8coeZXU0EoZ|C}{SC_mahTU?g@c;C61AHBI-$1vZFoh_By ziWy;f{YK%V=GUNh+fg_neZP&M8v9i}t3l7jvH^eHdBVz#f>(o@U9&&KMTOsA=JCqM z2_COCJBUmW$JkW{-{IFM-{JZgmx(!eHZiSfglk(oh8;EMI_zKcfyq~c!RtWHA$U%i zOfZGtKapd;WSnQz93{E}acyo82p@hr{8o@@L)hj&h2MXZIbTxe88zskSvJ78JI|;& zM&Y%GOh>_Mqd$MYp&=h<_;Ec=WP&($zSNweaJoR|4+@9BXEbyl6=!b7c}C6oqAS3w zJI^pV<9PiOWKg^9D6}nP@|rr&s6qeEvH^eH{R1_BR(RJy<`#yF3T+?v<_jMu_`KdI zGC>^X^*V)fCuAN{ID>NJYsPs(%>$wCg%xdcn$Kk2ADPQ+i+Yn8dq;zPcdx${Y(A=$K}xnz#ZuD3Manm#g&gU{J8cL znV_E>SNP;`hCybc!kL;Qt{LYUHRD8AAg)+(Y+S*s!=DBj)NVTp?GDSFFRAm4nmHmH z@YkJZ)XY?Piy>3Va8aS%K#x~G&hUAy5Sbtj^NKaz`Bej%H43LZ2d^3D88u&st^lvC z4GQJYX9|BE_O}i`Dx7qDCa0eZ;D5 zoI!I$iL=3FURO27bJR&Y3hg^*#yNGau?j0K%hGwySM)h~UPqI! z=eLT@{%Jk1)?X1tYllYBfBHw!I@H>AFaAH;&H~JiB5T8alfLnpxBv@eVS!+QB)DyC z1_CjXK!OIh#bI#?x@d5BCj_@e0t9z=x5&hOCYel<|Etq=>YVDXp1IGzOh4PpT)1Do zb-wcIy7%Js+qma*7Q+Aht|PQp;P(}<2eSZwFI))iNl}C;X|(tZ{JZPJI{vp5cOQxS z&y~pgp8Q{u<4t5#2=~OGw>aw z4FE462TNL1uNI_yHu*N?dVu01V^dC1{6iwla`C?3z|WMEibKbbag5Ul>1bJP5yU@E z@y~?zLdBnJoaR;awuO(*RO<;(o37$>K;a~X&S-Iwoo z@(KLpy_!1}>t{|Q6hAGGEyDOcwWZ=?%$$m`$6oQSoBDq9#)8LNT{K~y@AuTMiif$t z)Sirs;$8PB#cx^Qd->Q{(hB*FsR#KzwTI%P5T@>=_%G!9oqRGsd9TOaPSOa)Ps?VD zAiuX(`~lGJEBxL1`+oC+-{b8fnlMlKJr3`M-=>VGVw|2@fgAj(7(=FB;JA(U2gM7f ztKSELd$hyFyB$?ZdCSIw=fjbbR;awU1cvyC+wo6;<}AhkIKRA;PwXe}^|+@=8X^B_ zId2if|F`0w2km9TA3WMGZ{CRTco&N%%v0rU+B3@4#d{TA->P`$mg2W;NO<|UNzw}W zjcIb?H|mz--v!MhivLHx-^nNWllOYu2PKVA{Itxr2=eKo{nUB5KgT}tnf6VM_zx;?u$=#Mz^-<{c<6b4dGkWt zi+7=D!ttic8}T{ba>U$B@g|f~-m9ey_IN`@6XvD--c9jFLwlm)eOZd%;q~UUv65EEZxl!J9Qqx+51yNHpN6_N4fCUE z$dmD58pg6|m*Pg>G7bIgwEyCsfWGE=m&gC<4=Qi)TzQ|0^s(1%uXy*Z^2Rb^HgQc~bZzcFXrWZ@oF~QAr~dzc+rF{uK4c@t?!%R~7$j-|x`)G3_PM zgn22yQD+_RO=v$+ycMPRoil!XC~1ZKcH;-yjpKg_%`d_qc|gA3x#PzVl13o@Tk&Uleh1HgO~d?#HDO-L@2QHn0NOg?jp|T>-|8Tk*RL*>D+AdJ9Q|xXJg)RML5{N;wZUy{Nd@Q<&a^u~EE- z{@#{J00^E=P&Xw zeH%xN_u%K}q37D3V;hpl^La~2i{ekd&&H{YfcWUh93NxU^h(A5IrE&s>C@-YrVkKp zz;7B$s4;M|4W6IU|Iz(~C;Pt_ZQ{OoZj!>onKK}qo zE8we{1|+`jr}#%ebAsY$&tVAF&~N1|6K8Yf(B!NpxT!7OG_>0jM^>!S}0PS-+Jf4nnHg&3Mb==64iNCQgQ@)1hd`7OSc5>8spMJUJ zn>m+OwY_Kqe!FvNRof`u0BA6V+biDZL$BTNcChd3E}{u?xLhj~2V;KKK8%UteHNBb zuCfj6^D!6Tv;yV2m7$QYdno<^&>SiJefP-qHFGYl>M+p;;!Vz_nQ}Z>@s7poQxxx4 z&sW~|_2W88G(isgdc5Lb%&)pwIQ#ME@avmz%66~Mzd+Io_`0>BkgwwuA7g&i^@@LF zuCJMMVO7_NHW05n7gjZ1@i69BJ*9YyJYR$7!m92RO^{=JMNCzwucmEOnZMz&DbK2x zao^^6jrIrm3XbasFy>di?r`z`tC!GTa?Yhyy((!1$`ujYaz(6;k1@aMQ^h|!w_G#l z(yBfZZNP8ZJfL_nKXE*a`BfOh?G=x0?v*QVd-(PBd(i|r++My>9E|x@YP~;}KR;7n zdy(x9pO3i!rxoyZTN4Y#IZg2~=2tD}Fr#>E_WLAwHkLUDR#hWfweP_1_s@Zu{s{9F z_7_==X0#OU0c&{s9C98|ty^Yb{mz;&4+h&LO`K+a?Re#Qy_(_;sAr$Uk6=Ti((9)g zT_i2?IXRalD)WBB#~k1B*TQQ`iSiI1@L*=2L-h2ECiFg^yPl*Gia)(iZq^fy-xFHu zF%$lQy?noUVeG|;nKWy{yp-RVCpq2@(C(bXfd7vV+^ZD7Wr6JF1J4&Yt&rcn03g4y zj&l6L(2Q36N%?-~?NiSfDQSe_Pw!LDz?{PI_l5RQ;UBcK?>8@)y*LjPO_-PRdw<0{ z3fhYl@3>O@mW8vIj}s-Wkl$wEylNcYgLr2=hWmEh7!zmwi2DQFlcH!Q=Btf)QF&vn z?EJnA+#4J*KIn`5^3K~QpMmk8(+K&WK9^-;cKlnRy-)ZD@8_2{FQh%6aTb6zVP2}d z;j`mC4DB8^7y*NJ>O_-PR8+F<7FlNudSZ%NPklRY}TNc`0K7Nt3LVlZt zHq~#mC&$N_Jp*I4FCc7z0~)c7u;T)m{+id zzSloFf9%FNeV&Murnr|1cP7UCncexng8Nh{zRLn!=VxY_q!serEWoK>L#Ahr!Hw~2 zCdTZUSkKJ-H}1o6KkM?+D1VsvP2b7oJ`-d9%)Sm4AJ!?q+_j%x+?z-mp>p@mXN|)% z3iLBI+hM-}-p{}oGXv!@6MfsP?)Z1;bE>e8HEW<{@a7x%^c}`6zNUABwlnS<@m{1e z!}!(?_e;=^f(~g^-2-h0-1zU`TnhcYtWN5^@!Z8<0qs!t-{ZsX^6MRM2zc@CDw=S- zemghi?06XSXCh{M#fQCHN_~@!0WTl>NLr!#wiO^$-tf@zvBsNuEaRj2@Qw1zJMVnh z%%dcYQ2gohVWwU?{z=fDrTEYJe)C3w7w2iB3G-5ZqfR*9dC*>=ct4low`>@A`9NLb zv_gKH=`Z<>_U!l=^Jk(S+ABVyZ@%Ao=fh^+ENO(|Pd{Iud4uAkEzEp`@lkxlhrZvu z(DdSbP&8p)%5St?7w;3$exP`ZO7UA3oL)ZuD`|!NHVaPEpPG2hv$N@aabJSh3vvIB z`%9OPM*D-x8-2EmAA1Nhe{i_?$UXDRJMa1aOw0v1je!4|^I;}V$Nv@DD#icZEAQa> zu$g#{z?v{GRo?K{@i6AkTq?YyT9#1WIp@P>E|IhXuX|^$ zD`|!N?gfmg-?O?a{>FH12A1TC|8;)8-+AlaS-mBVQ2gn2@2t%fe|u=LUT6N%Wxn5` zb?>acq6za-e($JwgP=WxaZ!BqmZkU|UiZ%0UD68q4O^%`Gv#gS*euLTW+5*o{#h8q zW}S)q81!)%52s@zYWkaaZRR}_aNp+g_&@zYQe zM#%s4_+?^r{L`U5U--wY>z8+E{F-%+Xu`ZydBa!7`wz6&D&B6Tly`Xinst?=6)JBU zzfAi=**gABcrEkQ_?XA@{mvUdX5A@i1me$}4>NVg@gIT~>vem@$8PKS9Xua4>rv5! zc`3h9Umfo`XeTo+ijO_81iy36hs}CL(hB(P&WD*c!>I^1H2G5d<+Elq!El?4cOL49)^?gtVZQ$CDLl+G87+wuk}OmW@CQA@5$jwKGB|MV_nPf z&Tfy_e^cqdUy|Q$z}9}x#`6VEE9f@{Y*XH|F&}aKzvJ~L!are?di+)cw#V%uX$0d} z12*y3Q+(uU_O6P5k5|8Wxc2JRY|JlMlfx6g$Kkz*cMj&Tb1)B{gZ4bPBkm^n8+C1N zKgVvAKPcWlD&Aqp&)yCdpYUEunU$F zV0+xdB#of|YNML?2P^(@&|-dKulU5fz4GR5YQMZOzhF%cPs-cW?-La7Y`ngNaZ!BY zyCwPUHmbe2FOsx^exsZzUd%_F-&aC&v+z&as2;!7MzzPiUeXB0uQsZQe~seb0WH?+ z_KHus%k!JJseQjOzhF%c&-WY85nQ|zp?#ilQGC)nCHd_(s=c_Mk+gz-Z(;q$e8llz zhUOdLpS)o`eyfdYkNbwC5sY7LRIeI`_o9B!MjmFvhuQFcHpb7{KjVJQ<)hL5pz;RC z#s4F?=ojm-la?$%)r5Z^Y(!GoW3}xF|mP?UKsdZIFAuFOal?<-MgX zZ}{u@%g~Rp!j!qe)IOQ=l7g)(d6(v zzvr}8yspr$qj+zXI5aW8vlEt$_9b#e1_PzugA07xxfJ zE9f_3GyRDv@7bthb1*NOgS^Z^{Btmd%{kTOqtX5#zrl6!9}4dA4i}%gem&)_HmJS0 zkCrro{?j?FghBix760GRV!dv!_|)6H@(!MFn{$R}a(I4u!&evY1<;OXToj-BMoH!E zPMUdfUoL3{%X=H!zEHM~e;qVfpL4vYtyhoVbkZz&r^mfj(g?<{HdM&(n-u>(Xdh*K z6rXmh=QnSs`0eXq(d6)azaLP%r=Xprc(0e_x7$$h;(k%m3i^$Uh!G$*H_-M(D&lT zx`xvT`!5T9GjCano@>_o(4ZXVqEDNLb^AOsr$2$Sk^j#rYe0V^-n$*NJL86K9>&l4 zsB^R5$=C6Jq4*C_@t=h>F5>?h#b@2_*Eim1@ZvpBGTT;KX6?HhH?@o$CZ0pXv$L4D;d8x0=!9!Vn{zic#+->BD){|L0tDE=M3 z-@MV_@tzP(9?$a|ZOQRofc8zrd%HBhd85J0$7D$>?DrOl-)PT{k1>Dlm%=}%M}2DXpaTOd#5zNd7xR1(ZuIB#DsgXvTiUkE)L;1r`HeoC?Wve7_(qh2{a z#{79$uiGmgcen31Z!~zkL88gyd48iVJKhLr_hVcXk9)5)zj>p<%g5f5R@m>Y6Ti`( z9RDC_juHNO8`tNzEc89@k&;F@epz^u--jvwiO`;@`1kmJ^TN~PVSdA!Jf7z_<|8iN zanRnTc<-0yH!nQBd|>^~X@&jXmin`Kh}S&(n^l8vem@=ilp?W zYTawbk1rJe7re%L-Cpqp_xXN@*1Plm6ipt_^ZPf&n++}Mx#N9Un%|-I?!3j4R@m=k zy=&GQ&hI*`9hx&fiZAS0pWos2?);{bMmTCk$*Jdqu2JWL>9{;C5O#3oi7yov6UEz|9FWRiW@(!V*cWC^YKTI@vJg>artK*G<_F%>PxU}*PjbHN*khH?(jq%I)jk0z8 zBk=kp;a|LYeSU|>kNL+*8o~J0Ni^c4?l}Hw(4MFG4|;wF&!NpfTQqq*&u`RM$GaHX zYZUL3lKgfj(R4pPf4rm>^cyG9C|X6g56s!k<#DhVz?u-pcuXA3A6$GGtLMLxq=o;FFImTO z%)a!L)V{RNaftttq(%Hiv@gvnf)M||ivI>QA1eMu5msv^F7T6mZPwGLqrG^s7r@%= z`;#%5cyBA-XV9Qc*(<(evF9rf$G)!^|5+2_IA7JcKmTWFsu&Z+m#)#UuRI1Dl^5q! zNh|AXFM?2d<5f^pkk@uhP-UwPQ| z;=;7SX+j+5>k8p4XaUW-jEUmQIyLMokF`dn<6O{A(#rbUn;@&k!3(sP`DmN-;qOB9 z2Mf_BEj%6f>-3gJ{XgUL0<;MBc|i}nPKw-c4~h zDE>%juy=2-`10fPd`FiT&BmMT-4bt4#XArhtlJ&$SI<}8w)Nw}I+isdj`J1s z6IWl3g$8w%Iaf4m*jL`GH5xC@QzWgduh=*;?>F@o^ApEE2e1D_|H=Gce8rJ@z9xIM z9`8cYX5&rvXo-jUh~r%WjjZeAE57r5)_sW&GVg0y15>1HX+ROWj z^A$9|GA4?zT-va&y!UEUUYtKkT3KJwv6}ar_VT^rPr+-9-S&#d?~~_iviIuoW{Nf& zZ?fk~yy=R!5Sm)XMe+C#JYRXc)sGAN3#7GVE?>kBZ^!q$qjAmQ-8q3;RE znQ!u5t9h@EcVP=jGwbixl(dO=A=<3V2gdw`cJ7Kd#8-{V^EcUR^>|%Gn~gg;Ol9T^ z3(y~#GF^arwE%V4@QoJ>;Co|V6mLfrZ%^=(s%FsfRd0Ib8$8Fgu#ad$adNv^xVhqB z%wJgPqKmJZ*>JmYhqoZ}e8yaW)5?}BI$iUAQ?7j#A7lQ)QS_h8|HW4i$t&07@RrBh zU9{PFlf4Jx4OP6opure!ulVXop0B*^;K#MUXhIz4>pqHuF@NC+j6qy~HtZ|!H5io_ z=dqGj*4J$bLUH~}@lS!~T;X3+ndfV=*WmHa5-stP@8`Dbx#VaQ@lIDfjQI;OhTAK? z<~jBKYs-5C&t)yVR5U>jj3o}{?XDldn7{CL#zgToKiBiUc3zH?&cloI7D-LJT+dkJIfBIZRK;O>gMmCHw?{Xss1%|0(`4lc%Sd&Sppm0PZ~ z@YV4y!upxD0l#S(X?P|s$LoyOYcej1uYb@lS6=vfoYh4W(x0jko*0^1|2S950$6$M`x9?}4w2P=<@H z#C;5Ia2LIR`(ejxv_B|LFkSt*1l;Q!F23=t63SIAe7*Rumb3!piimBwB5udO85)e; z_KI)XAh%p;;p_446m7t7T1Ha5w<+F(&|ux|csKdw$_rnQGf^}_4!0MSpNs1mXkKMZ z6yNk(3BIa@ug8B`(hB%Ws}YJ5b;$AGga%_b$9eNQxxUiE*W+QG#o9o;w0tDqJBs%? zG~Y8Wif_Kw_mvmE9_Jg;1Uc;Mmx}WXG&2uP0|YZN()|!^H0T}3r&si zZ&@?fS6c9TJgiw+8;F;d8N^$lcy-tt>!Ns9`o8kQ$e#C?^CsiKLcSNlyG1Cc#ocjZ zykCU0=VM;h*q4rbaYulrqbngN!KVsX4Xpm~6CQGEM3ez}I$g^TYM zO_0Oo3f~;(5on%M9A2l?SFSnh!o^QZT7h!yZ7Ad`%Fgj$f(B!^z2ZAs=K7jhmo1(w z+CaQ+d@=RH@!o^xGsZ>n9jE)gy75K#Lm!JK$YEbm2OZ~YXns>1UZ>ROYhHi;v!oU9 zRr+(Z1IM2V4aRPJ#dpTJzGnOLS)$Fxn;eaya;#FkMbIo~Tom7Vvgd2?T+iaAq6u=? z*CoQipV5-mio@%adVF<7+03;&bTPPo7XGJ`6%8-@O>RBnjnXL-A!@!gyulSnO1_YIqRY&`%78@ zU#axS*L@WKFlaD#+bh0jP_D0;b48D8A=qufFm&g753; zq6u=?*HaYdJZNrLoIgtNHD_J4Jeu94ASNL?2oER1_`8sQnSB+#;T9jzOUpFsWQYZPS#+YB-Uh;AOj=Ak7GcT$x z7i~7~E$ASwDbH%mPq>{{cfsqPiuZ))Z}9nf^%|lHa*V&@PzIv8q= zl2*1{x4^6+X*VWL#~%O<`WJh}4{V!PuArvcP4ytr2K;vGZsVcj?GDXejEmw2cs-oV zA9xwzwVUcaMHA%Mc4NxRaWLjrAE`KBl;CU5y1V)?Nh{!MFGHbnMV)bc^!3%J3je_^ zbA8RMd#f=QU@h^I?-8~A*Vy65on(2ala6;5G#4t~L-u=J>N&SweV%9n9Jp#ZsQ-?0 zDKytB&L@_`^W8p`TkJ8o`wlyFr!(j(&w=`Sjig2V#afdv$k*|Te+x8NuiGnrs8`g+ z{GFSB)z4RB{mxo?e{wFO!mJ}I)HiYOL4o6+e7lroK9TrXRriowb2@ z-8!Ng^AJ~$zJLbnZpWMF`5IhDRAYX@njnXL#r(l>Ouvq?nmH4?l;CU5I-+{Iq!sXW zE5jgPrzk$g{OYBQkKzfZ=lYsiM^t0c&e}k{ZXHpLd5DX51%3+#>u!6+6Q+B<2GvNiRnrY-)7{FvBl zc6Iq^v_DL_8YcT(vk_in?6z0@$O*aSnpsEGU?gU3!0%)oVR)M=9>(mNzKnz4{_n{K z=kYZ=iYCahqa`kA%acxC=xbAjSv%&vKm zaZ&u}r=G9D`FqWEq6u=0ujB9@v8}QrB-;I}!_dYbAGcJlBd)F)1;QYPj6VU`Y++I*_j`IyPzbnq%5`4{>zt{XC zX$5?B^LJBs9Df=#7`yEiKfZgeubKIK4c3#aC0;UrxBZsP-%Z_gyv6uFFs9)g_2aKK zJb$lQCYk^TuA+Zc>;I(~vzL|$#Qa6|8SRAgv9##DCw_cdz4Ln&(}t8VgEI4YPCJQ1^?ysdiIzUsoczw=h*2XkksmRt4-H2)X~Q+& z)8@E;$7_t;_KKfutA5X;u19bjUAn$#!aT|%B}u$>6>l?WF}^z9R`vXzhaUkMs>ipb zmn$f5#-_**FcKcT_+>iD;0e$PYnW@2yO=y5A0jZpkFOtH@RJwWk?;q@5C zNAXko_iE~T1jpB3Z|uvu z`gII6r!gM!K9=t{4Yc;H9`|HPBM^Twe6Y^Me}dv;zj^7!!hd>euYL!|-KFP?Cd^Cu zeXinN4()@Aw|@zKs{zo98{q6za-7z1_KhC*H%UXqZ+<7Y_t?t7`0=yiW6WN@!~b3XdOiMHA+w{GO$F zHTd0Dtk3NgKl?*He)|z*#}BNRIW6V4r~o0q)i}MZIW+4qK8l~)G2^%BbHvI(U@La!h$B$)aNE)H|)8ogoQx*RLXs=NGg2kqH-z6|AV>e{j!aU)O0ho6SJyfn%m z)SrOo%KIsBCplF7!ddy{oi~0hdqL75|JC=%_cp(;r&d73e@^kS=3n-M@L$|VeUDVm z`e)fYqRHcNiJSS^9L$I2Jb?Qq=rC3YMuhf2*SL)5Prf^Ps6!{HgYH#HsK9XR7m2t#_AIOB!MSWdt?f z|G#XJ@C~}QrSM;}<<0-b{vKd(9IGvgHjnG_i+-&Z^AwJ|7Gr+xYD|gZmrC@VM>6eu zZ5K%^?0fQkZKi%X{#wwW{OlFKRIl$cl6lPTQfe2U-sKs za2%`cBbq#(=Qrjhj<*A}J1bske!G#(i+iA?74#b;8O7UA@iFGt9URi?PyP@hkP6 z%NdS!qswv9>3DHIE@=^;zo)>e48zptg{a31(T6R>JaXYaxQ9YF5jXPH*cZhQmMdS3 z`L&-qYW!;UT#!U<{8Qsq?MI>w_)T3r@!nTF>?zd#q<9m&=L+HR>3h)xIb5#aD9-QD z%vPMw>Uplf5%Qn}nHT2_Nh?sU+ZqbRiS?}WbpbSLKJZ$f%yR{yrhTmuZ8qMdD<|G! z#lxC^d2@;Pwfj6@gX7ThSTsS7^>ukcILq5W(^YXkXxLXb_!ys5{aM~g(#rZO&%u_r zSNy+0gYnv4@#IbOd`$))kB6~?wSjo4%QU_&Ut96;3}JbH#zpbuJ3L>5{r&RIL=)r~ zU&o=0QD16NXKT?uOpM0oT9oPX!MHcUjeIoLMR9_`^>sPs6w60AT0FV_&wW#mwgnF| zka<22le7Zm+RIRgk2oEFG&Bd8|3X*%dgycCOii_y<@<>?@w;;1fPO>A4j54}cP0+1uOR>oI|39bTx&gXA>?*k*Ai)9e70Bo z&Qi-Y=YM}S{Z^*iQju)vjR$oY+c>RE`?e~>uPax4>?zd!gYi-P?ml+hHTx+c|2Pgc zzo_djX=Li1HXRt^uc`Q`J#}i_f0v)fSl{{Js;=jCJw+4dsd_#Rbpn1bM_DgNeOvws z?#WTK;!NBaXIAWsv@nOQ`wW?Dgp1sb%ZrR4zfq_ou)Y0|F08I&) zkKp(F*I_S!H9-#hdY|Gv4$Vu7bF}4rhJNZNn%`B@rMpX=@x)%=-~URQ+FzC#8u|OI z%ExQaysz@{sa_W){<1#f@7to){no(#qlS+iIC9s~JUB7;4aNNg+HZyX;k{};kmvK4 zq6za<`!eGK`aoBYe!}bNiuXZ%{gf90IqkKhDUufXZ07?`#qpvac6`kB>S~1l(Wcpc z!s&D719jNXbZVRuFpE`K3 z;vtuhM*G9WZlOGEgdfYcx(M!CzF3y;$GanB#p5DYQNj?5x3)Sht~rX|9P*x zd3f-B{-LR{J_2jPJa*gi zFu!y0V*Fomo{D#d>d$`9@!N)AIyBF3%p*9hY<~t3$BX%c<6jKT)x!UDa9)3ApehbE z?^$uBq(R)ds$Gm4IDp6J6_+V4*8D5(P}~pI_>6f^==(oc+$x$N2ic?Yyh(BHh2}BE zS!_A{ImTXkV5S;kb40FOB>c}tXUApMr^n?LFNjvx zt5FprM~xlaf52{Tl(5|A6!&##e-Q5H8>xC+*CRYmyd#=0PnG{Ty!W!G5buGz0{1pi zq3Jx_zvBJ^uQ$TII{sdP`z_qh;{FT!Z}Ry~74NUe&rB8X2-S|vevntro`acr!3xYT zI4#|doC+A?WB%aEc^)*&6#uzwJ97HGc2q5C5Z8{6q#HGcN}ITtKR7PN#+A*4`^A>F zzfAVqf}aCi*;F(kjwxlsLDG)1vNc|JQJnoO$Fw8!y8?Z5J5o7LnvvIzR(6!Mh`%W5 zFRY3n#BZngYe1v+1HPE7zbD<(le@ZKT={p=X5t+ozOGzL@sRJ87`N>ef7#dbHTaxr zCB|*mggDMuweDWI6*T=A6UAR1k@7WLZ<8E{eBDXX%J@1011m1_b$b?G=Cd zVUDk$QvOxHzY;4w*6Mgij2<|4bkgn9d~PM;HQug7d73)4ViEcRtks*KzBl$o@eWe) z9)dg^?WplrcX{O+ToRuH!x8`5K(3uDo6} zA&&F)8pXLC8W~68ufHh4SITn0*ZU={tgm}gDCFxsivK7y&vTej{LPkmzV4ZAFPICk zR*$a(1`HT6cF@p4qf+Df$|n@}WoX|L?zgSH@jP5_CyOS`GY%&g#rcZjy$>z+Q`|cb!AjHRB0*`AezlY{e#z*nDH)O|Cp{h7^|MZ)rL0mg8 zCEb7l6+ACp`Lp6yK{H>t-*r~=(z+h}b)o)vHb*o;4zfq_VSeJ`!!w0d=nw4`f45_O z^HQDTKs{a|X%V0I4m*YMIH~PbswYZT#<3(d! z6h9ao|EkW&1I7e<#oyhXofo^Pjen|KS79!|+Kk`*Mh@X}MU28*7aEL1%=^B(SFXYD z_gK|KG(nCnSL3IPYjbEYzB4VJ6TakgAnZ6j%A$`vZZFus~Hb^N|~J;>7WdCTu7 z=J;x;X-MHuikwWt`VuR$+gEH9-#hI$Uw~fd=EN zz2YB6Ht4I(alqGuC9RCFP#FgKdVu1iqg-{erJFdP&+*kz)4pOZz}i5(^thFH$0{Di z{8bqD>=pmGmFH`4{kF=qZ>tG%Ouok9J@9oE%5c?fxX;85?y3d2e`j3d{gdJZ)794- z!NvG$ulUFPODI=zEKsg@N?L((9bp*6N8FD8ApRZ3S$oAlzMfmIBQoWRxd3Z3eyj5l zt0pMkv(TvhfS>w#7yK91LqS~;dugUGw}{gjwet#Vt(S{#rl60*6m!5KM(eNh3N013CAl&5fAec$HP8Wgz?p0@h|5# zI1gqAslYwodrMkW-g+KvRDckFGsWKy8k)gT4&q<_$e9NdRmCCmr9#wC(#XVLIdB+F zgl&MtN7=ggcZF6x5BT*U&+pK>t`H3qO_-xq z8NZDR5Q=v{#Xka?lNcYxzs||=o2V)d?e}q#MkfCLBSvQYK3eflgZ4b(|8|V$cj&xn zAv#+$VV=sT@%s$LyBM$SoB`DMw;LMtngl1S~dRvewy+d&wF@b;I-q4q6za6zsKR85ETl;asLx{FKAw*JdqDBCyn$6wJ*$HTz~Qv*chwr z75@?Els84KeAMOrqok4XzoN4Lpmcd-ZsPb;pv8LK@h|ktn-?rzdCw3{n5Xh-%6ppP zEyU{;jEmww9&50?If86?8yl__td0*3s?{Dk8zG(nlS5&oa;a{MN$ibMHbXentB zSI;v>jiJY>hFfT+xb5+JHO0MJ&BxHLcmbn*E_4x1kb~?I2hR^&d}~2NP7y2q^Th_| zxi-g%$m6dsX%S!Vqd;W{#9vqOdqRVCy1n8lf6JNY8mh^^_H_%M`1` z#JwZ5m5hzzDYyIem=_Wr59gIx6XvP%H|6HIJDmfNgAZH=Wd3Yb527u=WYrGJQs2G>|fBHtoSRu za~Prh*FxcV(d6;iafxDOMz0^63t-W&?sSv#Lw}k@EMsix@w|%atM9Fg+ zbRa7+7O%v7VC98Tp)>sIygTjzxSK_VPDkTLIdmF=dkJn?Z@G;AfB&HP&r$K;f;>O# zQj4cuV)yy!^VG@nK9zsB)bZ;3-I7Mwe|7F=9L^ZwT-%D9@K21<9e;}oZC{QG<(MCo zuNM_sKNA(&9O&|s`J=8kwAj;J@d2KDV|~>LZM!4p32o8;mcxH^!G$(YW@PSPQ2ckO z_%TKozHt9Jp5DT%Z^3zY;Z@P(#p~+ZIK){V70QsmW>cd=(X8XPj|yGKMuoK>aopTL z>hSr8!u?U9J?ciAj!~gGbX~8D3TvVdU8j4l%>4(7_hl9Dw@B{~_n+hGo2Tl#|GZ3! zK6~z{P{0`kPAgpB>D*DF@RQw@?x;|hrTAE5 zH*xqVuIlLb=e&X8)o<(tuqMpo(zgBSGT}8TLfg&(h zrTcRiH!!BWo3v8=&UoEj@$bs^=T7fhH_}o4c@yjfa2nb8Gv`(dO)wwf{=5m=bQ7#| z?G?{h+w;43X#8w~y#UsPdCKo`s0%;gMjukZ`lN6U?qhJHox~Fv+j##Zzc*0vqMbIu zUcJ5I8M~VVE#ljGD933S#K(NZ#d$6?moPqxXSL4GLs_4m zhc>xLwApwExcPmP^A+z(Xl_uv%ayO;bCQK7*NP^{VPCIOoLixJKyjW;`ResjNrXv` z1HRrXX=QyK;O6&D?o#|mpm|34v%BW`3aZJ!uCGsuHWlxlsIPo3ve4u)#d`so$%;2y z`I=W>UlC1^!@jtz!*NxcDa73X$QRio8o_)?f0ENr{8b7nxx^?ZTQB$@4Z;JJQ(`_ZbdFQHjWX^f{{l3a^wts56 zm89jhBdanL^0$wQb0=taR{TE#^_Z!tdfarNXan)Oe!poy#ly3orlW*6{~+aSPQTw2 zYe?1vIqWOuCp?}t-3uCwZ}y7k^Y~((vjzL7BuL71s()&FprjS>HR<=!KQ-MS_fXvZ zaQDHzE^h2eHN6G*rMS;RJG=`w#;3pfqH^6|#eX_@7;o(r&!3xHu9bou^;04ho7OD%D5=T?_ak!uk82S1@}jq z{vnzW$NBoJ;>?6*iQ?>;^3`8AnGkK31HLYlw9>vpL=f^7^AZ;)_WWb)ciSso{9@Qw z15NuHW6z1T#G9Y&n^7jIql91Mun%+}ZajzUXl|?pI%56N3EGZx8QXaOqSvFZeu)aMpunbHzDG{rb@GAZ(S*r#JH@l-!FAo-Yi z5-*-hIA5{;k9U)Jt1DD{$r-ofT|^V&aC^b$e}seQjPX8-b8M=;WcwkT@gRl&|LVH(Tras&Z^AtXF?7khHX~RwcfUQ~b-JxnB57du4rP zYR1=VM4OJc-+<)QJC);j#lxH{R_6kiKIQq!k7@mOc&BJW9Ovt8ii7?A_$d|F_bFe! z`MZhG<~Zc*Y zA1U4>)xXyD;O^D;^?lIS29dK`gdu`kp$BNi%DDH~?_6=_2udy!j`5P7g0`O`bEyj1Y;t`M;H?V&3%PH|s zk0&*v&Ai`!83XYaE8Z%^iFLQV;@Wq;a^=Sdp0CANGy#q)*J439#Wv7%WlR*;&TFt- zDaWC5Eq0Q$GUaMEk#U(gi|A3gy%hh3*Xt$!4gVkGJL|%}+D&BL?-kb(Z93lm_F+5m z)>gcYpuw{}d&SGY@O%xPH!N-@ngB<9-9&M=hNeGb5LazOz9u;i`ua~vEA4ClVF`oc z+(GeohK5$c^xxyU{ldP2nyIhFA)+Oo-Iq7*bD$kKiMOlb?Ewv*ciStj`&sQH)b$9? z-;3D)XHAfUoSA+A^`(G1TZpmO7Mp$n&*3p<7n)&B-wbQ|W|(6ZKW6k_`%j8fJ%1>k z2-ew-5#xI}I+$0hcwLqmx7o3zWWD-(hNMOD+vfu8bCNFJbE@+Be7wF~@sG%^cUf;r z*5h3w+O*#zDn`;VD~k6b#k(4sn-#B0l`H0%yz%C7ZV*k7WAbJCfol~9&(w-IS7)zy zW&4z`-u&G}$T<%9`hcXB_SL8igZTFt~Wy##g8eg?vR@ zbp5+2=ie27T#m1Xn)dY<(PrYU7|7qhRVe4S;ciOqQiqVD*`f76=@O8PQmGKoSL$TivDCg`tEB#hmT24 zR~sJsd8t<`@j9{6K#Mq#ldRL!ysH`Z|M@+kbde3JuNXsIy3Kk*Bm4iw0)PL4>EF$| zEYlC!9NN6-dev+zNsIV)y=&tlvnVdL|KDsUXk`DtShzX7elS$Zzm6CC|EwjR8n^K! zDEz%@R42H7HpBjZvt%hlJ~rv*w-=shdU5S8njpuv7t}xTbuVb}eBEBfCj2=mt z@xTF2JLymZF+jc&j*{GEt)XTlzehgoM$NB#n4`(c=|kg_FM>ZFCiGC zJ)g1u;`$Xa`whcUwwdG}}`t)Y6oIjK_h->@bL6~G!Zcbkdop9e%aeoO7#$9_Ai&MP) zoZvoLGvl4rggC}!itlU1`3;&`jERcPxStR9$12C6{utvVr$v0*A6pech(A^F=R>nh z@sG>)$4sUC>v~)*+HAZ@uR**;iidHnc{9bE=lROhZLgg+Zz`G)hkZ5M30!ZRw}z&R zaGG~b?UQ-qToNJWIN)pZj*?c^*GhtzIGba>QQsdM;s6P`ptVOUajXVe=NxN6>|aBggDOEjTHxDe)HXh(_)>5eWe_Se8pUV)5`iv z(?U9j)9h>1GtBdwKZW}q+;}G2{3qNW;g-J1W$Lf|gUWS#75|=K9_I+f78m7}Yj(fB z`M#pf_}$C)L*p=?Jq*vYZp9gP%sD&PMTHLiaUhF2bT)~*A z*mBbb>s8`ds9s$vX=UnFFHG8SQJfbm{x#5GoV8c6<<&Xm3TnC^Y<`nyv++tlh zNzlBl__yWx8t4b#5N$SI)eoW%aPfWs4W7H(tJr!C&)4Adg6232z?u-p`TCLKd<)G& z#ze)|0~+=zJO79m*MnnIJSM(3a>>GnlcA0wpriX*XCuM*Irt*5>0?(ik13- z7MM72{b|twnl%+?Xnp(Il4IKq`TW%-E#lkfK#3}07++g-Rs41E8sn|Kifx|C?rU3W zl7BTHYtcir#Ix%eynhs*@g&}Qinlp5c<#=;vR-z6ot*axJ}+porD(Do%2whl>ZS8_ zM`+Z#ziclxkDr#_cW^o0P|xFAVExZ&5O+y(?ttEH1EBb@C*-(T|F^*Nb{F5IsI~b! zH{aUN5u&B{OFbRMi(=wo;o^AM^KWqwwiv*_)<@yN*EO9(Taa6G~*Qi-C#X6)NDP)`k%Gwcq{Ff4G<6W9p@|d z{90ToytX@gz6QT%pv7gP32?;M|0oXj7h620IL9^QYm(!jub9JeT4`S^D-y;k>~pp- z{ox$kSPQn?26s2ySiiLR0yoCM7SFl-{N;a;&o`;~p9b$`hbgxGB3!PBI$N$Uh?e4& zb@r%=N?B){cwD(oh6d|ydllP_P~$b8zwkoa>j&NzO^9PMMsdBNI3Gjv9b=+myE7XY zuQ|to`DF{NM>s9w%R1Yr2txcX6#r*vrYZg}!SRx)lz-h1{VCdPyfVK;{SjYhL4$R- zy^8Jk_kHDsw&yGM0$3B`IA7-|&QjFXri_V-?f=uTuX*#!mRP%RT3KIZeu?(t;%wOh zn)Zr6GtbxT{IX@aXtVLk{1RWMsvl~Jy#Uq{Px|*EBl<}{)ba$yI}4f%74Lk%z3@WU^A&pmtO;?r zA8L7y;$Y3+66rHWur?KM z#bE90yDDDHxmwOtyjy)=d70PR`l#AXt7ei0ym6M0f@brr{ls1XYtwP^Z)y>5Q^nf`n!bwnwC^V`cs)O{ z7r>ek??iZa+5UXL5|w<6(@6Vihs&fK2Py6-XpWKiR@*7;Cw~Wk z$HQI#Yg2LZ@lATZ(F*gGR@>p;6!X8XxSONx*P^{(d}-{9$`ir6_HiQefpxdNimScq zmnSc@y*N)5O*T$do+m5LxzJq7n5ekg^aje)9v}6%7fTwc^6bx5h2pzFamPb*lWVC!hz#C8G_fT~^yhk(v4jD?EI~8XF zG;b-+q6YeNo8wS_-s&kyi}*55LzOVhzD29Yao>p>^Cf&&N};d}H`bl_9*shi4P0It zNwKe)|PAlWtiG>;@k6utTGhp-%m#S9ZmE0Ld&o4&v)?}^%l>n z8~vjAk5chpggnc9sJQkI+4GH@e^atvyqAkM>vyt$PrOSM?>cC1b72;{@9mW$Hgl3B3&(HG})O3CQU9_2adkqy|e^ET_E3{r9ymgNEeC6)l_jRsl zf*kgBmf}?7`xDnyoSPf;)#fy8!}gInB$J`wrC_w*Iw+i*)e%FAA%InHi0{{z}Ppj``n>9f%H zgcftd;(mED`S(=MmP>iG!889hz1)8vNl`((l5eunYXNjW(VP| zd!{XaHJ@&?t-L3guB}%nPnT{R_|iu0_pf_j!}Th!A8dp5G^dpl5)tj)$N{a~9>iZ>RT!x^bq z+MKI+m*Mrbig%5A-cZ+rw{Lx4uM$m&16yfdsLd6MgSOvB?f0+uV!h8BB*%85tH;qc zcS%~r=jRQHih`jy)&74Q?Ekl!EOD;?x4`oTOQrnl_W77-iO2gG6*wo9*h>8z>T99( za@<(cxBdm1Z*gM|*ya((ZL~iqUT|DJdK+Bz9AN$1)%vBb2XEW@<@$kW0&yB!l5$o1 z|821U-{xl*R&o8e>RrD$$853s{2wGO;`2TVsS*ao`K^i*V?!H^xArP-ut8w`l2DWU z>vF9UE%Bti;2e%>FH;q7J~T@i7Zo>n$ZIdWee1`yL^L6eYcC5GX9d2yxrO3<+CY2Z z90%GSM~g%Y!~o$cbMXaJBG{EM4c(up`xXD zWxa3C;ZVU6Z#U)lp3v;Cc(15&JLkMo**>BPa*#3Nj8Pn%`zSkBai%peZo3>O1*^xG zvVTch#FzCxsSJhqC^znJ%T9vkEa7i7C^&8>RFi+z50#xR+HAZsuSC5O-g(ems(A1F zzVd?G<6s`nnjnXLRr~*C_$l|>#NK&(M}}JJE3_<_#5w$=WBMJ zS$4l@v+>G26Kzm;areb7 z&mUc&fAt?!U)BD98TS9nzH*e}#w!~x*SvXd+2@j0wp?YNi#|_${vMh?gulswdF7g& z=a&5{TH>j3d*o;}zWk(k)1gt%1vdFzjW0RpmCCUH&zcYi#hUa3GZber%F~4v6*q0w z(D-6=92#HhBrWE=$Et=lJc0H!5_yDeoqlAjkGc<((A=V}3c-*Y+y*?9xEJbve%V z^W~Tea9YHdex6i@VSL5!gGihh^UJqod{pdtda&LmRFi-0EB0epo32m8?633@5B-7j zbth<&BUA=j?77UZx4iK6I5-Q)nh=NUE&3kepl>SQQ{vjJ{?935Ms0H(sJG=KB`xBs zdJ7dnC{7&8aB*VHFF!=_L!T40)J%OnP_(Idah^u{gL2G69PdbIWM8bfx&E9U`U770 zdcGbjnh?kNigl9XV6Inwjl{J%e~)SSTxi8u&T+`sb0n>luSS*lig5<*rGU0sXp8-T zwm6^A_E6kd!?wj9THC9!Hhlp14Y)7C{Tc4bE`R^?A5^Yqs`xSHm*3@*EpC2IupgqR zGv#`_XenM;V zgPgB;=3kC=x4nwJ*Ythmg|F9Mz7kDsY8< z+paBXrOFkmgkbn>|EBmG;PvK=kBWVs3zn;)X4*?z%-LB>JehCee2k1QZ8uW9Euq;_ zcw6xI1|{F;6+Fk(7H0ui6XKYRQCwRqPJd|RIY@B}{@hC5_`*33j4y3*7J$+ZI9izdWzzTTlY4?~0J>-H*cb!r3av*8sp0A9Yy+GKm9%7sR-b;F6VYFBrUI;C2r!kD=L0FXx0$^wmaK$R=?Y+ zsV)xH@3zBSfYS)auYR`^<9IuD4zOK!ytZ`)xhQUTv*$N=zkZzSi6)Qd@@aUOr||r& zT~EAL>;3H}m*%(q*-AejSpRccVZW2#t!$^(|Lw5;Z?}v1y*>ZFNYL-_?^d>}kTi(P z`}Qd3kwZrA%-=`auD^A0+ zH|8b3nnQq%rMRaT6^w`Cr8l1-Yp zXDjZd(5mPDJ00kK4Vc`pFDTBNc&*0yzTY%dk2%MIdW`X((@NK4qcYJDUyc9mF#fmu zN#g9cZMYs2HC>PKEP%D?c>CLGOuTPYyja(^n<2dZ%WVPCOcasB^X zXt1wtuVVk_8}gNN9PqVT(n|YkRE9xuE>irJSVuKyd{i8;TG&^jrhIK5i#8qaaOG?J zg7Dh6fd=EPy@~^td%p6vsOM|@_M!=Ltgr3yJc4~~zZx`KFeWMvT(==#ImcOF+y7nC zO8aV5hC<`cd+`4S+!OKswQ!f?F5q<$^D)e^8uK#c3Z}%rEnbgw#NxniTt+&ieak(c%dy8m9>`C4z>3C@?>gTq4YQ+r-JT)$rwO%Bf)PCWG-p#2-r{w%y**S9>gPh`Gt*!$jAKLS(1 zJ->1OkJBQ*?ei8<;r*C%;`^)%&5&n&?{UF=*Yb)fxZlM6oXba}{Xy}+tNi{0c~zIXuay zXC|D0B^yfHqRcsr=|e+R7pJFKDj*Vp4W{epw_ zP5Ipc>wiuo8-Kr{>GstDEy%^+9ol3HU=l74?&SF$T$gsh`kys9JkReAYW?4#C$wt) zKX`|f-`?+sB`t*`$oRdLq?PsCsI1?8RJ>UKcNipo59aT`$<%M6N*vm6tp7QUVEn22 zjqlGDzlTD5xbTOp?fD&CzjPQWnjD_w6a7htk8w}J{Wxx{?K+Idjep+}bEJ+vaIcQn z%W=BAF^{vBH7hZA5BYEu$ z<(=2QFu&t8vi?{08fL#U)KDn?af*-UgB@-V{?LuQ^5)09-nh}>8qwtNq`XakGG6g+ z#p?$YZ$!%P!1%=xWZKugl2+Dlqq6a0e&YOo1R5E)ibJ2v^P8v=hi+du3&3dv;@>>u z_v4EH60{gQ?NuDMrRO(4{`LKSO*AGrF{#DYT`0f5p()$h`sk*bIeq&$4m3I}i3m6|2hxb+U z;hb|n9p;E8%yZdHc<84b4{QF8?G^7xH6Nz=S*6~v_d>|{jlBR)i~P3h4<`b~%+K26 zd`J7|aX*ZFV{ME1L!mv^edc#L8vCOD1oI(|zhf8V`R|Te9R5*uKJM}_#qHJij%!L9 zA^(#nUkStTF~jW- zn<6m9?Z>@?q!lV}Oc$uWVVo5HKxl?3{&)F)+oKNjW-tETBn^t+&ZEZ+8rW|Lb{Gbx z#*dD>DE=sD_Y?kz$G!e6xc=$5muPZ$&TuNREd>z~Tx(yh!7 zBsOGFdqIop$Zc9G&?%n@b@$Z4=WyQZWThE4ws#9yc?xOPXWKMe`xQa*3%Q|(CG_pPn9+~_SxXrKOw^jT#@cJLZ zAHBKq9rH4NpyS2aT{K~y%BSJ2sdyXW^+3hjE7gB_>yE^B8$qW3>eNfp%K8lzFlJuX z34001gNeJ)@eAD8yX*J>`WNJ_t+Z*EslW0MD({{u{z1rx$yjm~M^DNtZxglhQJ42{ zNrU`%`)!q*j~rXMdGZCv34r)m54ie$z`c5RoTNqN?e%?K0mGI2RLiQzDXR~?{g%L zQ2aaF@6^FH+}`znVpu3Cd_l$OxiQ%CCuxL=hmIuDBjQY zjbGfp*ug;jKIDUJ){+sak?VBAxoL=nq`q9qaB#mr+!%s~n zKPf;E;&)bjJoE32^Y->C?mOA5-@QZgh0fRuU`-Cs8BRR3TNf|RqIKSmaZz#K8L9g1 z%@>l$If8Wk?!2|6m95`KW&Pel@$t;R^RB|*Z*X4yCaT1t>UZZ#Nh2M9KaAJ?bbn^b zdw}8(!)r5fOs?Yo>nOi-)|Z{J7r>evp5)W;c2~Up@EYrD$J;gKx3|7DeoF)yzYmqP z(tal@>o?{juDp+d<}}7f#r+=(`)#QbhxYqqNh1}1FU*g6rRPVTPf+}`p}ko6V=pMd z@AE~I!;^d(zt2^?%kla_#haM&J3T*A5oG+nPSQ&GZB_6a<7Jnda9@o3G~C-mb2a6u z03QnY-ugn9HhBFB?pJWz=kYFw|KlIjzSZXsI!^>c*7L;!%7f+2QHzhdyq}gdLjI@c zXC@|B-(H6HEf-Yrfbm{=2j^#S|nTa3gBwYM6@OmNRqvC#C+MNOh&6gAlp=|o;ylxWCzo+sfqQC-|!T0q-T z@^R35`M&4Ple%F2%4v`fGEYj{M{1sgb}amE(DqXN2O6Fyby-t1VV<*{`jyVJsH_WJ zj)ZOu?p^U5qz~?OaCgFu{-pz+`8LL7`W5tD5-*+*?K>svR7)J2EQf# zJ)s@T_^5dBQ(ij@&eOW=BbpqZ%P7T*c?q}cE{8ySoZ|hEYG>(r8l2+@(&Jc{qb03u z`!Xu)_mPT^F~1AOReKc=*)gwu5mn;QexE66q~phYqgQ&KhVfJ4zYy9h86Oo7?Wp|D znWuHRR5Up}$)~Abn3p)euf^*-6mR>K-|2Z;FNq-I_pOpv+V4bV{k}=@?}g?u#lJJ` zx1~xP+V2UH2E}jN#i%j;2jGJgyQ{}tN&CV)$;FQ`zst+QKkVcZ`m_IvCd_l$OnA>K z9>)AGA1WT7=QQX2GM}UHBFOe9?@3y^KXEExsC~Vy_;}{uBM}X8So|3QBLq2gVMJhXI_;^C|6YhS*D>GsvNnWUxLm#C8R?uvN| z``xu1n$?7V#6j8iC3-1vy}!`4v!oI7KRqw*+ClNxf_4MN|HCWq;Jmo&x}wS9NqM6` z>)KuMHoo|SXEyP6oA`qs6t;t$5_JrsYA`g~>1ytwP`qRHd2;lvxNczZ*8sPK;J zlKOmQ&~F<7D!5nA4wAIUZ~HwBDsJk}x?(=!{5}erixmI#?B`jP-c@jqi}@s{5vp&y zCqMN^5YxYO9g4dzp8Xtw8}lP`eqzK+Q8Wzm)HU(n*4z>I+AdFj=^y0(u`2${keB-$ zqIlFY)xMVZ2!5YI*Q-R66E7Dx&BvQm;XAvrH__Fsfu2P_x?faS?NR)Vey*WwCH9?~ zVouit<4(6bp_u{g9=LzU>w_Co+y3kd74O5y$1_e>{1@+I1<%X7l6M=YUb#OhX@%PN z?v<90`H8DSvRit~S*2Kg`Zl@Y_oj>7GK?h|8}@G<6h{apA* z@2lo3IrGD=I19jRKzBAP3pg^{-niyuU1g5WhzF-HP(x@Q&g!>F+~L`|ctk+tIILK55TsaGZujoE3`G z0h~3GJQ&Wgf$u$Ky{XM!{=11b74Lu%WAQ)hYd5v;->o||J%o2$_lAA#ww`E$9Fs4M zgWc9qaczp%+bGU1sq-&s|6GpQKiRM8wxy(%@|9GELj2x}k1?Pd`VV^*kDHi1{{mkV zYT8$f|Ex{LJ8BrdxX=08SMhd(W+daH;_>{uD#_=RgY~uBaM1)g?CTK483WBpit|VV zzPcO-d_6$YO8H7EL!tTnS7^VzaHH;EZdvI1815@@V;pSki^_FB75{0-v-&*X31z`@ zO`=Yh>p7xL`8}X=EdIysY4RCGe*pMhBKWxM?AA)028OE|8LiHcU8~pp0~gM zvGe&fya%u9TUA}%T~*yP^Fcet3-$sGjTguC>mq@Jnt!Jo8Rrih6zEqgv8P`zWL}AW zB`SrY`gQBi@Vg~wi_lOrDf%t`UWN7nS``}VeV9A4TOog4+ZXlg5~2UCz`D<(M1MHY z+pn?K$$q_yY2A2g%uGC9Of|cp6E5;lv%YouCul`I;E-k!zXjIwPB@!jXaabUFxG|e zurFcpR2=pu>v_lliTo%zFA5D*PdoF!nsYTT>Suk92J@Px((~fW0)IJZP*>Mibjb6* z_{q@w{D3%zXq+SKOB0E$d5wyR%o6CU;@ zEZ#5h>vfH~nds2x68TZm-ckb?T-v(``M=>s_O|(v)tlBKj3bL*g#5oqC?VhkD{uD>d4jzl)In8(yw|8>-m9i$wlkg#5oqH8SB5{;nP1^Zz*aJ z`Xm1@68ZSyTRQWJx872O{NK<7@Yvp%w>!0=HDt1#>(Tn66@mUKG_27@C1_Zqi;xd@ z#HGep(PW|TKKOo^MT!m|ndt9C{UNrzzur^y2j=DLZ&U9n!v2IA-$h4)M${h;zck$6 zp?Xizam>SKe^Ks<{T=rySbXIFMQ5}A3ra+P2kJdV$o~yZ0FV1y*<0k_MN9Bq)EgGG zw#VLLA5`RJMVB%!pS{igXA$-%tiH(qi$wmv;QFw=L;IgaH!%;=-{z5eT=H@q+xvQf zzYMewvAvHNDDrRATYUE;72U@)emraL7!PB|>iZaIMZSN;tVI6p?1#;qD>P8knLDpM z!@S7eHviUC>i4R@5sz4WOi{)C4*S}E?~FCSbBVw= z?}ZZQoqhVqxS?|~^GNo4BjSeSJ}A}^#z)TIxt#Hjx=`3X5T|wS&olu%YjJSc5!!4`*IUd&gAT-l$KQan>1YerK#}`ihS303OSUah*Xd2!w1F@m+Rv zG{m!==cCO+gDg`|wD@cN1L-?U=!=?v=c6r5bd1TnOdZ)dFXvh?ufLCAUb4TLO857C zfsZx6GuBmoMaTRjzrUH@A18K3-fVb~{XcJ>)HtJMUL&eXlNx6>O&+_AUCBs)#3{DF z7lZZ!1D}bG-MVld)cHK73E`OzCp^R@7Vi?!UMuj%C-NX;Z=VJ*xHGT(oq3VHzsl2_ z*0Ii43Vf{jow2U!D?0XCClAU)wR*_$bqDhZ>0dEt20@Vih*PZosQGt(!ob7cpKJY9 zo%S2t=USn!S<1T-`aa6EA>2xd`%i(3HNW#~jC))!KdyPujbmrj-3)CAw@Tt7PO-*YaaOG;J(kaA>3+-yIkO|0PXhz_dGwYc|fLvi`tW+4dK>E+^+;K*8DE0 zbL%TQ?pZ&sFFx#&W!eyKt--}S+8MQ~F595(g?2a^YJ^>`Lc`u%XVjBAKaaNDh_ZJ7 zCcplL_3qLcxV-l{x(eKW_+Bk=8~wQEfrql6y9{R9 z5N@5s9Vl??K|4m^9_hz5FX(h|M=@;(w_f577r5g=J5Au;>c=$+zJrT=-Oz?`hf3TD z0(UlOcM`ZO{J7>pCl2oROiQ?*<;~OcD)oe^{0cs8=Z`MCYR!Rz*@5OxC z=$S9O?8~%4Ts>hDF78t>^H!HbL5uuaU(pFW`fO^@RDWnm>NQ@4KR*R@McvY8MqZo{h$J3?s){|C{s{=MTGF4*csa zOmxC?e!a)}^hPbf&<6F^6E@*qCG5QvwD&OXiR=1tn|!!9|7U1}xO&1STyg%d%Y&eO zQs9p9<2L(nQ427%gu8;r)70tB2>5KcNAXV=oKvuV{VZrj9B|@MPJC~s4JXd(g7x3f z1n^9l6yu5YzYEs?E}sZJllP;T{MANYtU)rq?(!k?((!eIDvqza;5>@e_Y2TqKV4tZ zLic`<1ie4L?(!}3Alxt6-mPO}Yg7NCK4Nj#WU|FM1DlB!PImU|%ru#y=SiYIXEtW# zyjlEP=HbPK)fH|rU<_{Y`uI*WBwQMul(Sq;PLUuF~dhCe30K+S3M@6Mj$c{q={y5NxI>1S{`t3-lNjqX5H?%Zf zzmWYlJ@5Gq#UlSNo&nnJh2ATjx@M&>KPaBdG=4k?s9BPpBL6Pl8MGq*KDkGrt|>f6 zYe0r}{AX|GMRs19&|BFV>s~QpM)**+_)0Xacf||QHbKi^oUg>+d!V5fq3p7@FVcSx z(a*^Li$(r_@?e?#NP z6LPBgN#y^<$p4E){(tg!h5FlSkl)|P{|&EXe-oAJZ-p=N|6=6-#UlS-G}mwM7**&Y z?T!53@F4xg`a69V7T?SwTr(>`T~r z?BAdj>;0m~6ZOoz^?)@{26x8S%gl@H{WXuTm`dCG1%Z$CzgVpQrwnlFTh_ldD(fNb zjdLJ|2k9^JhZ&Qans83iTAcKMPvB$yFBWxxQ?Ar;mfClQy?uFjG4g*y6U5V!5}wHa zi;@3#73=RQFKawiPkdKA$JuHwHR$KqyDQdz!;9=K;toTl=Cdxy^AY1^i(f!{2<=wT zVJ<8F3JtdC$V=%DEbDJwvHo`*ViBWL>-D;+_6vOdX6z{XyDQH77#>Ocj~g?79^Q3q zBV3x#hazXeT;3V_s@QLQRVG{V7TSYWj?jnf)`!7H`++V(I|I0g*?vMk(c^cSY^gqz z86sByPWt1Fw;69;kwj6wKE3Vg&SUC$KwS32*zq*+9x#`4Q?g!6xfR`w@;KgGO-gYXs!Jj6p?FBEvo zb$`a^bWHf?&QnX6#)|{V2wj0Q|6RrUd&YZd>%Xf(a{cd$_22L!JL~nIsbJ@0@f)l^ z-K)`hqHUGQcEh;qh8kcu?B#dcG`34e{Ymx~@kiG$AkS)x7M(dRKmK6(&FqvIx5)nu z53;|`r$9Gnx*13sg78HhpzF`j`S$|f+&7{2d)Abh@WcK<`dK%u|Ay9&YrCEN8)>nf zm%D8M+N~|y=uGn*BQyCtybXA7J1E@GP4cg;#D$@A1`6=a)CDt zv`qrWlTi+aX5XO!Viu1?}|H4Tzj9vG=4lGr?U5{0uMQVx62rBasLALW)1S~eKGS&*gK{&_C_3H^}QN2O9lQJ zUVCd)p@+2h4a_5`*WPu+&E*V)8T}VILY=m*8FZi8~9B0my1Q6 zW=$E_?ws&{L zB^G}((4YXSujuSbZ=7UMSr4Iq_af#&xVm0})o%JYZEdADVnW76&A&T&3?WBnA1v~X zKz*irAExo*Ksv(dDR3~By0;qjGSS(W7sxlP#IbOWeTOhF!smR0s1ypt!7DS_GT5~& zlgakQ=f2C){*87&{tbCu*&%4Vqj9}Jk*<}C^sg5BBlhk-*RqbziM;tvthKVA?AMu0 zoAB!?Q)kZ38%LPGxPNy5E$ZF+iq07;#u5701Y!=}E=&`^WB*hBG*94R&%gV81DA=; zIkdny5*p-kjw6H0dPsX8&pZ;iV`k{1eAK^x z61Z3&y8p$%W}1QSvb^YzNzj{GEKgovC9$8zl2>;JMR9L zz}Z)AObAu^}+9-s&ql|DycyqPgddmy*qy zmh{%=Yw`QGrs?t9N)=v-*#9r-g6~*&^%b4}nm%6}`>WYbbmEng5~lItD8UE^8x3Y2 zDk%faSOb%ZmaL<3)I9Wo$6t-a+JMq;ODdQb;eTWOR#6d%niootbC%3So0!R#B6ll2 z0Bt9<6=-jwVQnut8;$eA%-Xt0|3O0k7T{o=)mOA+-wZ{MLHmhuQ-WB)(9-Y4xS2eL z#|`vkd(Q^Vjs_0)zQ!3h-nwPUc1+{JvEv3dWt?3>bAZ5kO{_1fU#p!1;>vYnk$wG& zSitZid@)`okBKqJu6qf5tobEJGyY$P`^O7F^T*2(Oq=M388fHHZ_OY)#3$B|vHxFk zioiQuj2Fa5zID6gB&PA<*zp2Cv^Zyi=C1F5Z;fBSBe;+6ziV8q6@!t?CQPGv=sTjq4DA-qbh_1s!4zh6uH zGp|Iy5|zRr{Jz4@RiGJe;4{%h$9wxVMosi?LB=u_iHKkBa9!HHh`u@;63Q} zt1mAuZDJZPjvgYU;|1A#EV0L~vzS-Xu8PXqb-KVu{$IK$>-o2t ze!CKC(yoXF3~gc_raDC|XUv=Wb0>j|GaaRe30(PJBHW+tTUSdDW|{yVBougvQ>>kF z=D(El!{~3x`$nB}R+u4#2FZE96#2j5MRw+SUsJ(0~?tQCf-7#9T9mTp+ zin++}Ap3u6HLZw2uh9^EIBDuio*@SFQ$5-dy@1^CCI){xZCTsWcSHai5Um3DDxX zy84PPHv2$oz4zKr>m%*{9P=Q2eNGGbGn&S#GYvE2WDg*Ok9vf)19JXSvF=|o(mC%` z-kiiZ*x$M9>U%|GR#B!XSF^5pBJZ1nlg5xI8S=y6852Xe9=IR8~L z2(2sHCeY_TwCm9jZ}%96R)o(#W!Bn7_5eTI|GxmE!m^JpHP0!R`r<5r`3?2A-iJ~C zJ#{AOr>zvvYbEpXd&K-bmt?ZN5LfoXzE{uvQ8(Y*;)FhAORAyoLeQ@U-3gg&pG+p( zdt=a}ultS+k@3GP{a`bzUyoXRZ?OL#T{^CCJa2j|Ij{E^$-ENty0$|+zR+)sk2Sx? z6oLQuP&}WoqqP4d=0Uhz$1$SPxP~t=E^7Wgwimb`J9%lfDU`|hw#PP17Sks^YJqSM6}ZQO_7ujwe0{NA1BTIXp&7I*Z=UV!0A^5}KTq12Eh&pAS#OF?^` zkmnM;zbw`*hmSrZISL zU(e?xHU3D(<%m7m4#@d?d?N7ga_TYOe6|PjQbQBK$FEID7Bk(>;o4;KR zl*2py{~hy^^EXq)>sQY^@jLWU&sWi~kJJnKcrVn&dtPnj=&%no&JZ6Nzw5ana64JJ z=*qVI^@HWtot@CT=N8N(&)-07<~W6-@R5TsKH`#|ScLTzU3rG~w|HNY;~ueI^+YYe z(D?CecgJ|$1>OMA4l!_<=*s&wo{G!!&OI8vO(f2_TS zgQl7BuPPP$XmWley9qs{{$rSjPk(!}i@_f)@Ub`1bEd%G$+fp{-R?P+Y5aIXPSw9{ z0uO6`&)o#x;`Z2^G|0C%VgbX;XYX-FU+hCzdt=S-d5FOOHf-;4?B33}?s*XNAY5JV zL{O&kbh-n9`gwnWy8txDGVawUiTX`o{qA`T(|B=UX2LmA;9$+~`DcN1hp68ue|8sb zDRRDj&tP7Juj`$LNTCq^sRI98&|Jd!e=o|f-xzvjUO8X(ypUL|$p0 z&q}dTQUf=y?0Gly%IjyXH{stY@c#)K!iAGtwP3z4oCE0LVx6JhF4IIcw060w^xN6?_;gBVnB|w5^^|o zv;uN`&b)$hRK;MwVm$Z$5bY&2tlhm&K~w*>5Awz%(U5QVor87*+68E*p$$PpGQT!2 z>KDXE#xHwC&;jeIzM^YZCG1hv{(k9&SitZK+M_x~QgR?}VL7(Kch)uf$E<`L=DB$7 z7$3d5F|VK;HA0RqLXN(m)iUB2(La_YS*kdsBA~`;Z>y6}92dMj|XUvrMpY<9j zRac!3jMOo%~4!-=M7xI5YlY&Pho9r*@0KJ+)J44`2(s(L=dplWg%-4Vx z1CY!4xz`ltnb!|i{}_|xnI!a|3))?UJU8inQ2CqRjAjD-*ZxeChNlE2ynO^7YEr$V5lbz20V;ARb8>$DyeGvcG)<+LZ}q zfBzoiD$Dpccmka-+yKvdHxsUy6er4jNdy4TI9L^R?R`2zhCIv6{ z3(POQ5bN~X9u4*4UYJX;-evpDKtn#-rv@?Isc6VeI^t6H#=K?i-5YaV?@Egl-EdvO z@#a|2H{N;=VxD9VIo>RFj7jqJ7xD}Ntyu4G+$b>KET8=G)*I`;;X(Lvp44=5y~BLY z_Q3kzTkHeeINe?EOhP2*yWXe;7@9OZm72tarV4V4ft8 zT<@5gKuMl$g*3oeiT@5m=AS;V-KwVh6mxx`EE}Be23Vd?T_`p_n+7vHw_T^ zD9-7b8-g6XqnIX$XXXjz{|f}(iTHk&z}r5NkLKq=LIZcc>wP-&%A4;r71{d~fqxEY zMBabX1A%~A-};`q0> zF5esVZ9@~pGk&4``z7ID%kiD#(`f1M3;MUvAmQJiFt0rS)>NeLhXVg=(EP;uF5M^K z-v-s_A?^JG^C0~{68X#6v28@EAHPNT-!gumO|Yg?#zHbgORvv#R-aUyk2ova=Xf;i zP4>YVsNQ#?U5&N`-1^FKkYP)QyXmP|a?rvkLY zS)N-OwEwB`7V1Z(m+1dKb&S%U~BfUcG|00HB{07jr3jCAY{YPK?+^30Y z!g#TxlD=aE9?tyt!FsB%=$1Rv_8;>!aP}Yj%w}FBhu+t4s5B7Cfx3mY`#jKMT{Uvt z+F9=xD7$;@r}dF`M=W4?5PshLXsoXL9d!zee;{bF&RTr)JaWCR_~Ph3hcZnFFP2i{ zAx^P)$AET`fy+dYK3Pq0ZBxeSm4*6yvC#i-pv5|C@NcVf@)qy;us)YFO$r{FobV8*SbJXw z+GPeV6Wz9JB5%mAQ#u;NvrIz&+n6WGBl8AJ9b=L_ONBi5f%b7B&trkS!Scz^8~QxL zJP2RLtxQLieZqf8;Qt%6Z!rGt>*;w;&Aa}(A# z*ZPX?_zrJ{!A0>$VE?plZ>A}Tt9yWOv2S5<2ZKkOfz3pB_SU$M!~QS9{^}f*+(HN` zr6&rfKZY`I@(UeD_*fv$%S?nHm7#uHhFGrbQ8b({D!T#=d#>FtLPOrx{ZF{>_((L= zX1eZR<^G>PkX>+2!rEmzWS?i*Mt7d2<1;!pk)ON`Nzva|HxCy zw~q8hEMRz(f9U#8Yz~J-JYJ3za-9U)vxQub=z5ImpA`FAJ!SvkETG{r0?Y{&s`g4iq$urKX}iF_C+jUXbRvOv12=2AaHT!ukURFca+9e>)Gqc z`O~$m(I{^oy_tDZzv%cTpIXmjs7qKsy$iI+qxBWtb%l;MRKJAn%KFKEL0)Hgk$pal z`vs3?tHf*F=`Uwe1t|5){X(9nz(d^sclYQF&GxC|<~gQG$F*X|xTsfHJG=oN9~(1d zqPq{&xTas+`*yu5<@F2B0vMjuFFHTSBQ|zeF63DO+SNjymqfl3w5!lh_RF`-OU~<# z9C|XN{#YsG_!;y0?^%v}y6AaTJ^xSK-)nv$*ORi}GHog@#8$XvU}E~CYy*53^@V#T ziF`Xg?<-e1pDHwkIr1R?H#|um9fu}~l`bTY$p6cb|CfpN{+^rj^X()b6@57PSpN-= zq@Rw7$Hy4o_$U+We;L;QvZ2P>ndsgLg~vx(4b!CK3jb04fe6_4$0&T?PT(F{aD3#c zlpG&rmOOeAXU2 zL7x3AOmy$N{_*MP!QrSAkCyGlyprR@(u?tlXD+cEsIiq{oz+)#UmrbA;`rZt|9#nf zrb)#!AD4@mXL4LhVuecmuu#Z@`e7N@4Ws++@sCT% zCvRLL7BD;rU&l4LiK;Tbg-ksLk)IcW_?GQ|8ECI%d)z-u>}v(`fHKrV4NV%J8jYkc z&M8>Gy9u<|N7q+$|3a~^rRtD%PW10lfz0pv-!kS&^5}Y0f|wvlp4){ySo6!UuWse} zB!6Ek!G}hHGcP{QJo4?Ks*v-{T{E#g9u@e{gZ2#rpNSqABFab+8_D9;hArLOHE3W{YCy?hWx*5jnMzWko_&6eEY9v z9@-vljbrD{tsFC}d2I7|e3&<;aYkGqBmD2!9{sYJY(G&Cc<4J}|A7DZ%P~zFp0R(w z-wHhB|NSUZC!M2zmJ0hT|F_w1NQHd=@7IZWYWw?$t^NCLDdZ^y?I5=QKTmY*@8gqa z|9)l6gVyKwoAc;qHP2I%kU7pmj1Y2s@8p|id)@K7eyIN&nnJj$FVv;_ zzn|C#=+}tvc#f{VqKA8ETopIJn%W;iC3iop-vs6v@()cM%QIfs0p~sXi8{c;W`2zG z%%EMZej;w}w;l8H$$^=6(!4p?mBbNnvddf{2lD@Z`x~=lqDR&h<09~W^?u0z4NV%J z9Ty_+@An7Liv9LSh9t&?svDP#7*XQ7mQcYnF0lV^c#=Gydx=R&6`%D(JO|&%!Y{M^ zFsJvs18oV~kJb(y_JQobK-m8r;NE26qDTH39+$=lWLMe$*#9>?WPendd9g~&i_pL8 zA~dXrC+KzeoGo~qoYv(OBFTNna`s=BX+a)6wo3brn6G`p zS-sW|qsQBv{c}%0 zYP*Vgxj)VV7#=h}K1}ML9F?&jC>?FT%mt5KgdF!fbrf&B)PD!2Nyjzbsd2XzxO;-f zp#t}_L>(pM4?-n1Q##}CAm-`!Pc!!x3GFI0qs>r?M(E9 zx&K0qOO;1B@sdx4{Pn8;Wz3W0iQ}atF@cgi7Yli=1+CZ@cye~$dX?mpw_f#M$~^Rb zs_MU~jdXM_P8|sMMuCepzd!cd^%Xr;qW4o({U|ga-p@219C8lAxkunU2Aby$OeT72 zlE$HZhU7dbM2^ku`uj7?i}1gt@vn(u48ng(;3Mbnk9bL6(Ni}$&&8B>ishGn{T9>a z={rr>^>u;w0cb>>;OQdAuKxMuQ>O9Yuw6eAILQC|i~RrTrowh5k$rakFZ0T?>oj3k z#H?l<4ag!k75V?u*97c3joj7g#{s`*+B|*5^N$CJ{r>^T{|EFn-I$5~y_v9Upx!fJ z3#Rel#CApe-v4#{4srW{P0@ab*c)-pfS=I5$Ycj2PAOlF_L;?As~?oV0+;PN5Z~)8 zMD*{`h5MCE=IPe~HOwooU#G_ygkLG}M}VeT;9nl-S3FBul?LQ`G++$V(mWW)C-L}f z#zW9-6(e4c28wK%P2g<<+T8@+P>rYN zC3T*~)>CCZa9mC6yUm5FtjL;jo z@&K{kKf6-`U!9|BFaDpImmj|>#y>;gF98ke>c;NRKAgZ;_u;k||5E1V$FGj@|0eLS z0nM!jJ`+9HCxKu8f55+)dHL~cV*DEf{xZ@IL{~w~YV%lmvdw{{jDN=0)@03Nij?%xvUSYLfGM5ah}lJx03Kfs}d$6IsXpCx@~w-KYX3E zL##j6b?XNMi$K$p@n0CD*V#gPi1~M53G)!Rc!(MvDy!f0tMo=K(BcmG1>aH3(^vGu z&l*?qMV@Yc^eO*79%`_ey zw(AUmvm!!; zt%#4%4^w70PqL;Z*3_Q|3*2Ksdy;|8L@%ut@z|O&^Oy+NzPR_t(D?C4M8^A*z&j1J zS2Nzry%O7Qgus4K>$+SeFJOw;YHyY9RL62kwf7 z{iK1-m|xNVh@Y|pV2=TaBi7bM_Qvy(tUq4|Jk-_o6}^0NUOdS1$Dud<)Y1DE=Hc3Z z)?{ygW1qz0V=W%|h=I>UuVkG5Hn%Ohc7Bj){CJ7}7VGf9CqVm>z#CYgzl92U{rx=i za{F5o0fy}TjL;W3-#`%uymFS$-Ud|YA?K~-%!6>hq;&`VG^25*9$thi*8hQ6{|A1} zdcV4^zJD*Cx6I=oTstEVH8frvh(|ccQEh)>uW68l$waT#Y8*9hndiyL^?*gDnalC3 zpP3iouX6QNFoZAa`-39TV7=8>^y(7l`CBT#VLK`Lgn zzJoT$_bvu56TP;%V^?q8Wl$%k@#1K^;*1&NV9g(dy0+2lwb2Fa$|C34bx;}ea_t%u zDGbt6?Dr3<0F5{Y_}b+@yK2y+U57Ajp1yO0U8{w@qd+6-0k3y)>}qZwcl>n_VgWr{ci9cV;7;Pq<*c2%HByCVNL zw64BmC$&x$b`|;mAmsmp#CiQUdI`Itp5?obbr50!L*vC!a$#K?)PPovIRp9eK&hJ)aGOIgY?_yqr|Bad7iHJbRu82=8 z{zIU7Qs7^o*-(88$}i{le=#lnK3+F*1J*Y2UJ>>`2@mmz#d{VsuQJ|S$BFS0*smD$ z64Q8bRDY{=xMLcbwtkhSL_8CUW6a7o0dpn5dM1tALsuE;hdem zqPI86^H)osHxI31T36q>m2}p{*cImztX&ZUmv3(1GSS;dJ9gzfYB|6EuY41ShKOn2 zK^!*d5&YkqXiuWui@oLrXvll|%|*jmZFQ!vBQCGLrhl-+jwgC^#q@^YpnytvK*e^AK~??;s* zKC${@%`X>qfp-pf@?>vZRF3@L(0FjvbQJ3)^8a$I`QKP1SESV+gvjx9j{9-;T--c;jeO3G~?27or+7)Yl z`Q8HW4~|{EaZx$OfuZr>uw6y|Uye1u{1kz6aRIv;k$rZZ&%9i_Dk5!H#1G~5Xamr0 zM7tPmG1?($$cxKoqjkkNUxS8uWNly6uZIXbW6du=-=ajzv%Y>MrStps9Hu3G<2nHR z0LhNtiy}P4C$?X)=9gb7@D9*W&x00)`jie@E+gOr#-5&l?3k*8K8^1^zG2`)gHxra`s*QeT``G_;iW z$93O1;~Hl+&Wrz4M`P(CT*N8XzK??z>#e?`_wE;U=fFB%{%@uU;Kf3MDd8b5v3Re5 z7VE3Ulh4st?>iE&k5Eb{lyIIOQvMF}B0IUgSP-pcY(iH&zD@+7xY|6ll6zeU6@C#|M;n`Q|MtK z*!9LEL-;W*5cW@@Cx8p624gf2V?yoyg%FhV^eQ3=LhujK-z`B zH}mrLzkQ3Dw*MZ&4mkfm_$VRAe8=Csb^5`FGfe=`^|wO>9^!++7Ye*9+U0MgL7v?g zF)y#bAx>6##bCrugWpF(elr-g$iXk5AE%^9MgA@UKqb z`~BUIkNn^8^7>yD9~2_{i#ovI=Rk||cKV7wUDxq>HEIG{}MDP4Ty?fWKic!0_<)ca`?HRg8;= zGG!}JU$?lg=>8UQNd;>B<~MXMIy~n^@2Nc1NCU zcm?z)e^=|4nO`gR1Sd-{)zrXqQM*eSj1@L2k6ZwAy^8boQ+3sJ=OW^zc z&5!>O^YZq8ZNlH~7j{6MxZ*`2$3KO?VIRy_Z>hjufT0QCx&HRFz*FNM>#M$^FTQS< zzmW!c{+HVYeCi-$lioewc{Ov2|;qC8QJ-^^|AKl!^_Kg|4E ziTnR5dm4Dy{hI{7-{1ZC-I?^}V5byZ){%4G?E^ZUEs?)NaSfc~++WBsu6>%*XV*1%_? zRpy+K8E^ji)sO!a^YZ#%eZt=#7jnD=TCBIm4y*p?&aWn6bNu~vrU~G={{D)<`wwWp zFmTZO`gZv{X^`jdpD{15zt?Mj7x(*Dq9#^l;WN=U8>jeteZb%U%RIdOT@Qa3`~Owz z;rDdfgMrB(zh}Etp*A3X6MZwOUH&NS;;9qV$8`dXHS2d($RVq`SvjI_Zc5vtw`l73f(SisN(@EpIZ>Mih4`>Yxv@EY3X zccekm@2Z9}FR$O>yrJq}%xi4-Mtt8+;G6w^+Gj~*$wU2qSJlEiynZ({o@Zg_Y|ZUx zm}6>QKzlEf9r8D{>nwhUeIUJ?gx)(rW}JV}SM=@jgunUcS-;))VqO9LX`WTu}+Q4U`?~-+3zrXwO7cejKzt0o>R>>P(WQW6q9LIt7R3XRJ`o8rzuE1SX%FEz4 zqFz{a64Qk6jKdS&2?7swqN)o7-b)%!tuN|+A^$#CtN}!EwO}a|He+ zpt+XuzpvBh?UcWJ>}K_l`d`gFNdGVLaB;_Ge3AZF2>hEsdyl|BOq`cD_ep4COaARi;5E10_(xJ zSymR`hpc**&EzvO**)IMWDi;&^r$aS{Qj5QSYn9VtO`Z;&}`SRN8*-R6{v*SR|9=;>5ws^m^&;QMal;a0`GB3aX$M>yQ?6j zfm%VDZ{Npwc@#9ep>wooy7B%|sB?-R^_`lcw=QFR6 z9UT7`aX|H@puL{u`0+OhIRgIgl>_s!;pO*7-k2nNTqW#*nt%1(LXO>C|M%s&)psyW z2+#5VTLs<&pnX!{o!vhFHyc!rAO4GZ`TakBZbG%#_pg2yG;av}@6-IBHzpn2SD1&t z-?1^NA;{h@3jN;&?dOdDQ%$1Z1ODgLA2lPxDZZKk!DOem@4k_bQI_`8`8wzWh$eiFLcC*a{l`^rQ9{5f9g_!@mjPTYp46RQ)2_ z2WY5uRbK^Ktfw`#XgC+v(UU4dWRE#4NA)kD74gB(XLRP@V32|EP*-D`(s%**Qs)8pqyq4vh(?Lp9pIN;Y2 z+7HxwVZKh(Gtik%|3AjGUb|1PaQpvZfs6IOMx6Wm^+>I^!cCqh0~-hTWu^_`+WuC4 z|AN4M2j9j0fWO|Iid*U6Vy!Z?e*4DH$3i`m?Td3yHK?QOEBf`v6#GJG2M_taq4n$O z=9e{J3EZDh7r^?auUw`+MNf4;RjlK+S*8u)I`;jAaci-cP`kN-&Ezr*QgI#o)^5VI ze*4CG6lx~czO|h|gZIf;J(s1}7aJ>%o~WT1TECtme}W&?b`iLJ@tybKbD8f`^i=0D zrF{o6Z3x%e7xNWxv$d#|)M8z&#XMDub*C1!vRcfi9et_!3fOG#W_+JwQFGZLsd~Hp zJBexi{Tt^A(3A0If`;RPTy}m+|5hjZ7wf;F_1oFa4`5ry#hOsNztHox6g}1XN7=u7 zGi?ah_OG%p&MBJsr}hu{ew4udHWk;k?*gXv+c%Co;X90{{EOp&+;3`9?2AOj(G%;x zq4n$O#+%Att)5u_YyZl6{^k!UdaCnw(!S?1Z3x$~FY2on_hQigUEto5itE}J@qwZB z+c%E0YA+Lb*MsIUfwwBfzKF*iJ#S%Jzn&t#QvG-t+D&NBpyAAI?dNDeqQ1JW#qY2W zG*8?l^nME1FI%|WZ!1#ltj@Q|{(YWlLwY;?`;5SS1GMi8+=Eha-Tqz9wEq5$pZ^Ej zvOj$SnpFbt=9K=$eygJ=?gcQkem!vzO0y>WqF!PB_y_bW>e>3r{r1ZgJ=J+CVPA-0 zX-Usyyfp;-@@gL}xt}#1{~_i1QONT%cy4UO$>e@lZsg(p_#qqcZ~XSHqdZ0VtI>1F z7NFtt0J+~CkYZnTen{%snQ8s{;NXwY2m26=+Y_{dgg)0BeLV50IzJ?Fk^dXo5U#Z2 z5K#vhQU%(H0(V6!uH(N$>Y3JW-+H?L3V7KewP>jQ4%r3mU^L`|L(a6g9ri)_F|gUr zQ}KOU3zv%qru45mFC*=Y`oE#|+ZhL4G;6}0A#mq`c5i{ZPl}z@c^QejJJW`6o&Lr9 z39LUK0NTR^?zO47ZvP@@HMIWz9U70Hg9YBvpgBq4eU@ThbuL8ec|6nl^~8Y=X|q*O(sM;3-v*vBF!?X)C05TnLHkdE`>{SRuyYwqju+8g<} z#KYdPp$+J36Kc{I^$Dx*hoJph;9irauVv%nqZVLz1o5?@2>(-o{~c(575JZ~<9qFm z8ouEXuy+;V{+DsxMCpKz~;gF7z{gUWfbt>-aoCZk^B5`WyMW?C%z)4cOZz+=PpLXNx-xwA-`3 z>-JC6*RpZ(=Q58VzUgn}Z?gpc&iKBsz~46=-)rx^m`A|gHKh0M0{0-$@IF9p-Rslr zjr?8Odp^?!^tA~%;T|Gz5%1NByno%#)AY4$TzusJhDQ)z+FRuRb;$qgME<|tz;t}C zz0YGF0ejby-e(KFk^k4>oV&hq>+PRrZ{+jR-pKzAZ9rd}kpGJL1pbw+L#$YL2paYp z>dr<(j$Zc=>bhT{p>Eny7wIkP5Owzf7w78rm0Qo8Yxl+rRt;DGN0>)Yf7#y;3A_Ir zw67WXOm4j|()zoW^Gs>~mzW3P$NA}$ncGZl!ZXum^66H@v1)ujFYr+hsr!iW*FRpz zg=*hB@SLJL+zVi6{CH+}PvgBS@KAfHou8eG#A7`4sj4daNh<%5AWjcpg=r-B=GpK>mw5O#R?YcGyNZV~5yb=$H6B z0&Rf#Rmc4;^{?NYb@BBBpDK;*P`?S=p}rWjy{(+N4JJGN&d);>epX+~G=4m`m$G|3 z>J!H9^{CU=Bfr&GZiA!R)9>aqo!jsAs0A2azJ6CjjqnExe60EPSXV9nJG$R_oLj%) zQ;iASM&{wupHJ~={80jb0%(zE8~hDBJN7omXdVBqpTabLyo9|GpICd(1?{c|E|c4E ze0%I|PH!dj-idkn?2YZC*xow`e60EPSXcFx+wj`3z4;Vh0{1}X;nSZ_jcNS-1pWfh z9%ta8|3{9!z0Y~CKZa@icnNzWKC$-3nqQA~#pt`y=Iyb!Ijxk?`%LELvv)N>)I3zb zAKDXW%h0YxL+!KvBQ%V?p**&YOl$RT8egXg{jUb@QVWsWXnwfA`P5oM?;Dth&;EQ$ zOZWG+0{;%sJ|OVT{zbfwnPal<_`+FpL*vIw^f%%o+uvC8>z@^P@3yDE&1sy3-cK_x zUw>nJDIQ->2z;#h^;lQ+mD_ks*xr09DuMeZ^YH127R+bkrNEv1#KJ}a)P0MMmrvj$C?#tZGKSw zt>#SQZ$lgKeLIVg+vJUKe~a7sUA@OM51;+T?d+ugjDeZ#tlnskWwJAnAI*%=Zo@qs z`1i)|tSr6{*&)M0vk0_%pnVLw_0e!&$ZW()v;UdNjyc*##{Wk8j}!W1%^xcE0XE&r z@wYmC+ncK|WHvN@eG~pB>i6WiZ^ z1kEV||LSmmi`(g4+=a};r@y$JJH|g=;A71ndcMH_k7I9hTdj+SyxGwB@e=m_v%tFu zv|_)1vyIzhZ+knjE60`0%V+O;V{egn54|2Vce1{l{UK~`aXYt*dn@zs=`U_$j_rN3 z(Enc0J}U5UbnNYYuJusVCk%}rFJbTd1>TdO{ZQb&*&ch_+gV+`UtnH7dkBLjwjqTj5`c#{xGbo`pRu?_D9U~BINn;geLt!B=h}Yn=&uz_xK#Dpo-@;)FrIl zhZTXQmx0gZwpc&!xe0>afB*Wh66WF6UlbaY{=>Qo{C@bZ62$n*ZPDV|-4q%eJphL_jgC^V41xIe+-W6d8nUEsf-VsBAs zaBwFx53l~B&_MVT1^yh+9>n-tZspqB6dD}7?U^Qk$M(j&GVDmSZO|s7U4wQ$+9_zS zSlkZ#K>BVY^gRr?$6C1DmgBU(>HTdB9gZE4{~KQ3{)QhDzR3HBVa*?gbyZ)vE&ra< z-=fgr;GWJry!ID`4#G#AV*Tx0&|YldGr284aQoX7Ivl(Um?nV7{jJ6`;u4E@1-{?N zcw3q0f27;n7CIa`u47(ad!x`n`d%aOvE~oMx~i|-R)?k7TND}`+`E~FSAS7xAbi9r zR{w`V`?P`24G!MpOcTI!?Txs^;-S_&>@9(}yj}in3k{AO*uyovy!KY- zSXF;x99#VN@Ez-!zH(cSO|iEqG&s1QFb}W(qR^n?mSJ}y7TE&rxA^=aa`kR#o1pE0 zHVJJM8fs4+agqLr(~SPZvyfvwiUN(4q8&tr@>NzN^3^zH*&5P3dn@=x}iRFb^NDI=e%-Jq0e-{NZ&5 zHk0eLhsIUsDSZ1nVqao-4byt@^g4|=nDrb1nkIo~p6lbm1DO+t4Ijg_UOc@{Ahu>a z)c=Ri5O~YO`l)cqvFB8#_2TJy5^+4^%>~WQj91h(j0bWTZ%3x};^}z;IRoRN?lAm7 zfwyfK59BW1eoX7dGk%Kv#E#2DL3512J3ovEau*Nri=p-6p&&*6dAPts4Qe>gIk}>j z!gy5AlKzRhjG^`7!S4xgp}<4kYxqA{zs_bHdi+xj8^>R;|8Ho$cu2_AJUbk*%W%{X zhA+)zn_$nT6VULziT91H0BidL>3g=&_eRKZr$xzio*cF>)f1$BZ(~}ozDS4(Z>hjT z{y!Y+tiE!cPYdHwJ}vQ3PcyWH7oTUedDOhh_vDVwo|+#e-j7V{$5ZEtu7>5Va}fgPK}PgqniM>Wc?hpm;0*#T3N8A|72l`v zo`armC!Ti}OYUf3LKR2{ut%3tFr%CfsZ}^5!(y=oikg}?~Fa1dXcMln(~G_9u_c73Lg9C zVFK?s(2D%J+st!ZGU8R4V$~;LPUB`5KlX?UFfpr@GksX0Eb0bR8Hb*--lO2sY zbMzW(hYtHd_CHzJ;|k!5{J-0s1;&T2aXI7jTILb-M}1VB@Uc%}$LFn}ebB0#>$W=K zkKyqV?hnKQhG&XAJU;Fc@;nOK7g(O|+a=@)kB_iC&oIxRzv>zw+2<)C&#RzaF66o2 z86T!R;f{~Dm?i~}$H(ge5Bd3sRRZtxc8?ERgHzOwe|*V2Ngm($P)U-aQ}gHNLY^No z*^$4A{||rWN+uWZPhFF9@PA<*L4VLk>k0oS#vl26&?2AKSFYr&gg=D+GiZ;Ihy@JK z6nU(Fj>I_yGhRlb{y$PBB=MCiS(T6{?4MzIdN9wRzv!AJ&0l*`A7w}U1iB6J8Fi=; zPvP?vBUZ=#t@>wVcVQ3glaItcx4v?vvz+naJx4LJfoW3owc}&tNP*W1+Svv!lPf*G z-Q&a7Ock~C&ymxaC&}X*ABbs)PU#OjTYtbl-^e}U|HGfT(hm!a4_!lb@ONPzL4VY@ zB9Q&(3H*IQyMXa~^hx+*czlHIf!x*bOp%Aj$H77#)ci+^^Zq?fNyrl(A7Ob;VxB>N z(KTkW&j~`Fvp~B<*k^^~pWbr-BhO))6g>9N#RBhdpv5^ledT%vJD5k%AM~voYJM7dFxp5o!iamIIye#B-542yhJiSU1 z@`T4nSf0|6tT2$bPo{d9IJVugq6R(uYVL{SgZo9>MXTAB95r=yy9lmw@&vf&WEfJcP$* zxIZpqo+}uADR?%{8ijKTR{tkK`zrTG-}l-*KKPI;$Q^lJWS%6CZ+z6nn56%6LLTJ& zqp+^(D_3UD&4lWl`p~O`|332w`h$Ly4B;;q_^N)ju7S_w$`&U4A?%-FdteSUJX7R} z{S))Ws0nBz(6GNUYB|~}G|V5P;3pk@kv&j1G5#@nBgo#xqUOpzN!TMiK7#fbjs1Va zGw84SP_mL|H0l;so)UaF#bm_c{U*BO!z9YmA4d0PniM=cK1TNtc;%oS&ieN|qTSVwJ{tcj=DCBvoKzyYSDLeS%nMcqc^`m$QU!1=mJr%S& zFn<5834aKWkFY(qVV)`S*!g=j>K4`>$oWSfDC9XdAy3#p!}6dOV0Z@oMIYiO`|Ks; zLC!x~?Em+F-}O(EC_DXe1kwfKDIrgIe1zpe zEx_<3c|P{+BgStWqP%o8&LvuT)O;@X{|6qGDN@pz=iB?FA64f11#L zf8ZWzQFG-VC;TyGd<6SrKJ!eohaDe>2zmYlTIA9C$_<{7kSAq)1m(dxZFq+LHQvxA z`z#dlpf1sHfe|N@8+?O1K74sJ)ZK0a>rJ%i+<*67|Xne#Qx(@y_<`MRXcte-)Zx{H;`5T@Q_{S#vA;mv~ z_CPJb@Jy4(`scrdJjnSQmJ4~_Pso$vpFw$03otyx{t|EKl6}Pfe*^aa8-8JVDw|#Z z^yP^SpD|4u9{DHY-iF)J{)Kin+Ctn5jWxBg2yKAH?XVA|FX|-59~)6qY}~}cCQv00^k;dt#P<>*&#Q&TN4%ly;1@HGus_Bdx`dBN(%J(# zf1^H&0V#4-MG1dQ86QD=pcY_wrpaT*hw=j}4|4uSvA>UZ$hz@X%J>M%gIa*$8TQwB zLznC$_Wv8P|KB*B`={z%cYOHr)W*q7lZI#J??%)qtp0OAyBp(GZ`gkSlpA)Af9%9O zNgl6%#v8h%Kk61%p1nbPsF3HNLjDRz`rHo4=Mf` zv~CS$Y5G z4`h!&342@!9OTjZ%GGR{ut&=H2-*X+0K+rvuknU1$#a>I=LXQ;VZ_PgY8E)-gWtO* z^1{Yjm?jO+jt|r+tUulZ+Q$Xn)$Jc2a--1k&qtUi$>SX#@kTD`|B#U9-=KYs<*8k_ z(D;Zqavl7am`B(j;7?5WL(2FF+5@!!!!u1DJAc0~BKxz@zEj5KgMh+ z@JsQ1puoSWAinBWr_MR1jCrKkKc-Xoy#;mS68QDZBSn8o zkV$_GRnxy?8bLeBz-MxGwFUGy=ayyvw=j=Xd}IG6fjnXPXEtk z9x3*xD30`>CGd9!?S2B^oJR`TU&n$D{$9)@MSn`b2!D5he=ulI7x=#xu)jH%EA794 zd8Fbi`(wSv_)}v*`C)b({vN0Pu0=z?bo52~A13r)3^^{csJZ&F1@(`|k<@<)^GNA` zN-zljT!D|6WX$yf|KtMWFHTe3@qZ2TNU=X97=(Y7z+Vd5dj{=b@eq}ab! zp^*OHG5*+WCOfv6@rQLOV1MG`u0LbfVIC>^Q-DVE&$*EIDzw|t9z}Z@?L#!k)zO#I ze{3Z5FU9wP7Bx3)hXVFD=LJRok1b;!sru{wAKP2tSAuqgz`v{@eqR5Nt!Ex7{ZG3P zq(A!5tp8&hK|4v{e^{XZ^oBQ2D^N%?XChb3$ zd8FbS`_B^iJA-yVfnO;8)UU#F^xunlq}ZQMDv|!X3;csYd$hp6set{>c_*p=0_KsT zKb=$}{KEwPaiBe2;IAy;f9AZC#9zcbQt^%b7Yh8vpuL{)M-+-b>+;v1u}hdoiv8&% zjGBKi{<32c?~H9in}xPJ+F@u5(auG?9qnbb57E9uTohUP{^t*5|8s@@OM&sUWt$su zM1lS{=Xs?4mobkN`_oArrT@rzXeZzt*u~f3_S>|9Qy%mi_Z^GL^!pQC|XkM(Z^?IeMJ zZee_Mql@3dJksn>bjtos0)HC5Z!hrQC}e-dC4oPed8FyDN*84RSpt7&(C)|hqq`Q; zU!OCO{=XOVNXOUq-(BDz4BDdw{w{^_^X$KXd8FB2l`csC!vy|upgmpS|Gkj?;{u4| ze~Xw$n*OSELHG*={$kKxFYrGrq`%(BmiAx5Jks%Df2@Dwu-=b53=Ql3xO35NM|%|Q zWh+OAeIWhM75Xm)?!6W+hjS`L>RVnv+VNjS6QE=NWy~XwPRu{5bV2yH3;c&b`?SD6 zv{3)+eOhV%$C*c({Z;9L@E;ZU&x7_Yfq!Qq{q;Vr#D9%>q~q)Hhkmx}&wHRR!`>WCg>Hnd?UkTbZjNjN;$o_Ew#OeRl%p*;IRk|Sj?-;)+i+h1K5cnq+ z(qHdG3i~&$!#vXQWBWHn0)JD`77P3*3gaj3-_(hDq}jh#+rMc`fnN&R5sW`(qeAvq zT+okF|1##0roSp3(ENj(0yfA(j%-tJv?kO(YSGl+v(R?8@~rg_s{es${lBRZ-zQm^ z+?Z*F?63FPr2Z|;BVB*p|4jma8fdo{_~#YI&+GrW%!BabeUquPrs8Q(>d(Y;vvKbn z>%TK-_hJ08gY`M@uMvL*o(I*m2h#-b)YdFrWN+M`XXcxx13@d!1ETh^h5F&I=J~SK zvnG|8_k$%gP`9f%es?(Y63_DzRPlU+XWubC_UD^UA<@(yxv>xE=fbIYGv98khwSf@ zmhAB$)GvEIma zo33U2aq|-Ra^JNO{?*LO+yC)VU;-mMTp{GZIfy2)KR@oDj=!1Xz-~X|UI0TAz~g>G zeADzoCflOgduXfB9zwen_j=;KidKyG*6C=QT3f8u52Wu>p)dCTn_jaJxp7~$%irx$ zQ>WiwW?o)@$HYMRF9>|pC7N))O<%dD=_&pmcwTwa2h79kZ%7FU_dS7&`~RALFtC|i z(^(0B^ZUDB?{Aq`06+Hkm5kqvI!rUp(OJD$X?$`1zZq+g_znHk&O`q3!1DR#3p#)q zBa%H3*O+;)c_U!aNj3WaT=Oi)@69n^$M2grXBw~H%jb<_zG>b>;Ni?)b6>4J=DFtM z+vRum2&weD=3dOp>vu?rl)lY4UvBjsi0`^q4k>cYAEx-7)I-d(&DG4q+wVw)2p0tb zi;Fs5^K908e2;edonP;<%qxIjsp6R?)QFm~t~6tgZ^k^^d;r=`Xc+s=Z=t~tI_e_* z8-)Jb0dG%>mK(n?p}*g+{rd09yuAJw9~mYvl4B5n@4tfPN`ZTOqQCv~tY7cTm{$Ow=2`eS+x;J)xt;M_J0dpnmW03g{oQZ(Uzt}x|JdKf zIzImQpxNANmz!{10^jfNUi|SJGcT|I#YbuhOxXc8x8rVnCw#|xtFPR|jfB4ko|7~l z`&x!3famx-`kC>t?=>FrrNtZ3uKCp-*_8f1zMOe^{T(F+(pQ}OA3p>%4F*1wn|Mje z{2F*~!T6EP!`t6T?Fo07&>J<0@lyrvTZ#Vm`qpENpw z@Ao%9{tnE`+yDAmM+%MXu&s~-Isf(4r=Ry_ngE{bZ+i*6LqUu6RbRPD z&$Y|n?6YJXIgVytUVlTJO8Ool@J|E{);WXUR-NK+;suco?rF@!+uu0Lq2|}|+oHXS z_7U3mXpf;SL(YmZ*MhoO3+go;b&=kSgx*&G8|$jRa%~4C{LSz0e!E}CyaM{i{*Lv- z#Bt-1r;mTYz-Mx8FDCH){_e-ey#R)n*Z=ghgA^LsVVRHvXa2`yz13H4@(|bGO~U5% z_Y+JLz;pfmF@cAA#rU@kTqZYpw|4oveKw3E#~aMc>+d*2L;Aid@c#oEu@5l$Un%}B zUXbbFe#$(&{f)CTg!_@eT?zlTYG-m&ewXNPzrXqQ#(50GD}Z15tH}Rb*2C{NVsQ0| z|F>zcY!Gw0jF;0Yl^U zJMn@|r5|!5JKkDK@qM7cTiq_dv(J2SVkNQN*eggle1is&|{rGz^FR%aUXZ$EMvcv8|j)Orf z_5-Hv==!@!+#Elf&olu%XP!krv)-uFw4BO%PdmL`{%)V);>d9_^YZ#T&MJ|2bbd`^k;-S|l+1V(naRoDSJf6L=Sj#c`8Jhk8TQ(2Yo zxj8L}1q@9H&o~_6JtXi@18foX{~0A3Pwo3GPdqm#sR1^;oPJ0B-|!;4$L}SQRI$H_ z`hN@R|1F=ezB5kH@0n5SlE-dV4>`Ynz&uF*FX;I=5*ItW@kRQ-C-naUwEq?O4~h38 zEB*a`XP-sm=>Hw_3dvzoRFVVr5j)@gf<2%0SdN*!5_0(c&nri3j(Pe0fj7XE9C%Kt zm7^6oKWb#=%FR64^*>)8)w%`Kgz#*?DZEVu9&-Lxth@Tk&Ah#R{%1Bir2SiaGcUjY z#pjD!Q9o^6jCMI1=J!_Aky{bpw!Vk+ZVey48=gi?gxDD01%zjYg{ZEn`=gx>}H-)n!=0t~N^9Mb=>&&htbBWU*#a@>`W zBjEpDIrd;)et+bRFtW$4LXHDLyMX1GUF`b5FRyAvEx^!(@Erd?Sl}H4+C>6yLi_yR zY=}61u#kEA{Xc$h8vLK_egct;{Es)n9Ncr5hri$TO_6{hdoLFFe*>*p_h)~e z==XsCdG)`Fd4=R~{O@uh2iE^qvHs7QoRA~ne_lDT{u^F?f8dQNvWHmzTe1GPiuHfa zQrG`{`Bf{{e?t?(bNo-N|E*a6TVLb;pYv|}{LgHVIDUZj-|+JLU;G|D%(d))Z-Ztv z_Wx7j65B5-e#(o3^v$8l4r(3#nfqbFM!@K7 zwa(3bzkU91@ua+4F)zPA@MaF>;JY}Ci*=v|9bVu`fqrJy-oRzv1Qg z2i~|Mdx-Ua0@nWt3ru%pa@)S?_@DQAFcYx;8=4TF;D9?{%>cVzfvIo zG8-t4A7K4Ay!`$bzvmNk9phvDpKuN9yWM_i{>K|v4ldSz!^7Y2`lejvf0%!p5N9{7 zL|cl6Iv396WSc9{8mt^0_JR6)vC#hp$o_;JGr^S!7? ztJ>6-po2}?iqK$>iF`iB3YPegZEgm=s)?TodYmbmh&7^ZG8*QWiKiug?fFV}xJB6E z8OZRu{b6qV4HI?_3jA4&uEq_#Ver@b-(=@sS>K5`lQFTEg~{#E zoYKEAnxk(C)B5e~=C>2O3S89uCsqsG6I1N0&WVctoj90jL%6bkCt{z%`18bi&|;m{ zS8j(#QgPk>9mTZ%{*CjviNggR=7Wji9KephOR+EF4@b{QOzYRv&EF=r3S6xD6XzK< zGr1kdr0A*6LrVK@$Fw0_$G&p~?rxyPbM}mVcRW57*R}6HOzXFAoTsRH*!JfiKy$Q# zgP#9Pu`m41(Q^UQ`t=m~iJHF;6S&9W`-O}PQzKed{5|uNI)5kai~7Hz4dGh*Vm$(G zcH)U>Y7N5LJn=!aXVG}y*9x+>KdAWv*lh1h@%>b#q@^KDG)x3e36!?uijA87w2aPLpiQ=NB{xDPXJ2-o(nvhRZe_i228 zS>XPXitF0<1*Y}eH;yymJFF-6{3m|Ecsq?sv2Sg{zRQ``ucwGFm7efdJ8rS(Kk*xZ zdvuDP>U@>7?^jG4!gcJ6^9dGrHP%|x)%BIz>E2Xa$G(#?Oq>7SdyMT|m1pZQPjzlY+86o1p$*|W_7!!2NoRug?*jMxR9x4-$o~zk-@Zd> zo|uFh>m<}zC*6dGchgNp-K!M>O`T(LJM07b@nT`;>mkD(7B08zkd*$#xO41`8nL1E z+gU%X1?&k|JpXsnJ)nJ5;2xS{XLU|O_U}VX8^U$^7dE!z=Sk4MC~$8}#dZ7lIi{ul zP3FbZE9pE3@=V54^YVWL-naTZhl*R1>ldE<;^>K5fT1NlllQ#>&ur+Eecu$gAA@!k z&1g?R+*P3KpT z%UgT5Tc1)}z_*nl9k08FWH{!cC)KJ>$&=A+P?TLmwu?=fY+qqVb4*Nj* zi}<5$SKx}gfA{ax_4oGoKFlM~-_?Y>r?5Nn|2C2T?@^c5->4tR{$9Ye0ejm50O5-K zzYY0++v(Q4xjp8m>1)}z_=}iF5a0B-8s7_r-dL~OE)@88rsI3|H~8!=J35 zUkaLQ1@7uJdn2Eh_D241XaoA%gq(0i9iR=dNt-wauxDMGzLt%Pe+Tmj;!AtqD)h$w zf7=tR_nr&V@xAtbjClm?T}ygDEO4Izji|rxc~_dfk>5*uzr?fweQkoS^2N4W(NMc+ zdme2i^2e@dn1fNz%%ZlKorpSLM_r`%^FnXb|JznuwA`NNe7QGXuxhyaf6F|A`pf=a z$@oa&vXg($_l;6xrgD~6%+U+$zoGHquwBKvKY0vj+62xc1?_5%#u1T&kM-a1%CoER z)5&7poje^h+cEw=eFJvYM-&~rxlEg}rmoI^%Hi?o8vs zVY}`kaP|kyB7t*8LA#nGU-@=LTx59V*%f;(>QeLHWW*AaQO}q>3+)E9zoGpZ?X~zf z9r-8O`42+>Gk|-ZMa=E@d+Q@^g!gBGcOhu7-s&s2Z$GDBtG(mp zQl|0XaKHXd;9LV5tg9AhcENr%N12Gk(eq~JmDjJ;F#_p%gTP+~nuiR0Cb#ch0lVrW zZ4Tc3Oq-{#J~~Bs_Xs?!`IDa!c&i+{nq#Z(czKFxJUDFE#|6%dpm~RJ_Um5IuI7ji z5jlFk$-MIHiai!}k)9YAc7A^!G%Mo&!=JhRjt|&XAC+?Ouoqxx^Yqn6f(TFC|2G-& z$&_^k-aU?8YrX#ZJ=1t_V!Nt&0JWego8#|q&_2TFQE268r53NlK9HW@uwAEY1YG3R z`pWJ1|9E=~@Vai~{r}u_dv0mVTc#~@o21+n(j;xufRk${b`m>wm>C_0GPhgCbjw?2 zN|~9NQf6k_{$GtWn$bNvcD}!@|L1wMwKwE2abgn;cwqE(_2T8P_E7p>{GWEKv zB^W+z_w`z_5q{r_@ku(SOHRGID@XxvbJ1q}?cNzD9{kGfr~>QF3fIO!O~)J>)GJ@J z4f;z(YtckFzQ3Rjg@f~uijK;z>zehee^=P30z2DFUKzjQ42M2%{EB@EZztB%6(##` z_}_HwnmK-T?}!Jy3ejflb?+vVU%M(^H8kozz}RkqUw4o7mx@}^L^$HtK8iCK8uh;a z*cr|G)xYyfep2hciqVo+#;;g|(dUg{M=1Ve{C=GMH~eop_RSo>x_6NSzs?YC#$NaC ztyw2j;Jl=wE7C*=D2*eUgT zisGCPjf(rnb!fI;{X3tgbb+5QmAo?bx`(xe?7T?v5&u`*s_eWZr(WH=z5(wh(Pr#* z@0b$rdd0)}e}y^^825JI*FB^CL z8NcGJgg$Tji#q?W!1;g0d-mV(zv=jKIevBTlm@&dq9vX^Kd{lGdzX^@`lhn?V`#os zyvyAAj(v}^b?iOLiZ4VH;~2*h=TpV`Au06m7})ia1^{)*ED znxTrr_r05FuR7oj_?41Z)~`0;rFra4d=BR{s9)2T3O#xt?T_SQCtsQt_<{V44(k0p z3f##alump)uU>7y8`wKRv{`@KfR}h<6|WJR`NEsDeAr(&;0-u)L=)rqdY!2_heLCc z;_Tjhf6)PNz&~E{%GRr`G_vy;#Xk+2^A-QBJiliD{&$aaM4PqO2E4>OQ}M7S>T#vw zy%7491Kz-{%S998c)wnvIM+e5SU8hgHSbp)@CN+bB(JPrZ7@Q1;$DJpuQ>DX@tEQd z$@6RW?^gGCShQJtZNN*s2NVzM%N`#o-ua_m-=Id1lyn+4L|L452^=boNGY)ot z1atQYr0el{oa+r-4QX*wXh59RfVIZ}^t%BsCxxAGw%T?VB=}?(%or;1|e>5I2Ss^&jbFA-}@$oHcvo{7-N@}kg(sj6Z$FH|Bcw+6aUr|^R0W* zDLd!2tL)!XDK>Tn&_b4Srecr>w@`haOPpNZ8LQErb7V zhlKdMXEo9gq)EO!|ML%IFV;sqPV_tw`B(UC(DN1+JxAv4ib#FBb)%}!QYv}H_-4p5e9TdPJSbruQCeHs`$e9;cEHp2 zmev$4@$9}sMOB|3`0G|?o5sHHSz1l;aObatc-uW`<5ai)GVQgQ^+0J;(Z+f9@7Rr2%>S&7^X&UlB{lz-F#ngvaP=kWjQ%;i$b4MF{Lk7r5BG~O zzV3&48*Qe5dMuQ1PF})!SqbZ`64qHI?7LNBjb(h^5)bu{YUSUFV9oTTbjBGu_D0qN zC9K_98@JcKzf+o`c(A{8l;S;?!;7p3N{5R!&a>~6lol%9@z9(uyqPQI@OHPK3EIyo zqK)(Ru;a~1iieoLbg|;;_knf)kE{nuh;vvQ=iz+=GrnOzg4a8x|KRr<6i>h3r+Ja} zKyMeYtNV1#%*Um>M4Q8-``_pf!o&PuQuF`JAM$wF z`M8AnpS3wWy8n#6Cp^smr7y&vvv$toW#{7(=6}}a@YR}5vsp>Vt{1A+=+xZ3;o5|T&Ogx$Dx%t-Glz>AI!K=wXE1xwF!RT&QsF)M>ku~`gkU&=c=tG zuS`9=F^~ALljDUd#Qaq*7CmatU}*qUM1E;RqCGLf-NKU zhOeA05U#isozbdSutGLm@js=y?`Z4$ZVO3AbE91xAY+aEbyNg{_eW1a8d-tRZ zZqD&zA68+{mNgNM_;rNhOonEza29UR ztY35QA6CthyfS{}c-!=kM#aaTe--w--IFeyo8#BW{lluGMVql#-9N-QQ>f~Wg#9SA zRl_e-jX;9GTl%4Pg!2&YA61C?tJJ-~g||9?+j@=OKdi$2Kh{L-lzLV7|EjKmM!o;H zkpC`d?ENLXlFz+=Sapl!m8nZqq6gE{Eqwf?nw_lIHz7C_YbQc6m7;{b^oyH zKE-=3t~X4-4c-@mK+ zLo_jtaV+%1TlQX4BpOOxYN~Z zBgKC`bB}=a^;CYfF6p(tXtVap{X={wzVJ4KMy(4D|3~Oo4tRAO-wX3UYhoPsYcDnb z_rm<&Yj3gZ@D7gCgkN>Q8}Rp#yt00^0WbL#YZ2}*z4nKuv*KTp=hy80!(KQGU~Sf3 zxqsNJgW_SF$9MnplODb#^eYFvfnB)&$C?<&`&He)>(vjMsfT#O_= z>bbo7&E5m-y@qIsXYT>p(x`iYy|F&w@u)ZE{N9@j@951l_j0U$XZsml&%OUC+6a#( zQe$6ltVcX=8~lEN;`Ptr*=ab~H|UN1f7V8LG{O9dc2#u|(h*2#yH!sk-3Q&ORE|RL z#rQAQzP+)Z(i`zq_1}`2KPNH0nI!n0YxoQbVuS^Sw_M zZG=ZV8N@qT@v#5jTkZcJb9)Yt_dzu8LeWNe6k!u@k>Xte&5g>R-{u8z zC z{gAy_2l@7cIluQ3Pfd>7Ml1xAJ&)fDL%Rh&IMELlp6T6#J?Rm@g1-Gw--{^LTcE z)4b}UXk$DxL>V6DB=65^jOEpcw>_^ak7ozCfQP*R*2Z{dh$7zVink#&TQV+5k2@ic zX9u`|hrIyS5-+%SXquV5cUZlN;%x_w8=FB*kLSO)C-)9>*B{lbMH}bYdxzCKD&C&Z zsP)J3CAZEi=S9{Z)%%Gy&a?LptJ^6a=KpHM+wMt^KQ@PFn`bb7S7ZKXZJcNC9agLP zx4IWJ{TT;;K9s|Y%)iyx3t(-WXYUZJUOiOt zCO|Vo@%GB$Mdsh?X`+qu?7hG0$%;1@nj;l&at<#t|5hI++BnbN`>S4{c*jAb=HC;p z&f!Jo-|ByfHqOJnKdcw4u?DVw49Sc&A0mC96l#{if7>Bp?n3<*;PV3fP(axV)h8ld zofLNe+WX=E`3D+rPE__{{;$5#XP2JvagM!_`5%9a&uioM+Ixp6yNsup|Esaz?w<6- zO>=mW`M(+&eVGl)ZNd{|fJ6Xr5tQlAc(bxyO|||5iUK+8iF;J49Uy??q_d zQoPgic-i^4`gPIf@aWzl+KuqugXVL^doGWcoqwx85p52SzV{PtRCwP&gZ*~*q$mA7 zj~AJLe-dpDZb8ROEE_j8=sKE5vTHr5w`Uoro4UaB5g zMFKP4)TsHt2J=7urX@e=$^XvmudqIIK2n4EpS4+g<$R<@&Hpu+|7$832YcTL{L058 z!MtD7RWvb<_bbjLc->u71x>wh{>AULH{sX3^O2fb$t&wuH*Ofe_EG%7_yp5)d^{5R74tu9VjS<+$%=#dzve7u*YnM{*SzzQ znj<8ytY6*ui21n&F=GwpUf5fx!JJcb4bs1nKK12ju^*_vsQrhU^TEB$bnubStDe`=EF*X;R74dy7;X6=>pk(wtJ&+wNh9}{I1UVPix(Ly@ux>vTo>u^MB4OTd!_CWBBU)zt7J2 z-L1)CZhG1&dG(q-7wNN`XtVyd7XZm#_?6pHAKbCR-#X?eJ?*Jr9FqH=YJad#2hqeh z++R?K!s!A{Z^po`-d-T={N z?X?#IiHH3N?^ne9eI_U#zqe=mOY}ZqpRuBealBtgDGv5t`^;CI2b=e+z7QDLIY;u! z`qc*FWamu9KOCC#g@4A@d49DQ0t4Q$qRrZCF9iOH@uANsr2a@ZBVB@Y6w*6L&w6f) z{Xq5}rR=>3+$%jUJ!4?dU!wN``&=%Xn4P{}u^-~w4`Tj4h_Bs~o^e9+^{Ouf27bm~ z0Oysh*F6Y9cHXS`_dl@I>d0~2HpXU9lF9Zg5zAt%Y{b~nsvQwSE_xT)}AC#So^ZaTr z1O~isMN2%pFXQ4kd%cc$UnzTkO$vPxZ@VWw^G6q7n{i0r2UO?(eUm^#(kKrOCf@JD z>x((R?;4Ct(z7;qJQJV2SN6SxLCJ04tL^Q(s^mp{d(Q7whGO`A|E~D!;P-zj{t@cj ztK46v{Ayn7yOC%k_EH#0y!91tOK1>xyC*&CzR zNLU~CT_0%>64o?*WgX@V^jH5tejcRk$DH36_ubu-p0jaoy;9&C*o*j`wGn?)7)d;= zPkg;%&hL8)1rD^?JPGoC(cEigV;r)T;`71O5e)SEODkN+CPX zQ+&+%eXm#i&vN}rfp5UWJ_u_g_EH#0Jgh^!UvGg1akqQYbGHor%7JgdSuC0;hy8k+ z;yeJ&(~L>dbE}rZuPX2j_)kb)5x-L4OLji0_?Ywis_*|f_m*70Qs5i#a36}b5ql|& zBOcZv-mmXM^Q*G=+t9BZ_y(MhL=)v0zhYh6_jsiFNRJ|6jn?y-lE zfQR#c))G&j1C-<(px^3>hx7k_h`ZgBo_Cj8Z(?11>KsjSG61p>-B!gD_gI$9J2l89>sqgnimxR+C0Bz&jI>9 zE848Rat_e%DaCsg8pPf1NiX2*K& zmeg`6^y`(hTX3qio{VrPi`+mW^Y0m*TYw9Pz2)7n{ z^|c%Fzk+*H&~Dqr;@;X7M3eQe+s`)R&r|r^R!C+Y@eBT2LOK9R=1~v+tA8+dg6sWT zi#fk`2Tw`={a*9^MlFki`mM!Ufb+`MuQiVNTPZ%~{Mx;Rf8l|7^_x8ps6~v)+N{6j zJiz#s+f(iS&>XCI{C#Dv-^AkX+D@X0ak$^04uyj`zqUqk`2JTD{U+}`pcZQZ&MWIz zIS)WP5A;$zOQy+HBb$n$IVJfIfw5Nosc%6UNT z7<{e)=@F#Mkd8t64(UD5ZLuGye;%Xk#hhPzm&c_SuNBs7EbgwoLNqZusa}omUrGw~ zr((|+<8>;oBAF{94Sf?ny81*nGRnJCCS+T=L4ct33!o{6`f3 zd1&5Xe3D*#XRqns**iYt{lTudHA9Bn0{OJH`KRQmDgx=lK)!{F*(FsKZ_bYl)}# z*GqC9QCARN-Ad4`$+#rF^KEbguwCYmUR{W@52#zAwm z;!IqM_NoH!z^}Of$9YBkO0Duw%rEGd1^Bj5wW><#4^8uQ>mK<|f72 zcPZ*s1>QluUN3n?>eZh^)Lo*z3h4rLtjX%0QM@+- zzqXCV-F3MC#hNIG{rZ^Vya>$_;rwTXrSPi?yaT_!DS1WwN`W`E*Vh#P18BZf{4u$H z&74EjeJ0w7z5X1c?qkKn`nK*j#k(x@Yb@Tb`&l$m4*T^7;q=Fud;j$n=OxE6;|1=> zq7N17um-Jr4CzjM_8<7~4@e&)R>%HqOFi`c1M&L$ZWL{VM*$!4u2a0l(7dR4 z=jZWUyr_BiiI#ZwdjZ^iEW8wmZ2!bO(f>lE>+pBuHb6qW*XNWMAw~pf~T^y(FT_W0;y=H_Y-kXYtd9eRC!n=B{T%M7K{R4Xe ztc~%^2t_=#|KA@mfB!!fuawKPhqmO`uWp|21hY&&Y%N ztH=D$TH@*UrM{P_Ud{jYnE&h5{C~{>IsK8(_qBbP|5+R1+4g1piJy2pt#60ldzq5c zlU_4Bk4N&*KFt5Djqv>Z5Bm(WP>=b)9`k=a=Kp%k{|(C_t%aX4|JP&wugCmfkNLm; zFP{IAzu1fUzh2G%*W8+CZ+8B#ZxC(7UO)fC7U5z3ub;r~P10+=%j0F||9Z^-tc~#e z{13kg5A%P$n*XoW-}9o^8>Q_0Uq4H<5uR<|rv0e-zaH~{y_)~89g$}r$;0-8`Jc5B zo}d3sd+_ZQ^MAdX|F6}54>7PWJO9_8A=(Jf&;QtC7v3Uh)ck+#+j;h7=l^=l|E!Jh z{QO_9=Kp%k|MhDAziz!eUUvSk$NbOQ2+z;|_17u;7DMx*w9o5${pkgb{jVP64E^FDF`??e~y{oNb=tNH)B6LZFM-pAGB z>k`q%>@_1K@znfZkNLm;8*f~C-4nSyBMm!ggFc>c$DD(w~Xe}l&*>GjLy@-p*( zJ?4Mb()oW`ecBPqW=?jhbwIo7aj|Ms&2Q+LYTH@Jrk**!Ol$v=Mv#xd{HQwb+aKzhR*8 zZd^O?D{q^HeytZxl*4|-#T#FL*z<3gs5pF15IYxP59OSTG~g_N^NRS@jvJ=Ej#hl^ z`8Ui{{7ZBFnmHF~m@V3fz5ZOJVTR%z28~(=-1u(bSH30^`W5p(YoZ+XtD65CF#k7P zC3fAk%2Kq~oO6+evm~#GU+wsa`K#e{q$7}KAU%hKd9UFnq(6K)TI>hvFQ+R%Uk~mb z9+%!UF}Geb=OPWaiZsZ!pNljs zQ9Q&z4c{rAKA-)4YrZBD`t@tkL^Y?KN{QGGJxVM(p+HA_G=bJj9a&c2v9$L3`zE8i8L2;GHYhL^;N< zW*k_8&+UP<4ieTZ0|p^gBK`mLo));`*S6s9tLz-V6!n^OE;3+m$tzN?c0Kb7K7)|M z*J}s-uHOH<<@wxt&76x2z!@`ZBmSmqeP-Mf>9qBjJyQW}4!km+M!$h#2rDi#B2}UF##i zPEb6=`~wbEyjKIi@->mruk%F{<*;ApD9%yPoFbgt(xvdLx`-Iqd6MK6@hh#G$urkj05nfCCP{C5b}8yrT?7pL{DkBcsaM+YAUhvb z{1>1>yv=srzDsU@p^Jb44|@Tujo3@q>WKHU;=K#ar;JO|+s6fdiGzf3IkVAcK&Jo%KuNU9V$K> zm`WbBpYX*&JvvvIkeA|Kdm+$eX#6}7>lC(s;41hX^PPLrJN8P}FhA4ZA=KYfpm}SG zCeDMSU53QNy2SG~gm!E9k2vSQW4Pm)csrd*Bw57x~HVqln7bVeH*h z@pr)Q)WWF@=^c-|{e>mqXZ)t@(Dv^ldBp6e@KW24$kE%s545t5Nf#GGe{*0Q*opmr z*2H*UcBql_*(+xpd46(ab7Wh!%XY%9?IT+&QK7jUX#XDzd{4IfYP>wGoub97g0fy|wI>e9P zxO0avf}ixRKlA-<-~6*54Ygh|jVA+ES0P7aZ^JL7U-swa;+(h^47-3BUtC zY$tie>e~e1#K-!C>w6I5|3UkBYty^=Tq&|%ux|p|&j#GRBoE?-aZnfYg~`N4MCG}d z^9LOw+))L3Nf>mHXrdfcGjTd9P6ae06=%1lSpQOqv*!|nswFSthvyPq48_b> zgQ}2lhB0XOq_C4o2O?n)VW%yTWG(6o^;iBt_E#zUvFAUi(G${p&diN#x|F{!GH8lu zsb76g>+bdkmb%urKd`b>SNjzhlsR!HDlX>eLD+A1PkQgx$(rV8_xHb}=T3tbiYABW zJ2LU+Dc-Trp6+NEr|<3McxK)G4%XcV_UgJxyLOwzEHE`4wC7VKFRJIS%T=x)ouv4P z(Fa|k`26>LO+U)|P3%zX?m-ty9;$t7fA36oFH&5LWrJ>3+#gi?Hg>oEKiGYP)_t>WJS%|pV!ucnOO=KsLIU-HV~)A#2Ox<~QN*!_~?-%-Zj<^RBcUh>M})A#8Q zdPebIhvp;U-@j2Ae~1zmf~IQc+WK1-z4yIQW`HOBCl1EHb&YB3G4j9X50p^r61kz2d@FHvx(}z zyx$`LG=4`}{X8~!ef++KFJ=0`YVPkq$NIer00Zu(l1H@NwXUar5B~^vTWDxUo!IFE z-OJityx)8O2mCgYR}P>0J?cjInDYmBQg&Zg#*g>=I3H^P&MSvc{T}T?_=iB#OZX42 zS;mj|`#8TOdFAk_-=j?mzb`Z@?tgGv89(0d<9x*boL96Tsto{Ye=7bTJPO*$$`7vv z{XV)sI~eglYjSu&zaOmP|G|j=2cIImhl-BZ^gQb~0D^Xh_@DD4znAwnYygf&l)doOd_aez7+TPl@{;uNw!IwdE zgW_IV*52a%J?{5wC9fR5?eDlB!Rz(Gw?cEj@E_Li#hGC$UhbTfhPK!+5pnrAuCHB(fV$S{)Ta8$cjkYA?=OS1wQ)>=}r8M`$;YR7`wsu z{cQ+h#UWA1>p^`+J<+IKRK-743g& z1CrW7KUI!l(2nO~Bwp9=Ct7AVvJK|M$?%swsB*^}sr94Bi|37pUsfQ=0H_`vqhO{on(3K>Q zX#MYM`@iXD?1!OiLbI{r-c(lq@%|t6!_W;RuN*$jw?o%e{LP`+Pxw!*Q^t??zc_z; z$t#E7#*9Bhw?XQRw(}9vtN3{;62{-5r}}cV*bk=O!59ByzkFzg$E8orEVDn}|Ks*| zmArE7r~VJyg^IKNi%iuOnQ6^R5RKlG7u4EZm#xPR}S^y&7lKdOD= zp~K}fIr#_uedrL$e<<#i4V}f=C+XAUma4z|n~6a`Ym~gm&*lAnH#@(hU5TF&^A9~n z@t~ z3dPso!;~LC$NAU`;JkA9G`|kLSn(0_4}DzmUo30i@%|O(-zs_K@Y~Y(auYr`1gTF_ z7>4n6*k(v=kvjNtwAc^SuWm}j|A_gAe(rJUvwM`;AMf9B`_0(p@{0C9`&FF;qjla< z`24y^7sK|-q%an-)!3Jl!f5o1W}d>3)i5@n4=wh^hu#5Aduaci6vn}qqaSESjejOT zyqJg|u;)Ka-N$?O>~MX-8-_uD`%yGG_R4sJd1a3oN#Vd%lR}rzlfw85lEUZIV_;?3c7U z4rBKERY_7>Gpe`tekb-0TLoob&wn<3_R*yp@BEEn?T2A&OJ3CO%f~yMZySH3t$TkD z!pADSb5HVlRO6i1xSL?Rba&C0xY(!}ersl0G-0ti8wAGjY4o zUOBHEK8<(i+rmf8KMZx{p7gmV%J}j1Oq`Fs0M09iPve~#S9rV~hM0dC=2hlDzf&1M zKHkOoy(O<4KCLIvw}p?Gf7l4dC+YJim+|A{O`Jbe@*=*y2kOp+OI>#chT7dA#UBgJ zG~vJScXyBHW1P>Gw_9Wow71Ekjq%L36!9h~-YjS^-?}G#p=%R7WDxKch&IN5B(9!9xZC?{?9~cvuEn z`)*OZ`=C+lkr$6>f@ju|y8a#!ZH$Lu*zz7!Jk0;YaL>&>>5C6F!87By=Dj4^aQ-{k z-h;7UAx&AE`F_|fNDt!t`XnT*`*2^PFz6nnXBgjd|D}HUyt4Z%lm+p%d(xNssQEtU z{qJGlizdfjneWYf_l@v|CrM%Wa*RvTmkxJ4<p{yr(Kh9e$T}efrAvL4V_IuV8!`j`M%k;QDegYC=gW=a8-HlX_)D!3`12J17-&uv{;LNx(ckS?jnjt%?#Yrzw7uzo%6>UWZoQ3wV9SNMe{rVn`XY5{* zJC9lmFwq3<9(w_t7x~@(ogSIz@XbraSNHyg|B@6&{7v!Cc7IpE+;@xk&D){o{}EUt za2{m8eJ@RO?U&jbKbrAX&F>?Yhn74{Wk_FtRo$02_Q(5O)cz5xNnUy7z!XQ1DaVMF zrQS!Zhu^n!|A_m>Z?r2bN4)>V%dx5Cl~)cE1DS`)v9T%#?kkK?^Zpy>mz5*l598&) z-W=zZR}K>!nTN`OxRJ+$5t#o+9Bls$|C_$4-wQMK67P@ka$x@Fyr>+Rc173d2u9^l z>wpp6pvC@@d(tXgMB|yr>+R@qn(`5scc${i+Ai;{PQ*-FTqp|B-)_&ot{_c@Isk4{$-&8Ag1yJ{XDkf8@H}>U7BoW$i9!Jc#*! z8Z-z5!Q z^eQVy&Ug?l$L^9>UODu5fOaV5*dN-isvNhLl_O_7h?WEALY!B;{m?Z$sh3Ww96h1! zE9H21{a`$Z-me*n{eRZv@$`5wvQqI7laEBFa8LSf=cOAD_#&Ym4@TlHAmkl_MAruusA3gOS%kd#5VLwPoeV84sf6z!@#)l~;~nJh)kv12O-|r=%S3uTfTx zobe!94(tVRUQ~|E`hc$K5scc$!>Sz5L;Hp*$JB5<;0?Q=KbW!JY4Ui%c<`d)y#uYg zI{<3>{zXeS9`HrOpd8o>;Jo7F!7g?@K)>_#{|z*_U+>q`_0M09~9KJtdTpE=kZH2T4%KswL!}xhP z(llS57W={Y0eoK%qY(3t+R@|E4=yY7L(X^*^~1K3SDqjAcmN+rIod+IpOoXn70b$z zGaf|CvA5)vR}MWMpdO?gi1|nLQ03t7+2DPxobe!94x9yWUQ~|EctF?o2uAhNS(T#~ zwEa~%o(;zX-q6$iVN_qyd z_#JcgD7@e1p7f)EO^pX~;WpsTkUZk`jtjRAK>kL5y=U0N;y7WrmP$}{V`e&>;-UMdFAl^(Tq!HB4Ixr?V>QM zGtO%e%i(OXfb+cq&e#g(oU5fCs*f|39}x48y4TavkB64|A!j^@`r%H=E6)$XcyPNa z2V(wF&#H1fT2_vn@gQ1`rz9`x7ykZ?+21c6Y}zLI0rwGnyTqCQsJDgxiT)n?@^dMS zV?lp-L$ooTX@kUjRq@`3<_pDJ7`va~&Lj3L<9#aH7|*md;(ere-$L`7;@zisv2y?w zzmLNF&)OKz)G6`Qygxd@eZ}R4_i3x9c-UuDywRAqSsUXa%p~6EWyHSGD?_uk;vLWw z5Bn&Zx29-gyj_{Mn&NE$%@&HcpeY{WG|j_WfVDB+Zp>5r{-ZJHkLJ#Ub>yc_)*se^ znzyrPW4zs&w}Y||Yo^gX#lFv)tUt^%nzyfLiD&!I0i{y?0VVexGA3>u`W+J1Wuvhs z8(o8h^~C6Z;lAsEp4(zSnDz>u@BgC_^N&{RfX_~K=gME>oGa(v%;F38Z>sQ`-CQ0De(nu*kP!Ed#vD6lb6<`Y`+@59E@l6#U}L}AJ?R&>)GWgg*vn0%QKJ`15l7>b58~Z_Em!&Dcu;qV?;TqT=DK zWQ=+*;LF;%p3!ItTdj!)E=;A#KL5W3YF@d1d@+7D0H7 zUroQ@_A>_i|6{N|bx-l;JA z9w3?s$NClH0P3$W2K(t__CsoebTkrT&oN^>uf={Kzha-n+liQe%n*-Dzq+Q`dgaiB zM1h|NN?w_IHH%F=#IINUk>;dAn~%Z-Fo8UFkP(2KCC@ zh@oHK6HUZUsn;cn^BFWhdb`qZS7^3g)n830t5?KdoL8n^-5f%8ey#Yw!N1toc2D~4 zn4Eg0znTD^jh~`_-(c)Al2^uly18lFl?j);pZ^OD;&9Ku#M!Unl(EYAhW|~!+bzeh z?oM;S+g`N9v->$V4zxG!sDF+{5b5pR1)6q>H_q(?oBGQ6I|*a=6itj{9BbMO-ggyF zd;H#2an5xdGrqqcjd%SWL8A)n#9k@qMSS;nTWMdx{@HEI$Nqu0vnMp_{QvtTp;c#Y z`E@(O{w!;=pSJ-o*;}P}Sg(v7CiZ^6SLjy`cmulzizdeLejT7VqoKjRx_i>^hd1w6 z9q4*G$jeU9kfxX!OXKmKsHsB?m+V>y(AT&=Z-ZNpna=;sK z9urNBzuJH|;C(FG zti3kiCEf>$hc(gIpB0bq?Yr@v1Kxo1gJ@zL@7He?=MQ{0!E%c8X!Cy60k7tdTUPSQ z`qc)!#?EoAgg*}V|HiE){GYbZ^Q#Sb1Kt{<&Dv`NUgE8)cvxSKb9)+~raui0+bajW z0cR7@#5m+vGY;T>!dRRO!oI>-oY#!~06!zX9=9RVs@P+}erHQPWGC)v@Vq&04=_7; zTKdx|&DX0Acmwc`|>F>!Wy>^T*9*T$290Fo$R5!8&Lh_5xU&<;lD0l z?6dOFKJ5RqHp^4}L+$^MyAm42+wMt!8I{Ac@{o7EXtO-KQ9|{H_TcN!j7x}jJ@4Wi zo|T8ZdqkV%*$o8Z-KltwK=Ul)lJu9ib9lV}p!?%fqRsMbU`xEm74Icz-WJ}k>*nw{ zF4nv^M4RQ=fRA{uD&G6(gC3WpzgFh(tUUDRr=lgE{ktSK-mABPkXcubdmIVp7yYm& z+;3x~)se7|S+|jZTk5BbA5?sX@krVg)(_(m2fHWz^*H`}CGvj!_~qm?5qoKbH1=Zu zserwL!niwOBlZC5u7SOnKl{DT+2{VZFs2jqk3u^J=?iFQBn2D?7y2EO6ly7A%+=CA znEJ&S>+Kr934TYs?Vj}4N7ydJy+Pb+2Y5aHjK^L8Ya{m32uZxn6mLgpTwee){cV{% zo|_+3`yG$H0M15v3cO_o5yqGv*sNj+6a$ENaF3Mc!xk!sd$Zf zJU2dTUJubmcr-#1ubbl4K!bSOJ?U>Z=JDM4ta<%KYk8g9bg1u8Lj2vy{B0zYC-M3z z-cV@Ny?{U7a=a$)AB-O*nheJ*Dw(6s|HtF}f4n;X|L^jSW8S;@NcLmG5^ocXKjYCi zI1k$2`%ykkc1=@u&Btfe`w0IXovc9RGT%$|t?2lhIf8z0glNgWule&;HJzO&iFc^t zA?6={x*^b${`ccxAC|XYLVHdTO@u?9B+f~SgBX4MEsROhKi7!w7nYZphlIdR%>SGh z@xRw9%fR@S^tdQVI$wqFNh{*>KOtcrn7kSi#;Hl)B!!7svrpU_X+?Yn7P^eex)wIt=Yid`$QZ1yA;;z-OAsOLGzsAeH+v(Z~uh#`m|^w z9I4kQ6z64Vfv9d~&9CG_jBqKR@)GUEIsoC%0& zC&)ZnENrE|KjOXYxFaRDp4IJV!U~cX@%=brRmK{_M?dlN)dZ}4Caf=Z7LHcqdAXlV z`ITQMtRvdc-tO%?bP>N!_=nLb0%VqGal>D@lPP3zqIs2e%(~riS^Zl8c!{@YTb0bipL`LiZvML71pa&8H%yL zD`wEnnA0b`gS08^9u7bJf+Xt$U!bxd3SH3-x?+!a{H6H389O^54~&_U5Wh_vQTFM` zuVnuL%Kkd&hx!i|Tb&YXSI+A4b~Q+}VSQItRrFBpszLEE=TD#&1Tl-ttQz!J-hK+( z)p*fFIj+A>7^67Tp^^Qj;xciEvOVXV)2ub0IWW zvsp>;Z=IT1H@Fg8uOdG^E?psc5nt8~P+11~^)ki30h+~%e_3?iHdI@F&AUys#QTcp zmrf-&z1VuZS@G_L=277-ySdsg{eA1`eTNA+|7T5%V+uxgVL!sxAI8H8h_BsKT(%;< zUzsVfb8O&O>;-UM#Q!c(5rX*7EB;&1Ag=ZN>s35o<|it@_AB-RSWCQbnAfrUfi7Sm z-aCr-IW*rhE-9uvy8GvLeu>^Un1D4RYqA`wZtGX98@*r6xVntu^l=;$FMNo3+kM|x zS&6sN{+yUd9>o1YecEMB_F)~u+=Vr2CO>#`r%Q39*xFV^W|FJk_QJ9=ud$lq6O>NDqiY$k3eny8(q zQsQi_IBlWXS8?>;`H8K=yvMTR`oz5@FXGEOj8uj~e5`|fy<)zdDE9%1#fM|#dV5PX z<=6F!^MBS7&-bg!>QZGD^%UZ%^Z$uGq3I*`F4sYgKkzFra05iz2WUb z%s;VFariz(**ynt`M$)F@n<6T0yraSs+x}7+IQ;Cnecp9)D5pH)V(R_w|xTXn!g0Z*>kZ@eXJoV0=< zUVsL6-XoegPnFa3D|HSq5qq)|Ur@Zmn)bJ{AnWgEC9lxmP6Z74`zhsb?4M73Pw_vF z`J1WA4(;zHl1Ip`JfMS`-zUDQxF18K_5oHLtmb!&Tf86*{EYaYHCc`=8`-Dg|A~nI zC;ln+t$3oc&&==ceOzu?uEgQ|{=4KsTtC0#(=Kb`{v!5G`Wxojl@<59*!*s2uH4F> zlMw&2mfF*2T)OTRl~tuqRUHoYBZlElQu_dt*1+!@2zRA%!Ta8=c|ofEI%yrzvlK-Pj7}ae31I&>Sq>zt0HgU0$FD_96afO^jp8MjRD?PwEDZ z+JE@_B~7pUeTgIU?xbFl7xDePODZyk_$6g0;{Qo1{$F|d*t}<{RDSK(L82v|k5doo zz>^;F8We97G%EgI`7jlyVqD;hwt-&}|Fb5-p(-biivK4~hi0MF-^$lD9j9`Mom<0p zJ5TZ=zK>Il$})(r;{QpA|0k*Vf0Z?3aVk-5`L$mW|Ff2Oe*ItB?SO-=XNh-=@+;#1 zNmq-#tDLCzResw#`aMyTuohrVl!KDdIt}~u7~2bz-a|snF$wYQq+5~BK*G9h0%8yB zy%Z)i;B#10{gn^dsrDZx-2moYo={w6aWnfm-eb0AgLZ|r0Ov*a`}M!|v!M|GR^{jW zp}~H;dy1=W99#dpdNTgg^@_CsYcu}tsOt40#lxIGN$m@)dUjZ^d>|BX5dX6#$}#17 z1)ovz|0Kl!lRjaylH#iR@0Uj6Dp=@B9P#Uil2^vBP#FsGu`coB?U&H}Ed15B&GDRLrmLDXw;jTc4TpJ@gxYFylU;{XBUY(Z;zb zDC^*FoO5}5C$EIx*LMGi{q@zJYkFO%EFp&nTfnZulf?(<{XUwld%@yyom4TRZ(*-WpRQNz1+bRvb@O_g`br#7*`+D*`YGN} zXvPX}%~jOAp7Z?!ld%?HO@u>@jyS^=XA(5WE6!eOUN_@Z+XI6gJt=c`oSHmS@*=*Q z*R94fOuddj2?;U&q!JSDeoWdGI*gZ-pYr8su^-6(>B|0pfqRa}71umByRL9HTmR{L zJyWz~uUl8NsV{Y`uP)Ix1@W*S!Q=Ae3!u4Nc>mZTn15RD+$-YOOGFdppk&0kP;st? z<~GIY)6~4KOB~^2Ka}$#zMI!sWhlhILGkZ`=3&KOoSlDIUq1g#en7OubK_u}dUO}{ z{?g=o6%Xf~lhwY!T3v&2uyt%+pNzEtYhoPg$7Y;IyY%&k_IV%J*Jn;HjIiLG11 zaS-Q~oEP!kIOtRaA-}$*_@6-Yo#MZq9fz1o<=5@?E79utwN3rOo!Y~(B_Acb`utpR ze@+ThFyFbSxb~=UpNHr5U>?O41xQlJf}LcV$)klI)L9*;a8e7Ei&v=bqv^M~D3= zww{=>muO-f?nhI0R~(G{Q@SxGDXw#K)BVVoIMR=%93pvz{fJZqA^#qv_?Ua9V7_%v zab11C*N-=rTHcSQU@gE};>moDb9$N2r}R?1252zvdfw$~K1ZA$+n1g)L^Kf&bsn;7 zpyD8IoPznyb6!;Qx%xgKyVHZ2&6U`>HEcgqBroF2d=8Z*5FZD6JU&jD4UO7=UvH1- zd}^q+{AzrfvQV_4z2?4z^DD-H$^G!TgOGMd+7@Xd(m*8myQLqpcb>BMY;ZB}x~I6_ zBVoP9_P?hr5>3QTsn>HA2j@CdFu!`v_f6L;dn{V7*GgVty&9Dzkeyd4{;kkpzGeRU z)vLwyeo@p*I{`cX7d4*M1B61HnaUIO7v?-Pvmb($p|`-cU~Tu*+?@kJ{F>lY=5c);<9rvWCEsumV=IQHN+sN+C z#O^8oMP3Jr-5YJe`$6(P$5iCWpNZQChqx>#fAt=~)GpBWR{8gAYTpMdWARv~|4yxx zyr^CIb(&KFLwwAAzMc1jW~k!d7+a??RoS8X@l?!RoJVLs_7ltqS+*`mTNXZI{;6go z%s$19I|l3WHnDMXD)#?b6X&UNns%(t0j4(M_d^+%6gM8I;w_D+*=hFG5^#j#qNLJtp08$*2l4Zk*SZ0CWq%6 z0P!ADyyu{OQ}Ny{`@5Cu9Jbs7nbj-oPSJJ^Z!)L|5Mfczv(T(yxiK)%bJ7vpEXeqN=N?H^FPM@X>Lw{ zyNa8>r`An zj8DA%6|~!Ftwj^z`0;7lj*7D;Jm0NtefCwnq0mlHye?()?C!m~ZqlyZCT@f!i=74JX+1to8!LH{pJ`pA>;{JH z#UjhMr>W4)Q~ayT=UJuC*?*dby#UUGxI8{lX}ec+YhT%gxHA;@Flf#f?v}f{al@P+ zeuwt8vwI@@}Gd2UhJC`8rMd`+0u0EHBP$)=@O(Pk+4>t_5u>d zkm+mq^895#kljZryDtI@@wR)4TP{x4GCw!T@xeTC5m@Fw0ANtDQ@|Z zrY z7p5<-_#X!Tj*g$xmlaJePx;%#uXecLvw zU^mVJIFB6v+b^2}hWKq1A7kru?6zH`>|(>sVJm#6D{f5qzxZ8hVP;tYh9y#{AZ(Vl&ZczNu&`uHl zcHG{Zc>ibm1kvR3w7{7uELZj?u=e)cM$Gw*fA`?xjy)XLy}uLNpJ-e`G*J$GZ0y52UpTAd_YD<$fk&4dHJJ&Gw4_c4U9R>C5*A8n+fLwJX{$s_NXW zbN7Qv^_3mEc9jidvU>}~MahLxcv&h&!+Vf$Ohcrl1J2j zdA)?zL5-D)Uk|N1_uu)Rz~9kvqj9ika(JP?u`l86#aUM);!5`vcm8bY{7oj5`y1!~ zoLAJ}2gBc(C$K+Mz+O~g-d;%CB5jB?3<-XlhtIU+L+xALKWM~RR^u6-SZv+BiTXY` zr@nEn#d(nbDIWFhq+|PzoqP`?{z=OJ=R%7(+dakB52$$p>)zOTOyj>rlgm@{L?iY` ze0^U5?aho!imkscnJ?T&&QsBBjRedw{1;-ThWIw$x$Mw{s)Txr+ zLUiNl7mEK&QkbzOvu*X8n>Ut$2mzJp9eTIzF<5pGBy`FX)OS1iOjG%rI;Q-wPr>bbMki=XD*q~%|1;PZe2vx% zp@*|&rUhD1p6-%o(B48VL8&}lRC%hQ#r-<>6nDMF)wl6?j^D^G)!%0Hmpq8i^9l1i zcJ(Kt#P6s0m`7)fXM9rJZHHidYaP3HI|F+GtjXo^xM1pcgyLb&pD|DI`jm}tY9B?l z7-vB^zRj2|c?IK}vYYJ10O9NZFlZJjKEIFV_l3)-Y=`#uv64r;{h^(^x0uZMG6Q4k z4D9XBz<%`GxD>gW~zOFnQK71vEmJPJhKn*R$lw}76jjWFmrv$i^@Uo{YkGOl|vc7&s;~@jWhq5 zJF0R#?#_G7xEJ-Gvqz14Gq;mGXuPF!-p-Yn(rb8vA@0_Si#65Ey@k8isqUQD_&aAm zVCEj8$#RsRcU7GIp;7w)d)=eXlgqwWLX|l5FXDgBgShm)67JL5uPXkZiTHnJjo7#M zX64^2!L*1!dx@5KwBKMq-!2B;cxN|%4`b#)(L^{@FsiqD#Tf~W z+V9`{A$1R+KRW=&zV_ zSsU70s_E_;D)DA3-jUFpsCX9ye&uCQXczVZSQFuhUyoLtQ=z$5ah_<}uUz7&U$Ga! zd4+y8D(6?@3#^l7?Tv)~I}2-$SwoPp_daVb(qFjN@K&iG$j@gf`)@*dp7I|k?z2;@ zUdd|fKRy0nFMze7zs>is+C53L-kN6G&N`T*cEDN+dsi#9OIj^?Eot@cW}ch(Lt#4B zD~;0;?~Q@}M5MnZ$p$AuTSP*f-rPg>-m2_<9%XsmtBU(v8ni2Z-6?EWX6$yFh@H}| zUR0bV(5UnOeV%K&U9rca?doI6D{NOrWo;olKTv$c{4+7nx~I7BuCaP0YPMc+7QkBK zQJiY}w|U>gej_3AzEiyaqV1-PON#qmrQRd^eQSQrAn@xf+}~qOjAIIBIJ1x~kGHc{ z#P4)dhFHaYU&()uEGV&atR9zUVJ*OU5ue`2^eO@ne^tfDoIgwL2kf_Z`TLk&PXl4V zL;TO$&|dRamiQH8g4m1re^zVp>wY%`e&yql(688^WlfCZ{komvV9$S6d&POHX}|gs z$Najl;jj)vwU#rd?E^`tFvu%4WS{X@=!xU!z?;D%8;-hGm{0rNPo=_WcTsP?#of;>wVtE1G+`mv#{3rP1ol&q9uF% zdiDT(VXvE?&G>qy;@yJZpH{pFgZYuSd&Bxf{Lh*QhYDua0W)7jx)naf{{QUjkuFC1 z8?@geeT4KX67~jK;vv7PeTP{ufc3T~6%Y8j>G_#G7Mq`Ey&-v#{eC@dRF*;fSCyaN zhX(uX?kRStjLpwPwf@uf`l)C`f447ntx)y)k>Y&|&9970iX9#g>NR?QW!6ukiEwPW zO#8w4gdY$7M4hgnI6pS+S1xhPud|DiSLj!xvJB%_v?0%*y$XIuob8@s$38K?5;f!3 z+5ZqN@%;E#(OZvyvsYKV4WZeBaY?b`vugayx%W1EQ_*BOR4f{2XJem&{W^PFXw*4C z$3L1L|6GZK@ozTn0&pJ0_2VBt?MxtlVqd~@_k@Q35%(%PHN?grLv!U;?R55jq9q>P z2RHK%-q&&?kQo+5M&Vhf+zmF1n%=Q$$uADtu@*=)p|5!g82JuHI{$yz8 zFg__BIIR3WilUnG>v}~z$6DFn$W7=6DOd7JFMSaGj~263-@iU)nD;s*Gc1Kq&Bn?w`in9>pF zdd0aDnnxIu6c1j#>A1m{*bVpr|3S%%_&y#Z6+wu9pW;6W%}a_uB^EbWDwSXR6?*}! zC7!I0dR6w3c@*Q4w5Qjhc~9}aQ1dAK$^ltm7xn^J6X8&$lU;Z}(YM==p+S7@o?_>9 zo1RAxa3ywb4c2F~u@}I35nt9PP+0=;)w%!dpD_+E!}z4wc~)#5C8{mI@+*cFuXX$Q z>K+XCnSHu+@qFsD7V>Kx#Z-@@^p14P|l z=3p;?HF2ITqp^kT?4azdfVMB2nH0NhrN;Yr5O3@E70uAAOfY>XCv0s>=&wfeN^!f|Ic~D zTTtxYH|Q@sjfef^RnbH_T(4MX8G`XE`h)N{!0#&VulO|PS4S=L>s-YDtPSlo z`x4?;^g-bv{-1k*^D5%-9{mHqM)z;#?j)Kh$CS&A1IOcY(~yQC^+ozO(#c4OqgwhQ zzv8_J?k{t3=0BGgQO3@rnyy#zSfpOD7T~Zs-Q zS|?iK**Fd37WPMMwOSt5C*EG1{mvaDyq*nVoW>Vt^*lCrq-bIs6w7jkDb7S_aK7%I zV$Wlnh|_e5ty_a}a4zD1&WrdqPGc1z$ge8ypSu8>V;G+ldw!LP(^#K5H=B$2pS7XA z*x%58RdN5^6QManc%?z1Ut{|?b59jbjN|=!vhwS>&|IcCCp7I>U*ecwu^-NPg?=TK z`1Rk4e-$*hDE_xGzgjAlU#*Ac-XL09XVZH{oly_i&%lj2=UU<7o`i3=i=ll`xRpcI zdoDTqICJk6O%Bf#QFwPL-eb^ypm-;%_gu`nUhm_SSzufp^q=P>FY>dE`;`ixH{;?< zNRQ&PPb1xhgguoxRY)C>5aYDuL;VNqA@A=`!T-S%iGE%pP|vs!=5 z!~8$*IFBn43MxtzU6J!P|@Zf8MuZZ!Q0w@uvLxm1r^?*L2A)>`!>kPf20E$0WttTU`9Z_m%j2 z2#kfk#NmCVdDy$>JluUH|7qg=CcOE};ziz$YzLM8*6V-m4kNtnvl6~JRKf1Zo z@aC)i|M}SepRe}+>rQp^4co`-NFn3fszdwcuP1qAxbCi=8Gq-mjf8u3^FBv<8$V+X zm|sHbBo1z=pU7_Pk8r)tZv(E{|F8SG%U)jNNUlCB)rLak2kDzl*oB z*uP&HcbBE$9xQnf_ZzC`Qdi9L{9-n7;a6{O4`^zHTfchqAt`fY{WKqY0h|}{?KosL4ncMfRQxf}sD1zXGcx0lW4iLIcwj#E z|5>Z-HTN@m_i|_W#8dnK^RfRwf1%jhFnlTeYWjlHWI4*OSReWNL(D%PakhJk4aYc+ z>8JXf&h%3$ad1vI{{+cH`O|*dWlZ)RtGJl+=OfPb+%Gf!bhL;+u@}JF(9V+h)A(XG z(s(57dC$ijJO3=CuaVwiY|H(Z>^)1_i!=ZEcY0oNz|f#Rd7C7NXXf87nyj6wKCv(1 z>+?Qno=}{lnyydhv9LZ7i*p`fed5zDYqIYl#eEi<*A(~jSbZ8=q&{C3ZD?n;)TfzW zUQj$U&VMAlfg=Kc^7WR`pSTOink+~86YazM6LZS^9~I}=rv2$k9QyM+$s_b9KCS)v zwc`Gk6c(h4`&G=JhUUuM#QJ2xGLjeZzoK!yx^wqZJ^shvYgquCw;OAV1=xpoPjS#a zZof^9YYT9m#h;1gYf5I?$$}Ln-vw*ocQ3B`M=e6S7HJ;RK%}-v2RQ5h zhyRfM>nr=QPFb+O&#*Z7z+fNIjI!Ql@}Ks1JJC{{^l3$p_T75acfd$VKTUTpUn6_s zBL3w1T!8q0L3iN}{f~OzJtq!daENGfdA9jk-a(3232lGHdoljLd)$I>9k>ATH0MS2 z{AE@}_F^64?ZtWPg0aFMwud|4F!Nf>Z)}J5H{yTJgY5rIxCd60I&|vo{wNXqTgBlE zFy}9rrTFK%_kC?YjgI#Vri&(z=Zb0lJw@3&A6m?>?kNs?#PQ7f$b27^TW?1#K+g*L z72RNtp6 z`!9f2#o@#65B43R^T7h#1z=5_$E5_%j3YQRTY$CsVOTRAHVp}TJ%=8RbSBc}NSHSd zebxKmFa3e+y-?YU_Zd*-*U2ce<*py`K>Mg zJ;le}jRn67f8@4hd>7x9dC<(US^kfb7qve%F7>L!Uj#07?&iV+TMqRe;DSGs!a~H` z?kSEuE*Q_F_hlC1{GT}K1??QP!D!E-@jj;q^uK6e)-EoGd z)e~L9yK-v8_Y(YvcU=BU7Yo#?GyRyf`P`=(kMKhTT9K;pREzO60oy6Y^N##|Ep8o^ zU2^@kaUY8R3&yFhMxCU8VTcG(|ts`0!i#`89?pNa9j8Qnt& z{7JWtpt_FHS;(H4aJZSY>k+y|MC_@Dajy8o(PK&$-Qi!uIcv{`6( zz`yN4t3yMsE)D)(+5>1vDLi0}JqCU43c?)^VhLFg*xfBNp+N7wZS zoN?eQ{#}_r4f&7hQLY`M@U9*atv}iS0sJ#D{p*3L{`cknrymY1=NG)IuZ#K*;TgU`%t{X zkBdfopt2iv3C(*NFy}JwHABU{Lvg>z8bRbh8+OAdqP}AI)!#>%ex~5R2$*XHe?u33 z>wN7-_p7+CuJb>3#E3yrYE6+T9WEE+K>RrUP9Dd#8$|OTy~pIh8}?3PObnm7-lht^ z8NkjKe20nkrt$+(+Kq*06R_ZnabSO-zPhfr5EQMqnSvia?R1>4(c@h^*S+2%Qno|B zZx!4}*ZGcc;d+}Zc(H#?e~4%k-gWDAnQv=fHOw~cZsxvX_y?$c6#3q?v1pUf;Jc^w zN81g4J)h@#K!5cYYMnI-`ya!Yajr&>cin|u?6=l?H}>N$0QD7Pzxw+)$b<0vj+*~; zoU5AusV@9cT{33bnfl`{0QD8af3UJ2c?rGWd;-iWqEC3&@7slcU|1LJ5kG1H)K?6@ z`uio*R|@_gaeiug@aGDC_1+!W?EsATZY}qv-hbiG2f2bV!-tO_c1oC&R66{^#dA9}_=8Pgq~(jWPQ=~K}z2WBD~{0s008U*u_oDTmo4f&Mbder3jKV!0H^KRVj|HJ$%2_5r)7WWxH|DnigJQKxuE(G>!F`ntE=Kmyn{;%LZ6u*pT zaE*HqU6KHe;=fez-vF%mJplN-pIZf^i9WY`u

&Gmr})Obj2NlfinwN${oN`&_p7 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�o8iudwuga_f;{syuiiuB0%CeE?XcDSSd#Alp8 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[^C;X>*UE}<_wX2~f?K)dz zQ~H)FyUtKNiQ-`0KIjs~d9|orZHohT#l3o5SIVxC zG8D4wd5V7pWNsAxGi@@)tDz?CdY#Co^lh!|dbQ$VZ(`81ig$}=S58Mf|2_!&|11;a zn0CPr41tdug0s~jSjP=I4`m6;47^8P-P{-1b(zxhC9vOi)WS1w7427Ru|U7RDRrg# z6;g&m{MQu!eaL(!{AUl!=vPBc_Up$Yo3wZLZmM5DRJ<=C^Mm5u;q@!0Lw>)0D>6Y2 z&zG+i=NH^hrPlq=zE{ky++u6jIFI1ln7sB3#<=0SlXf<>u$>3v1^cDJSpN@J>;LBt z3)`7mk+Ab%tp8b-c#tMD1AM{_y>?n4Aj?c?gK0A0j`Anc*w8GZAwbEl( z$n3A`eXU47WLp?p74>QUK2jI)B_D!R%rN71Foc~QTjTv9!hgPPFds71xc!=UkjN(V z?daLDo#J(b%+ZSH=b6EM{lPd3V3`0%?27#fr&o8#m<^-&Dm-5-&$KNL+O?n5m9Q(M zVgT8-x8j#WW-8-zg%`qkrlF?oS}n2(efxCc{2hLG(1*GF&^=JLgs(*|J_NpC2=<+a z{M~Vz?FH#usq~$NHZO9x!V8zGeS}plg69f@=Zj20PwCe=igN;F&Q_eKi_8~mv0%R< zXXUyQ{R*j=L3*C5_!mIt3gN%FS8%=-iy^1#n%&_tp=wWr=^E;$zQ$@Jqsf zY4@-{C#q?`_CwE$Y)an}W!GmE?={H0t9X|yyJA0)7rY+F_)aSmcd7I%@=oXXhhU$4$QFvH*AM8|&~s>pY$`HAj_p_ExWd^M zGP^6zYeoCjwm99dL;faprTP_8hGOiBJX`pC<9%!4zuY#%u7;YlYb%jW>DyY_bw9und#*_B%yuq*cexvr#LjTG4xerU*k@Hg{WR6h;YA>*2#Xw{y)o-zG}S?_iF5S2jDDaz`;1@hn~2X zCSQ)6tb8pL$pe|6{F@(i0QSQixi$P-c* z@zwez9#xkAsM7NV$ROU@tMFQfU_NH3ar-szRgop08pXod5e@()U-al;2vEgz|==+lWk1Pus6ppSkff z6nWXueHCYU5kKrKmhRV~dr4i1ekCbGF?wQ+D179GLk|}I8y$jvFs3H@btrrk%hK~5 zzB1psq5WT+E!mE>RTH<3;^NGIs9N{G@n~*SYM(u~3*`?(kqfX)n1=>xUYX)y{XcY| z((?<;+vQtFWTjGu_dV<`E_n`V92|0NXIyy7sFmMB<1RBVBQ zbI#_zNbk#(-iZH0pK#Q|Ken*`q=|Fmp=dkHr1Z3=A>$2SX=3Qocbw4f_S^9i@e^XC9bg&io zB=O!+Jgn1)ekHuOH&ppr#yRmUM3aLAIx!Fh!93*SLT;%MRRw%Pd_EaO_tQ`z&2 z$ZxqW;>Y(lS*chT;{PQ4@;q|dg3|N+WWMI8ar>2B%hwgzguW%(uE@EazU4TVD&IgMeJ%@9I|WqZcQQ&*$T#j{UL+6YOlh(2N&sA+u~rqR!CimeuY#_AiHAI zjOT0lD99krIsTJ!?u1KOB4{O)**^J8--rLf%Yw(=79A~{O6X1wl zu?}{e1&}#KaSkhDSKH#CT~Cy{5_W}D%pkj}^Z#BKt@@HMmh2D z|Ef^G5;fhguZt}4;`<+a;<1vFe;L2`isHS8_a6)I{l9woPw>3E{6mpRai~>sep&v$ z;(QL7?-Zw<<%IJe+hRZeDPJjdc=-=LO?E{7;pQjS{}m3GE4+U}ApbEGZm*8hzl*G= zU&n+U)%v>v`(zaxIAGy}bv-)<&xI@27nu}?+lBrzc`@r%u?gO9t2lf=Q`nBS#l9UY zww5|PJL1#Ej>yG@w-es;;6_~h;LLy>4TamQ>{zk8$dZ2X_Y``TcXa6vtwWIi3vWNj zv{m~3Vb>vXJ{~-Wttb_lG$(Et>D5wk+CzqRdWlt7v4>jkB!2${86CIS`~8!Oj#3A4 zsl2?q^4k?E{#PLWS5$~SSN!bx z?cn)q1$;2e1US?%(hK_&Zd_JFX0C8P+^K25S=K6UF%K=BmsjANkLx17%FDa6-$dLP zYWDcB&o~r&niZo_2BMhQu?q@v+vdDTf9#Jq{TG3)@_`Q*g#0#X9otX$E8;)PChT3} z^{a~i6^Q>87dj0KAL{QxW}N?4oF_5?j`S<;PjGrIh0G1Y`Dphd{c2kr?AL3hu0+2= zDrS&fuTuP5A@i)_A0M=LqI4U2L%MUByv%jHyjn@?@m}|q3*AKf8 z1^qK@Ha>?q{bygK?=qz?;(x`Pj#Bt1{|{Fy) zt;K@<`cJ7V(XWt-8Kmb5#s4>Ceo*{VgZ*l#>3;oIWE1+fcKvGN*w>2p3;J*k;eEWG z@`IQ!ypZ<%(0@fHz!AItCY)hwLuO;eDJf!C+v1R2hixczCF}~Rm|^USvFqmRFzllZ zQ}_9Oe0I>ThMKbLuct^E41 zBSe;X60h5ECP}<9rRTAb=_|ZX^*$Qx$qBh<&t4)E;J9%LpC;pE5M(ARPP-!G)V4S{ zPOGFY;!C`SRLuCp_}O#tIh^GUTY&CcBd*-WwWV2Jkew@({xiT`=um}E zF9^;Pqjh?o%oEv!z1w>IihT%*Hc6$z>$7EQE`lovA=Dv z!e{M^^s8-guwO5cx)S{gshB`^MIPexyc#mMFg{oK?2@2e4K;1o8%36Q?0;}d%L`cI zU8i_=K;{AA{c8)){{+vohuteOX%00j_CI$i&ZCfdUU3d<(*JOaegE@})InVKKjzc6 zYSQmX#eEqvZ!7NQ0sliZ+ivZD-V|9+Pn?c=_Iyq8-iOSm!uvd7&rtp`4Dp|3(i~;a z6^euSKkP@vY1*FLV&9%P3*b6Ddzw$%s>z<;C@%K=E7w%qkUfc(wkK{EcCy4{e{N2X z)%t4~&L?<2RIUpdbsxePJA3oKB$RhlZXhxN4mHf^Rf!WF$HAU|CDyn0DtvKtlk?uS zI5h7ox0kwz&;FdGVuJDK&@(@*4GPxz!?34N*$1UF3gT?}S11@uX0NF^F47+{!|9K9 zR37R`g)eRj_?=km*nVoBRJIpc&)(*=Q}rwK5+2qDm0gAR@9q754dp$RM~O^;BmIhf z38xpc-9GARzVD&CK*tWzAs|4J4Azq}xOKT=xk z@1s@X%!=!feYE(~WJh)1eKRQ~L6g|Am8{Z8Dk&^orCo-aR&Y|`GPx?gb~;rbP^tZFUceKXvfFYL~} zeyz%jOn@W(3i~mq3VZ%ln=8&q#ridFaj0Lba2CLICHu9M`xX8beJK2G@cwU#|4rDg zpr-6vwUfvu^=+-}TD866wSbJuOIB8Sb`74#R_!Y?0gkh4)n1B&_+QmQ^jdjhF}ubs z4%+n)sViyM*4nNIDL(R^s$&)Z>#$uxP207r$R_md-c8%}D8<8?ziN!|zOD4^8a$7! zLi}f$04Hu2{6N(~D0`tG53FiH>4SpYrAp$71OM4Cj2{3`#%mqk&v2B&w7k zs5mD!ZO6F92|GS7b@+Dd7~Am~#d{T>eOK|m4%rbDZm+hZX}gsr{b+y1#L$pQ6bI|YD%@vhufh+rv-ek2i@p7Tsvo2d z;?n+#{j{x^xZf)7s$72f+KkN=e)!PtubA_6&py_mT#vHr@HM3l;?nmp%F4R+Y-KWZ z_Z+CU&eGS_IcQ!#5I{AO}q}`VGf@2#&KA-m7^3MJiSMh&%3&^w*J^!$1DEXkiCTQ zxx&v=JbMS%FT*bonJ_P5?{gLJ3dr89c$cn*y<-j1_Qn|Hx&rp@f$gx^-q$MrGRUZP z|1bGWdxNU<(DugqpX(s5^4pkS^ki?cvs(WT$NGP`TL1qt!}Ht0^~`Xr|5+x;F@DeZ zZMFU%j`ja=wf_I*3gx#~nC}aCkL!1Xiy93Jd*cf0f3A!8%5NJzO)rxFxE7x~7X^D& zBk+Bg5ld0dfd6<0+@7Q7# zCOto1eVWuoeC5ZDoehQbJX!J2gUn@$e`!|!4Qj%VR$n5r#8ZBh`qlbTn#In#URWcc#8KOI<-e`_UT|ANP|~Kc@JN34Y3n@(2ys`yr_-J+Djr{M*dy`&By- z^Q&K0?fAFyBN_K+R=*%JVP3+IJgazbKz4=j{@ARzAF&#c;+`K_E_IRJJwE~|U}&7Z zqxe|!SFcq3DOrBRP?a9qk9;Y01oThkztx{BK4Sg|htC!MNZ31c-$M1TA`|ARcG~+d z`GAM?$9@IR^AU*oBQ|mkh;plA|BQTi1abkcD`0<@506-1@e%V!?5OzJ_Rq|RM{Fl` z5Lfx}?qww|A0Dx_aI60d8SKN`E6T03{!R7kh&|*p!Fr9~!Td3Kq_gM#cz-lkn~T=i zTKUcF{5NhSMzkK!Bicz_#8-aP=w&D-|AjsC)jy$pp39HI`%&179R(jas?N2e*7zGXark;jX@hd^eO;{B@pW_JD?ws*DE z735pLjWvYuYaugL`1v7ee#&+8piK66gVYt|+x!>n7vax>%o4?aB+U=xzhV6sNnJs{ z&400W68_1M!MVDv(F&H*y^ z$ws^)G8sH)aPliJDIV7HBR*kVE?R3X%QMdvF~1|4%11>5lPGxo{*ly`9Oto=)%OF% z|00(k`4`0>W#^gMZ%^Az^w9nd_y2Pp#8q+1wzj45=OeKnI}g^(;}NwZ2sGjDD{+xwy@?`^b%@t_=NK8UDx(#qJ|!)eky1;!JjF01^Fg!8^5w4{Krcu zk03Wh-al$nlu{Jz1C8p1fBymHGn9K=yZ*EnG~TBv{m%ktsjEI(SMM7d{nhWbsgV~v zZyI@#)Rm4aC8;m#p%tegi#>m8%wSjKvHG}D~=IW^w9JDIjMuVUK}I2mek+K zPaOAE$SfD``uzJr9KTbW)LqIl^+qnhb!G75IP#X_Bj%6%O7R~q9!E0yCKs@E1^5z2 zK2v<`9gh4}_=R09Ke;~FcE*~HWr7^zhhN5Leh?0pLitez#pxDv`2YOD{w)wsN;2Zf zsCA`IYKIq3N?bgFPjUS{3TOVK;?QK!QQ_9`IuN}~->A{?WYiWSOFS>0;PWP)7=QK_ z$~7ps|Filylny8**q6omW^-R=e8Yc=zKHpw4s_Hg(!Xb$5zjL1ja-213hHm;8GN_! z5%WhOzS=8_&Pc@5K%SJzM=rp11^G6fA#Mo&SjZs0I{uFdejuJ@^7~3%LB3swB4!DH zC}a>{nZH5*1V0c@GWjErA#;}E z^Y;(D^G!=N?N|P6)afGY_pAN9%@eVICHi7+kGfKLf88O`uZg(Pq`sF)T|qw2E8LIZ z?0p?%?o|AF34UT;HOaqC>Y}{C-Ct2s-o30ewJ$#kd5LSseUN=zwc}H@zmc)t9`&%u zgn2H!$Nh}&BRbwQkbO;f8*SM1{)W4LSSes=oFOl9d^7I9SNsW~ z{SBrnJ@k0{K%a6Gk1$!-Hu-`G}J(Mp|PC>zU zX~*<*?fXB!ApPG{`u`06#;)3Eqffm44&E0t>UWU|>#OVpeTUzTwE))F@MHNg!*cnt z*kc$4U29}t+%+KaB3}(3Io#~Y90ZwvLLT}2*qN~1+K``-_;lbc>5F`b`@04)zh-Cm z!D!iQj5l`{8Z@RK>`oz=|5HK3i3@phWU)~oFDZoit$ss zqHKzSb^hpXC>5P|1`AcLRVe1={;%v6DeV~ z{m+xSg8JKhu;y&VUkVxAS8uOqvuzXn^nE$m{A;DIfL~3WOVnJY+JTr~b00S&7i~7z z^W(w$a%%1pnJ`cJaWl`CDIQ{e&2x%(?P~bZjB|;ar=>2kyC1jRxkSwqijVvMYTg$9 z=7mf@nt3i!^QP26T;)g0%38bp8}V8E==+fQRB`8fel&PrOby}|%LF;>M^`A$zajG< z#o^z%;dON&|BhRn&cAEEm%50r{HW2>P-tGQRQ%sCU$+qc78`{9DA~!h-|jE)jrrQI zj9ydfBEIsgByapG{0j2We9e(4eNd`V8c@zgL40ZM%jl1s%=PnV__)!#J8HDW>1tjF z*4ZW>&$9pMze!y|{jFa|J}7+TNTWsXXp0{b{FGB~f?q0irRRC;)OrB^+qI+SzmUcH z+g{O@1MECkadR}DQ_i0W*YEog#0Xda=%XM@BajHumh+4I5!>Qa{y(~h)J1mo{0O9g zpngW?z@jSE9 zxEFwB!aUVZ!^6OK`cB6Cd5X6>_Rh$EN6(hJ0`_+K@8}td-w2u06hGVEnfdQ%+zY^U z5Lfx_?q#iA{yX{v#f2XkeX(%29;*B{_TSxoOS)e#5Sbvy_&sA^laP0feI4Z~yvH1^#XT&w z7(2DNm!lRotli(W^M8Ip`d_2;e+=z--c=WE{Y5x#P(K;_X?s5-vZSwy6ZCl#Cyc$H zRJ@n*{$1g1!{_BDPG;xdVSAgpZCyb=`{_3ne+6Xzt@zI?KW+IbSIvVo+261Q*A?X3 z{ZQo7GTv4~<~QMQyI-0g$bZB7|15O{`K8wWKMH?L4!M7%_&QG7^9FzYB`D50V zx&nSJmH%SR;p{MGW5{l!+VLNi|6+cJ?#mg2y#SU8^L#&wb&l|MgzR3z+iu6zh+7%? z@0dNLF0#8Hw_N^GMpjfk_m!pBaPvlIu#2 z^H}eAoSS_&$A|A6Gg9gMrk!WreL0RQdMN)k2KNGR9mG{}%i5dHGqFb|T%7rjnIhaB z2C8@xxG%=Fz@A`xdQXzNGWc|!IR^QN(|aal7AyXP34Y4C$;e6BeWBD9;Jfoo?0E|R zB*>_J`5kvraXaI_m@(M@XPF?!#2v&<=xN4S9^*Pcb`%P7qp|0pT#a%UN`I8DDBC&x z|Fjo0zSa4|80`O#xx-Z-?Rd1ZvsrH>&QYnKGtN=RU@w5{BK=j~fZlQEsMvEBJKqbL z#}xmjaNIWX$?rjod01qLr{Xq!-o|b0Zwn7={xPo#ZzuhH-QfC)Y6{+$F$Q}9Tvw29 z<2Lrzg^x4cF&`=ZsVZ(7erQ~0+4}>jE6BHT8~ggg{|qwUDZbt}H2hT1ZbJWWq^=;} z#%-J_2p?zuWB(%jo%Oz<;U~^9Q{xSJPY&@nkNeif;*Y9}Doy+M*6Db%O4>7aJ=C#@ zYR`Qto@Cq~Gj>Cf$>50}Mm!l?P`oYieiz02XYqK#8YKPNSmXj+SK9tYDvl?{kFZ}I zimhTJ@ORxI%b$a4 z+ONmeG?68q=g;wZ_rY2 z?Rs&-pQq06yOd?x8}|ZmT|xbAJVCA?e4P1@y;1nPrd>c=YBMJXe$Vk6OyFHcAKM+qc`OivSnZ+B&)&iN2Wr<6nJ`ba6Z+QX#oo1u`L$as-j%Ci?~MJ++AXB6fW6)RWvyEG z*X{tB7Q%0_PNuyx_b+RAlRAj&;x_e@+rO+ue!~8(c3;S}QQWyIZe^^4YH^Pu%LF;b z?;HDKAJB1d=3m=KajsQy%kJm2^S_EAjmC)9aikXa0&rc#cX2BgF%%O=U|-Y6d5o+4 zIQWrqx1wMlwHEik*1nDMJl#ssgPNq z_+O^^iO`kJH+^aA3i55-!v3@Hmq6xB;qTQw%}<1`Z2oCdSCDVx7WTe{e;#Di{=#0j zC-~{}`)vMFsVm^uQu~+KqnCCd=GWdXcG!DM&yNPr?`v-snJ_QmM{iKPyCM6S;vKdc zel%nMvKH%qu8ZvM$1S&iiL(jO7wiApR~7&AOh1~re_8vI)RES|Z7NTI9}zxce(eh3 z@3XbCcgA|N_C1ja^Ah&P{Rz&m;w+|irQ&rgZf~nWDo?2WO6p468&bfKU;9Gwe}unu z_*}HlRay2nRHcXZZ^-kxj)4BDJfZd%;g3ViAGe`vK(ued-l69Yj9Xu1!aUVZ#IbSf zC>~mWfkgdpAg3LB7os zkZTDaXU5}}D87DvboiVzo4-iv3i559fILt5Cqw2u#s503e;`i?>yLW@xUL}I<_X9# zg?}+*t`mOC;}ZOEo)G3=C3OY-S}IRKE-dXp%pZ5RYR6rE+zOp@j>EnT%Y=CeKYFX; zJpkFK74L)9h+7$X!Z_>^ab0A0FHdOe@&v2_L|@zwKkiN8x9XS~w=(mDaj!`o#Qi3I z{y^uR=JB)fQ$lHezpS|LLgt^sEh*$SHt+0n2lzHOZ@n{ag~)_B#>&K5t~l@uHXmc3(A&3CEvBph?a_V(djVV*@xS-b{)U2;voKySMk5JO>w(Y zivxBYkND4ZrS00o*>${%|Kkz=$L}L{Ej=&Gu01H*()~DoPmv{_jr(!$A4>z)*meBw zO5av^f1vPM^L_W`KC+B`ukknwV3{Dt#4W>tKXmS4(9qDjU>x39GpMK^id!7=LpMrY#Ml14#H{)-U(9^HPVw)+ z`v(>Op$tC+Dz#tv_wo0MY+7IO@8gk=IJ-UunRkTOj{Rs!(Z%`j6WX*_lDGMgyL|`_k!&Dgwpc^@UgzOSJZAu@qSg)#n=BcsVm*DD!zQI z_&D<)|1;xrQM*U7`ZW+=uou9x#MAMmM8%iy6z_M~d2Qhxz<%F+A9qy?_q!YX2|YjS z))d(w&-x?Nk35d*5cBJ{;M#K00mF*=Bir(HoT)=Dz;zK{#~DZ&is@gBCE+9H*X^qK zPh|KbLpAMJ^QLZRkqzkU{Cpkq6Q?g?ejV0b_KFT<{~OPn;Qn9Tej*d(uwD079K`&( z!x@u{4xF$Wc2xt{(-XM>*A=iU4P3Hod&Ni0uT#(CIq>yNyQchn-7z9dJniR8t)GXV zsB4e1H_8qe=O3eB-2oq!ubb@jZnhVsZx^L6Vt(CNhl>tk{~z~j@cTk_H6jzzll-9> zuOk!(F~4r6;w&iYk7A1j;!GWK0j`VqI?j|zoH6!v;});cL`XSrmfPeqH)J1&l-yvlvW*t%21?2@4>}f#f z{DgJz_a_vI#TWFW z8^04afy}l_&;MrHH5FebY$dY9)A6OXtRp6Du6R2^M%@o^DEkL%*UA=AC~>XghL>6gzyjBIKvNtO6^zU zbpqDzESuI>{QHCsiq{n~Rf@O7>TB)F3tw-%^bna4huUTQ0L~2%OY+b!4;$yvpZN*r zp~(KW1OM4Cj31bQ6AfqAQFvePDA8fJ74KIyUA*`*p-$>b_p8L03AKtp6*BXL-(joyV(puungc*w02$@q9?_}Q(@xt5d*Aqo1$gzIN^q;fqnUJ|eaqcSW zhir?}@nyn=QWx=ce1VjqP`~1Q!tt+w%#Ff7eCrH9WT>Y7dcI(N%d!D|oqwNjwc_0d znR^xQ65p=8@b)-&iA<2gc3q}84?*Tx#d&%)?5YN=$A3!d3fNWr`{Rm_Gye&n3BTiB znRZS4_t!<1c-p_Wk@drb$MLykC|9H4+zstraDor?>oLz)DOiLk~uALO8J7h*H&PPS<8n>9o ztM1o+Qdi2ZZSD9(-Z0@6d=C3G=-)iXPJUu#TKYuBIl!uSR7 zq+iG5{Zvxa8P9W^c$3JaImW7%bG_o+37JO}=Mc*==gc3N@1xjD-P#;X;vrZalh zZ>0Fx|F2j3|6RUIj#oye$7?7_wf}$gO{-y7?EkY& znxpKh_W$d#|6i~6|Brq{*){A3RKtBgP=Bb@C3dwR*LH2M?27&WdbR)G^?;;Z85gkY zF(NDa_AKjJ-m`NYwJ<*rr}2C7`AWp%O00(~t8)1{V9tTwbBv8QLdjv=e~-VDQAVJ2 zar5W@{DQ_2>T~0GIO;|dECRCuYWI>pM-v$1idF-41Mu$y}ID<54n8rSGft^ z-~4FgLbaVCe>CLq*-6+RXgCgaT?4sWA&+zVUfAdBv!*BK-jKczt9kSeWWRI&936Z9 zYK$u|SSF+=*#)|6aegkp?Z>(Nl;zlegx?vCd5&jP<@?C~u>&Vwn(?@5<`i)6@OI@B_V-bRw{+)zz#Bpa*Dc&Ef z_!9$mwaAoR4-{EX-`2*it;Mcw74LA!3=rON{(V2Z?DzcPB*bNw32}Jd)IW^RwLsYl z1$p5l#PmsJDBw5uMRqMydJYA*#!;i=_}tm7qk{23jF#$G_yDfU>(^L>AjGdy{Be+( zqWFRPe$YkKPpN*LB(k2p+nCR{k$#<^crzh`xNEPdC*N1l#QJm+asieJaol{FtvJU+ zMy>mM-eBj;%dqS6@cPuWnHz3wYc3scCt>~1b$a%V#p2JKd85|)UEo9XCzt=2pom#>-GI)9+=CMqWgN6}D zt^X%s{XgjurPtL>tW%9)U5jJOdVH+^xh~?{^AMIY6ymG(|0KkzN$(54_j;*ys!&b) z|E1y!av+us=u3%&$(tt4MnN7t={}U}QIJDS`Vj@|<>tOfU$y@*>7U@LeSzMyy?!la zhv?}EomnQRC-u2_BNpk<8VQrBO=t}|I@EVY(a9nFZ%x~C2@#gq;4ejeRVExZBL5{U+gIfPLAm%sh zt~mO8@TvRU?Z~GVr|sH+T!8Be*tOJ9NY9;=o{0Gkt%ct=@I7=#P0W{uRw7G0UQe|( z?y{}(^9{&PoLv#~8`Qo)-`9)hMGaX0vrLGCX2p87R~*FrhG9ytRmJimX|%Ddo-Yl@ zN?pX~^;9fE5aSmbc0$3rALA(B&=sXU%6?d5z)wtsk8IA1`n9XlA2GjSydy^a$^-Gm zs!aA%ez0Mz$dbPFy}^#1diN~v)cZ*4*4W-Piieorp!Nm&?_$5V)W40vyw< zm@`>%5c3;O621B#t-c>;zQ?3j$-2q$bn*KYxd7Ki{2$Esm{=%gkX;)U|8&S)p!hfC zBJ(b@{o1bQiY$Ge;u-VIw=u20XDQyLkdd(y4cOoMJ^tQSOZ7zu)nKKCoi7u?MM{V(Z%htmJ=XtUHC4frvszxp<4G5z0? zx&r#g{u%n?zRW!CWijXG`Qh--)fM<%8oVC)bWy$Xb+1CM7YbMt2SUClWU;R?at@xC zh4bQK7wP}H(*GN@`Bx_u4eX!PUp;WCnEpRWT><@D8;be;zlI-#kEx%ZjCHlWqJj6v zeEuKw`+xNPMfLRGBJG%r@xpZm+R?_;ZR{|4E!7VA^~u{ZH5U!y=bZ68#EJ7UI~{!R zPTGYSR~eXxledz(0(@F+5`S~W-w85%EB?GhKeYb;;J1*v0(_jZTm5%a{FabGe6?3J z=;H+cfd3Ev0a6$7DQ}=oJEnVCSC==g}uJ()MS_NUJKC)bNC=}YH)@_7^Bh*zh0@N<(9 zUzspL$_4pI^#b0$xB5h#Bt+Vt^X%q3z=o2=g z^+&M?%t{r{4EtSQKsSvIAwJ-{a3 z&WeY7{-#g{M$Bl~cD`Lh_rXuW`k!S29I>lf|4+gCe@Z9OYgp%^cGb6C`F1^A>Pp$Q zhqCLTO3yBkiKmkJKs4;y47d+$nYFixaSFHcJu0+2=Dz+WjRjvQ0VEsSk9xDf?%>Fm}b>n&{aQ z@7p^P8sU0BGMe)zf>euvr=u?jn*|fdmgot=$ zO5bB4(^q&S*Yx`}^cZCBNS(!;&#;ukv^xGS|xR*?HVUUq-TZV zkAX~s;-8vj*YthpQ*j2$vhut)>n%I=>PZidv{e&#oZ?Q0>;mDATGM;JTuI2!PsJW4 z%Y=Ex!tq5s%n|1omO%DQ#oH(Q`Em&j$mM%>#yX4ZB0I}IN5`&4Z(xXze8ln3gUl6* z&-WRd-{GL=&TFdDL;EM>0$c~_PrsvO6z3zz{LYwMGjXLis*o9oESC$^XG$oQq6( z80B^ptgo8;BK`4wOdem;@;DEolQ$wqqffH?(dK&|$$m2SQ~f$^U6D=skrLanRw2X1 zxsz}=#`|rYw$bRHe7_aCk7gRy|11;cx#35C17}^r+Yz#R32)3!Mg10Qkn&s8_K>=$ zpS9mIQoxYDyDI+vkU3EC7ufyLq~9W{(nH(3t<)jhPPm`GQ^&(;SJZM#757lc*xVWP zXl$9~HgTRj4S5pFq&achNWTt>(-kr*&f_<5{%W+Pe3kZjRKlv79M2+rPV0&I&vg-> zzW-r`Or^Mpuj2nS#Q$l-d~?`LPIZNKIX6ItR>e$1b5NtF_BsL~hb3)3bE zul5KV@69=u(N~`*b5*k4?(2*A&vm8wbetUPtK$ANocT{%sQA|<`D(+x7=NDBmFAa- z{w6#qKNJfZlnCitz?IbJdTZBiHU$)ChR$MC$yI%XPj_i3dl*x#P^ISTfDr>~E) z4a#14kA3%PH|O$$d!uwhX@_zj%Jr_D|MLs7|IJGOXTf^KRTqtK=lK;5&;B@nNo3M` zD!=l);=Bo&4;81ps9zzI1^vqVQWx=+U%^%*U8Lu`ivKBOzES+g!hYqLczeOu_e+sY zj;mwh+f?Fl{kh`(fWCCNTvT^ZVqB&DO18eMq%Mk=%C8+$9{UwWk>0;ZJEmj(KYb(q zSG42eWIIy+C9@sVH;}s0b`bx9vFzgY^vxl&lkg|xlKhl^$>wh_b*1^@Uoek^k8|Yd zvFkUDi12Ki4a^G{&swJZOE!OBsVmJF|AILz{5Fv3V2E@@6P`-&)BYu!e~8pYe3RF; zDnI;)R^=VLc9G}4Og~8RJ441Sz~U>KsPA*m_`cTkqeUjj!4x;+Z2FOkgERW+Ll~2b zCSH}9eh>wsup~#>iLuDlSL+j7duhbvtIGA=AV9o((~fXb!18d zV`)!soRxB2WM{LE^rWnvk)QB7WBRF(xj^_xoyfZs)kEcJ)6bDQLUQ)e!2}_DpQ-p* z^G{d%?~_J(_U6Za`Fi3khGjB%VsFG}%%A)W%z+u^FXsHra+Gl>vr$e#LHum4i}bxr z>5KjU={R4vS2XFg)#-29YV`X1NvSK;-{w)q#D7fjvF4xt560)BN#AGpw|$f`ec0pT z42ua3Rt5qqBAIDh53 zLiRR~*faK?v4i68iT82pU>XrkemmRV_7Qv3SdWXd0Iq|$eq5&QY2xmyxCcO{165`I z6HPf>?Tf8y!P_Rjoe}?8Cdh%6iKF8G48;E#Jrt*AHR7_`Q1|rgCUp_tkIO_M{?SU$ zK9EuO-A{QTGcMDHy2ry_0LzBPRjc@@f|N7+aWn2jfv=xo;>${u4^UpgdpTEhhWN8z zkly{3-jl$c8N9lh#-rpenY3+P_ zb0X%AFP#6gOa@QdX?WPDaDMAnyuV-ZDptqdu?8u7-y?N}>|Mh4zEklZfehBy_KK!G zo^5YXMGtN7r=^aN{-sHKW1qz7|1xCXW_&K1Uh3PM6EV-;Z-`6=Pugkh{i@<&%|GLF z#T&dj_Kr13*&BNSTvy26rEG8b4X5wdkiojzUeWZ2v+WJ4=%MZXqtp@7zje~y-zolo zk$0}c_*^t&f8XAm2x)uI#MuPPWbmY&u(vrvXMJZzc)y3@^sxz8nClyv*G289`g; z$d89?e-zA@@m)}!!}n*p7m>z4lm0E0{>Py0eVkl0b8qilrxhoH-grAsWWxHo;TH3b zRXnWuXJTD#uV`lP#JP?fJ0vY=hMSis&8(EVXuO$ySS@8fZ~D7j@kir57PIz>X5MZ0 zC;41Q%gglkx!4QfI*4oTL-OQW#@um=iucuDYOn5h_{h7j)~kt+AUykH|DWp$ z^IOGywf{f!c*r2GIsPRHzHAQ`=btWhh502k&u1cEo`rSB%wJKkw>k^^o3oIw&H4!C zK$I5ToIn3B_4_Hx{@0-mcQ{TodyRztvOQT`|J$Ulu>Pg7{jq=G{OrAuc~bF*C-|~G zS)Bi<)aA{;66_C_*bPF9B0D^!+5tZ?^EGM5obAshVwUgB;v?~v89 zx7)b$?0vA*6|^@t?o9qL^C5ihHI&Ct?#Sh5zk~8Q$}e~Z-+E5>W_dyOK2Yi38*M;* zwO2In@+SIQZ5(=fWBt!{1nsXj4vDYU-?N58wwCd^X#NIXe{;I*_jirRWbwTI#(j#e zzb8Ugt@r1*U9J9h8;73W)1|Ipe`Dj2^qr#k^C6?w|MM?w!rp4*(BmQ(;5vf(tBphA zH!42X|FbR>doNhqvp1)UzP)k(Kg(qCJbRy|cuOIx*82OoaiMLXCvp0g@-b#3j z_Ov|YI=QuSx%{5^_szY}(1%SNnB4(oe-!M8&zgcV0;NCRW8Kl*7v*nFOHEjp!%d8RfN^*o!stJD$f2eq+i_^_KBceD4!`?k(%QR5nZzjLDI z@k&G{i>Lb?eI>m1kUc{2_FgT&<~A0+cHsU$t}AG7Y%G$#9TdMSWcn)pX-(K$Z7h1+ zo>E6pf3>kleB?;KtU|Ib$I|HWrCVQ;mu=yA=Qw{-;dR~w7ON1o#BjhH|C46*l; zwS0SXqU7;T5t%HWXYUgg4>5oC?TWXWaa;U`@_)D&fa?m{8ykz{54*$vU4?QMN+V=0 zLOBs-R=g&3t!aiAWN-DogV~7rvk_PA6)kBpZ;(jl*&lg6*FpA|yrFwpa$nK-Gvq0* zzp>{(`(?)GqT|<5c?05D=zAu!Ul5rvk9#|g+q03EI3D)=XRlDaR*Af!U1HrS8l>`u z*~_Ia>Tk&#VkuzA-tQw`eTwcq%a7{SxwNG7vHZOkJm+5cts!$T<8#r8Cwb@l{1{3vKb?cUPnHRC zFg!_5`dR^(o)vW^@=|mGD{SHMB+Tkr-~lh z-ixFT8DE-P-jej5uec{e<~+rHPmM40+-3E>HLoUnK;h|qw$zouZ$*6MBW`?M44G?% zf68GAzW6cU0wF$f0In;8UqbxL75^s4+@tuHC-~w=iu3Q3x-$5s#7BPQ^nVaC&kFxk z{yiPz$Bq5ve4sf0NvSJ6{!7yH4S9-d2iE^{K2z-&?ajB~_XOr(FOp?4crs3r!_L8; z;hb-C`MFs8&fN*6B}xbUKgm~I1ODt6WOs0!zKHpA)O!EaGm6i5wqR<$BNyPhsNcQ$ zZlvsd|5ou4^XG2iw2V&uF>AgP)w5&e`nmkj7s13i=p5_?&;2Tw+YO9eAIar*MqJ)S z?jLpl`yxLKdj*xSeR&JWz6IHaTz+0Ymuq<-w}8LNvisb>NnIIy@;4Z3!pENfT(#am?WF`i;BPYdrBYW0 zpZpERx$v?6pNsfvujuqv34XxeWb(28=ejcZ&Y;0OFoCcl@| zm7f2lDStD!hib=Q$X2U%{G$9##yVy0Fp6ICrSx;rxH@BH^8}OY!;68YJiY zT$}}PU1WD}z8fjbclf)x<594do_h((%_vycp-p*XhvvSFzXMT~ zpE)$a56t&W{%ulM20xzfH!J?Vka>dfx#-MC6a2t@&*VQUb!G75`TmgNKMR>Rgn!nq z34UO{XYyZ>y3+Hnb$Y(Pq}qYA%DL)(fU}PG=6eYrAbIfx_xG|)22aMR8Sn2Y9>(ol zb^d?W?ZxLiYml1nE2S>7yEosBR2<(;9OnFD?$3y;n~2@d=I3R(=P__LO;piC&$mCM zj&y&MTubsZ$R*}&hk|wNyo1RO`MI!t%aw@d8{~33VV|O9Yvc$6U3>nt7vyKue*U~I z(S}`I_0icUCdOM}zGvBe-i}gNhW<3)p}VvDygeXOqWE7Y_<{MJ$;TNB*OkGi`3}1a zza3;c3jdtr68yk?&*UE_b!G5rzN62DeEKB;DeO6^8 zq^q&L7c1TwkhxfR=gqYHtZZ-Z`_61SvvU@(_XSc{h~J9&=PLf?khw|m-%Ik<#4gs~ z*GpX?zHuL9?`stQcE~&^{PPb^^3}vH#=lSM3h_&sf4Aaeoj31A#lI-YR};G!|2e5E z#7C%z^?zFNUxmza#b1@+d*5>|(*MW>xULYt4fEep{Er~>mGCbZoZ#!{(HGPI3#lu_ zH_Jonf9!`izxEyG^G1sQK!UHIM_-KptJD?Zw=;Y-U*~Uw&+i+vO}wAC80B1)Yf$b+ zc^c&{l+RFpa&2su7i1SO*e>%om$m^IUASGsF8Vq7LAxaU)#3KJgV1v*_KOB@4V`LG z27m*LR|5Yln9xgwb<;C&fq1pO5?On19h$z9Wo0P|CbEAf|`ui^D!4#mUwh-(;3f`>SCY59Q&*Jvy{F|AR}`l zy7)eOZqq~_HXmmJER*7xM&Y9Ig8fBj*Rvsm^|rmDi=+aZ{xMhE!^I3;> z>8x*W?EiCJ0lrCRW4_w|pT7!rUdQ|kUD2gqCiyC#Ey7>$7pco1Z%1_L)IWYOm9aP0 zDQ+Gui12o4{sQ+LJ6T`fE7-ru2|P{UA|q7p31IW6d$?S zf+0%JdqQ?4JEiS9P-KZG@yxW+%~$v(8Apiu3u=XT`98_{k{C$bMOI<$FBTvd;JN~Q zH(%isg^!rO0P)pc(d8#3`N{d}8{Fd~7vQ>levf|fsEYl?f+>nWA2Nu$j{k+_+dPQ} zmd9BvGAR!AisdX+oKqpA?gzNyua;xt`KO3O`u7ISgpHfLr^h`<>hR-vkA5^i&s02| z|1Y?U)yhRz)P~|YAlzO(KamTtEa~U`0X|Qo2>Kz;!H)SV?8{VP4O#UD$}=eUqDUU$ z8t`YoAbpoAeeXwmo^+Jxinr~&Vf!ZIPRPEGNgXM@Y4qBDeOPgygUsu~y|P`Bn;5?# z?kiG9ifer=>8tkr7rYG_weNrB*-5V2H^~}LE2NGT*KC&HBJOgfFUHA&@8W;Mf1@kE zPjc0MNf!4TsUyWTnLsPhrbLp{#T zW(h88$8XY(h3le@P2zvUf1|5zNwh=nmt?i$uTn=!e|v^*xCB)EE? zB#VoERjwn&Z5P)~+-((icgS>5+%XBR-iOHI?kjZ=m+k|MKis2duQKDC$)7xoae@0~ z7A!|W9=YH*$RVFvi1sx1MS3F-=k?Hn|AO1qQKPG$xBLCdPcA%4J`>anzLo05(v|C7 z*aI?yRJ|+JIfB_=m-~8YrPiY#TPO~=Ivy$#rs&wP>A10@hc!xBm8TQwQBjfo8KsP1^MvR#9yHJr$FX>#b21@r~Gs_AMu~-B7VH@)$MRR0K41a z9Vx{jzRCj@UIH1cyX_TS*H-PXW!&$%5b>X7LL8Ga5ND~<^9IP=&6r$t-B8PU8Gdy+ zn z^)Wrnj!BnZJu_>B*wF5-XZOBo93sm}cuVh?=bO2xlc`wd^-7}lG&Ux{o|-@|*xKkq@j zFOwiu+mZ|1ate8M#j+y7_eL zAI(NQCH9JLSxbF?X;lmUx|*-& zaFGe~xRrKX4^zBa$WCQkF1ls^#P^p%{wmghCYERK2C0ke{cS>TU`St#D>tvO2fIk! z_kYV7_WaD)J7qVehqm`ZsUxXB=40C4^AsO@{)^5L{crW{&9`Ow_C7;o!aUVZ<3~A{BRU&9HY&ReET9-!63!cct`mAN!?# z@+-JMcG2%BSQ9S#0tI_^i~fcJ|JK|Wjk8;n-iZH;RQ$hfU7O#<@jtlVy9n{0WdeGV zafqYh|02ZyMJoQ^R-*Dq^*gdji^WkY;lB|7xh~@Wprv995?{stMTq~4RQ$h<_Z!T* z!SAQI{kmTf|5=uJDzEC)y`TFY82VD?FXDfrbY^t>#$NpAZ8?AbApWyVkb{8tXB#j9Y%~%&SBL1^X29NsQ@l^b6 z+#j+k-&l5D;=WNo9(WoUi+cUmPU<2%^Z0X8v7H;$`F|tgf1`^3%YL)-$HarQ-9!&H zjvJ4VI+FUsuchr>rurH2zfqn4-!ay+cQBuA#908#WbmY&hzE_wDc%sgSMmOibBftp zG)URITIx#LJC?Hcu2g))|3(%6@AxHbZ%Y+Dw7n-u9i;!~GQMqo>xQ_QSB(=CAMwAD zodM?Wowd0wXLC3&KaS^j_pYwj?YO&D@v;7IRC&l<)4X*}Fwbp#RAjPvJU~fb z^*w+_#Q(-OoOz?Wu4r;y;cI}2=J~Z(r7oIhysi)_iXWz5UHo_lGM@L4!XL+GbIJ>tP_#@S-E|G#)k zyx(7O&+zi0V4k^nJCO-;&^YoRx8ifyTU`u4zqlXz<}{Q!DDbDveUYA9%XnH0|FyWg zqek~U&}81FEM}sXKc5yKEOn9ooR3*4`uyD78uQjgISJ+UT>ki;x%^2O7boDJj1z9A zDx3UI-&T;@9%X56jrqu_j<11yTgc+Ro)ZgAiqb!l{_6gN#l6wyp-wKkcgH|J$Xc8J z)8lHO$kM!0d5y^*mD{9ojlOn%WN{T_$13jCUVakHw-=8RnG7Be|Cm>;coQHyQ}JFd zmY;|Q$^2yTG^vaFS>=PVR2(NT#zo(GkU>Y=E4r^VoS#^#=%MYsMC$PL?;Pjfau=cH zFH-!|A$tMibJ6`9diD-J=VCGT|5+x3C+#%;L!ARGz7+4TSG)t7w6~{0%HG#VU7o$2 zl-2i2rSC0}c~0>!4A|SryD;U&sl|6m9ZCJ+Z@YQ+MqacS_ejBq<`;j2f;0BT$SaoM zJZK4W(t#y+zk~G;M~WWU#Ov>1{=XRhh-EVL_51r3#aj;9e<|L< z#rj(;nCkCOq^@Lt$5OVxu|L6i$zrVe7yqpImxlY>Qbi9vzkZN9NPo^BF-~kA?7E!n z{jK67CtiYmc6&t+Zf)~%vtOb1xA_Cwk1knLWV5+(lMUBwGqT=GFy5AI#kJ<52g{mV z2P8G|)&Wa4le(xKybjP(7DesYShZt&$hJ`JxH^!B>w4^z^X#yz)IogC!y!le&CdF9 z|1ZJ)3C<4tLe}2PfL25g@$>lN^;a+tUs576Sv(#nq%ZOz$7>JSzM}6#eVWV*eGM?+ zJ-y4ME*kHghl>>5|Fon7KDR##;{Fos&np#oyxZ^(YshoQyrNb#VTH zJ*Ge7BK*-x7btLVNdD^{evcJm}e+*$mPN1T1H zf(+Kx_KF^v-eexGT5O_6Vm{p@brGNQa4SWhH+~fPiR0gi_c&*_SM&&f|AFpPvHL(w zHSO1Sy74JgoVb z;Ql(+^U<@4#c9zX8K;+EFM#VJJ98fF^tOKbEyYJ}wB#$sL*JjmaoSQv4{h(yr4Frs z*%3z~P;^Z_zu^DTb{+6>703H>gsv9|kOV?=Ab^1YuGkO)*m4CoB-sW62nb+$CzMb_ zb#HQ!i`?Zd+j5uaz4sD&@6CYe?f>n(ot@eD_T4G@qsMRYoqaRk%(rD`XWzZM=^cgt zIb^>V{5${S`*?~PBTDXi)Z;st zhYsFNWHRtPz6bB3@b-l)_P6#bx$Bz*-}Zj`ct%^#tp_Q-v9D%b0lpz+`EIN54~9$+ zhR>DU{r6114XXH|#`j?CuBjyjjPw?;CErA~z?^*bF zi7x7YyYC^ZE6TcCF#@CUcDv%?VaTfUfcu7cd2ld)7>wEk%VgnkM-iU-9>8G4{K2aJ zf8UBk9-LlZ#RCjDoi`0eF2K5ocf0RVepCK3_*LaE>i>hk6yERuLpl#u@@~L+xY#GL z4)WjbbG2M63qk&WqVT^%tyS&w?_Xf|xsPL?pSrJ0Yn1OC8r9mKAsdL!EPGljdxqdO z=dDAq{~x0E{|`j!z9(Z(dK_l<#}KTctc&chc`SL+udHi)=X`94;RQ8ou>))Ekln43 zi1QDe@2z{m-?`}@OT)~I2f|C!rL3NYQO&gue0X-)5JS_U%QGo&V%H-H>9oT zO09b&6|Z|kFen`F*#8gdul)TvW8I5U#SgXa4e2a8QtM7EN6&>CdJ$^-C!r0%xP2Av z6Udpo@=>(g@%PA=hPFdP-Z1pn__wdnra9aGUoWVi4^e&}4c(}#+pFZkOB3r}dfm5#dI;d3PqCZBVg9`D)s=Zmfke0na_kaHCNWstc+@E=M(=hog{ z-=uN(Z_!2L{{tmu?xs~c8S00tlpQ$#A5x|4n4SB*d1t?8)S43wZ=J#ZpJg)f>_{cN z;R>%BvU3#PV;0Y>doP;%4O+Eom7a6T3p48y>)uS!nd09{k{uY!Zr-83HDsmO@o*bE z{>*uQh(Gp6&%0%!Bem|Z#WnyCKF;MFegkAx+<$nfUFVnw(7<0Y3HN4z2gHBYnQ4y= z0A$bY${xi3A5G#&;hI}r1So*{NTu76JxYWx5T%H)A4BN zIFSkCv6U7N>x#pxf$V&Rcc2<)>i1NX=j;I);`Mv2=pw%D_b_NbVx-vLSqi@nGHVt7 z)b#f-oV?o|`gzIFm7*gx-hitMp2T;(!oL-=DnEEqf6obgbHUT|6Y-yAvhbL3!n6}gZ$Td9J2RbeLHpGiXZv^n!^7GvR?}RQ+Y2BZo@a;dVXU6&oY^K)==DdQ(wN}d{( zkq0w>?2qDo*jA#0cz92ZlG48Y`&9Jq+r=&}gujKt-yX7mCT#P+lBd4OQ5Axpa}e5p z3_~u!G6nF+Qo`F&;q3|8Zi4spt`^VamFD}t>2=)mfSLDrZzDR%9$oKn(lMsVtA=9V zJ@hr?Q^+ZX9D;^>dayUlo4Q1EU&P0LijTu#dw+*o^7IWhuQl^7+>bG@y8p{WM{3-4 z?GryI!Hm1U3K#qTVW@Z8tK{j=?YOh?gm1w0cm_`_6U2dKGL!T0OzRr1W$>H8vC-h>ek?+THn zamD!}ZX@c`sdKMnydHL$!o2~qBN;YV^6a51UT1tyW*BM#EEC3~t|z7BCvFyT>j-N8 z!mr^xUb7TnXdXR*d2~BkeJ(#7XZ6FUq9IQif%BW;U!dXq zW;k9CTaRX5m!j>0wvDs%e||y!BOh}9uK>nvPF=~fj|B1swm&0Z7>2U|*5R!qWtHW9 zx|dg!Nje;lGj;wy4CnvD9ufTK+Sz$*=F<-?IbHDM1PZ=Am%x~RYH`9E$Kwtm}rrOy9{y#bkzmA`ic>ZVR!2={Pt{?9rR z{+ITt2=M)m^8a(lelPg{@%iR-!S@sA|16V%=kvW@@P_9wZZ}tW#rRepB>5h`iReo3 zZKYzqF?Zbf9=;`HwpaLJz8O{gP;p{7&i`2l`OkSB?zS*lLRq;Ca5LV_JmvW{yanDL zAo$OBRP~OG?|~0TJ)32+@YqnZo(#JQ?J~&VzN+EpqG69Y>^Zc1(bnL51$b}1tJWMB z`K#_f7=AGDk8(&Q&!1Ruzv(lG4%g#+csJ2S{mu0bk)ri<7;3XOV2!*1dyg9rK)W9I z{o$PK`V-KQpO4r&m+Sd(Zi5{^b$0QK{IF@jKyG!z1jy}-)`0VK;9kEM8umdW+M(S7 z+2?W_>{P~L@+bMPzIQnMIOsdg{d>vt_XO%KV!xZE0&r`jE(k za2&7qE1ahwgYVTjoOMNbRYs?HeNl92Uabg05U>AH_}KFg|A^spB`=q!d1XklUyoPB zf0ot$B8XL*=6F?ce>nF1!@m{0SGH*auQ*3#nGlZS^$YQ91mgV&74Kg;I0Gkh{E8Dv zo=0pVx;4+%Z^tw8Xg5zsApVcoPWe3}%`@|s-?F3USkH$ixE4C-VumVBf5wmuij+!8XnE_D7xrHKrEz1 z7Gio{j%Y2q2;V-BB9@9VOkQz4YHQao!DshH>xFg<+L>sutGO@YbzkLwPvA=YEqV20 z`&>lzJPhk~%%A4FugH?WcK>TXPe&Jo*Gu6IgpAtfzc$G3f0=J@pHPHv?EhI;0H2O5 z2w(00M_~UyLhb)wdpLpbogo&%$Nryn1@POLz9f9L{~vKNWd7}Xx#acM34Ht5(KrGW z!M{p$5x$;BZPYx%_Y-*@jX=$RgsKC)KGBZ%0{g-d$OTv?fFtv2u)@Lqe+16g?N##n zU20y@?0zp-b=xNZ}tiXI;B1z_1! zzqXO*Pmh?Z@KAFY@d(4^O5T{2=-2eP*6#Z22y$iC6~K?jHP(?4$j@Oze#C0D=gFj8>7c{O{EB~?oAEEaDZ*G$CKRvFq{m1^Fbp`yFd8PLMBe4G;@uPFM~UBZ;jimo-U-E)(z4c-{kd*^buM?rleygCdGL*Wa8L8+UifpX zT)t)<+G}XYg=$cTslnK&!FU{l^U7c9BK~nc!t;7$K9?W4nbThK_HEw04(81xHx`+I zpKe}{{I$Z_0y2M8I3K8at)AbMWGoafNB%){5&n8D6=N7bN2-1QNbDs?wiNt#dh2?LOMdOAa1MlwIe3h( zl6PJX*QL`I$IR;SJF>IrBK*&NDFZ?Hhba8RAX9G9aqjZ&p?3bz_mq5j!>otbPh<&C z%@^KO6JBqHcO+zvS9tZ_cn#LeMjk6N0UQ~xM=Koc`A1%@a9%DpUSo@c@d1RV5@k5W}w?s$M|FR?d zr1{4Dbod`b_A7-y)#E$(yqb}pi%bTd*lETU>ZcCxd#n>1DZKlO@hu)C`5uMyf7X@c zJC=(1#=7M2M{N$7KM4MZdx!b9sN#p>dlYgY*7391*S#g9!^)K%*)7fcs4bKoJ3xnu z^B-2{b}&|D@M%gjbm{RnYFE)w#18QT{V}SAvIFsdRF7CU{$KLp(*^AiJ(>^Hx>*O= z|6Ud!@DK506l$QOhM=JaJnCVzMl|e6s&JlJg}qqSl^8R>z?r4K9ICvlqEx;gKI#aCi<-!&lN4^Fmv;rfe>4i`5-bzM zLGO@%$0?lCAakL@d8b(3#TLhr#2atti7vudd6$tgD1?8u!oL(U*9!i}J;Qkyp&I-3 zxWfLQWocY}EaR%;NN-t-aaA2))J>2bt#I%6&NKLD6}|O))Nqjr{n4oGxF0&6Qg-}U$PT4P zkH5!62igCA1|P;hv#va>@Xh--1pm|H?ek^Kx{?~l8ThY?j^uprXNN!GzNB!Gn~y@g zwO7ffZ+PoUM|<0<&-X_n6U2deg!8__Sr3_?875bgK_Psc zL-2SX{p(zQbfoal4X-PNYV242I(jpaB|NpC>!*I#ZuG_q4>5oAUJCCeFYo8uuRUHz zWB<=G0UYXd6AzL9=11Ry`U&<=qfuKKjk-z|_PABpXIEiQKW1+}U7lgx^l_dk^gkuadyqcVV`)|zdc#nOp^Xt80@x@wfiS_VtZqK?1U&R+l5d`7yt?>7U z4C?KS|JC8)_+n7We$DGaB1?EGzLeUhg%aKY3a<-fdNEwCmZR$?!WpD=vvk>UW!OL;i4Yla1ryzT&i$yR{LkfZ!Qdaco&IG7|-;4d=cLH3J*1( zG1Ut1y<+=k=K&Gz*>QvDBA!)TBPqa`I6fNpX^x(U&t8jmKH5omUy0Ti4LM?SUgSUO zB93qD`N!b?c6*h4b9i|F9(%2L)cuWIfORCtcbBeR=msy!Uyx%@?3l}s>xPCLecX~< ze!@4{Ykb4-nSbU-L2mRY$X^b*zvuGf!QFW5TPC88Hv#KGv5Wkksro{Dw}+D&Nl(AJVDf}LI-%sH`>a8om?-P$jEr4Z$ICfpZSdxD351Hc?&UZ~%S7MV>>&n<;MHk_# z{J{8WP|P^P7#IAL@gDVddzJifY}UF0(8Rhj_6(6t_bWbc*A>hs!Mgx5S2A3#5Z|sVn9G8Xcr&&}@PF)<#1E`1S@=UmR}i1qm5;G*{D{x)h_(-2 z--b35@$&a*8{+T2!k_1$9f#Hr`?n{ZegE$l)ZaHL|7QVD?e~A2pY%Vlu4MU-{Xgpp z`p@f%+W(Km{(tPP&aIN4N|N}2btMZQ=YFg!h|lW^@*=mc-US(1!%KcTCxIVYSF-RQ z5?#rBwXC9V>YM}jyNDf6Ll*JYUL`+0>E*|5LV3&B=S3!rhY4yGQolc|@ZNwd;;X~^ zsaSsOJV>uIABZmEUFF9l1rWkl_uq~E9Alf&Q9u0ogm8Wuqbfh%%jI($B7pA+%x^_U z(*Le~JNtZ_`?B!d2X|0svB@sfDcpF#ysRp5hL!yMqUA;5R&64m3F9hzvA$wXJN;GI z^HTy?icHfP7 zV7T_|z+RbkCHpy+vg7z1q^342BPr#!yfhR%7aMv6=Zp4e&T?J$Km5$|U)TrSH0T#Rq=AjS7|(Us&oma=?L zRrvEDvs~~uI5Et(MHN3Z->3_)j->y%!O6Q3fcRdd@Yg{035Bnp7yo_BwxRQ%s#`=R z15fO{8nyElXj`D+yQ`y+d*S{Xa}Q&F)2IVhm{#CfI&R)^4e_gDmdH!eF|+V%XsnJ`B295H>z+Jz%pSxXJ(9t`V`OSaX5P$w}tq-;ol3#W#s{d4!xd@D-m79 zx66mD6ktq$kK0t?HW>^enIJQ*LiYVEk{kFZLjoKA|KEOESU@Vh`$Ci@6yDPjlkj4Jm;Z=sepC9x9jC*_^D7uJmcaGxx zj`{AO@H<1MH^b+mjqbGP8zz1PcyoSezES^Y9m(<5sY{pM9TN3$)JJ8!l|h!1^IR_4 z_#kh5^Kpak=RlDOZ8tSX#v966rPBnfvv~AIjN5lSdd?{+J zFQPq&cC+K;|Mi0U8x;mOzs`m2|8gp$jRzH*Uyi}_{JKPRCFd7O0fz9ApE!K*F%IY4 z_KG%sFg(9vRK=t2?;Ax2;kvp}o626DyU?$15bkvf7cqa_1cuE;o0O`$(GM;8*u(GV zDv=4|z&yekt#GD5X0F0HTh)!!bDCs6vBgBMk3U;<5x%P%#eNzT!pHrIj^9O)S*7rw z2-S@&PsV=DYrV)O$2F|<_i<+3T%vHX=O1^s;BMN*n@7BD_WiqEWWso={|(+P3hx2D ze_G+4Q*0bN57OiK3DK1t$0Wr(KdSJt=N~6^|7g=E!{azcReor`UlSea@l`7081)F( zzmOldPW;}iuQ!f)`{whE_|Gyy93ICi?vMKt>(Q19C*$|0^f-P0$Nvu4J2|*$Gw=7W5?&|f(Rjpv zmQC_q+OJ0^6OIfX)_&Ko<9Ee-RS($wFt1;E+vxS{_?99Q#IgN~I3qaN|BwHx__g^( z#nvabINh(~JBqGkzZxlnLVmVa_=iHKr^5eFczq(&B(FHvWZAU8@vkls9?mCtzKrh! znE`@Va**OR<37Og*#EOk5QlkH`~LBNhs-Go=hWi7#uf*7{fFpE^J;!&$?|%<@)I@x z@rbkbib@{J;x+!2CB5#CKTl+n>u_nW!&CbMVRx(v+oFAkh8pL%m(du2!E==p9h(G=XDg_5so`Cs^U?_o$=WJvySBWF0bfI4>%%RweKIl8ZtO{w^#I= z-TiqKx<7FI%_0-T;d!)H`FA&D4aJ*V(c{~s^)|7eSrc7JcqbA$O} z0e>+!SXU6gwZ&KU|MA$HjQ@$<%|%-bP2eYv-K-~wU;(}{KUr6DUia$RC%uk*Ej&!v z0P(&=+3|_Lj_^iI^F3h`kqP6e@sD_me8R0;6Ml>Ls{X&_AB)Xn=Rs;7PeA>jbrJ7s z9+MQ@GUE(6jo_pHKS9OeEw2dA;}})>p~l;UmZF1j)jp_vV5fKUStN1?w@qdD<|8KQP zv3cY?NYA5xi>~B6A}QwiD&_AG$cz)7w>l#{k788ihn`2+bFhx2{}my=M=1PBkX8A> zR&roxAnK(=d5SA^%k!U;^s@6CK^TXqz{^-xCP_KFNgdMTWlT z8Ny>jt!~2oM*NEO@{FZLxLSd5~IHCjM1)CD#>_0u14IRQRQk>7(#346iFOs`5jP^NELv zj^sRtocwqL<9Ap1*z-?3M&ZBitt-L%3MU>ZGFf904T?=wwAF2FKjJRUW6zOPhxcR=|w z%{o%^zDxWQL4^CZ!d(X$#94bq+pVVta;HOlp2^O17-Rs5gYUBc}i}2m|*4k9!oRB~aKGqO7zpD}RtFhmqzHuO4RVnQi_vhlIblRDKl#_W{G|10sADzv zMLgqv2*+~|*nEUTjkcc{>etw7;!n+&YMceIEcxs5z_yh=Z8}DHhbz1RkU389cGy_e zD>9y=SdFs)mI>m(Fv2-f;b6~SeYV1BQ@CCs76;}F&H`8$;k$Z8EM-s#|5Sy40c0*$ z_~SzL3X5v&*SuaTvT1*Nxq5Q-KNa3JkQuD-e)4$baO^7Oy}}@{03+mi6On+sYnY)Q=%^ zf2#Wcsxe=y5pV1j?a0q9GV6TC?~GLA{GVmQcref^H0wh3sc6W7s}DyTi*_yAKd~-E z4BLEv()d;PA5`O>|LS)fUbNFrDvt`(MHGY7(cXA|N_0^_yLzsb0*vv0a%=c%#@7tA zAMhG=)v35=WQy$DoI!~f`RcZiM;&Am&a$dk;ZMAtf;~_T_KZ^=PkcJ?mi))(+&KFX zdcJfYjCQ&vluxkNsvq?{##sRCNY1Z5ok|bqbL;9)6)tN2lQvMepL+9{(+NB$O1>{J zDd)+Ma1f8@^ACbIX%on9EqFWsvDkcO%hU6D(w3qtIiHP`K`}g=@yt9=+7|Esr0}l@ z&u2nS%;!lviEPr}^3pgxC%o+y-tLf*@f7X+p~o+m%e{4S(%vEy#Id|iYN>EA9w({& ze~aH2q_!!q#Umu6+XuPq+Y^ni%Y}25^9pyo+6v{w@dF%Wjt;tbyIjp zK;|fg_pZk)m&tuzkqfX)5Qlj!S2)K(<}|_i(^kcJWs3v6V&BZVlDrxz$Ll{7{@IYZ zSm9q3=9N&Byk01>0e{{1Gbf#=@Ggf8?z^*B^rzQ7Ub!6Z^NL)6Wr8@&>y-*;Fl4G2 zCKv5e(ga?~;sCFx1+cCFuT+tsc{xJiW6wVc-*;y}cR44M*VOkjCruOCq`zeq{llt-Z{KiJYKo%?emH=K9&jMFt76!&I-t=^Y>jhEygQb9N_h4(Us)YNEu%! zkN6a^uo4aV`Q$^lLp*qd(<7zGzqded@q{4s9!$vGll_ys_v?jw>T&d@+7vpX%cFWPG1w@^W&N#G_@_e#b!~e^yB{9DEkv5u7g1Io--R@?(!$$zZN&i~6Gi~Y8}qTO%z`R0whhj*38WZ?OHqb}j_ zZh|cK*ADNaqI^3KQhbjRT`9gv%JMy2;ZKB&iu-%?&EPvm6+iU&M*L?TgsbXMUAn}- z<3K#C_&*u(f3n1fXphxuoyNI$s6Ia#@tXzsH-!;y+tV%ZER% z5dT>h;j227kurTq`{)+<+*WAVKTn>IHU(`x+FNM2XK4!leF|dalnoGf{()AGhFt!a zxX6DM|0g5A|Z>(42zMV8iMcRx#&9Y<^Ldm4^sXf3EQ#1wpX;*hlz9h z4$1Qu#UT3HO0I8^A`tTPW`%zr zWL{JF!^7*FK_&b3cz;A>2~X`~%;(Kmr*)us{ByneJXMR)jn0kQ7WZ*eN32%SpZ)eE%7Q9xQ6x+{<2ZnHu z@54kF@vZjHv6Ss^b>H9AGRT~z@cDU$-t%kPR$5f?L-T!<=pg@9{!~%gxw|IZtTR)- zL&M%^%7bVhpkbdj1$)A21DqYr_Ja5ajvH_1!}fnUxTw|JUjEi5wEviTvB+fk%R~|0 zg$fV;PaP_Ft$&-ypAz?dfq7vtkv~nnNpw+vtNoUhqV)u8x%i7c|J2C}|H5$o#Hh{> z-QN>LN78>hhoz#lTX$D5A^)os{&dLB7yLFG`h17>BU9&yOctKA)68e&#jbzr@E-eH zdqr(pC-_d~tIC5U-#DjcT}i&JRLu8sg?}q#9$@%f)TS!TH={Z~G~f4#4)R~+t1PGU zRqPSO|3@MFg5bB^GLfI9#v5x)=c`kn6q?D$4>ksT_|7%4B#B%d#5-}3~?=ix--vSvfkU-MhY{zd6Oxmes0k1#E~xKp#8=t{<&SPGxV zx>xgiv<=aB$gQRvi*_d36=);Su*Yo9%kT?)Hx6pB=dTgWsNMbHI;Qnnc+~uN6dlCB zj(dT1um<%Bw=Vqz*&fd0sC{R0@r8W?`&WbhtvQw9b5Z*z!s{NRIzP1kCy5U7U#)vAr`Nrj6BPbg zkiAs!_wSLI=c#p%HKy0Snu|nNmK}QCt2tlUfwRt=o*P?YoYma%?9c_QKmT1VioAaXah;tD)9+2PFEOdxbhu-qto>n=85cA z>)fy-T?{^F@IVw!Tal9y!jHm&uLmukqP1O ze8Jdp<8|5*kU2)-3{>;Q+>a9AH8we3kvv|p|7TrHFQ{LyQT|VX9kotf^tWx&^M&nC%@@@FSytya z^!d)cQs3X3rp^JTErjd}g?pXNFYG=mRL7ZyT!3Z5cxL3q7x}qZ`MDOdh_CjF{ZDA-braZGGMe0fg{xRrn7;M*1&0ccOm<^!uwkBo%()5 znf4$Z2R;>D9^Wj*e1D|yapph$*Mfh@(E+|$K7;S+InnWRod59SqP^ddHrAJSK0M9; z_sSm3^XV;=Jr7tuR9-Q?L_U+`JJzrG#yT>68QOHTG2rJ`w8dzqE{ply+?N^O(>E3W zrtgOLytzZ%KV*He{&tL|`g{65qAS_oBn9UPe=miP{nB(5_YWNy?(Yd&k{NxGMfnNBp0z;{Ty{dU1-6d%Sr(9r2%Kf;cu#O;_=MI^zFy75@+YSjDN- z{itR{vc*KNkAIZtB7BZhR?3VW@>9kC>4^W+d2vPm;weJEq0gD$$4K&I?AN>^{*Br;(zCrKkBGqvlZ! zWbr+FdqtfaJ-#_C`+Uz5nJ}KR)9^iA;o&T4`f7&DMV;R%wr)5N(tNKFT}i%43NXa? zGKGILWS$lL(w7gYnO?Qr?I8oS%LG+O=q?^T!?w=$U4zQ`1W^IVyPH|@IO}g-{kT$ex>lIrGHn&qQ>^?enre?*`&YSxL?h9 zR&jpDMv$SEkuamKzxH^Q{6XQ&*j!`+IF8pD>fC?E){xmr{OY=2F3+p}#G6_qpF{z?oUz{+m6-i(2Q$D7vbCb ziIpM{!oO1C4~C5NWz_xZbp3=;$$q^)j1*bIv-y_!e9tbu-1qNh3{!YG^PhqJw!Nb6 z?|6A>FpkeaEr4Z$I53R-LVm*Q`;6I;QTO@xDEQn;ZE;Mj$18FH)FJ&p?3*paK z_=x#4ZecfbQIEiLD_P!*SPu_%6_!ov+H@XUStd4!dg3y zK2x|qqAvdj!98sI0=Nl(XKo;}glo^YoSo!vtlQN8X55Xo8ZtTj`5D?9sOvw0hPu*h zjOUryht}?ahI(M_CU`G#)*1M}zA)n%xQ_3cJK+6pPFr-?mG-cqr-=V<0w#L`!!x~ktIA8M=Oqu6C}br zOyTv1%&`jZJ1>s%*BX4kjux2^jxmgI1}dBrA#;}C^xCah9JLl(Vm)3@7hQy};wYpD zgz%A%I9{=Dnt8dxzbPC?4Jz5MdA&qrX`a3>>yr6A_IQ1|*%~V0UZijl^Jh+0xIgA- zwFvP>=c*d_Mv=|NrC~t(#5u^L=9HtMrZsaA+Ca3!&}KROW_v+?BTsUCPY3P-2N(5j zpY3;w?^=;1zwP}XW?giATh)XM{~YcT$gWYi<858QtV@ackiuOlveZ8+U&8O(P!|(k zy~4W%GWQ5xpIyAT9z4gJiClnXf;cdYaBfpL4?^Y{h10uOTxW~Zaed~KqKoiVzGS2f z3gP4Xk&aiKAv8;=$R_*Kd_S7!j>A=TfSK>(+&V9~egEXumH4(g ze|9_~(} zgK*WngSE6$8oy_4uW+%Kowcvv_WPrXL->9u-$3Hw;4GA7LO3+P4UW3+e-_S6XC16? zx)qB<*5W`Mn)O%FMffTXK`Q3O;CEDhmg0Rcg+D(WhYTv&ujbLLo+3+lYJI{Ppj)42 zsrvt{BOs&d5=ZcUAU-b*J||$-0FepenE7q|f{VO9%)^XRqg+0VgEm?O8hF@uNbdvae&v+qASU(k#f9_P`qMYoMjUK_=?KL zgn1>@B(FGAWLd&f>p=f5av#~ODGF~cWK><51x;KGi_EB5~^6T*R6@pzf9aIjyR zh4{*TmA5Rm4p@t0TD^EP>t@kK_-Y-16hY8 zPptzu&yVXm*e_z;Giz*q)(AAz31^*$n6@n%>cP!@k-zsTf3a7ch3~uBE2{XFKVP`8 z?Rzx%Ru4Z{U!Th_$3A%ZqFkepWpo=Jj{bWtUx{3J*L!mLNBZURPmRju`u+{SCw&v6 zXa1T0_l~*zv6FK7tMQRmC+G4{g1hJLgPvdK@?+*@%DI0q{XKg_#X}3cw{ry_iYi8h z*A4PIv2M&pF2J&Zes}Bf>|GV!zL449nG;p~=#MWhu<7wN8@T|>1aXXA#xLBT;QALa ze>Sa@gcbEK_?%VSuVitcUoqZTSD;_rdOZ73g?~6?D#XwJf#<9`)FiLS1z0xeZ|DBy zNAdl1v->E#qacI2yS<|R-}t<8;l<+>xd6)qahTV?D;&i9+1D^kE*kJ>i(}6Fg7bwf z4)A)m=t}ZxqzsCgFX-1i#!!Ct8EBY0@H;=d7HvG5iMt)qO0X9|e*Q~eG_J4-apUR+ zV2*Ss(SRGn^M$-l_AB-+EKB~XI9uAA1|P*g_#}8$kU`wFS2Td1lVbBiF8p}?id=wY zLO3uh#u=}0Wmqy=XCXxp#A~g>Uj~^5hR;O)V`NAhVC)9KCfhUaiFeUgzv3x{|y?%JDj94~5?bGHTy_^gqMA8q^f8 zhyyH}tS41;wGWK8u9>)k{Y)O%dHA0P*ZKJv@AE&;X~#Q+0qj$Q$RJE_i?ceX;tLV~~1U&)+$N zL>Kk5s$Y>5U^B~RlIMJ2lo1_fi7~k+W zKkFZ8IBP(yDL?xMw2#nU#lL-v_C6ZoLoNQj7CCOMCoxCe|2OAm$lR@PzxDFs;PXS~;GC9af;cdb{JT~8 z_W)#YzHYDR*xicd#cXlBaC-CU3DHIPD$W}zgF*O@D*Wdm^9IA`qGN9g=cR;d?AN@S z@nB_>{^Drc;D*CPJc9%PL}J)-iQ@VQ3JoAN`A=h_2AM_`N0khxIdeeJKmq5W&^c_I_U zVO~)$bU2qnrb=*5*tOU?!4{|2iCWbESyz%*BV|xbe4Tj_*0V>^ZbifXwHCG8TGTXZ zPe8m~>uhP37u2un{GqlQxT^kt!VTemC9e&CdcI5(ShbANlOTmNfOhj4t)h0GG? zT6AI$)vp=fH>+JFGC>^f*ZB$uF~3&T|4+Q2V81Gh1O19zfOUEOYNd=f#4GyF`H4M$ z?IX(1X9K)4YLeFnMKR5DxE2$h;tU|LErN8oa-}_BoLW;xMmID;&i9+7A@Y zdBu2TivzqO7hqjUUX7GNAzoGey%u}^T6G`bKb{WrN~lR*zZBV|zkM{Xs6#kjasS_3 z)V=K$oz&IimD7E1eVv;ZnII1H`m^B7#XfTGZVZ!)PCB<3uWWIe*STAXt|YHU%AlBa zs1|$HxxLU(^Pam8-mgVN4G!})KW`x#&I{%ZL;EdS4xcff$5{9!F4M1bkry$~a}o3B zwsV@Jlb#CqD|wyh*SVSGen|rXx zgz;dY#`~+n>kip6g?DbjJV|>%9j({jxqU?!^)u&5ECm?y7j+Tm??A|$sPLZ(EzWKgZCuR9YeZujL^UAq6r?Xdd%9Hkf zQ}tX%g(`liI6D_}kaZ;eM_f+xJy_vm&p%hrH={v4Jid7w;QNVr&oUW!VyBtM6BOPo zysu+-bJ3s+it#NTr1-`f#JZAv$5NJWEKZK^<&e2W;XfPZ+oFmen(qeDLAYEmKtETM zN?tP;bqR-iCuANJ+*AGd%i92-=let^hy&|rJfjZba2|tLUMD z{xKKvf9|(Vdvt0>{3ovsf4W~0|5=vCwSCT;nSZn|R0|j3sytxsPw;nR!9A_Fdfw#^ zEqOcQ_3yk5L?#Q52cW?-Wj^lbc_ny{`ntWM(=JIo_bs(r+9IhkJ)@bTZ>E>kFB(L`zpKxAxjl9LX1uyT`Vp;4`^a}e0LUI#J7seBn1fS z??V*+VUUTBjEn)%>FdLBIYw1}XugjS9ZCOjzhRp1J_`S6$fC||ujq_3Jiht(&F8yP zWWspLPP2|&hISen&f@1Cg0?SO3%r;57~}uqe-huvD1R>j_O%WsI)m>cH+ez&K3t4g z$6&g@;T!8p_BTlZhVZXY_%}gjtit~`+}|;(;!*eaNYRnxANN6~`+Jzep9t9*f`8`e zs=sl6BX1bJaXnRJ!g$I~vz|>-c(r(s`ntWMGmG-=JV^6hC%Te+lN3OR?}Z9~6=ZO} z?(j4Cj!~5#n(tdgN78@XADQO6LE+yE*~b_@7oBys&o^%*J-#0jnJ}KR)9`)2!h0I; zalX#}o;9i1dgeSx^ZkNJPADZtEMMu(q+&7u# z`#puf9b*;`My&`RDJT@P7#N9iu8g6yNi=6CH%B^4`+kG2N!0@jNoY{S)4k2ZSA+bH1vN zU>)JaNRR9JyNgT^2j&ruy8mxJV#WLe#J_WDiq%Kh;@CJ3e}B}l+@F6G zWN^N2ujt(A#du|l1H7Vs&AO7j8YzQ8ydJ0gL_RS8e1^|O=WP(?l~9wso+Gk^XY<-J z+*55Dec#TE*E1E~#dv>}!sF)|oAa8C`t$tDMJ9v;vtqw4RXEo{W~9R5``lfA;XjyB z*_>Vvu>WUWgm3RNvN8lhybf0QRgjq~_~%!q?}uSbvR{waNg}KLtpKN{IbPMifBsC! zED*d4_O<(kLcGounGlZSb++TS_U_SpS* zLYhE{_cxS1pFs9ovFD;c+WoNEk7n?g;vf5e)K)ln`qDW zqO*`aZHztG1IWVB#K%Vi%DQ&z zj5{n#aUWXOJ_F*Vj6lgAwf~-vdfI|>#GXsHvUOs$UMx66K9ix}OmWeFs`B?j$f`Jh zX~%FKI%Kg~y7aoW0P&x7QJh$pl(KxQ_`d*swLr!HODF3(bW&apT0C6zIqM+*Kh|}zaa$}^7n1!?>fkQukbVb+n_2x^!oC(=m`0*el9%5UoZG5 zE#(((D)^WCdC{Bf=o;0ZvnpJZ??yu)$@AcZlZ&5KTTTOig?Bx5?tJuun^y`w^wup zKR3YT`*GY#YT^vb!*4IT!uYLYe9T|YBNig&FYL+ix#)^368jCCS2YR0tLUQsmw0JT zV#<2PKdnt*X1p)#tnBE6_XEX_EBE)#afA8)!g7(xz;gqR@cJpdV<0<7;T@ymr}=%{ zwsr&H99J%2#Cg1*B)W)qiJw*|p5F`A{eKIQKQ6pT;olaFpA0H~sQJC{0?|Qv`ZxW{ zJ6Cq?*9r>?`FpPN7iSX-uMxbfpUiDy-ici2PUScs^8C6=WaM*Q`?Y5Mmn;1@;Ik?p zxaLr+pY|^;jbR3$#ojGiU4sAOtKFVH9=;2}Iy7Dz#v7vW5dRmd_g9`^sN zL*unKc!=*9kNJiD&^jYdU{AB)R5Z*BlXo=tMdMS|9TsB$zfkS}|NTu9{7sIZXGDkg zcYo&hNyYC=_$=bBy`pPRX#!qy{JbeTG+qbBdrjeefX^bnI=rWwfR`LUpNS4yXHX|I z^BqTb<}rw*nt1(0;eMOTFWP`%bJ2B2*?NwdmmjxmdC_TSU)Xy8$_w{wbxB7|N_-tW zzVte<2)O|3AY9aw3Aal{-|iNeaB&{Nab?jakl9M%K4$BlY20?1xLb%0?QhwUmE{$k zDoDA(T~wlQ|A6;@65Q(#&GffzCN6RT)&2q$bNR*F;!mu-i(f@U&1&(Fcwd4)Pe!{C?OMG5Ct3sA0~oLP%%XT` zIwSv=7sU4g%I^y3MV;MV(GAzw ztNhkXA%1O^>53!mJ8_$KRozyO;x*qvDr&L3|@0b9}!AJj7XhMMI`$&&M`d z>krQVSqJ%z^Jt1QJ;d zXP=6$Wo7;QA+!?i*Mhq^4{i}>9qtAH{rFnEspueF&R_72Dmxtscd@GbFa9lLc4F9E zH1rj_{@joG_>@}bTU=?$vlFnz?k(cK;MpDz3_Z^loAF|GlRdbP&G2vLEL&uFK+JRf zz8LrXE#6P;8FrAZ!HK4>PuT{4H(=nS;fS z;VlcS%NgTf@n1!U_8*IsNw9jEiAVl-RJf&(>8)_b={ltH-)!>SQxBmBb2hgj63IOw zf0*b<`rD^dywVVEcZFL98PwP96^-~+0e{`y0}0%tL`Tx!0iAmFG`SAp4p6w*BP~9I zVRO-lGYa^d5&ssSDmn<)=FgznM0|7H72}?)aL;L_Nc%P~KM$BJ)pHmx+dO34^BaIHnlf|%` zbtL)r=JOp27cqbFvw}OiXC~hWpBcDMiH;=S-h6&s;l2nNweKIjJk#II{o&#_LL}CS z>~#;d0Mi0}t=tkATVFDGC?&{M8}OIoxyq`*pq!`+wGvz%B1zZgG)EEc*@G z4rs_BmLaED)(s7Hv1KPReDnQDeyjRJ-Mz3Gan@c@b%A^}tNvN{i0B}{DSslqaqnQ) z3PU*IKB)Lc&A(37A0{1`8PBoOhx3R!oCUCs#P}-j+f9wH=M^sY|8;8rKWSR#_-d84 z|F6UTpLHbqxhn&cziR(qhy8z@+W$}9Jac?y);;U6|7RTuo_n<}>w1LaS?&LqVE?~F z?f)lVoy~Jr-E#@{|Ez;>DUYE3HMr&ddv~S&U845?OR)c6f_Tg0YBJwvoX%fbf#_hp zW68FnBjK+_jmOoJ-%0;2X#ttN7&aG8IlX|t8T;HNdx(xi|8_GI*=RTYyX4ObcR#%E zsc@gj?q3v`!~X6sIuiaO2=?uQa7*w^@qfu6=WR5#CVL)ZfQ9)+ z{AV2r+-?|Pf~)d?C1*kgb#{A2HHGRKt=#QwzP}fU4jEr2Pc?^vRL+RU*SX5ye?jJY zhRsDaw-g#*;kx>ge~S*nrSmbu?b6dEt+MMuJ4 zTDOdD!X2S-t06OsVRO;6n+y1xabB}zy6BMpjd{j8P09&(s=}QInR>yUzE}3R$~vD~ zg6{&bjs(vP8~eLR;jV_v6AE`>HqTjcY00gkBf&GpVWZvDS356sE~mb@%F68+4}b?o;Gx!hq9?vogg^G(FX zSFv`!ihGz}IS>ag2%aU#gYt;kd5r(fcXu|K7x^W3;FAI<4KBu-^LyzwcyDX>_(U}G z!pw1=ncpupwKc1Qa4Fv;zvKOk^%vt>a8dtXx{vbr&CEEJxu02ze4TY9{KfuF`HOMD z{k*gdWYoSNzgI)qSfHOX_isxN5FIkUOMBsI1t#qyVB&dyg^T_F(!<2xSufcBrQaiK zNv9md7^(2@KU&&dWW`T|XVP2cCkpS*PwfAfsytx!!PZZMw@%?16^S~-QpA6jB|JL6 zG@Mg%`tl@pmci1z=g9Pq$3Qc*iR|?Ejad-fpi5 z&#sQ=OOj7gk>K+@k@fj>%TtVZw!*sA#ZQ)i};4y72#K-a(n`YU`}{xfHbk)*-wS zZfSg)8OKeW?Z~+O2r^$O+^L!OO=QO})B;$C?{C?WU3$m5$=`Jf_j}ZbHdMGjWcr&K zzm_5AVI3)4n=TOU&w{&bGstWsxbx4*#LbLf%TNno9fV7H3e~MEQM@MQ1{ZZP$Mdr7 z@O~G;U9hiOZ`Z}=)g9^f#||{8^mtmfv&a%2tq%^bmC;IgJ1D$8AVdE`n9+hcYJPfn z@utqh+ec&rcT1%X%ri6Egiv z)ybFj6xjeCssWZyHh|a8;Z-QSO30ilc#HU)F3vyb ze%W}u#6=&E&yz(qfY;vPp+4*UI}0+Z4zTE7S^mYvEe{X-f0hm4A&awoo~!Ww1(_=4 z-}6~`@lAvt-Zdgic(m`2=R;S{=ddqahW*e&>Wf8j*5TC^2tSbLlEqWO5G z^0ylH%yfv+;sd;VMD=I9`S<)q{hwvYU#eHe=T`RkDxUvS6y99OEK_)2+H=ozy|P=k zZsGdfvO3Wr{c6sWD)GOreT;VUQ`O&>t%A($f{QbRI4?-!;>_c|4>1 z@E1H2Y_M+N)zvY-mtw3f#k^kH1#N#c%8|qd4zrF?DBhK0@S~jsjKWE%;U5{LVbr3Gq7vgbU-X=yi{?ub1 z!T!{v{$GCp!{#FNIaOBz`~1xN%j?l6tRvxXmwx^FlXAjE#C5m_L#Btq9i8cKW`0)R zRdf(8oe#(7?v=fI_cJRO;dWNIy&*GDaF_SZJRi{>;Zg}0Q$Nryn5H8)nYjMlE_8!>jaJs*t{&N`Fs+tU3o+xyF0G zj0=c5{?{Y^vrHj8^W{wPSLFfqsQ=gBBmS=ZR6Sqjd3?VVn^^aVnG7eA`|0{+qLb{w z^JM~}1Zw(!8qTHWBj=hw8*Kvm{1p5?YzMU6&~TqrJ@Slt*xVc!@lmJve-K#DIHYLR z-~H#?1pJ_HwR`>Xgy``5qc!(Gy>R{isKQ5`z5Y$X2M61kcT|_icwR*Pt0Gef&-MRH z3J*1+`Y#pUF-7}7f<-ZagJ|AtE ze|q8g|4HzdZwA?|g^x93iu1pG3y~>=$NVoxMV#07<%s#qcT;!|6y-nVM3VpIe-fQO z|DLGhfB8VLz75;&cEm!zIH-Y~{M5YiP z@sIUp^&m9V;8%CYIQ<0eB{bCaR%7jH?#qmK{BE}N|B-lqvO|p;_AlE1DH2ote}d@r z``;5KP_pMZWzXr5y-3+JGt~c{o^=18Cp!H8Xvh6eFI@kht?(~{?6rd5cxDs&|0!c zgzVeOp36i0dwSCRKOs7NKK5t+=>_qR^$6=KQ;{j;uj~Jh6y7(v{ECeg-W5grKSd(-|2mv2 zW#mUIHV_PdJb0?e2*bw;yyE!00%!g!{-Er8KQtaZJ*n}qVr$Xi^V5OH1HIt+xB~SP z#$WyuWOo((+m>5?khk&o)K=^)pDCoD`CqYv=wE?xwL-=F+de4Df6D0O{9A$e&pLg+ zJyGFX#s3wE|0`^b79WUi9}wc()05`Alj!)_JfG-ov;QdV+rLi*ZNTJ}VLZO5-w#&2 z91b1*?LWefJ1)#o^~UDmZsVu({uTX1rZBGQ35AO@Fz)XaM?=RTg}cz=n(uA?ho1MN zwqxRnyn;{Y5YH~`|5+#X2cEYX9k^QI;yiuDB*DGwcSZXp?NhQ}#*5BG zzxc9%rG6Q!?3o7Ho0UEP4)%+$hh|DFg$ra{1e_ zhTpLX+O}v|Pwv1uTytN<$85z1V*ZMU9BOoTk0y)@d>4Ra3j3WH7k4S#$D!k8g?m-e zagpXUIWC?Tor!Vb%L0~ocvji-24tmX7Tx_(a9sF$vc?5+0oIk^hc*B-F6fmS7iQk5 z^MDoW@%|^_=bri|^b6{NEK?Xa(J!jrz7jEir8((T!Me5LE;Q5{?|vGs0uA-Y zyAhl2z7DO*+14yC%zRy`_Wvu7#Cx^hzVG(nxbXeR8W+clu0;RPhK0rjy;9@Ctm6x@ zX7|YD*W&DZExu#10%t6D-iX)tqv1ZByHG2+3-h=E?^iqvj=-Y1uD#OsxiyZdIyBhR^calC%5JXVd5%kY`& z9QD!tH#A{fUL`Vx{Z5QaRR>s!@BghFuW)ZEIxf?kCdcI%(U};RzARvAT#QsaOor?{ zvFCxkg5$#1lQk}8iLL}cv~i(vL9f)fFynN(vS%^guU7V~YeK)&i%enMM87OixEL!d z9}wIJ_bA#gX`hn)f_nj2XQE$xS-?`i+^OurxL*09vZpH8FTS3ve!*N~T?u|@gG2p7 zuM++8l(OeF==e_TdFbdS^vl~KQy5qE3)YGIw#w!2#hAW#CK~$o-Y3zJZ`}L2!*8}1 zKO@gt`G)wtDwoTzq7!t2j2;>t`^^UYoV{O4bDJ0+tMFYB)}0t1zAV7Z_*k`(vI`uo z+L^7$MGyTH93Q@(jPbGRkD@ElPqdG1rS`O~EF{^3dIiVZRey$#{luO}wzcEK+$Z)0 z_LDd@Zq=%-yHi!~3s&tVvLXD|3ZGL6!rw#Tw}XyD6#lbGd|(?B?42(j{(&N!z^8qU z^*?^C{qLagyFf=@!GCmI62E}|hly+m-}+DZp8wqyKJtrIm4g2m=R1!70{$aLvTOpM z@^|Zh{95}zP~o2h9p?!C<6Hd~{+}+gA$;pU;d}n0e&NO+@~Tx=Dg4Ki_yzn&F2J%0 ze9Dup|M6?>|HTUbI_MZF_)m;X;uq-uAtD>XxBe5p=l_igzY0303I3D4llTSvpCqyg ze98x{|M6?>{{)3U8#wckxk%J z-edibUu*wYEBw2m<1xX1dT(I*V_ND1%LIgai+3`;6Hb55 z{8yuXZm;P1p+(OTTAAmKX(y0|d3Ed62Z~OzN8LxHL7eYvK67;+HYXQ7|8?jb z!8d{YdQZ+(Rv#uhd_G#U>GZuJVHi3WC0$8RHp5q_q6C7t(p8(mj z72cOc`A<2K;{SBf>GSW23jc$YJ-Fw8^_61JizkHm_w-N}tnR?r ztnjae>@dN9sbv%Rze!{Y;W_@VS9mz{UtOc{DvR=;aw5h5B+=>f?}-Zk6O=vJ^RKQ` z_B<5g-_w)ke}U-m`Dn}h(+kJ{T!p_Jvg&-|U{C&Cj zeN-tYQv5$CI(_~<(U^bik5^xebMT$eP$#bc3GeSiTZxAAmF34d+nVJCt$+6^KHdcG zCk`rlC3qi~=SRB#KM);$f3)NNrx&jO-&OcupbqHZbI~h5G-3XIBQk~XsQ*#-;PdY_ zn?r7A0W+_Nk1xfZH5+=LiC%46bbh9sr14?ye|B-m`v@6e>dVV(fOQEP?qgkpH68a8 zX`Tb{L?dKFluTBfC1D+qLaj<4@ z(c$+?dmab$g2w^wRdI1?O*_c`P4HhkrT92lgPJnS6vE?m0QbiT9_}As(^uh5E!xj1 zCz9*H8r%!OI>{c_|DGs;8vb$5j@VOy_myJL>zju7_w=Os|GVh$`PiTNrx%X@BNhHh zkUdM`Ki&lXPZOC!c#eO3KY{a*HRnV2D#3eWR^F{shNI6=d|p5q_q77h=!*)>ZT zE*HIdUQzy2PNeu>C^~)qJy8Os@sD#0XU_`A-mdI8axYtby9!m`+2Z2a(n>R#G^YWpy7KIcjCCu*w-^BWb?*#X1anM2ZqX{9ESOQYKpccS73)>U_?%>)(l|8*6dz7+gQqmsx zgU;@jx}yDr^K{l(*q%0VKjHhTypF9s4zj%1;J(E7HcHy#eo(pT_FyeworUdb8{2b| zvgcgL4i|pjJ3ncU`$6NT+jFVtENo9ZTHn?p$65PNw9T+Cevg_V=GH2#bt{fX>+Ni7 zmKQXS{;BvF13RWUsOY^{5`17q`LD@aiFZo5H)!;+c5&vRT(c?u!Rz?wZS6 zPZ0lEC)x8+$bTzm)-@IP*WQiykH`Op|3~kCWPd-??Bl{b#(t?dv-Tm;ky!7kfJMs? zz4G%9+&?4p_8I7SRqXg+mWne!v<&7SYhMtV!nlbz^PIwc3p!N(@xco!&V=tLPWzO| zKh}OMI;lS-|L|quE{%^5ls$<54I2s%A9fGM8DCFEoN2(mnsxDbW+Fp;N!&{Glgn3TX;AUM0c%u)ivJ&eqWUEm|A`XMg=Cy-K>TN&p?-0~ zwqF`l{BJ<~Z&307qocF?#p%iF7sP+oMRw4+h0GF>kK=!XivJCW{|zesf5hKEGV6!o zB^CdhzzgC(>nvn_v&(KkF=P590sTh-Dqn zx+9j2MZ^0Q=i#0@)D`b)kJi=M)+{f~{B2PAN5k28|1Sp>eY`BmM>79t0v{KP&cb}e z`A5Trs(-*ogUUZX*)eHPGXH3TJ%dGOVSA8&7=CV0_8|T@sQCZM;DkM?_}>J35dT>x z*&}g_ge7{$>urOI{|$)$4J!VB@^$g}-+=hfG6nEl{BKb4zX9>TLB;=1_bU?r6CQ-( ze*@w_>m++5{wwKtOj3WS_}_r|-=O0ErxSwlU+IY#HJyJnApWzC#ClH$D73QCD?hH_ zepwg)8xa2+RQzApr+EBtK>TN!!nlbzqvC%9;(vpR|Ld+-aV8x9(>^8Qe*@w_>!kjW z`0vZ2OQ=6o{BJ<~Z&dsLb)N_0jISpv&LCE^t`I*GXA=FQ;(a6b|BWi%e|CcEmyG>? zBjP{H6vp-YrBTKIM#TR{75_i0R{au;|3r!BQZoKGBL1_^P`@}~+b@kO{x>52H>&vm z`G(p3;`C(nOC#bx>moZO{wJJ>f^R^N3zwxwqZNdMe&(|gGNyh&s*n{}bIt$wq$A9!w9vtOiSH7_f?LxF0(6HZa z_#U~zK(s;5#$WV>nZLkv>sTY=f1`^3UnHLwf@hfd`A`%1K>TN&h53l%Kl~Sa5dRxh z{Qu(qWd9`Ne-rFM{AZno?TO<*`ae@t=f~@xM{U z|3<|BMiu|p&nzDQ8xj9mrU0Ic|BWjCHzNKws`$VDg(C4k;enaE=F;)E5%HgOl06dt zm9&*J<5k7~M#TR{75~5N9E|@;PdffLBL1_E#ClH$=oJ6yl^tPw#7YzpUJEa5LgReZyNkz?L0fU zE%S8wMQ9i87lZ%IadR;C{0H+~w#5%0Ci_LmC&@2zm>0>x^@pWIP=DY)wlIDVJ_)q_ z*)BgGZpH6d{b8|m)E|S3m}j~?LH#kfkC5jK(2Dxw$LDN$?E0e)@(g00>GA~o4};GZ z@*w{Y7Ww}tdw)Nc|LY(R^1tDkE>DpE2aEha7~^WN$p1fGW!uNj|8o zgGK%yjIlge{H9?t(nZ0G;MBL5FY{vSMq{rTsf+4KKkJ#PrUvZJfC@3`GzjsqWXj0Mf2L=xnkVn zp1;BCSdL#_%U*vBUdc4+xFXM~JhMXJ)?~aPn+e?cBG0(%kGM`&{V{k0^Q8XZ`XfpU zSn3blA8Gbahin1b9ax@UyF2qtlutsQ8R9c9mwh--Mf+t)b0NFSq|Sog~ik^hGv{|^!Q zf5Yj?{Sxv?>KEjH!;9qL{BJ1{GA~m ze~8HcLy-T6i0AKYG|%G-_e1RbUk7=R{|(P{d4lx^$m0z`d>?Wr+8b!Qp*2T*e+unQ z)V0T9&V)}dLR*Wr5ube)sHxtO9lqs$8M--iXc?mUoAnlXHevl`=r&A~ zu6H!g4&74V?g$?H2wd|#ljQ3^<2JSGpP|VAh9~(0*FRBOz$!Zo6?uQ?0r=cO$W!gi zvr#??d3NYw%*$mT&eOs#lstzB`*gzRE-a6Cw&<6H`e*3zOp}gl^~*5=w;OmA3*2Y3 z)jwpCh)Q<-GZcB!@O1S{NNoD0r;z7V&<d2R&lGr}&Fwmf$IQwMqOVxH;p z=<6>&L!C1QvFu?q$b;t4P|SRH#B~47xs7ovcDTb`G5F}Z4bNtse?UG z!x^6G_6XKrhQ21``4F_czTp4CzV8md{Tr>yM%Hm?i};tUrd%7Wyv* zEzk4)&F5#SKP(Mg^~X?^|20pNhwBeP9q35@D)TPp|6C4c{4H{w^@rdSuRn%jEy?h( z;yvBCL-hx}v+~T3Y?o5x|5B0vxAX{gROXOOgK#O**dCFCzb!BLA0){J&Mc=ojbu2bmGA~mAAP~{Ape(&{J%|wB~L8>*FhfSf5VgH;rvg; zcK$CF`M(tTzf|P^=Do7#|5D_CLz99R=KoTW|4WhoOGW-~es`AqZ)xDl|E0+Ph9}9x z`Cm{6-cSB2@_#Ave;E%9zxi5c{ug}W`M(tT-|(>FJ>57;`Jdidc}C>_GUWd6ZyY|d7i0RSC8F)NhXP?Was}f{BNbZ-A zPg1`i{~KN;2j_oFi6H-%iTq!N{9h*WzdzrKpRxRJv2^7BGUR{5GhLn_|CfpUUxxf& zCh~vFZnivj{;z{P$p40Cx;#PtFGJ2RL(VTl&M!mGhyQw?{(xtrY>C$`upWSz`^gLr za*g?p#;?f#Wyt?!BLBBEzXxLcHg^3*9qfVpZ+NELBgp@-MVN2PkpIg>{%^In-9L8z zuY)|u|AuF}JVE|Pzpy;W|79Zox3Zr@7RkO%qS@FaOS{}ZvD|I0-FFGKz>6ZyZ@ zPucT-8S=lONx=*Af0@YtW$?u^k^i@AmnHvO8o2U*8S=m3N%C<17u12*lfR1mUxxfY zj0c3j-80VoFZjgse;M+>;bFyldQO0T4q)(JW04#p{|`g{AJ!@q#NXar{}4WhHTgM! z!}iXIjEv7QO$qt-PbYB#=Pq zkKf~9{QdFS2$#wDJ3NuuQ%OU=%NjlhxT6~%@y^g@$8SeU5`G(je*}1Rrmxf=e}~mB zeEeju<9_5}$1-hp{PqMw_?-lPK6so(U#UO-j(HCJcJKig{>e<69X}|p)IRYSPvd^{ zawDTpP>K6Oq*T*;Gz=3zd+z$ z10J^s{2B*7+|OzMzcZ~B5B2!h5g7hWxYrBZJ3;#}C&1%H#{c8y_P9@e{^zh~nbwWZaVLWRl)y*bGVB9^e~pE& zVvagoe*X^By86AHh&%0M+<8;r{}(*W;w{GAAAhj>U3Gc_{+CRf9bd$q&jkKR@DTOD z&b@7X)%gkdHjm+()0YS zychMqAnq6_lH&)KV>t5v@RsJ=jK52NOAhUZE;)uH{~KCY{Ap*NzyTLjxUhYgcZctY z&wC5pk90j|;*WMeC+==cOa0IBhwfL^bx-hKLlFMX0{>6oaX91edZ9J`$@qvt4*L&3 zm}%Yk9Dht{LHGv>{Epz!Tj0-i;3w2Q!;fKF%m20h0^h_R$!}|;TbHU?sf&Y;U z-(7bNzldqG<8%DOv&Go|Vf*2?F#hgaJMa_guHiQ@ZFYPe|J3-qPT=2(&kqayfe!qH zx@Y+POq(5_>mK}e66^m2c)TF+zi{9u)IGzWWm+rlX#bDaJ$TL=o_ZfGO9jv&c z{4SyH8IJ4!3@zzx#T{MukPNc!7%r{@9R45h7%K4V@!bF6nExAEH$IR12);DX`tKXw}Cy0Ei-XDRrRoK8Aj&-8pqtU)W!~I?(wm|zM;t%Ek zcvgak=QDU;tVEj=%D2gHDDH^s5Qi@V_S%rGzvp1v?~?1T;omWBcKt=%`9}C(HF#`f z{JnOx@ssPW;Xg5Lc6k;vueIV% zO1(3p6VsC39CzscTwU)3?=^(-dprk+@w?zN*46dlw?51o_bK(xi0(}5#^<;r>mBtB z9&`QC2-F)R{$k)We(UEQ_zCsShyhG%^}E(z;G23!>EBo2pN-F#GX6e$S^b_;Z;Zga z!O&*M=W#y*`xc@8SAxe)0{>bUzPsKSaXr&!$LDcB;u?W}J9s=V@FzR)6Y7l-_cCpE ze4cMXe-AQvBkn?b9lvjwk5|k)N6bX~I+UeJ-jM&_CG>vph?7&Z`cSd~9v{u~F{vWM(@C+>WyJ4W6DD<9d#hsLTX9VWO zhL-fU;*PF&NCsJNppO}U8h9*V{QY9TGnKr~GXisRL+i%paUa2-De#wo$7+H9n-zCb z>YWiQnAX+r&U#119r$)Q?knNwt7h@RD1M%<-67NgYxL-D6 zjT>qu-l%>CZs><2yWn$=@C1MVC6@jvbq{_sJfwBSAG_{BoM+rqKzjz`9&oG`e^Tn6 zk^PyL?9TCr?hDp+Pw-wtklw`tAA9~IFA@0F*7#4Udq$qmv~GNkKeFz@?l z8UH|YABS1zQuqmV&&cbT*77^8zrYuD4}PAC&9RKcVg!IfrSjxTF0)TKC|0%h~TMK)XudK5xYx<@YM~xcnaL6NZ-T zZp9s4_mB*-?tr}+e?55o!uSUl+i@qk?iq=-5ku?7=W!pwuV(yF8T55?fp7o5U`pLH z3hOe4*5!9ebr1Y3)PGbf@YtR459w<6dve_~3Tr}!HakAY9r!row+0VfPp1$6kQZ$H zXniF2H%A@7wAt}F?qGZ|ep~Q3*1%`{L%z50Q|g^jM>1`8e2zP6Y@51sRA=xwneh+p zW#OmPJEOWXZFYPecTjJP$`$y1@cANv|AvL1Qg4jv$F#0-AE`HP#d9^rqP>BJ+6vFq z^1edcz%#}?^&F+9K2*FztYy1jj?XuQs6Is4MSTjdCrPPyMq#dOXvyvzcj!K3UGD_% zH3Z>bDe!LrkNX9_xo%X}8wtN_J?bu|b>nl~k@XIq)y4YbUcgb$GX7!acj+a5LcKHU zpG<4{oz`FAi+Tso31j>h!Q&l)|CZ%Jz5TjxXZQ#{$0;JjwOuh7P=6jlP>{ zU2!NW?EXwfv6iA2^?5-aUF2(`MIS z#J%aF|B?Ski~N7YC>OrF{u+(^Z)mgQi?}E9|7hg@(Laag_K)1tfuB%+jYj@AwAt}R z+^Z7$|AuF8Y$Ncmao{J^KVvp$+U)pT|KK@aVcZ$h5&y?3H8sIotV~&JKF!F z_0O2?1@2y;H8*MCdfKB7wBnBPJC*VremCY%OiOxOaYxrXB!jFs#^C-%lkdjhy1Fq( zv))H7vd4Y$de4}SOzXzyaUa3QhYnH$#W}!tec~+t~Ui*L!1tX=twV1qR@~Fw?u>gQn3nYBxJUP$>v}7A zuOZ0q$^`x-@R-Z^$9A#fo(jC~dTY!Krgh_U+>`Z|dbU&;_ZEW3w*vno2Yy1mHD(#p zTK%r|7x<>$QgNq3;IF~w9~u9+_Ex_u_1n7ZoiWu+n;l=r9fiMM;3LkA#dY=i@Q=IS zh3~F+#x`Tx?D#zHmAe`Hk8J@SZ47+IKW?c5KcU_ki*+JHn;l<|dzE((Hz9*JwiQ}i zG{nlWz0pe0_?qresK$Jw{2#ci|DW->Q;6Une~d%_gnDZ%*2fHOcKtc-Kxf839y~bD z_{Tryz)z^R#^y4u6?e4%N9(Pzodqs_|7UD}q4#Pl?kKlUsJF)AT0lcfdRuWv*IOh* z;Pt`%Bj{t+`wZ|npYcyHzZ+`m9Tjtw432tl?Ac7~#^-S#!N>gyq2FHu9@jDciS~V~ zDfQM^TnlJuUH$H?x0K((w?ll~|3CH~f&Wjt-;?W|v6v$o+U)oochvKHL;MH9<0*l^ z#>P*sH^x53wAt}R+<92w{|h|cWc<$g7Jf>-G4>Uv&5qCY#@H7H{(ImtM&Lhh;iuFa zV?Sov?D)LCH1=W8y@>Wf#w$h5iRasRc&3hej+v*Pt=5zW#k~)N{u3bw?yuK}-?`S( zKc(IoJDq7=amTKA5Z~GF=7Sd3(;M8J-d5a6sdvUMVOp{~#~r%QUe`OpdksK(<9> z@;j}+z!&uno=qI$kHbBG<8VEFh#$LeRRvvly)$k*rp=DeaYsED+2}uRcksY<^#(sT zcHgSPch@`P_F>xW_#AgI$7B3Mz@w{y&-l6aeX9ySq23wSj%l;wbG?J-Sa^7LhI(F+ zhi52xr9a}eC)$~z98LB{`QNz1g#IVvbH5PI&$aJcRr)8?JL67a+U)vsy)&+tz&{;4 z1~Gn~eZQ*0PpEgs4P;s??r8sy);oAUH~0HRpvCp{`tbAY`&AWgLcKHY3Z^B!t+=D> z9g;!T8{;k&_&0#ZT?Rhm=U-rt`{a6O9BO7m>&EACAHly#;NK4({}lN4{i-ST&bUXI z*46Jx_0G6|2>fTk<8{XGdYYAQsMFC0j(Tt0OH7*`U&Ni~1^zqWf$Qq^;dlMm#!s$y z#(l`N+3`i(`M1FT5A9e8w)?B-WgZMwAt}F?qJ+|7<=A0%yHq1-ng64{(<&9 z+P~3;pe+n#YScFrcZLZ4%Yn5#gz&qaZRwvT;5j-&8)rWu5g$7^XY|H1Q@DHEMG=6L5KOSrTY5wZDT?_EL_8q$F=VT{{tk?YI^?T#7CTn<-JgfUUhyzTe?|59NVETFdf%qH@ zL3M(UE%Y7Lo2+`F9uMt~abtK8-AWgJP+$>0u2Tr{v4%W8Pa)FbpL~CYsx5lXgR)2X zoH>U|staBA=*&D*IIUgw~z<{_zF1fZ<8@5b>p;YhkyXK0z#1s3Z^8DMESv1KPnt zo^N%039i#RQkO5dUR1=B&zU9xFMOaU;h|0m@rHp`+<(w(H;p$J@wEc+Bz&G{=nt#{ zVo5}fam(`L^@;Mo(mNhUll6uyhF1c9JHkhO65=E0kN-vBUuNUS;$|}bkIX9pzdhmC zGX4bQ{t3+m{tO#G7AF(&Cv3&M67V}H{0XQ#jQ$f^;WP4@KKwqNZ2VYUOvc}Zc_rX? zq_~6YuEygUlJU5XV?3^Mg0qUnTSJj93kY$0qsdF$0?qUe=6SKIl}E6^Q8%0nI;iWM;yWv*ZoaE%%5Qt2g!Idp+EDo``r)`ezDLOdq5K|68O(*yQ}+RMIC17&7*=NxaTns zJ5GgkdV!Ac#dUWRE(h)38NYCU5pR|L@wgMRRMlHVj_a6Lq8xg{PI6o=?0`Hx;XxtC z{k9yj_>(Nhz05074qY>o93uZtcoekH3pv)=a>U|LvK-GauS7Y5=_}>k2~P@pV9kHR zP?n>p*p?#}kCNp;{x`f5<)G>e`9}2v^2Y?k@QGMEowz67V?A%e*o-#`*KABe{Wu9e zI}v+JO>t0vi27p!_WUPcJzXDu(HE8-;&Cb24ilIc*kM4RFFr*)k6F#DjQA5~&$mLJ8uWQ64&?bXgX{r+QE@84j-(fS$;>k+U@yS%pt|NeC%#_E z55PzcT(4mIVIp$mM5>JFd%y1i`uXZ+{@t$rcA4liPtqqrE)}|zJQx=&&(8S#r$AQx z_4__x$rB4(+52f?Yv!3Ij|yQV&z?datfNdkQpmI3k|!3v>L5>h=1KB=%l%e3pm$+j zQGRj0&gdl1;X34eJ~e=c8>vZMHXFv6eLvF}NuXvd4U3j~{@!V~FIRI>EL_ z$Jl~ZHhWCUFwYcw9Hmf|Js!jS@3Dm$?_sPRJ%(KV2=*Wz?ul1D*9fJHzwsVglkpyJ zhW1d#dvrI@--lP!Z4Y0O@tznKC$RrR_SnGon6xWo7yJFEwYBZhss8rZmwBexgRbgR z^1uhe`ef1}_$;pXJMEvAJlKb;Z~UFqk$I9lqK+&ckk>QE6az38$%B3{_1h%)<|J`F z!f8M2I#SmIM?30)NnMyG2~SV&1H2Oj-pQct7xtQe`kyskxSnWhFEl_ZmU(AV5%Z$? z{W`9LG*y7#N8q0h8c`3N{#a%^B~4a6MBO|I`QPxc=?Y!;7Wsb?^8ci(S^qOyM(o|e zRew!_?;DyVyokLo75e@Sw08=;F4^oYG_dWBIA?g-_SRH^y>Axy7{8OA5cqGp?QKv) zJ*2%KVIHKvsJB#)3-=E2{~_?70WI#Y(}(|;ee`@a@b3<;^{YuQFiirU5i`JhPT--| zo%FGR%lLnh>jX7`nneMD9$S=(hG(ZPrefPV?ZnFgEQ~f^BraH$bIBI51oYkZ)lS7 z0#ON1i%0T~`F-uDwpg>BK!h@Ukn=LRip2~Yh3H}Oz&E!pNv|-@UZ*4f8RbbtpxTSAn>v0 zKlvsDpYhM$O!s$S?+#9TU&u6WJZ)^SRq+M><-ymzNk5~Nqm4uR3jez&#BH)SWN*|- zVSnEaT;x@K_-A*}`l|k3>gw;%f-0>=`}=<8Mg3jLah9mm`D%PY&k+AHd=}Rwoc(mB zCGl13ogz*LsKSnNe4!RFJfxo$mJ|=@**h;^g)qW>QsBM}nzt1a9sW6IX+KNJXOrJx z8Yd3KBb-+S&ikPGLZe{a@|?%Se%~_Kw}Z@MQerZ1)V`lGFT$@1>}#kL3gQ1p;3MZx z9wYF7$oO=gx*tZ5M?N-XFlhQX* zCxx7x>razsGA}1S;xg$wP2ev8%?g1(&cctZI%UECnt9p%U6kJ|FZ8P=0)KVJn{ zT_mc3GI&Jq>CB7l9o8H0bJAPuJ4N85ex9;i;Qtz57ZIqehqO1wh2cT^>-kw>Nlvev zqP|^B4XIE_|3w0SC1|S||Dyhp`I)&~A*$y(rb)!pk`mr(f%hZwJ*@x`rhn0W*8I$> zC!-of=Vw!~E?{^?<0w<9x?>9VC8za4>x|X`pU*|ZJPmQ&n{qVTL1@U8O>vO^V%>l0 zE|7V@5Xrx2t&Zd3I<82+89R#po{Ic$ctri3^)?qrD16jdp}$XUgU=lq|Kc-+zsKgs z5lN`VmHs}pE%Qp0L$5uM9H{fmxSI;QPt6x{jIiXe>Rh2&T#g*(MRMqQ7fCOjA8;hc z2|^C!{HaAO$0cnd@!f1QMErkhZ>DkMg~K$!>ml$4fEL%)>BGO|wDkB6y^RL3_&)V4 z<`s?anhGGK?_UJ|1)#agz-RnRN?q~Ypb9;t|DhHzJfi)co15P&r%Ml-u?84~e~G}q z9<;YH{-qs6e8+X0u6>57H!)2DUMMKx-5~Jp1}*ZNKKx716Mm-RyA^Mw26lX(idw+% zipF4{T~qeW6nPn z`BfkOr4wBF#mLVIJu=S!%{-!UHl(BL)S(xT?@vHeW?(b^We13Q)sa_2PI@LC!5_lB z67cCdb=Z{gM}Y?OYJK>ZJz(Km@g)_167!0V_pXIScKxd2?RX)_Yvi}(V6 zHw8^Z-}y}A#tYp&7~gXR9_IX0*D>DZ`=!Shp+P*ptY%)(_@b!*L;eQ;4dZ$ZXf_J` zdtLFxpb9-?eEEfW5U$=oEi3_D@c=3w3HL|Forb;nX}I1_AO00v>HR#l9tJy`LPpwo z+Ez^C!co#GoN1d2oL2aJh=IxYR~)Nx)Vjgf@%5olVzMsmCG?!O3-coUYO@|jR0N{p z3H-^MhW!M{;Z6M!@ns4c*2Pdads8^Jg+evv8`2+FaGL&|hMYeQ^KE_jSG<&Iq24Fj zPwI=k07FaXhxKt`UT*hbPC$4a1RmCjritqS{<@2fU%FpA=?PfGuDML(z#*q2oX!FV z`~TC#{{LT37VB=yQ}U zPl@tNyAEVpJ3qE7&gD%}#ZUS3nF9ABd=~YRMG~|CnlYkcvY{C=yf7Rz9}YhjMdS17+(-KVxhdUQs(4Dy=W}Lqh+(7c`G+blCaISKawgqp}{- z-VZYmTmSYhdp{`fp9U?DS^ug|QG1(>&4`}QGfe^>%c=VJS%HWAKkXyd7a@&SJ?Xk? zXC7t^V)lNYdD-?3sI)nAGHo3QUcZ35G{@j@{JJaPU1G_3hg6Z!t?H7WTwssV+PNWU*& zUS#iJ{f4Qa6pgQW!rsXL(?tHirZAR&nV!qN=(t+NJV^iGI_`k3XHhohZY%Y*eR>nwpQ=J(Tg1n%CU0sL!E)8kF?aoaJj*Y3>2We@BL6ifS0-$m&C zC(!bKihu3Yi2a@WH`B5HVQ5nD0yz<1rXL{i+T(L?*7rKEE_P-OLOYA`KK)qcN%C0s z52&^MRSp=7hWXU=d(f^$8-ULn(BKbEeJH=1-bvV_7@sc>QT^-APwszhg?Rs?7BD`R!sW;*stroSifzl+%2 zxeqn{Ev8Av6Lx=H;C%$zA&mF8-Lu#|szKE5UobDr?o1`^4nGd{9uC?`LXKOVc4t01 z=SA`eu3s@c9CqMf1sLl0(E=Z9{?q3R{Mv}!o%=)6=P*q&p0N8&fmZ?A)r@z;fpxGu zYY??Ne9!Q5*j-Uc(C#Mi%(|tT_uF-J5NARS>^geJ&df{H z(Sj<_cLpkTE9V0nZ}J5nmfS5UO|X=JZO3T-*sOtjIU!y3yBj_XFAMt@cQJ)?`z|1bD_K?vjD__DK(*IElZ zihMEy`&@q z7#@Vrb${Ui%0z5 zB}@HoY2d2gXQ1{pJV_po>w-GakmSMsL?{nx&KYBj`WgS`Po4F%;1k5UNSqtNJYx90 z`xVMSNBCs|e-_>6zcNM~L%sBA~Q{%a<*vj1l`W1iF>GVY;{$0d283n+V_AK3pk;`0tH&#g!5 zI3&jROw;)JegwJuV_|!i6x%vHy+ZjU>zS#etc{FGX8UME2Xq+<> zmPo&1FTl{G;019GV+r$ewN~L_eZ)g8<)NPQrq_bUUqaj_dqesjE9{MH{$}EOI(_)J zU7ID&S{8K0*_mfCPqGKcSwS5jl04Ac#Mzk_g7#`7PR74&zBA4WKJhp^^9tsX&>!t1 z{eP*z$DDuW?TmkWQMCWf#3|DMH#1ENUeNz)-2GkPVQpyU69Vt0{?B$iu(cY zI45$yr*q$DCf5HAO%h%Z^)#N?2blR8XvO`1cRZPLzo)GMj34oXQszZ@CfFaARDr&O zg}!4zBd!Oy2*zgeftti-r;Qh;)69g{y|7R}Ze!g>*&TqlI$z1Ld z)o(u2IB?j%=L(!Q@PqwJO%))JKZ$k!nbjF@ zRtp24@$Wh#wts0*<9_@T(+a<$^O1hkx>tC?DAiAYhJ61(!<=Cz<|zw%qaimeY#ZV? z*&EXPd$#+m?IHW_A)J5LG%=16_B&=_{%>fK^p)di){X)XIe(V8{^0IrDdWhtpf!$W zwP9Xj97!q~N3-@9_{jOQkk|C#-+e)B97%fTIGS}7^Kj^|){D5m5yxktPBD3FR%d)J zFz^}w?r$UZHsxSsJk7%V-_RuCMeHr+;j?;y_Eg5ZXSX`o+h}0hyC3s%*jrHr_AV0o zo(Y-@1^z9G_9oO&50NKk4PqXoe^4iwe!{YLXzl?2Y=M6nXs;9aKa2U$uWg*``LnKK zngl!}W`K8vz`GH&Pch!TX8z@xk60SO+|ho&lX=;36mbQ5@DqoGEe`8{5X z&@eAke%I88iYK#f6Z&KRKkLm9)xY=A*nCK8&32Ui{VMZ_+TSdLTmAi#z<&?4pD_M? zEh7DG%JQh4u@_)y67X0~rSJO!5BqkrMhUzVHC{r0OATWEjlBTFE85?N3jM9{O9lRT ze4ZunUvt^p(1+nHsz2uchDTg~6AS_j!WZ-JS>>Qz#`yQ|60x@_gQIwhnI-`*YVQR? zU--$aYJqoBc6%EQV)kCoyyEtza2D8mjllmg((-kpv0BEyUDgX;thRdBw-$Nof!k9aowF#1aU@gMjk zcAcJ~C#R0!9m2HHepSoOLF^!X+X%c4pgEcG9y~(#Ys&t>>`qMMz#$)|_`CpqhT3}$ z^7x!1(At3RL$nvs9>wQf(Nw=;EopXNv?D?}Hu(+d34Wnn`+)!HAzS~!^R=D{b+)mX z?$&6(4q#rSe^_TLssMxV`wINCKy#76pXjQy2{o`E#=Cj0=IryBHX1j~a&|N?%sxlp zVqJ3f^^E(EQzCK7xgRk5YNkoRi^Qqfe-(H)f%aa3cSm}hk{Z}?YW7{s%l5NiJ0Qpl zv#}l#_A}-ev!53D-@4*dh{}3Mdq2TENdI7dj&T<*Uxx;#etuNoKM&eB82_QaiaIx8 zA7J(?Op}CX1SPx|1>U=$#lE^e{D)pkuX7_Bz~GVi@gL?z_73LfQtu#Migo|lUx7yC z;fJ?&)wzrs>LKlo{BL;JxLC9f@&W2S^s@(F^Wfj!?A2(9FSFH}0(i|t9L4;dYBFPt z#(X8ai~3_W^8f6mA%g$#9U>nk>^ICt{x>u(J(X<;N96t4D?n2va6V1XN3`IsEau8b z*qboC2tUk6L`5KkkLwh|@$>^?^k$6z$nLIu6rhs)vR^katsO^#<>_!31$zI?xO27u zZA*dssEAvzubD7P|DDsEX%g^^`w<>;PpIb{%pvB8>;E1ZnJsRy26o(MyKg1CkJ$N0GZZ;r_Oj~?WXTN;)15cZyf{BL;J{*_;-#}UQ}@-X8f|IZQY0*^i& z^lj2|QCGfrpFh&toZ3EBKuOYHFDIo+9;?Z==B{TOuz<0JpiIgS14 zv9@kMR;acg&%ylP&_?5PxXd0pvKl{g#5%y75`4Zu;65JB2WDaxu`l-j4NVfBaR9;- z`~P#Wt~N*H`^QG7=Yxm_Rz8?>4fBfjb4V48qbr4-k^kq2{QvkNx}VkcbYUJ1>BEUx zM1Rcx4G*{e?W6V<^YA&y|8t&Xdq4hG)ZS)d7QuUrX_D|F_I_CC`y6OR{(XFY-Rw;o z*!IT!-|%wVyFIOYV7}tb`W5Hmx{W#5bB4cpb6!G&TuptDzr7^%NB*BPCq(t1=$zKy z?cM#2{BL;B{S9B!eK%^JqqZYU`V|%D6z7-V=8&-4$qv)z;ks9q`;WyMGU|f`d!cQF zZPp;qwZZEZc-;-WZ^N~;4}>zRH{Og{*i$?av|Z4Urxv~iT8y2ASmT`yezQk`9(zx7 z-T*De@cgk6`oQl+JunBg$ei!PbNnZUWcE;>e$)HiW`Y{=yCqDMMQ`JNr1uNx^Ot@> zLtJ_v`T0}GIrPVj_rWb8e$pH7nb{fd#Xn@ccXBe`tGI^XlR+78$OHHdd+aNIP?1E& z|EK=PzKE$0=E9b9#r1qotk-&@U(EbvE^@g!$JoPMct*b?H_y7CH=*Y#&+_&7j}Cf`)ucm>;LDr2W@AT=gFfjdE|Yzb(II>#_&w_XAa*q zj^=ja{+fgFJGZBh>m`Rjb?0-k;BY@8FV7YAz}!N7zFgqU&^S|(r?UH_3Ez?V)7;aU zC-p~gT}9k_?ct}0S936i;UgaU#hbGTtrYJEp#3eBtI6J|aSSXT$C&fay)}gMpE{-v zMJUfxpna9) zd3twCp7e3zmggnrNqIha9v=K8*#1{zo%%=Y`_Fv~G?;hm!+-jAeP4W#U!42?bN|gW zP8^I5!g)vN`w3{u3{1v<`V(>gz5N`$h{P&7!LMa}8p6B?KX|@cNJZx>Km1bQBk#_g zLafvu|C!xl&#MaQRWT94!~EaSit$&FOOM+NHl%aA1~mlfjhr6#^Gwh#6u2wJbu9_| z!E;f67@8D3ia~@oTi`7P?K;MLc8|2{TH+c6*0$`uig}Ve`nsYhb%06od@JOs0qt)> zp4;^Nm-DS{$3QRH-zuJI9xi*Roq>q`e`Nf5s7dCD>kyvXDq?>#-H-U!yseog1uwM! zye$OY_MknS^?lC7I~D(9_Zb=svIZ{u&)c1Oy6hiNYx^Vq&qXaZcPwajK~pu-k9b8t z%;SBfP{781qxv7Xq5se8h|ed6DE@OVCilO#LahJi9m_mOe|`O?u^u*VP4`pYpC|JE zygbl~y#KF#BG;{(Wr%417cfmS9*G&?brt#||Ia&<_5D{-+Vz|<4IF%l#F}xE@B>*9n1!3)b8gC{Hs8FBjZ1ROvLVH zc_M1}>zO7QPuTq$frq)+ynhJ1OS0HKszKE5_c1Ta?o1`^ez%b0G0-Bv>cfA2n$zyg z$7T0tn1{m-94r7r{r;rDe+9Jf8u*O=LjQ=}%`!#Q?r$;I`hT3A@YiLj6{#2}4l;?!uytFRV@McNylQ{h(r}=0W<)Jd5q%aIgV{@UcG<_5Vak>)Jtv4>hpooAa>NV0ckI7p!XwD(E{E=hQHMc?SL5 zobg}UB3Rcp|H-P4s4vR5WL`wa`NeGLg{D__FaLv(qZK~yYEU!&OSeVFn{ywud?%(! z#^do;zP-T1T2%SL0`EUr##>Z_$apKq{Lt_sIXJ&Cm4+g{_Y-m)4%%Z_j+b|F`aAP+ z#JTb#nFrzP`vs7f!i_y+c*5@>@Ug~L-d*6oDC)X|{m^pM0){39j|@+Eh$F_|%X@Yg;HvA&`!P?FhsV314lqd`vHo9_fbEQ9_(Ed|YvE z2J;|%j&tFLl`%ZwPZjuB|1V$8c7JVMG|rhqIx?-Mt)Z_vJq@-s}5j ziF1|)&Nx@iJV_pobAmd+B>mS5{jnc4U)&G)`aRA#C-}tU-27(DBf%c+rTyna6f^GT z1}n`!fEU2S)aNo$I6XPhpxQyddgnyj}tibN=~* z1m0;W`@SmTOATQBh##KKyeQA;`=SI@pl^x5$DDuuwF191w(lB24fT-rMs7AdXdh)c z?PuXhoxyKD<0)eRr_ez*YoCf z!u~yC@qEm8=OeGqe*_KJqRhvAF!P6@p+21tJ2mz}_82DoU?Fh64N?4e?$dEWt)nOO zBiU8<|JTfe^bhhdeu7kOWaQ-(=ZNbdR9;vj@Ymq;_l*B;Us3NT^?w!9B;bXPO8R2o zA{_s}!0uRA*N6YE$@^-5y@JMJWDrJFu;SnXsK%g!$bX#m3(P>;)K}IyS&>A7Gv|o`UPhq&16r_vz5PYsYB(ge|zA zFy~+Jq7f_Oi`yf3fd7uo=5cjg0Gu$@Zo_Rkz*+HBKuTOooUgZT+pju zPLG1%_OD?4d?oBN7Cff2JRfeGX{|o#elgSQsQ#0frVhB&H`FiV1@0X1_(tHKpmE0{ zzs*XCujm)45d~Q#ugLQYP^TE)$$n$F1Tv6(VjWv9;AOzcjBki)q-Wb?o`ih2=OuhUzjiO*JQ6d z7v?Zc0$wCu;#m=lcM@pDeE&atYdmM&X{msokLX>~-hD zE0`u7H#C2Md#S*^0X*&zxPKRQr)&Q0)+#dpUU&!dB!7@~r?dxP$^UN^@;nIIXM{Y< z6Y5UMhr1=}4^J>Jmwnpnei4_k2J(pe02jUh9-p&3pOn_2UtVRJbX?Idh(il6MLQF1 z1lmhzk0Lg;L+gT8jK+Q%3e;F{s2^Su{V)Xh$e;S~KdG#%Uqq}L^^4KW)8!W-B|u3Y z)Gc9LngZIDMx2cQ>FLRS5%Nj$3)BLJ7sZL{{{8d1m0+2UXND>-yo3Gk-pJA2Q9~`B zfQI^dG4jG9)FX?p2xV!KH>Ceep+D9`7K-}d^NIStr?k9W!!)*@#`6fLQs5x}FB19x z^D2!)>mI63(u;8slSO|Qa1rMJh6mMkKZGY!zrv(pzb-=lU$jGLLjQ}tnXT2QM0rJ> zv#1r*()qO^j`{h$01wwA8b4aJ3uyKgc(XEeRRj6s3h38X7wF82rjRnvEZUoS*tnQN z)1mCT2s4fl_dt9$U*dY$FFV<|dg7Rddl>VuaobDWLj*4N{1uI>;)JeHf~4Fm~aaOF5=`OaUI@Q z11((q!d;Kn#~s%?4fk~BVdEZQa1kFC;kv~|1JJI+IIBdPiT8;8i?IH@=x)RajHSij zqkWgjZ2KVEt(i=Veb9E)Og7<#^d2Dez6zLPUE-^emfqMo$*MPM0mH-A`$(g=^6Tpa zF6RG>pqoDY!3SEn9qWLL>;DW7!d-7V2Vq&Sk&?c53tZ&JMWRj^{GhJef_P|tZY)v{ zEP9e@95@sb3FmQvgZ#hfZKGbsAN;Y#QT3^KuA43KL7F5IH{M`ggkK}60s_K+Rp6_9 z^BLn0*-1WcLedAxE`s-8rX{?p;QX$ICH>9H3E_Pt@CJisq`;e^uiH<_GmC~XO$qmH#1Riq!q6*e)=zz>N>Qkb; zGS4hzTG?+T6y{FEM~w?yBp1fN<@k*Cb$$3lr|Nz)`bG1MTff!JBZjMU3F(RW65=A~ zFWP8eGk$3Y8#j_?+_=~aFg#+oI?)jBkBqw*Ie#(otkJjhNgFqkXPmf;Q41IzFo#9{B3nU@nE zF_Z9L5cqF{=D&h~&gzHuO8Sjz*E5the=r{CrsxLwAx7xI6W9ScRef;sQ!L;2$t#7=s^%*U; zXK>nCEdY??yHLK%7wbLDzDi_uQ3{SH2N-bAz@18w-_Y%?sak3)V|Mw~|b}M?J zogw78DuXIaodYA6E(<|-)WT(E`PJ=)<5KXKzjNMM` z)2y`QBA$VzQtfmR^CWq`4du!0-K%RsH(@D~=X@>C^`Jw}uXvR0G}b)N-({yj$AD*D z>~s_JCb?EaE?Buw+)U~|vCJOFp~0v2*bA){8t&uRqemvw{>f0jCVNA6xk1|n^WO^0 z`74HmaQ@h}dVi@E{AW*loGPX2J5XC&ovnDZujgQQ@#xS9JUXh7K}V|Jp%ySU3dd(I zE*UL|heERNr`o>A?G?k(rm%g-_tN82#S42J1UyNkRC%!0Zg`SBDlX?1#)Sba$um~V zqhj<-G*NGiUncG!SYvlpVQ!u5gZaPV8OoEFlPpiL4&YT(fe!h<;up5hge%kX1en&> z{VbKhp+nX@@dL}m`t;0k4ClbUHGzGXT$1r%T5rjp5UkSRK)Ltd87dR>-K0)q^3cP4B^w)u#7g z$ZFGjFl4pqJs7e>V4w@>d>{R2MBlyu{EeDa=2mZ+=m634U?Q9@{EzE*?AJod-lck426UKdd;A#uI@JIvO!l4y!!Gh+t$1nU6al8vAnlkt}Btfj#|r0jcDIQ%Kfk$p5@W^Wf9{G*HqiZAZ=tebVnx8DiUV!QAu)YZV zq^p?1kTaPI+r@*2(xD<2xrC3j2dT@y9&pb!h zYib^~6yq=E?>y62RH=43fO(T$)O?fp_2`{@a?~;;*M3^Aj-Wdn?RX*AZ+gDj7;+uW zyu+jOMQFI&81FxbLr!(W9ZL)a`PN%it^ObN3?xj0^PsRkVp05&%Ivzv&x(H{IPFQ zm%7X!m%h$CLwO2&bxV}z6)n%lpnD&U~6Fx(XcMJ9&_%c@cE`VXgrP9_E0!W(Zu@xyg4a#meQ#Xb=J~V%#-Y)@R1LARPTs9ygyLjl4ofemu`K(*$ zw?#PxajOLN=Q3Q`M|Noqx}DL?;6VL}`<8=o^f~M@+_nptwkzp!$>rxL z?Ef2`LVFancX+q%$KW~uZ`qlk>w|`MZ+-ZtMkvU6EhI)5F;agRROiV0<;{DYVk_$jXEUxqcdWq&v7W&B0Q zisu2?>#4*m`@X`mYnUfJr+Q&1M}Du|-g&ekgl(a&Il1{PSs;UoFNmvwe0SnK;_tG5 z2>GUEP^Id8)KK~EW1i#>D;)Ca-8hmbxDL=;hPC}=kD*~-TOa=7>-7CYDqlBLp68e+ z^;;$6iS!!uRe9(YwEyDV=Eyn2@g94(%l5_VXuM+ny|%XztMOmS4o~ZT`A^3CIs;6x z&r#7b(^8?P#--1hhU(JgTF(ycyI_B(Z?EW9At^z)pJ-gAC-hz>*8i97q3;t=_P6&7 zVZ-)y$bZYQ{%?4aKdAht?BAs@KgTgoTBg_kmu&#uOxWV|(BA&C{|5PQBjWtVVRoDc zQ^ZRg_1c=%;lXUeQj`IwPL0N?9aaw;N2YdI{%s^qM+NhKb=|@bM)e@(DQj=I;J4p4 zT$No;} zw<7+D>uJ8mdWDG%k$6XOrKoq`LU;cAx+sWuU*8Y97Ecr~QA5_vVC&k}j*II}()XCnRhF!w<;Kj0qg_R$JP<*TnB)cuEf_}5RP ziF#qhiF$tYH1J+Z>c9FrWJ2#D_oe0Iuis(W!n#=HJ@tz@Cgf_@BfZ|#dSTA@wWxTasRzJkC&AH^ONBUy92O8DsI0+K|!Z;L?C`<=~=5RI1vANbw!_8D)vhjuLc-O3jOzuR~#;^70o`&|&`Vt?bk)M$Pe6xeC~z5FQd zGpoNlxZ=$6j=I0GH?zDm+O6E*s~^+-Jr?~v{rCQk^>pwLSASDSrS=on0*tM#e(D(O zC(K7tr+AnPd0)RtW7I>xdCML>VvS{GeD2JK6vgU`p$@jS&w1A07|?&wF2b{qPO;0*p_QKdSp_v_E#~ zTZju|In|OsP7C~T1+D}82G{(r5Z8hIv|DBu<()$mL(-e5~yN-&?T=ZEeQ;4%gUx_i>2dWN%3C_Iezm{$J4xZB7W+ z@(+&(*Vp{o3iq4rjJ)7V3Vmf*(eO10nn zzbP0>>V^xZo-bF2I5(YR1?}&t>$PeBgs!j7E9h5HRN%PZcm=LsQ1j~*3lQVB#p?== zH(PI&!CkEBb;gP%Oheb#EReW*UopS9P~CxTZ{$$CTcq(<1AhQ`{lNImzsdY5D}E)@ zWW%=?^a+2h#{U)gShxG`OU7?8D*@k{|Nrn3E(>_49`Tq*N@8fWqOqZUv&~fob zc!{YwO%a80@w=_+Xsd*ZOIY{+wlS!d-NM7@krJu@w_;*KJ!kZ&`;5U*q-c)ExHMU8 zPbmM4RH=G2p;YeL&qxJZrIY}$ma0ZJpuX7ft|Oh%I$#49eT}omCy=xt*r*(7rMyu& z(vo?ja-_AHM&(FL){V=tfeZY}ecjINylljN=f)S@{)NyM`l?}7_gANbH8#tjjBQjY zgF3fSSz_1scRM@krpERL*jet&e204x%$$zq#p?MG;k;PSPm2p8YmjPQsMh;vUW|R< z@9>)_E5m7Fre(`<`uPx@F>X%!eca^Y_WWRDs!7JpCWKKHsp2sR!I|=E#7}diR54)?!I27ggD(bBs z#p}HDTJ`fPWIpO=w6QJf?_(4Cd6QH|42?&4S{vCELpr(A z`beX5r8Sa9=i0z)Si+2?-o)){%JJ0ubXHx)J`lNn1bd5iNlyNAvG$)AL3bV6TkJo3 z>g#wnmcf6Q<6p&SZFA}`b3G*b3)MrU%c#Fz z*8PQR*H`@;4g13SXt{T*;Ce{vuhEUxUk+DnScf?nHLS-Rj2hNu4n}HSBxU}x3cnLz zY#!;a*i+LnA5rlc*CkPWMxC`9*JrK5AJbp0C+g=Qr{N+08ydnh_W>03$mwT2iG%P= z-p79b>RizNV&F0@_d6r|eE_SzXBw(EzSjAuckY0~{H`UrJ@RwxKtj0Hfu5_&fO|FC zJjUJsjNo^QH{kk=4V8`Nm+|q|Ft?2JX_!~W`83Qa<9r%6!HM%xm#jBNyjJrf0=n%DKo1){ibzWh9&z#6pWP|JP@w^gm`8ZtDiTk2fy$srYGu}Gfv)gvJOlCJc ztax|){zk&#Eqej9c#hl(Jkxh2Xjg;J+7Ix2vSK`2`8Lqv*}c0@N}$HSmHz`T@c;Ah z{sgou!t+}m{B2NYZv1`TC`Lo#+jw@Y!@O|~;-0ZN)#;0LonDyVC%?FWwioQjvr)fY zp!@Ar&|ic09{1a!FJ{oISTA}6_1N?OXX4iXzav6m`?UGynzy)*B5|R(uv>5ILT&2b z*LD961s(4BUo(dL_ppcb{7>Dt|58H#Hcn+v9-OMz2$qfXQorA$_D=@TdS~o+)z*}0 zy*7ewBI4DStk>a}2lqK`yaIlEW0GF=uV~@}Q)Sr(WbQa4m0KHykt$Lfg^?PFjlw8g zrc7O@T-%KMFzVL@_Och{8{B?C`DSfT&~1y>kNdyf)q!7c_!0Hi@6WM9KRS=N7dE8N z<6P7Xq`scx;L?Ca4hNTP^Nh8H>^tOl=6>ItyngDZ9P`9nL&a0|d{(u7w-);=Yw^tg zwPJszLrrkMFI{(_o-1soDQ3Hnt~;%N+zEOw&Q6yF>EjCP|3=2hxawY%-@%bDFnhz0t2$pfI*xwc-!EVzxOt`|01st||zt#G(Fn8!$`_xF3O z8`)z$@@U_PIp}`fH5Xu>upH-N4SLP%XjrFR_g8$zT%oBC>W{Z|e^dZ-B-(c&YRe<5 z^zXj5Mt>Zz>HXm{X1%(@#h_m6OEv@a2ky>I^=s8P+9u(+rGD&M(6zS+N-!JQ6aA** z(z=~MhkLKr(H)3n)0Um`_54dcZ*A(P+mlADt&$pY^)hNAmwH*&$%V{Y-#BC`)T58G zHtxKIeX(wnG*4f*8{3-t=^HcN@C^Bq=%$S7r*%8)emVy4_e0BPzdyPl)@NJ5ij@>08{pOHSXs!kps#lDzz4Tp<;`eL;EXyRbj|ckR);zpNOjAHUW8Sc7$5)PUK|$?EGj3St^VF;Q7CX zhVaz>4Eaxwg4pw6u+J~^r}3DLYCU*Nqxp$tw+4r27oUdshRvs;USaVO{-ElK?{z=o zcP!Tb8BJUV-z7)?uGChr|Bj7iXG@%hn%Tvs0amuz1Q{;yFu9+yzBk*3;+?urh5R-7 z2l~{$;yPS!v-WMWv#Q;^^*u6P7c+4q#r^Vs*|KdIh=idc|dGZmh)UVIz ze#N|dJ?3re$0^Qqw9J3`_xbPoQEU^+FTwBGp=)z<3gx04Oh)z`uI>3X=q96y>*~7J z>UFC=h=Z};t88HXX?aKk!=Q^xoz{8Qf5$qKpRGka3*0nJ^<)=3{8!a$>ub?)4dD8X z+RHMTmfd&GY_C2A^@1geae4K9N*%fWXXY8!0R{c@Tt8Gv^62~hDz`-3#F~F)DqU zvP*EkpZe@oV*X!QsI3A&?%68SLVXJSg6N4>=Ko6Me?vn!Rk^);_UTx1L_y&+6WHr;W9LVeWgC#2VQpWC4;UE_)*-dJeBOL z{^L~+Lc2wOsr0%@Jg>3R=*2uDxY++Uw1J;R^kX8hM_rS7WFp!PXqTY0_tv`;<|(48uksypih2cZ75d;x#S$MX3CDu7|@EcK;4+nPbdLuq#%;faSWR6;$Y1SO~T2*6Rz502yha^Vh zzYq2Pob)D{G|E=bW_Iu*djE&M@hU%;azJlfFBgoD?gOtpx9h-bE@72PU*zS=r_tV5 z_R;+?M&sds`q+A}j331tM&EdqeEk9b0lXT;2d}Go4!ZR6EC1GW;AI2PA9U#;X=%cp z0Sw%iSUFhW&eFK}pFXyJC9_i$H>k_K%30|I^1d2V`1A@q+s=yvk+f6!i)m%+m<3vhP(;FoH<>tpjhR<2-?fd=3Al{~5e@ zGA*NcL7n4OR$6$!XuR5@ez^lLxg_Sdm@if;9ak`3RV$5$|LLRoVVUMpJj4nd9?lg9 z^!rugt;-v9_BH4Cy!^5YufF`s09D1Qsy)D4=?J@Joz=!+Xu&ej0@!u+yqm`Xmw&ovawu|Up zwJWjraIQF@H|iA7f ziXrCvFEiUlQgd8fTD>?8#eY6;^;-`p@Rh{S? zuj+VnihkWp>s`~QUtUR{ez-l~q-z>KRmjmw_o@y8PtBbb9{#5fzpJfRSNg`Q>S0dN zub$!qd#}a}Ao!v09!2@NMYt9?iaP-Om99Ag_cV=*|LMaYpV=|0XJ7ipt2)h`qF<3G zf;gdY`=8tw*IpVxHEyervq{%J0`Gi{hyUrLWiKmERGmZLcva_{Q}pW}z(>{F-*@ei zQ`DWn2lQ|z`~k%UZCRfOfunS~Uf?{WaqvHVv?{mt zxu3rAs_b04rNqG#Q=t**^9(SQPIn2M=QIxfr;qK zbb3tS;95QEAN)@r+by+mUZZcks<+H3`W5q%zz>w&@Dp1G2fx`@rF6nNP#7;h(Kx&| zwEcNDPVn3auj&&EXB&yrk#U9rL+SLMz!{-&@IQTQztYATO5b=@Bg`rKwK@2xe7hDu z?9i?x_kw|!T{h?v(N9x=rF8p3;Hmti;sySvj~y<{Y#;TziS&(EwZxpFU$=GPiT+vx zzDmb2IPX^E7hER;A5s0MY^(J4s?R}{h#H`}o5j14KZgCN@}trhGU;Q7DqG)`^o>`= z`!2z$m;uG@EBxjc@KrWmF6^sn0ELJD>0`%hZM+}p8?TCgCo(wIcj2-BRBsKw%Eqdm ztO)X2b#sk}|LJ4LpDny<#0wlA&W#=|U3mDZDm^Z$u{K);9jiAJcxp}${nY>TvD3{q zUXX*m>L9qPcf(H*PS$8W!JpioL&et#X<7H*QDQHfTeWA*be)zMC0*z-(`EN-o|fP zsl%%-p;!L%#~5A^+;9frVSZk%bVQvI;$5oo@IQU*@}!N2c`^>K`ci#{dBF}H*|SFF zhoiBMp+-XRCE?uw8l@xZj1ccejTh7&>f~K_v+A$vYl(+fePh5Y{JV?dgZ^8Cb%=KO zRrQnA)!FSNY@p}8z*M^aRp8#Qaq&NW?D~Q=AFU2@u~!}BcXJ*j)OxNZT$EqxRg6RI zi&QIJZxwjRk2LP_KYi@BuRRVQr*FLKXUr+)Os(g4gomr@@vHVd3G^sqVzTe+z*M@T z4hil1rpD#kWVbgmJ4fXGIY{kn(Zi~jrpcskk;4st}b((PS*kGzOiuX-#R=GwJeq5ToL67&C>=@!2x z_!!z%t<$JD4w>|^`}@{BrFs&5<5f>Hr|4G|FO8l-It=W&0Q{6q#|nEc(m42^KK5vD zO3M_?)4mI^$q(Ubk~KYi?ZjO{12^o>{jvpGe-wvOTznn8fC32!5?l#c5e zuLgcXc=(?__8hA4kXLGU#JP~MM$ymZb-0?%=}Zr_(PJNh-`>)Rhj8ExyP7v{)}{*773Q;S`Ot z2``~Nducr(lRoyIZ0lJ--*`2>%qjYHf9Rp>3TzIBIahs4cE#MkM%gwGpDT3#ouTpY zKYg?=wCakQ{`8GkbA~xZzhbRK;AzVS-x1ygz*06Y6nGbDJp4}|t!LYKgXkNt2DXhH zs-IXt9l?S#2=7{8DIL!ec-Lz@{7)bIoMz))Mc;Te*PB!HYa5MMrRoag_jX~~6xj1l zU@09@YlQZ^TjSw>`q*cYwfH){i@XZO3oz%ue>yjFr**mV>L=g z)FUC@6B>_elzq>(@gCNAPgr;d8$8sZ{Rdt=sP7d~yqAEbbVMBz;=Q8r@IQU*`;Cnk ze#qFT1Kz{jyIYqyA)HvVMGII zKX7=p+v_vT%aPz?#@~_FzOusG6AikdwhjBMcJBaB{ZAhUZefkT+TH0J59daYqqJVC zuGTXK(hFlt>4y55aj-tF{6hUt9|zuV+Yj*=hgSRYiF$&UEiS=(zs+IKgHTV>4rKawBz#{k86`d4zTijZLm(@ z)$&|B0L(FZh1V(2zC-O>z)`xP{s?j2(KuX_9P*B>SC9j}+IK9yPS!X-<`x#|iiPy~ z1Q<%Emj%ve8VCQ=$DxN=`!%)yp>Mp}&&(Ds5S)Mqg;lulpad-&k5h($jYW4xW2X|@^mAHGL@;(Zu= zZ*gq&k72(p(RxBAef;@I+nx*Q8?SbWIYqyoX7nuV)lKS&wQ;iPTw%|3{~vAN171aS zZGX8FLI?pu2pEJ~ULW;Qe^wy`2#6L)K)?WL5;0m-s)$q(QPEOGOA!?*T2xf36wz8s zebiEmN-Zk2)bbQ9rKnUXO)XmLqZSoINN$qf+Iz2=d+vFY$oC$e?;9qZwPvl^XU?2+ z=FFcn? z^^`NbamgnQl8tiLmGjT^&=2zvL%i#9^sDul8~;RN#5lwD%Xk^r*LBuU)OX>2*qB62 zPI=Mak7o5wf}5GnxA^LhgBN0~$2cR3kMsYM$8@THzq!6pkz{?Jkizu^-0u(3zfL~8 z_QI*tqFtBrtjFBA#8~gl|JVPA#UXi2r@rjX=hkDs0VxS?X8Jn)GWyr_JZC-T#wEu3 z&pGi8r62N`22JtW zV_zkwPMmx3sn^WEVo33&B|`=;Sa8bhk%NZ}8ant!XMas2SwB8fDm!1wrH=I**Z{)~tH_3BoJ23wxb!Z9}+sS18Wf2E|ly|->y^WP$^TcW!!bo{yJ6sz#9Kd>pvp)+| zL-VLMy5zMqW;lJ&+VEyk~P`fY}n z#Q2!w_Zqd3$24@P?`QJ?$$I0G)|Q_WAFfU7CB}{LlljKy6NzDGB$6%Ij~47l3+5d= z9Eat8%q!x$x!E75hI@1j)~$7RJ|0FJf~5PTe?~QFsonD3KU49v&(DALEOW7@r)*vl@;2 z6G7+Qn7f&4yNmKpw%&{})cu&t#r8Qf7{*bqhD=KY`D@{aabNu&#E>3O9+d+86C>YD zBu?9xNSyux_TvxO-%30ao0SOizLW@h;Q82|coMhw7f=RIp*)@g_wz?3eN?3AcptBH zJto|6SQqI}oc8x{Z{r*`E@?6KySavE6OJ$1-@_-OY*5D!=cmu7!@OpfJf>mSdF|oh z0g5EaB`w~M)xrEq;DtJN7+qZy-!N(+k7?LneLoXP9yTs%@qR;yYJBMPCC0-iJAUO# z&^%IySNMLT$uTZz?VUfx7GEX2B*u}BUlp~G$29yI|M*QI$GD`$#Fwi6YIp!Oz6;5=xOr>A&+WW)o^AFDmDY9ItG7_5Fvp(`<7?f9WDMbbQDCPrNB z``t>8aY>8uYblS8u=?ExU5Rm#nn$6LBmDZwF~nix9)(|t`Qf_zu*A3;erV4dF<+mv7j5VpXhYE-^h7-xhIVE| zPxKutl$UIL4E;cF;LiZZaTs$Lb^|s9Qmjp?-p{5OIpnFOijWGX|Nv8 z9f(27_*tiXcTx*^Os94C>(6WC7?-r0i?W0SiOhWUhcG|mseD5ogB$u={{E7{h@@&Y3m&CZw z>JQe*hAb@kXs~mzOi2XUgU}bFP6g=egS)Yye@7&DY0uq3plY-Zh|a zlrlznru_y|E8YK}exmO;fE?q}uf6&@OzUd{`bLSd!Rh}ShEXfs|DS%BS6>^fP9({t zUtD~X%H8_ffWA>8u}rR>GYHz-)KdW4h=UgmO#LwJrmg(H$T2QyZTJmw{BYgXATh3R{MJzmc}$~k^8Fqq$GD_9ofUF2 z`>Rqb&yDbs7}q#{Pg4tdOr!tdm*&_c6BIfp!$*f$r${he2WJkANRft7EVV&&MN$DyI8H*|LPpzwAc5dALx({O*xX z#vzxq6968`wfnR(zgu?Y6<1t2H=O2m=Xa0T9DMRf5jV9}^2mUrnBN^{*1DUE$2{B0qWL3yLMdbyCdnYc9)}-#t={ZKq)Am#!~I zN~ncArm__nu7&kQ{RWX^T+*D%iJZ*##pbV$jE2_$EGIdBW2uEarm`mId{@6S$T2Qy zvGGL{yiz|kHi@y+@w4iyd7;oOKR#_Su$^&3T1J2xUvpV>!Ki)`o5VQY@v~g!l9zlAvQOvI7%LpU++TW-C?`vFI6zBPFSKsv=7w^Uh`wbD{= zu-z?*WK%uXS32c*n<{7?wZ^S>#u3<$ixTIxNllb!h?WDwbmU?kE=96Pw zGCjR;Kb<%m`(s}aYa{yduv{D2cS|1AS=qiHx&ovmxumssePr|9ji*@IG!{92gQ$f( zrn8oK?M&mz@Jf_JD{rWRskz}KBNsB4pmWfrNh?egXmhoK2?^bFdk7;tF zGv6-#e&b?tj7wUq-?&gj{cvwwW5n@^%5x>P(#LGd0^e^1ImT_hetmhC9OIG}6JJwR?V01P;n(I8w6FxTMAT)lMuQGg)!yt^~X)wDz5uPo3Fm_)t{!MamXbt zrhHL<#t*Urmhx@FxS>(XIF&BnrUCRr9#hq9?|3%l8;4xd+VUHtxcUu(C(5`fSIbwQ z5gFADb0Gs!&J(aq!!i@g)s*}US5f&EtBLLt?W*4M<2{8O!=d1^lFpF~JnYH$^oxk80KL_sEDi4nbK3(_6S0veFT+-tG##U7-uIC5(MvZZ< z<992ykjHfPTfX07a*Rt_8-8P~pwth2W0S(9gK-`*8rNe&`#U zB*tZq-y_sQ9@Dfpd_VU8O~xgyjreM&Dz1L$8=EA?RgT{Vg*A^t=hXOq?EjmL+rD4f z__QDT|0ap?F~`sPbj=I>cKUwo|C@~4wqGO8hnk5x#L@WBH#SL(=HhkO^V&c-#Ve}g;T?@DzH;lz1pPNL_wk)KR`PO&7oPKqnXva`x3+C+n#7pc#4 zInF7^;nYGN(|OOxadYmAq)sBoxTI-0ec9f#klQ~oi0`>j7wUKpZDHI3UkvM z<1ehfk30>}@Qg%V|32xARg?(Z=KgTcMH_0(B zY3*H?57K$n6z0aYjGg)a6zBi(+X!*WNzfYb2pEzY=jmc>LA$3Q}*qQ%N z9i|rYn9kqrTxY1?$K)87w3y@BTsgIZsQO9Wkr@A(u0PFPsf9eI3oxw8Xm6VhNRmsM zw71Pc*xurYp4)s+s~Pu=`Ey6n-j);(A916zzowB)HAPx8W;^G5Gx}ug zC-yADFF#Fb&3HGy8U0l=8j!F)Hh-B~$YZ*|oi|m#FOg$h z(qjC)_n4YT!0U5Z{@w9AjatZKy6{}5eyHDYa*Rt_jGy-&n#LwE4tD$|QVV%Z7jAOe z7xhCwgOqGGE@`oT;WWRVZyKA#h`v55&kL!AJf<0VwJ5Vbvj1;3E@@gH+5gK=542Ms z+5b0R99rl)*?i^E)W_i^8THXLlFgGNt;;Li`gj%MyAVsd|C#Yqw?3jjXug8}S4A55 zBc}ZP`gkLrn?(QLe5q4@-=-Gwm}cy7+DGh1viSybj7wUK-;wHbYN{sct988uYeamd_GGU5Jq16B@gc|W zce=Ueg??+D>r5?A>-&<;#%YE~p>gQEQeMQ2|>Q;l3Kiecdny?2h*gdf{2| z9=N7X7Gs_kW62(m;k~g182jNKTZi*$aST_{`Tn|!>ON8a;zGZC|3Hp$NsB38i?zheE&u*8K!^Pl7x zm$Vo^9#5I_)Z^In4N zTWsv-Vl(%7zAd@*%@`-f_*%J&t;X4MJUkI=OP1r;k6OrMx}?@C*Onr3j7wUKU#fhn z`@DS1K#R4d!0|hYTF7I%WV_q%qFrq{ksRZa)`p+f8pbya+aku6{*GTMwUEa&YqalI zqDZpExTMASwM4h`tvt)&B{81j_>HF)@|b2}nk~AYFYQjtSaOU@T8v+F^cau%;rg^i zVjSi8**IA9D0C?vW6kulDeGhl$IQly^P8M8u4tJ7FNqP?CQ<#oi2IH_rb}1*eix8q zT+(9vnyM#Mv%<)E*n&C97KyRe@ta32Kjxc6h#?>=&jOByZ+T2_VIpg!WcriSo&Zs;HEga^LU`=s%%!zL2* z3djF(Y9o*78+Gzs7YwfC`EK=pj2z>Vme!UGd#sCq?>D={*_34 z!+qXF{Wg+gT+-U`bK4t?8CxXACmg?*sD(VH%dYm@n-|G3E@?4-jny@ir`pto#3y6M z7Kw4Q<9C2s$YZ+fJ!!w4dA^q4lVe=cPQaB$%TB%S{HT2FnUl-Tc8B`zJaY>!{E(6@ z2f3-Ok}avD80QZkI#|c~i*UU>8Q-Omc_e(B2IKr>%ggw-$tRd|`z4l)F<6GrG5Jqx zoz25C2JsHl6<5mlt%$dF!+zntgqEEloVXmr`{=qC`N@_>#ggDUDem}9EH9f{u2*$( z{94gBwMu(>2*(fQf#+(1Zr9@;%NZCS{srU1sVEzanTFw+g~qw~PQgOVAKr%LH;&CQ z`ZJ2Rp9<?pZ7niRt8qz-iPyWXYL&h*h3yN{^|kdRY9WtlP6wxdRKF9+ zF)nE_ehp(P#||EUo^&BvzUUjZjQcx&rPM+m)0`Pjd!v3OiX>Z&OIkaAXam#_$5LW! zJ;m`GPc7sz&3VE18%vIHNsIAoM0~~L^(tHZv@9jYQI4NoQ)nKAt~kLv|68ZhFXQ?{ z&i~eGdtM*kbqYV5=r#h_%xwo+YpL^fI@v1Odc{$+1Eqt8m)z*=w`n9>Cq-IUc5AmwjTo;#Fr{rSbCmpIp*n;%zFMQeIP~xYko#8@FD8 zWLC^Yx;&NxT?c>UjM+_wEvWtDtP!OjaQTPfqa96w(FOJ3-AmD4Y(AFuyg zKkfQIRW>=pPhyi8A9DO&P#4V${eB~UPQTdtBss<ImV@Dj9+Tv`0&C)>*MdStt^;_i2UlQm7bfp za=m}N_LE~=`swjHpzYZE{5~CjQOP}Y8SU7I)Uke?IynEckLI`yACht0!m+^LLYc(8 z*Al(M@kEfwL7eqi(qpfAW8}EW_}OijIQ|7MDZitKB-=X4FIU-LE?}`7gG7JbBycvI zH%pFNy50wg9^@F8RFq?o=&j#-+m~66)$_kT|JrNZ(uAMrVgK-cVvy)dy#bW6Rgf5T zH03#Bkndi#Iba@uTufObR2q)(KBYhr7evq)fH%OqLPA9+owEUwB zdeqAxA>%Mv20GpT36u{RN?iC`Jq2X3KFAr&3|J3##^fleeoN_WtijlP2D`u zmrhOTsvG>{H<29U(oc`yWIYf5&f`~g$yL{0a?SiRFNt0Y%{*?lGeP18O4uq$+;$Yl zZN%W=`uqd>PrY{`^BOW%lzv&-27J%TIYt=<$MQd|@W*!`rM@Iv|AxQ2|^Pg){4$MD?{-O)79Tg^hwuSd;~D@O)Qf`IB`{jTW|4PLE;w0g2e3+ z2Yug>7Z|wo{KDrWW#;uKrwRdm1F}Cdas>X+64M+kwCSk9zb!nu3gW zU^VruAEzGn>*q&PpN0%|+SMRo8geYdbj_N?=hNl+3+O(K#l|SYxf+K$yiSw+AYso1 z1c~%LZqVY(Gi(U-ynF%M%7Sr7bbNoUyPP?+Cyi9)}538MadndPlo15AyNc{b1j@Pge8SS=d z$ZrIO>03{ypMMGx|3G|iVtF-$6W6r5#|wkq#Jh?K*GVzumzp@)nP(0XpWxd0Ic$${ zNOZgoQww=a^PTUO$$kV0yZ;{~j7wUa-?$9F4gt2sZ@=K4PUP32qi(Kwq2KN4@vZuG z=wKXj+xBa!s&VE;gAP65g%}e}j$cpuA&+VP!Swju{JI;bgK@iqU;Oa=O$Ukbi;myv)IuK9bzgM*dDNEY3)4^qu&t-I!wg2 z65|lZ?<{H|kLkMQ>E~fAzB9=&E@|!g>3ftxhjZX1F^+Nk&ZQRen6CTS_p?4S=wMvZ zV#-s_zhZ;6JaO%;F-~>-E>&FSw8Hew^ZfJSVsea2UYsA!KiBUX_(_cCJASuN3wcc6 z{I&0Q6*yuL9qwT)*e9k11O4;yd*m3Gw77WX{CDDg2(d~T-|m#}qxrUl>g{eD1> zaY>8uv-4jKwS3WbcaSo^-^#c56PN?VO{FfFm%+Dr_5Rvv+wlDrjIByv!SmKtSYLx@ zGye-qf7)<0Oy*Nxg4VUT?_LTn#(v%IhR*YN#(g>FRV$FU9oyqNv*a}#yUaQ5bo=vy z3hF*ldO^M4{``s@NBWKqQpQg?<%|76(mV=%>wItA-vMQy9OIHE z{e6d5w7>t@eka?Vv2e#{9d>a0^gVRbd-v1(`yqpi2RqL@2OUg9eup4Ti%yf@g{jl| zte}I$_`2*_2q(UUqK?LA$PYT$HM4M?6jy#@!r`v9-yfr39>?~7cFOM)mC!tjUEfp6 z&#tRwKY|V)l4D%bV*DB_%g-8jE^3(_uOwao@9-{`|4#cQv#5nUrt5E%`ms&#W2s-# zfPh@mGX27h?S5A1O5c2VBGwK^9Nz-nLi4!o^?!HTIf*mb%{WQpl9uVKen+NO*3eSw zW%2|p^0GUw>%-%i>`yJ^G2QUh^z#T7r`;C_$R#btFZ2F+kUSY)h%t$4`N)sg?vfY! z;c?xJ%rQiMymps7riJ*_f2LolB0q{R4$ z&hYyHUOTbuPWuJ6wdRF>O}^g&^CP!yza!^{b{b!hXE7$I2T`w!w_{9+iKLP| z+;_)#vv@!L#{BGOom%Vccn7FvNP+AV(|0a&`dcaAAXkxqT+(97w+Xl9(%*v!f|H<& zG7d0yk?WXF{jii`!7=VM56f~a>#%GMtv|bU6z|E51^dMGoj*C(6&mkAa*Rt_OuU)T z9|QqnlVcow!KqIpsf9eI#S@(VUj6KN2Z3=(i}MR-4WW$RuBh2(%cE@~4|(SzV3YfsOtoH(`ZdCGuu3BjV!f_lr3qCFi_ zTEhDj!3p=k@jN_p^aS47!}ApQU2yp=Yx%8g`K>JZeXby@0QU+m$?!QQ|B34RBJTTn zk?hj1I`gCf`p00QluU##L3NC-n~)y_%cyZD$}?(*W8)@K%0W^s3)TMAEy@bn3imD#uw`M7&*oz zEynN2)auG{DKAK-(GTzOIl2Psj=10^Qu80eUrqv+wnU{ zE#xuXs?Txox?bZuK#p-qi}R}}JImTWi?0P<661SmzbxBY^C)!NNzV0|`Zby#xuju2 zIY{wuDL=WtJcf695|v*KwUEcO^w-YuQoqrP1X;!w)#9^k=Y&;=PEmV4s+7N6nAwr^b5$ImRU|Cf?N4 zF<}8~ymJwYlyR+7zVoPsJf_=kbk0Zhn?sIqNo&K81+0GPXSIxHIes@$3wcbpzwP^7 zPmXa(i}5>x-@TqVC4BEM$XW(JiE+N;$NpFHn3j!j`X`NVsUktvr}e)L@EbSvY?-6c z_|P|HNsNo}f2lv$Vcz>N=D<y+;%Y9WtlncF|A-$q4(EaQ?Eb3B_T zMiYu!zUUjXq>P>ZKkFrGA&=?1)&BYMB00t-EygcZ8GW!+{m?gRj86ZbwToKFWBTsT z{rb9t9OIG}=T}u5ekeixq^*+}o&G=T9cm$uX}RGqZzo?~7!8teXT`snEjy-!bPX z`ln%oMmXQc4>f|U_ad!3H#+0{j=9(?bg)?;MELS1w|~NTpkp@ub0ZG^h$+98a5Q7* zd&l0`wh{~2t#vk^(2@P6&3)+`N zaXscrX5e1vgZO^R)%cD@B^I>Jr(65QEkB!86tDH^x=(bv<7z)%>jQ$0pW6RdRfGX+ zyl6MIjGg|!W4XEn9n<~)9k~6NS-zvmF)nv2u6#4+6ZBY08B70P$Kz=`q3#f%WraR|)=U>OKkz-uaCv2jLraTq)cR-7V99eDat~}1#<~~bJd^e)eXeB~9LxVi z$H!s_I!=q!@9FN`7ww4a(~b+IWFq`dG!@bHy?k4!I0l<2q5kCp_dKd>{5%{BG92Q9g5(Y<>pg z>BV^eqX^so2IYl1Q*tZD)R*J=gBIwGgAd+iY{)o=(;}^PJU?I3Jl!Xv-@|T2=cmTY z{=cJfNsEn_vp0xO+FSIEa*R8ouaErL|4Uxz_o45{{=eg=_Wv2b{~UBg|F322^#2{% z|94FH|0^zW#v2;nUfq*`T<%s(eBOL*N9l_s#@$YQ2dRZTrWJp3+B@|-K#p-qi}7nN z~4O`uzEn8g7mL zQ{E#Ba&TRj(}?dCW8GQS3y?pGq|a~_#c%ys&=LE{beDTQtL2UJ0V&8%_j&lQA3xh7 zlyP<;;$5WcAb$tW(Km38;aQ=Pcn;&VFJrkD=jj88^Dg8~RPAH_PZS^eQY76cn%q6q zJHFW*Lu4D5G(SEZzm};{53A=V+9El|*@K+=RH>V5Ug-A|slU$nHM@))|`nL>~~<0$&i;lqmuN&i`A?N_#G1lebBHxh}J&pG{9Hu}_T zj4`vvNBBLpPXC4cAo~Kv0&txaQ+}D>F$}WjVcVOqKrq^$tEq)NrhD{#2+seh-yCv` zOB!Y+vgd}|*!kwauii1ePjdX!dj{6C9REesMjq2W|Lt6_sz3Yu>_s6()@g0|pPuij znzG5PG3qB?67zMA-+jWiJpBvh|21#Cm2J=91=+?WP3y~Yn~$qJrz&H#1%0V+Ik>q0 z60~uiAqCkFa8p|a*^eDXeJLG0#CeZ1)CjVdL|Q+1*_n^aUI(B1uq==8mGy3YSq_Z- zKe$ecDZl2-`MB(jxL3I!+plrT?`f6LJc`}h$2q^TA3^q$Yo+0QzDJE?^{rhEVB`@KevaY>8!Dj$bjhMT~fE zAswGpV9g8tF7W-(A0q{w!pg4yjrBu(V-=P9*=aNuiSZ=I&tT0{Vj{8XSH7S1ok1t# zk{0WS_#D3}@RAry9Y2mAB#-I)MZRB!B0;B&@k6X1;&G0@Am{b#w9J*5AivE&%;Y%T<7?0p%(I(R_pJxhT~7E zpPR|q5>jLx>xcNxRFcNG9otHbPdk3EDXe+=S0b_cd_O+B_6|B3m$Xutwn2LUTYbO9@l{g_p#*%<+4KTF7I1*!g}ZT1@cQkYilZ;{Dhh==EUE6WCT_T;=#}pce9& z9;x)>TThO0No();+4~4No8cufKIZs6Pc7szJ+jL`e$SF)T+(9VYZxMui;3^Bd|yuDv-7=k5?&JHfwW&|>+>~_LO+`A`E@oRAonQztbTTuzENUq zbo>f*bIl9=4)}iEjMLe;ZTrdh^PKw98GWO~*xBj-JNKs+@|Yf*=hc_a?ElFnt-a%? zzrPuDM&BqgcJA%OXMMWng?@+p_)bzJ=xkilVvgStIseA#Ep9pgI-~#B7@hvV^C)Vi z`~M#=@cP5frR0D+?n&Ckjqk;;*zubHKZ&u}iEk3MkjM1nlL8EcNT>JaUXnT04Gnyu=S^I!wUEd3_zM5{Ehopgq_uba^!Ffx&Z`;Yt&ZOl)IuK9 ze-`@3?*Vd*OIl2PhvodMo-7e+c|Hq2iE$8Atyct27k==^E@ zf4%hoTE2s&{^m;GC}r&Q|GDh{B`@?_m&lEt_mJ^ht^onLq{ST1v|q9M<-<$L*y;as z3v_eMqtFwl_ZUj;G9xX&GPdlrQ_{3zx#hYhmtz1La)nrj+C?$Su>`Tfp( zW-j`5>?igt!hi7_XFe18LGC)m0&txaQ+_Ss*C|k5D8JlI7&jci8ucMMUe8hsc}%}} z&za9uzo*GDE@^Ro;nVW;dkJ2TW7**NZKD?Qm^M!L{kD>0T+(9vnyaG+gf%|Yb%`#^<@oi}%{7lg&-8ctTPe>jMdTRwDEw@`qzl?*i4k+X(fQYfeYfN>J#(M$ccLNz zxunIEXY)DH3kh=kx(vgD7`ya${7R{XJf=<9rKmsB_(~KBx)_(V7{656nDB)F^(%*$ z#CVG1$G%(gm^Ll;>PwfgiUeJZOInOyWA%iI3ozbbf1jH4Vs_T7@lw5h>)pIYOq zR3zwPT+(9vQZ+hPDFpSK0WXOW~ayckjL~(eIJ1LL)GsBa*Rt_ykFRYs^46A zNsP6Q-#ls|kLj2D{PLVbj&Vtg@oTE74qH(5TL>?SahBtE6Sa`X^z3;~f3ERePmXa( zYw!HC`MfU6;3YB6cl?%93wcb>?(oltrQ{fww3zrBQ9b!(e2s4vyd=iOj^6{+LLSqv z#{2c-(&ES7*{xc>!^i1reAG#=1a6ZA0@}Qq{aAYeCh8Ob=e3n ziE)kN_cXPT$F#ZFkMBuxj7wUKpT;*f9p8)ak{H)Jep{)9Jf_X-{P?yg5_B;xX)%7@ z_tCoSfS1JhtmC(nTF7I1&V8Rt%kwpIj7wUKUuyD1w}0=l7hV$MHpj1yTF7I1Zl!z@zrlVe=cV&ZEK?>0kU`dN(4G{${t zzr2prLLSrei==;W#?xI68;4xdPQVDNOQVjb57qdOXD9T#gE{uRZJuor4*Hf_oTqnhqW9D4i$CpH)A5_a?|QE@|<8#YE+}UXM&1bN{@wff)o z>ZOg7@^DQlG3I^A@w3MeHIKWtU#Q(+{cNS>za(w3~~voe(qc)7!W#?`!ar81ZOV*stfEPc7sz{W{N&5AReV1>}oNKaqDY zVv#cbwo|_MQww=aFV1kTBh>F6a*Rt_jGxy}>O-BgeR;#l+|J6M53MNsK>n{C-U>!m@2Q16rmgOM0xi#1$T2QyG4VBxJ*#q1 zmEzi-z6~#l@wblOpQ(jBrmgq*?G3;An`d0o+VFF}!+$z}STM%wu?+W| z9;d}IT!rUH*UpRu`^5CyYrJ^7b~FyTq_t7LL!5Y}Z;`} z$R(`}KY5uJN$O8m^o>%+U7h~F>lYQ)JpC(?c&Xa=`!{loOIjO#LmfZ#|6LJd*S=1C zL#Ty3rk8%>`<+UTaY<{#ZI?sLv^{&!{n-_^LJwc%Il_@Qs?Dlv|8{La_SHIG8udiwFP|L+r*1zU!B;499}! z4Y3dM{i~p0I>rOLalc?1-VHAZcj4Htqx1iE)z*EY%eIf5>ry?Qw~%98(%OpG8d!}N zePdTCW2gV`dOx+&{r`Vm?EBqAj&VQ5&l*_uL*Lj{%Gl}uyZ(q;>Hhz}{^p z(5^eV{oCBsRzcUJ`2C-u_&EUg_W-(@M$q-Qk=Co%IQMzFqJQf8rtDdSzw(lEJ&OFG z>${2t;5sR${Fg5f5-CAv|qR0)IuK9_Ng)tB=7k*RhEaptlqkx`zre!GO-SSr$G0sNr8ZxWO?O) zb`9GH-7w#swHfcv55l)CZpMOldq<$&k3d}Zu)*#;4K;#p10$^+TM|8@-^u7! zfxQ|jdluoZ;xIUSPWX&Z8Fcm|n${W^`Vt zANoY3pqp_?i}x!gD#xqaEG(0-R62gMm7sZ~zShO}n@NswNsIAIjSn9O(DT0Ae0WKW z7dU>`Q44uYug!C=Lp8pu$uTZzF@8sy_FNtxE&v*MB{W8k;1UW-rw&yvjE8FYmyZxTq@27*Uf^LV7qCFcj zbg=%;AL@gC>tZ?H;i<>9Gs;cJtkS-x+pY|QWBH$`K3EJvw-+Pz*SkC8jBePsZu_KU zBK!|s-1hWkU>_+Kfa|1~GzxxT;SBWvl@#}AXlE<{On|uCAeErDj zA5vr;6Q6fJbUzu}BF65$9lujlL-VM%^CsW#Byx;PT8tl_A1mV%0&@O!M?0o54siVJ zzIo6cc}zS1>7MTrU#TKNcjJ;434rhV{4mBx)g#>5u0-*Ab|< zLHF_G7?-p-znV(- zzgfDu=22+Z>CW@&8sA0a7`JV|CipqWPtJwz6618oZy~ji$F%FGa{Qe3v-_3g7?(6@ zKf7P8?dM0;=Sp1BU=R#V%uaml)M$rATNNe}nM7L-> z*!@oI)k4{`2!9=iB^nPRKj^+pu>f2r#T>83$@t;K$rz0x9;yEiV0j125~uuDtAyrJ z?DZR*`k{WS$T2QyF@8-_Iq+bKCs-N|}L3iVl_IU`c z3%7y3TrZ5Pt>Gtm_512s>3vfFP1rZla zkL&&tyd-9fLt5+X`N!_tbaTzqzY>Wz-g3sH8t+zej7wUKpO&vR92(y)cu9;HheUpF zP%Aw)d2_1Mo~hqXa*W%yU#dEKz)Jn3?nsQ=9lw3lLLSqb?(@a!SEoqO-MFO1#MfMX zRuxh8le!}@zUBC#FGSKjQg@G#{?9$%?HWAjZd}szd_QR8CI4%r(3kDe$I17xx__dZ z1o_;Os~|u3D8@@ehYoVTk4253`~FC5pMJ02zW*0~{yaK<`TgMEh~;3!-@U^<|K&Vx zQ7i!0Nq%`^j6M+aoCR2CAwG=XFpdcF`y+2O#&XYMJq7D+7|+!~a{%s*T#0erbVu?S z{u$QK{F78v_lfemKX%41h&#wXksRZa=EsNgALBDS8xWstHw;Uz#+WY83DoLOnMC4G zxMYm3m(;I>9OIH0Y5YFrS`} z-&JjpI+ct67hvg+@69d>cj4Htqj>GPIq?tETkh|C>+zkZP>^q2@?ws!Hy+N%Ig>BP z_%g&>XYG0Z-PA%J(_6PW<5Ts!i5%mS7US1EPJbIf2wJ`v$mdHLFVON03J&4@seCLL zL-xctt0%@=J+V(cGx}l5ALCUN?*2~=hM}zS+ZsAobQ=1mk(kFDUWqzp_kr7sFvvz*IBX-fFNbCx+A)0ZIE6XTGvxS9 zYj0D-qIj*}l>5SAdi$$x|0(CsvkC?I#wD+0gP&p1ywjfU;MPaY>8uYc5NFzgEiS zJuDLA4#&^>JU*X%)PlxuO%{n}uJqj%r z*(atyPx9jJk#8JwNsEg&nqJlRs7HUqhWL8qI^}ECS@S}_pZR_#(9gJS`=P#u10Xq` zJ-ium=dmFD%_A^>V3OTK*TG9-oZooye*EB=#7STr++09byxd-XqS+J9>ygt#!vfat1#-f7TZXS%N)N) zsD(VHx;MT4s>d2~j7wUKUkZoMJs&VP-a}$s<@jx&7V?<>I?9i4JvqiDEyk}o`Z*md zPxOsFB*w=azvroiJf^=s?6+_1|9cphv>3mpnu*opDiqi9MBms$V%+HXZC6OOVG462U zWB)ICq2CVQkNtm-PwW4^@2&T!hnK{-*YRsm7tN#J--deQ^By0OV_ecOztrOp|CaK@ z^=0%uLwPP7zu&i~L-b^TmTwC-k(dvp{R^_GjXb8mJs{7e>h*r~y0(^=T$@V_1t5m^ z|K<9jM@qL0s6`pCe%0CaNI@aFWMTEURu^2sqSnVz2PU#gsM4@vy!`*X1`h!NLx z(fG08Bx)g#X`lZ7gERk9@HujfOWFx&feQNT{L9B@SC6Txai?1|=3ffF$n8(zrnU+S zMjpldOX;wo`g<^SEFaSd3W_4Fe;jeXXJ0T1dv%iRS%kma&zWyQeo#=VSOBh*V#?3E zUsQl=wt`()aFVpvaepRJD?D)$iFd!^953}7PmXcv8SfX$$nh$ehGis{(T-m&wUEd3 zE*^!C#^35!qexI-T+-tGh7eUhT#ssuQyjlp)IuK9d+z;y^}C215kugY9Wv5y{r8A=88wi(W6Y@_Za#65~q8Z#}h;$F#q*@3)Q|n9%FfM6vepS&8e)W3^UJ~O5$B%utGhv>3l8ypPW-ZjDdc7Kw4Y<9C2s$Yc7)!!mwx z`vZFhFDNiBX(vd3@Q%&LpItpRqc?!QGap~T_W%kGh8DUG3Q|YWAB-3=e8i2;{+dQm zVB;VW`goS}{6K;9cL!w8BCq%H7+rM#4f#PqBmG+<4*rNKztp(!wF|9}J<*>QZp8M7 z()-ghk6OrMdf$DYTKszE7>8WaV*E13E7-0GUMZ}Tj^FXrLLSrmuRHI}s9$e#j7wUK zAL1L#21V*e&l9mAM$B18{aw$2)IuK9f9JUEm&7-K9OIG};}^we@3HkP!M2DI-;hoF z4WkzFnEv}pKR)X;gPz7EEyfS=@wE~=eq-S!F`n%B*>$t#g?^9t@r_m_=xN-x{i68n zy}6#1@RAruI(}B(nn$4no&ET%?+tqL*cdN9z9H`My8vDi;{?ZVhHkBSp`UyGrS--7 z-k_&(NsIA|;j^YH`lz-&wU}^eYl?Ok=`dgKlWl1iTNeRzfL7Ik7EDo;>Wv(9OIIf)|L!=UIOKz?e^j;%r*|Wq{a9}@!9w03VXu~F&1Kr);hc1EM)&H zc}xet;>A~JU_dTuF@DYCr||G;eJw=aBrz6tgWn?DuR8~G^=t7vo9M4bp^qFjAIo|? zH;i|$g!5UZC|>K+UB834Y)p^uG2SRF);$RdjmzDNi8m_WF%~cSMk(V$r~fasK3(%D zbns7p`HrTaaohH5Dj!qM5x$%sg_T&OjGg|!&<=p+QRu@wXTDI{^TH|g3lEn5x4rnr zT72jm3nfOU|1X?DE#xtMc#R+5baG~d6j{gkHIA(rGqz%!pc)_gMvW1DeRTY85)}E! zWBTwh=lLv+?=nS#LgSJa;};#jGV@yoU5Rm~)>k=C7yU}@jXh8aY>8uON}iHFMu_^jqs8f*EoJp zQww=aAGy!lY5jSU9OIG};}^v@PUDknsX~cyz2mo?TF7Jic#Op7T>lonK#p-qJ3(sS zi+cV0;k2r8PN3J+NMl z!voyks4@ zm$Vb4#_qEI?d-D3a%V6CMn?Vo6Sx0}o7yVq)p8W=*N|Z)!>xWM4`D1N&&8kivqbVx zQzH4vx3CA>6Uh(pO!1-e4DDn7pQwIX4B{K6mhDde+FMHH11XshPBc8^*3VtQQi=uO zIw_{U$nVh&Hj31j-g#JXUiPX_AHUu>3`m-1%tXVB&inxOBj}xL9CAr(!>`z2^*af= zE!Z9%fV2;IZb_aSN*Mys&=d$aGBePY5-#$`qQyT&_E zk$_y%V&aX)>-HVL-ld31${1so$ZsUIY#by1IdZpiJ)(ZY$T6<|C%(VP><@dR9DAdT zdt)3D`Awi!dTer}(e0n)cv@W#dK6QPp|*&4Iz!O!ttA_o69@kVQPHYk8cJ!#w9PtubD4%fuZ$v9{eQ6^Bljcsf9eI zreZ(7x#Sp^v>3m`HMJL_C$1h>V}3WmOJbbu_${Iq@|c?Rc^-c6SnJC|au$UYS;zP_ zz^`)5xz!Snod3(QNQ~Dxes`*d=20z$7n3s2hh^j#m$VqaR84I-qESEev%Mw8C63=} zY9Ws)b(w$uts=*`q{a9huF5RWb?}lH?{@qirxx;UR7 z<66gW6Sa`X)I8EJ&y9)%y^Tv+j9;oMvpl!LOJaP&@q2?>$YW}D?+0pqd669Bk{07v zZ{>-%9QF5Sq_5~LF>Zz*zH8TncWoL|SP#Q85Pxq}Ea?3f)^}rBOX<&G6}4~sR9yFo zHZ8f%@6l+yb>tYAw07gw-@nnmO3L`HsC>Dt1q5{WK&AWPPghU6!*Fe14v+P;B!131tca)XDb zh^I_r$a|UianKZftb^XrD*391XA#c=4y}^S9-c!S^X{TG^gld2k2w0hNPHl0XpK1A!%rrDGH_^(*y7=Xhz|k|tmMLu*2ohc6|* z6gadd`0+0%z8pBTCZdVU@LxfE1#oChyvf5?5?=`%S`$+qzKZxN;Lw_My@#(Rz8W~R zCN+5YTHwrV6;-H7GC%zsyv?d?$@D0Q_0EgBT z40bZ~Hxl0n99mQMd-x{en}9=W>MRf6OnftNXjNY1;aiAr0S>LoIuGAUd@FEhef0tl z-$r~JaA;MX=i%FlZwC&oD%@Poh;Ik+9l)VgJ+5#I$ITGhKed^hpkz@b&M!^8Iw z-vb<4XHW6)I^uP}p>;NXJUV0l_7UF)99q*RdH8Pr3Xq_|O!w(Wa z2pn4H`0e8%;)j4ktJZJd8;CamhgPlMzodw#fJ5tCuYW8;u+sly9UKR(bESVrYDFyL zQRj>BKgF|vL+iYscz6!+9MwpC4KIgfY@bIw&$OnW_Vt9^Q|5Kj6^1pxDFv6YmckS{HcdXVC!S1As&8!n3^X2NE9$99kDX z?%^jBKN&c*W_0%OLBt0Eht`Z2J-mc?32TL4y}v5@k3E1@k-#(n(4JqMK#20 zfJ1909)?RGwbrqI))KD;4y{WjdH8hV(}6?llIJ~q2Jsodp*72|A2W&11P-lPk9phA zCO#WDv@Si~!{-p60~}hHdi{6NJmT|!Lu+=@+kQUr`M{wy`#KL_KzspkXw81#!xs`? z2pn49@Y?U9MZ^~Yht@ZCdfP7{z63b5zTx$6MN5e<1rDvtW_sH%C%zmwv@Y}7|DqMd zR{)3BwFT&F$gg>xr)i4z0Ntd-w+88-PP=?o%GVk@!a7(7Lk3!#5G%1RPpd zuJQ2A#5V(n);zC&E!skS3vg)7Yw@<=G%q}Do~pWBIV z2M(>P{q}7K@g2aSb zIjWJk{z`BAJmPu4p>_SAJUpLxK5%H=fS0eaOHuvlQ%JlJIJ9o?u3!5U5ibG`t%Y9s z_vuHxA8=?b^vb7Cf8zatL+eKG`n}Hp;sby~>qhVV?=z72K;Y22=}X@JpG^E@;Ly71 z9uFTxd=PMG-PG*iCB#dBL+jgr@bFUNrNE)J=q3*zMSK)+Xf67uhmR&c8aTARGu^|> ziI)S1)^}d<@Cn2x0EgD%kse+_yaG717JK8zK9$5PfkW%&B5(T|;x)jbb@Oc=UQ4_d zIJA~{Eq!uiO&QMty>m(_-x{{fkW$-zkB!`;&XsQ z>sIgjqt86z^MFI^RRk_vxxX2 z;Luv?wLg895MKfuTDN=sTc4%GmjZ{@?f&_{ocMC!(7OFqZ~s;hUjZCi%l@B-uOz+_ zIJB1C?%}J5uL2IOWq$duCcYXtw7xse+kP$awZNhE-5+}Rqr@Kt4lR6QF)M-8T4()R zpLN970f*M|3q5>2@%6x=b%!^;=(B158pw2 z2XJVu@Y|PN#CHLQ)?Humw%<*BH*jd(<=5Xm#P_9z9=?zG zKH$*0=L!$sPkcXcXx;N?4?jTs0B~rnob2HTi5~_Yq9-dD;A2_sDReE?K@j~FxTJ=*8FCtz999rMc_3(bg`vHg6_b>JE{>1wOht~JK z`IqAd5FY>>S`Yl2xBWok1A#;90k8i({$%1O1BccFZ+qJhB0dN>v>q(=@Dk!Bz@hcv zy&hglyc9UJ9{k9|M-d+d99pZr@!j#GiH`;jt<~$j?aPUm1BccRy!wCq1mY8bLu-v+ zzbc4V0EgBZ@A~=pO5&Bkq4m&7o_`JT8sN}+=m`(6C0+|0S`T~UkK?BkpAH;a4?pj1 zKZE!T;Lv(xtcTAeJ`*^!emKd)XA_?d99lno&BNyqp936Pk9yaq$Il}^4>+`bbe^~U zeB$$gL+eL-J$wQ21;C;8*hL<`koZF2(E9OZ9=?e9BH+;a@dqBhg!mHR&{}u3hc6|* z6gaega=nKyC%zmww0_d!;VX!*01mCk7kl_h;wyne>pz!y_$uP7fJ1A2HxFM;d^K=r zt-ssD*Aia~99lnpz{4LU{wQ#0J<;F8*AZU_99mEK^?N<>^}wO^Gr#_BAie=Ov^G5L z>2D;y5jeDd?$_^4#5Vzl*3bR=y_xuC;Lv)~uismUZvhUiUwHE~$8ROR6*#muPVx3{ z8}V(xp|#O(KerR#4jfuf`TM_v_zvLEddj=LK7JSRUBIFB^ogGTZsNOvL+k0)9=?b8 z9^lY=#;<>M#Or`VYtwvh`+das0f*M6_dR?+@%_M|^-FJjb^HP12Y^HCm)`v4@dt?? z1P-ldz4?LT4-r2E99qBf`-cYN4ZxxGE5ClFh^K%v^yJ=$lVGA2_sL@akvZLgIzMq4k0{f7iE& zcoA@DZTX((-;a1d;L!TDH$Ls#pLl=Z(0b8ppZg9VJ^(nhUi`JEKalu9;L!TbLmqxI z@soi=YwIl@K8W}r;LzIoiHDaEF98m%-(KS3rNm2tL+iJ%d-y2gqku!}CGYyD?`Yzq zfkW#h@A|WEIq`Df(E8mMJ^cy9Cjf`m@4WFz-wNUtz@fFRqqlt}@k-#(+IFpn*ATA( z4y|qPdU!4ITHw(7ud_XTI`Qeiq4i(C_3# z^Gkgf5nluxTCaKIhrUaQF98m%*M8^eFD1SdIJAC$vWG7xz8pBTet(yTuOPkxIJACW z@8K(nuLKUQ9bfbCRm4{Tht?mw{<-gJ;;Vr}>kliu?bi}t3mjTI6CVC3@kfC}Yv()< zUq^f$aA@uPi-)f#z8*NV{^*Ur`)(k<0XVe&_=30nM&cWRLu=Qm9=?hACg9N8<+neZ ziEjoDt=GNrd*3a@w*ZIM>+g8_TZwN44y`x5>-WCfh;IW9tv9xN+ixen9XPb!9OL0T zi0=Rntv9{#Pv2d{cL9giZf}05?{4C|fkSJz-#+Xiz6Ut8{^X6{`_>V!0}ib}{mk3H zeZ=#18?7*4yhm zyn%QFaA@uE+lLhK6mV$m@%rC>3B$1t`a)~Zo0r_4;)&1FZb|5;)TGWwReYy7ZEQ44z0go<`2K;Y1-`!8?%lZl@U99n-p#lr^?9|Rm)fA#JU z^eZ7=0vuX@ZSb})C0+^~TJN0i;iHI;0uHTrUi9$M#76^%*5ADOv3}*m%Yj4dZy$Qw zPar-4IJEY8?L)r`;uXN5_3mJA`%2=Kz@hc-{T^OJyaqV5-u3#geznAFfkW%Pi@oiq z|9{%P13aoS{r(O^?;;{1B$GM`3F#pTBtXgp0!fHTKw;I95+E1?n*>B`sOYka9Z^vc z3)rwBx}dINS#?oaY^ca8vMeGZA|eV1{Lfe4cWwgsd!GH@haod_&U@ak_j^a<=L3h< zPIvxXr16V@L+e{t``UN1#wP=Z*0*=M^rvZj8gOWRd&Gs;X}k_Nw02E!;j=V83pliP zx%$_>O&V_k4z2G7xa{X@d@gWkedjJemuviT;LzIbnxFKYukrc7p|#uXe}Tpq0EgD@ z!!G{|HNFryw7z%8Z;{3q0f*N2i(U4&YW!B<(E8q;ev37}7&x@{xa-f|8owJjwD!33 z=RS?!2OL^^T<5d;F4y>S;L!TPo&S$${1M>L`oT3m>id|+9|I1pAKc|@mBv>Aht?0j zyW;<>#-9Zat-bE@yGG+{fJ1BV5|{m2jjsg`t-bF0@ruS@0S>JnQ(X4zHNGA=w0?Bg zzqd607I0|&xWQ%ruEyU54y}Fe`u)Df-v& z-}`>9@y~%n>!%u5__k_%D{yH2FIJACV<-&i{_;0|Wb-*<~>HE9Je+Le& z0~DOB0t${=9mn&WN?KR#W_b@=~plkoMUuTVX1`e%*uKLrj zyT-c%ht|O-UHUyW-V->qes%3H^y{th-oT;t>vETUUyb(#4z1tXxp1GxeZZmh+Zq=h zt?_8!&^pxDg~w?;4mh+9EpXw98czfctwVcUc#6hTfJ5tWwF}SCcm{B29e%}yXKOqg zIJAzq)_3~lYCIP>w2mxt*$>nBFyPQSa=?WbX}kzHw0=L|g^$qq2;k8A{Vf+>s_|0b z&^nsv!Yedh0UTOK7rXFkjaLJQ)=^jc+3!4wJGi|4pmi*?eG%Ww`)h`tiThXfINi#= zvG><_WA0UZxcx4YH1%IcC#{{+vHkIFz>r?z3~ay24DaEjjdOZPTzm_hU*3MxoV2-4 zdyjm+*l&$ZlWXgnlBQw5aV^mT_^tZF0nly4?|XS1$8*)f-w$rW-}_cP)c2Nx;qAM9 zwe5nOJKs-6e&F&J;<-Qla8I7Nq==RG{k3dNt-sUoeuJo(7zY2Yjb@m z@glq|9*e=v!aW!dy7h4rv(SGCFMThf)WCiAQXe*L`ZN7U!Mi2bm+IDE4tOopRV*@hMf*`KcVrm4nJ(# z%pv`-vw=OD>q~d*uZ2DmKX6#28=kLsz@&e$GJv`#FAhXyi*wnSMmzU4?JI>5D%j*SfTy>Wc`f`l$MS@S6B#t-{Pg?0!{H*T++79JL-No zNBG-=*LvwsWR1K+{CxtOD)__i>8a;dSbxJS1A%g3aC|<_;3qiVuzbAA@T$dYHgvDU z>o&aZ$4k_wqf-8V|DTBOFL?b^N~<{O=l6)Px7nxbk%;eMyf(`CilQQ~koe-hz`{Qv zzEA1+{%qr0P&!6FwoImPm=`)aO@$^ti%Z(JJ%94)?<{zL)vUGB5tSLK6$BXf{{ zA)*)`QvbtxLi5i;6X6rjk31yxs?fTqbcm$5i#igf?x~kHZJ%@637UiUCCrcTKi|B4 z3G+dJu4IMi%SR-Lcqif2OX5-kpT#9@+J4OR)4@AC*O!4r4oP2(0Sd2@HX-_GT~zo7 z!A^%cOlS;}Txrwx7p9N(j4*$$FVn4`4gKqz>!Wp1`gk6I33Hgx5Dm2mKWy5a$@E77 zOV9OXx%DvyD7;D9@b-OFV4P~-!*H*<33Hgxn5gw(({3$-Zte?Ji{TYXmk5 z@k1*X62Cgc@7|W;r}~$$d9c%I7A7?2X?@tVyPD}=1#Bwx(Q1U~&xQU&E$Pet#p(DG z>~xsJbU6fD+O&Jb>N~^GK87_yU$hcF^yji3Bi)7m<4WH>qe$!HvRPnp0VN11d+?OA?3!l|56viSQdTee%4qSCvXS7 zSMS<5B0|QOOs}7V!O69a6DHQx1Zx{q!zle9O|=oxpHqxO{nri)Q1E|#s6q(rqvhmKbo3hKW}rq;WLnTsN3P0cwvku-%oH(Tj_N09#^;% zK$+LLd>{6K)5A-+H|z@;GH>{0HiT`~Ic>=P zCyj4_J;v?0Iy~=q$sS`0;a}Px!u#)>4j*uP@twdI;IA6nboj(+Q)vAkCHrs>-v8uu z_&2kc-)Z~s2;jds9dX)*gT_Vp&%*m3oQ@cN+3@Q$^M?OZ z#!dX!>1*{|IGO)QGjBLFkiJgfY1n_`bjC-o^$(u{NBTN})xiJjbneR1SNIgTNT2Y2 zczK-8WjuW1JAsSvrQ+4b>0Hgjhd5jN7`#8j>0Hn4#dpFU=^Gvo|3{t9vswCz@2vd* zyzl39zLMLE@07h0cmwYvoX*$r^c7(e_;|z*&(sKyaXNp??M2-X_y*u;#}VJoD2kN6 zIWk?nzOFWXyS&EAZ+ISTga*}*uI+jHa?{XFJw-)(cN+ke;Rqp1UJ`?nTl z=~ImH@3;Bp4aZzx_n)zMt(X00yKn!p?u(R{!{=Ub!=3Ms>!`Se7zc%4s@|*lknKN% zwN0uEZPtH^=LEG?{b%^q$~P3e;i~-LZ7b2us0*EqjNhSPO=Hu9Nf+Z=Q6HnQmKJ`i zq`7@d^&hkGA8S&a(ZK_}`_SH)^}JZ+nk;&a%nR*P#!Ms5pza z>&fl^q3om0fC@v>LT>-D#?|~td}w#6zBJyc+&6EkV z>rArQ@P4MWqLZyeyU%!feyQ<%i?{F0!~36FZ;h8WR@cflL)akS#3kDfAC(brH0A*3 zI~_yX4PQ^iMSsDrYkSX$Y!eZozftvg)`XJAhT_?{sWwEvk2Ui~f9!Z0#Cq&D`JM8Q zg${jrqYgXX>(w|>e5LS610#L9INp2Qcr4-3?>XL8ZvFlY-{g4LJ8eV#ClMa?tKYmH|jF_X?zx!><1lz z55a37!-ptb^n(&F&>F_RK;p6=lsMK8gof2eIl?9TL5Yt94h@TsRJa(&OS~L7G%Q{& zaXF5ccqMRXSiDl<7>6tSvB05W@v#bDXmE`Ee9$mB#vtPA@s+_Z1P%>}{}b;ol=$iS zPA8?0^$Q;~EIv`;H)%W)14h_b9G}H?`gV=SVM5@Wj%S>F299p9#30-8#`cu)n*zKZ z&)B&H_$+BF2k{o44jkRzh$P^3E#URQF*Ya<1Fj2zm;_k+2H^9Qf8UfA?B@W#67%@S zQLeXX{3Wc{nefd6ehu&+fvfh_>A-Q=`mP6#elTuf3-++}-2nVU;0s#7Ve7jY_-)XC zy9FG!zT1IgTody~3pi|jOMqVoeKr0F4IgZMOM$-td{GPbu=OnieiZsIwt&Od_mIjT zk&oi)fJvH7AK3aGmJ~qQ20{(=`ACZsE@Rh)y*7<{cY=%Dpe6{2Gcs)F3Xnd}7 zy7m7w@E3t^#5XA|;H!bZ1pI5@i7ntS0)JJ)4F!tjk+^Krx^*W#}N zN4|~v9N+j_uzv&i2E>jOV-H*3F@_(M zc=8d0!#1K7!w)O`d4t0?qAkOZDg0uM3)_f}gyXZglA{a`+la0VZ!7VnFANUbh#m~@ zsPLN&4%>)c4DYJ&B7?&=q7TD+NPNKe28V4#7{hxh{Cz;INH|Wq6px z6F)IHY$N(JJW}Bc4G!CgB!QOxim3Lk3hVH+`$;ROTSd?q6)146j#s4}-%t zVjjaABp&mY!C@P5CBx?^e2&3k8*vT8=P5kS;INIjp5a$YJbHt{VH>_zoxx!n zaWliOS9o`W!#3h}hTkCZs5J(MZNw6W->mRjgTpprDZ_79c$mRq8?lVxOC%oop}}Dr z@esq8D*Sqb!!}|i!f9;U7u7-+F_? zHsULWZ&o;dZ&!~0g>A%khHp`LUxULoVkg7Dl6c=Y3=Z3f-3;HZ@OcJ@ZNy%N?^Jl2 z!C@P*pW(YDe)evI!#3g|!}luu9)rU+;xNPaE8J&r*hXTGYvwo55?7yhfxFiU#e79* zMYd-A!;1fBttYf1+Y^q@;=*n2Dm{g5BxV=JA3lrgEUf#>^cJ>}*pIh(dxbAGIBX+( zGQ6|GOAQX&$leU^F7e)`yb0S#tW{e5o(ebZt+0(mJT2Z^;ggI$Y$Kx?uIA>wdm9|K zk#P+7N&7QDFgR=@6B(|?)Ms8}aM(tsFg#A#XBix}kr@nEV|pB8)9DA>$ZUqIIYBQo z9uT&XIQM7cr{)yB#u9JZ0A z3@=i6j=^CYS;6oT67RX+;II{QZX5nmg+Fd^*!m_iyh7o_fva`-X6x>Dpa=G z7M9^(RY_HFY@o8LWORA3EWe~2`|4_+(r(o1&vxBj)Q{NCc&Rcg9T(h#KV6(QJ)JJ? zm4Ca*k7ON1}w}Yn$X}1LWuqQ%zl&8 zw%X|`_C4f<@OdLYAv_wJ+Q;>7>__P1@pze7r-`6$kf_ z$`(iHOYMCQe$W=U-UsQ9#R9>!_yOQp!5NyM?AtDJI)>oCLFXReov`+e{1%L;Z`dTkQfKj=vZWx0y=6Z=m-WSyuy&VJ9$dEi}ttABkw`+*@ikNtz>iT}J2$JBed z@4C0DX+lHO>{-cJpPw|LuC6g@65l_GN|wH)UAWqZQ^p>wLpB7i_TU7OM}33yTqt)q zM^ig9IBRy(q-hfxj2{FIdl6CV@nZWTs$Ht9sW0qgNAo)Z%?ay zdA3P>Bja;KoFkee2`I-hK2ZV1Pk&1N#s3NSnBVnii+qbmy8KCEVxN{>t)T9N>K}r7 zZNp5FW>)_kWs?4YHBG=V2Dv{f(lhD;jo(H%s$6J#)=A78zQS_Y8`nOW>>tEYwAu-E zwT(5w88h*IWbH(`)wtpM7P-0%}WqZTbezhXELLT)DM?i0|#yTG_uB}sva(rL= z>rl>RSr;UEZc&uy?Rec{&Gfi|mFHcm+()Agj9QG>dx|Udf1grYSEE0ha)PuHSNe4I z7yqNlca?ip_QZaA=q2jo^8iteJ+IV)N5_x){-xXJyS}PE5BR_VfN3C&1YR+qctUMm*qy@DEa}` zPDS^Vm^b_%mZRRFor<~*`4f%7ioSGsrr>;&EPKcw)lRkQa9cSzwj3heqm6U%y{PX; zrqoTCsy4AKZ#{VEi=wYq4kVAa3nm`Ae5L8~1~!%g@VmY|9s{L@H~eFzW&aoH`a=up zdMJp~z)ek;f@s4t7hxG}Ep_^f*v^&#H{~E&j}OymEFH1SovtIKjyGKI4O>;w4ty!n zb)@}Dr)ynfP0hvPOIz-BX|UlF?V%bMNL!U&tlpaP@dbET3y6MLxsbf0GwW0M)Z z@Ei%woTW!%=H2j!@ss1^#*J9+ymT_jjUPFCcr#eEXe@=b_;2`nuYBQIKu974dZU|3~X5cn$~UAs|6JzOS7KuxhNtXH#E9 z`9VQ2m$W--M%Cbn@#lWAJ|M3^(U?*hF3acbknaD(zc;A1Wcc*@$ka)bY#>!Svvnq&AEF+_L>P4w58f_? z<_8vrPMjZyq>eZIXVRm0ZKyKiOC66XGaF`t%ZljVC%TkYppQdi%g4u6XDifL~F z=?CY8=hjS`BRclu`#OtpAJR+yv*l8@2|ZxiO_?e?ai6pvm+178yd3yRV?5rE8Xnr5 zm^<(q#dt^Je7c%7i*K{?u?@DE-^B)$eTM3D#fRjJME@tp^|ker^gzV4Gcjt6;bg=q zJHc-w`ftJK_kC;q7_m@-E2EG4i~p0>ir@W|d|nPzcw%(!XLKh1EE^s+E;RbdikD&O zPLfZ|UxofrHeNP-y@rrZW6mUGx8|dMY8@Nj!3fuI%xCm?5%7ThqMs4^n6IB(Tp}$j zUpJwc|ClT7F3}G2d>d*Yl$W(w#}}_p?04Rna}gkX3|WtPyj91W8kZ#W!#Vh5-PVKR zjTx`(WWC&1Me8v$YG#O&@b3LBzAh0nQQ9j1o1i5IevWFeWR-0Vdoiy5DHv>=*l=-h zTFr!6SfP+(4 z${x0{NK;(iu;svSk?-3L!|(h`{okOi)6_d2?+;*ZF~I5csyOei%ClU%kX9nTc$R>S zGva0L55oOKoo0&rTLk~uB=i*O66FlzC2wI*oC7=`xs3AWt=8p?KZl|18wYN?^vn3i z*WJ0XjT$S;HPZMCw2mkbKhyfK=>eLRGgIC%_KBe}n#$k9G!7T>jvWHdYI%N9-osyT z)NwlD$KUboB{E%}#=95Q`8{#IuK;T>B2g?3+Zgou;{2#MA6S54LkRvNaEy1w`B8Dc zumJPd5d0aN$vDv`??!sRM{7-M{4dL?^Hv_*sP8 z@+-#YAD~@dq|;I5r=8Esc;cKu3?`X4$LIvm-W2vD9f|)7INB9)juz>q(gBqXpHwjApLhv2H_uz$a;=VB_fb_wAVx8MMZ6-;3teeN|(>U6%0P;ta^W&x-3R{$Y zZ7+NY`%XKJy|5K^Md*uq0=}^S+Sm(QQ8xsR`H;MCEY<1s563J0$D-)RVvifAlcjy! zR+$#!$g8ZU`0S0rI9=i!&^D{SLf)4s!;ku{&)IrqJ9DG7Z@aBOWwCBafAzdtm5*9qs`Fw615fgZA!ei)KK_h;QyA~ z4md9^+Yu8t5q`AG-Z-_EA@AE1_A+il1GulyrpDi}5#uM-{W}>&G7rRm$&Wd-&KO&!zR##6{3kK~*{1E!(fCCcPZ`4P$7sBs z@VhuZPUDvo{xiof(D+h|rs{1J}VXdLaYzEXc>cs%l1Tp4evzxY3Gw8YU* z>b#K0VpEKPEtSy3eLBP;4Ub$)mrK^CG+dTvb>QEG)(j zaQW!M3fg}*;i@`8xc2IBS6$lJR5L@~q-PvTeS;%j6%DmBvBr66i#YUK#EpO0=TB;? zl@kXZ{@vPtVO`CHh6)V0YU`(#RLYVf{qHg1gMJ8#@sr%YrF3r*|54*b>Lz+EEkhvf ze<1sSysw=Y65mO8@Fnt9ItPKL{Ip*=pK#$(4)?d(sD8|`rujoafO`m;T5qCeZ?D*ChgypBDt zqVVSDYixkjI5*WA=+D-n`s_ZRl4>1lz73H4%+IID_}k+!I=t4s{%nuu=+E|ePRrpx z=1Q-l|Ksqx&;K-wk1K!N=XZ{|aJT(Y*LfoMc__Di^Zc_3)N=l$*#y?On@{;I_lM2- zoZ^Zx!QzUds=~@(@px*#ZTrsfqH=}HadorvQZ@lpd2r?LQP+8^W2Y(~R_+Al#TGw} zyUPcfJJa6F@@S*4`4-mYjjgM-$Y

Gz#UzcQp>Wj^}90&~Vmwy(|cLW|4vOLf&Z zc3!My{VJEeyFS_os{R4(YnD2nWkZnSHiI?amA=jTGq*pRfztkz{g(}nZXc|BHGi=EYe{uk zuo|6jbyc8T9ne+!j4#_e8(pn;ivIDayL{Q`DF5G@_TTs~7*jP)^)NbpYzMAByXx<$ z%F|I-e|ps2AG_1X{n;IVH}3k}tUYwwyVK7WFP)w&ePnvO^m%+k#!q7YTO{Vc1*0m| zG3WnH{<+hO!Y|fSa1Xy%+=nmLXX56nhJ-&40M7uB_wmd7{q?#<2;L+$)cVl;7VPH& zpGE7nf*~Hth1D4Oyn(pOfj8;(A*=&6!{-A>xP*VK`!vTF07tmQ`jlAb5?6@+Lg3I4 z_xoerSK(uwuGaspz@Z_Y7l8HLW;pf$?0x*=-U&PxS=>L-dW&8k#M+{G&VXEF6l;g_ z8H2#rD_rQw`_K_SC$I(URbu_@IIW+>-G?9EM@R%r3} z87|(x<#gD~?Kd%8ynol}crM{0Od<{@{NA|tosQF;Zj+!dF&W0s<$L)#HrMfvX3uL; zdwGP%_#N*=oUfPZyA9*sMhBu_q9PvSf9-Byh+!24Ya7ths`_%3`WG-}YaicQ;-ZQv`vbtCA@#BT9^YBvWsX|E$9lF| zlNZm`6VHbemwm3DeD2c=@;h-B$6ReTBY%Z|tap3kgb%#h?RA`DX@@X~%Nw7E*RArs z{I6rZzK=rmqrb;xnC)Zvd?@Uf>w7o6F=xWAi0s;Qbj}o?B=66RHyb>?2O#h^*Eqc_ z?<(TOmy2)dYIDfxAwC^nh;S^9JJAh!;wCB#ZsPHP=<~aD^qu-@;l{qIF$K&HgKJftj;e8T037$Ux!+D3ku(bh2}OykEcDNP$<6iczWUOh(O_}U{L_u2m$;lE-4RG zc|5RE(!&Ggfy$CXMIBukz}FdgvVT#aB2ZqGUtW!%fl7eo3olh=g~6b7IJ|s}eA_V? zEGaA$iGuID1ZC1xR0c5mt!|Y%rn_GDuBgP*bPGzVt6F7@=@blB<6-|L<->&u?5j&e z*u@8gek@k!ac=|m5yT_G3TM_&sh!#?WlV=)P~BJs76c~Es+-*?ULKDuU!71lb@_E# z;k;e^ohr}7|Gn;|^3^GpcwRJ)@wCU|^gSES#zWlW-!Lr4 z!M+~xRx)0D@ZMp(zcbz%#>)oped76(8E-xDS{(=PL&kfU@ir0Pl!I3L!P~}oM~K&1?8NHw(h7}w{C|lTKa=sq2?)bOUl31iy%Yb9 zz8??y(b>m%JHY#q^!krwJlqRl^}Yn}0Pzx^!Fdo|BHudaTAnxlkmK!7G-m*wAFFt1 zSO0@`#?)eQCunkiG^8csUQqF9McjzmKUp<|YW~RPgF?TQ=^ul>EP={N+C~qY@iU&D9}#PgPbr~5#`#(6ti9y?P#aJ&WJoke;XOBs*X zgTdfozusJ#T^WzpgCg*v49jsc=QAF!2N~c|-|J)^V7#|jJQBehKzakGFy1D{!+4=T z##-hYxP|d>Ud5CPZxVP}hUGX}rTV@~k#FBKUJQ7-jQ2j{9cH|6@bZb5J(B!(X={1j z$XCGA13|&gewFchS{`nY1W%vI6ug`iD&Jjz>3Db}*Me6e80yMd!Fa5Ioc@zZZ*VVD zuP{}`nIh{K=X?9tGu|S@YhM54-PZ2!uT!Bl}`!1M^8o!aN zz?)0Fp{Fw*&be9MYVfXLycYG1vPsC)gFkY4dqIDdvq^3bLj zUjKW+dysg;<1}v*{B8|x59J`Qs=5S?VtI8*5%aEfe%I4K?xAdQ7?*KVX6`4DtpB;Cqk z&Kcs9sH9{g_;{?)z{xgVQfS%Q(Gb}jYL#+dYsybpT+Aib(wr;qp~ zd8{Amk9l1GO^ml*^K87`e)B5}N0d|t3aiIp*cuw|a^`;-bU!8C>HRmy4k#|FHhf#B!F}XDE?27YmCVl#U2OjIs z$GoC>Jl?XTQ;Jt&G%p`H!uw&7-}jSlgB4P#gnkI37hmqL2u>x>@! zW)UwT6TCr;x5w~K;@2JD5u_K1b~#}v>HTTCDKGFlmUsym2jNC|d;RHq!-L;#&GHw$ z8s>?CGQG;K+J|maNiXtd=&?0`^SR&ah?h_W-g(xobN;FQqCAV~r)olE{__5BA@nXF zy$hz}7sqf(9{Mtq9|;q|o5py1G|$vyHICK|x2#KJ(RPV)P0o$(i=-QQ19WGQ?u9&` zX`JXyz}Pnd>)GbI@Z|Yi8K|xvEe?>GmQ%*(Q|5O8^e#7QjuYhR{U72bTn!%U&x0nt zMZ7-`?JsR@7BSB+tS%WV-OH(j^#2R#MqUryMdbgYWz=7Hr}>pP0nY?ZxQlob&Tigc zi#ye*_ZV9}8XIy2rK5|BP2^!N{C7v&VDd8(bA*KZnC@4m9|R9;0EUVbKw1rc#|$*K8AE7FNf|cO!q5Oe-Zyl#7lS`ytj!rIcRw9daj}_%6mT6pv-|6neI)b z7kMT0-eY=Snf3~PktQa65-|5kVEuZ{g@y;e-^A(DF`~pNzZf14uN*x_9g=~(^m_;C zMb3pD_JYh+vz4Vc(%Aa_8a&poPYD_x{C>sTHRZQzT$Nb=s;&&2BePrj-A;Ou7`rEY zXS_Pjlx@!0;*;e4M7)H(;IaOEYK`WJa<;X(Us1%+j8iRB!$PThT5HmcMA|1DBL7o& znf${8+ItW$(Q&+qZHYInR`d43KR<6n;jyC@D)cfbL^_z|0~MZV@{@q|g2Ybbr}j*$ zcc&E)FR?p#as;cmwMz^S;ZgGg-PVf3Z&iV@qsv8GYpa|{-_y`nn0$?#13fu1ReIA; zH+tYrAYLNoyNS^hzUj9cUW$D@e=dED`31g4G(_* z!^>TvNayNN`S^8MbJz@KGM%3#y-19?6Ni)DjG-p|;CCbO5=+55hw)xDJa;+^zXio3 ziZL{0j-_AJRU6-W=#3@4`oTsIet#fd;-A2~i1A)Byq5eHVa}NntgZ~rUkpRZ?=`SCNVGkrzSlA*Q#$=z;e*^ZO`xtY2?xXLv39#mSv! zemkJgHSvg?2tBr5(6rF#;kjq`5ib#A%EXr`e6u?lUdw*V0%gto_IQuLw6t3UCI2HGyfP(P%9jTaf|A>WV*9{Fl-(4*!usx)ux?<-34Qq*6A$>^O1uGS;IVc6D>4nQ<@l<4X5FgzvVJfO zZO4FIDmPcGG3^EX9$|j-!7C=-m05-dzb9!&jb{UfABw!cmq(k2Fxbj)r&MwwP)(NEHv4bH}9D`t#0Z;9`M;ES1Fiz^I>uYY{Hyt{%ezT=?p?L#J#Qr4aIEzVxPf%99mM?K zL%adEfOjY3eZu^!`7Zp^&_NvDG&!I`K;wprVY!UJsHaq{q`n(}wXWEQ>y&|~xZzh1`lLgvS^ z{1xRF7LF~!lcv>dQRVL$vq>)rbDE?!6kk+TIs0zD|Bv{eJiIA3yjbHi>6z3K`mA5S z;V&$_svilh)Fmv$sM0b$?_zrB|C3n%f8zx#zqiZ!EF&J;I+@z6HtZoh*FjIbfo`Y+!mQn@OzyU-Sdh+rh`VGTQFy zEZeU$*nUbK$cz=>L;g z|9|srR$fjPKK;NOq1TIzJCepjkL~~8d?ZAV?Sskmb5~~>zFy%he5i{_wUmChT*bzL zCktPiI#DUZH;n1kL$8taZf(!>LdMZDeApAN3>21Nx~|)7sdo<3!+K{D+tna*FcZ$1Kie&={2t(uFz?{My9t2dbd%0Z@ZVZ|0fHdY+bb80;abF zdiRpv?LMa0ygw;HyI|8!SjqIelj$vo-U_C7kj0mUFLdmM_9chq?@Ffk1oWOEy*sX8 zdd<@h3r_{(#s@0(?z0Xb=43WM)^iCGOY!<$EnI7gONpCW}zcRh%;nNFL zG>4bz_XX2~cG3r=cW2j-^BrQmr7D_UcTr- z+e*A8-Ss)*&qLeYX8FeI<(a*i-Z#+O$@K1EdjDXQD5#`Sv~Z z*u4I(o+0hfiPMGE%QJJB9_If^hbeq_Ee+9gw`&NW*cGzdf+~C?nI6V`$*oE6?l3b> zKSlbndU+<+SWSGBJ3y~1(_6{(LgwkZ-IZsUtE$aVRHk1Y=?yprz0*nWo(oNUk)?~A3SWP zm}}{0h6leP{h;()Ji4-wDiMrie9=~z^oyGUy;P&-IQLeXb`5^l5-)imc!L>lli|T{ zNc$)KitQupk=o&)@{2V;>-Qq)4I{n#t}^KdzuyusIRM^B#ye(s?sS&-*#*wSDJCp# zTgNiKzmZ-X`kds^q<8;iCjA_zcRS)GSA#c>@qRNrcREYISaqx}9AUkxbneaSdEEKX zyO8vjHJbE;-&p1sd!xzh9Kf=l49}g;(r?kZ)zy{y)_o~1;@dlm^x`gr-VE~lzzk~F zdKWR?dEhlL-Y&*t`&@A%T`nQs@(Ctg;P=m@mwY*RS2NyMhKG2ldTGbwGA1MPu{cg= z;AA{7Ca~pYEcC7?y@$W2ea_x&Un&`ODw*~Bk4$0voSVgdHcjvAMQd16h_(Rd?@Gm; z4dr9XL>}t-K<`JGe~cHC+4;W}UCj6i@m@{543~z6-p)#Cz)87WYNejW0oz@lxD| zGp4+{xHR7!Rg%Us{nxrrys&w+dq`<*d#^7 zu^U|`4^rt(1<1&7u=*D#@^v=pzkZh)k02bp{$XsKGM{*FoS}JQUqSY}>VfaJ`<0KD zsK78B=kCjJ2cOP<>HkxTUt9)suVcEe(R~JeSUrqO0gtW!znQ~$KQTRwV^eM+y*HmT z`Goke_2`tv;N3&Kw-OBx@%ak%DodZrGmprqZkRBsreJoXUV<0#IGe3U$0b5<8Pi)~ z#zWwRQTS3G2JbQA{Ug)x;CDw{y4oBuPKQ@l6`PY`%0~KS`@C^U(0hvMy=meBzh%rX z#xN=D9N^o9h9}Ff%Wrj6MMI7F$*~$LYv6=@_AH$=)K4E{$}*x_ipBQ6L_Bz@7;96YsoK$*)92f zjP&B7p|^$UvHL^Levx=7UxT-Uc>nAllD~T1XyZGsyfDr9;2u;q?n@E<|55V$UO&T=E7GwA}qtbU|oj+WY)c<+xeJovTqU*WYB)9!*xn`-hWO)`ZPW+MIi z^7_#mdZ#hHH%&aiL!V>Hb80W}&L-XmLk-VeUW8xxtZ8gyZk1n*sf}J-AL#j*-Z~Qx z_(fl0c&Rbq^(WrOfrbaaY#wD|Eb3)VeUolYb$l--y||vxOD4U~>^vTRFC|_o+TGL~ z;(b2KwEHrD?R`9`8ESNisZ-(TGJB9srt=M?7bnth2-ADZ%;Vvg)uYrx@J0~t3wxiD zj4$pdRV^U-9bH{nSTV}1tVq9@lbH02Lm5jgV|p){b`5@6JxawqEA?FBZOJk`_!al> zH1~_OhH9J&R=F(we$M>%fZq8`Z#9eWPU59b0B;KMzDzQ_6UG-ah{BNjrTYF#dU2hh zcQMm@%;-5zzc$26odq82*SAI+-UD(21Z2y1jGLwGri?U>RsaJuw zfWr6hvkmVA>5SN7-OM(EBAxpMNH4BE^#029me4q|i_7Vh{~i6g(74+CRVSAI&bDS{NAEs^r?`!hA{U^gafnUTI4Od9H4m*wF;r|_aY@G0) zI#XWZH=KB>-+{;a_5bWPJos&?TvrrU<%=6W&GY0?pTbf|&wmVhtpDFJ#kBk24Iy4C z`u{YFuCwDC!-L;%P`>nt(YDi77|K-BN~L_R`!RaXnvoLeA2yo#!JcgzoB#ipt&4|U zK)f{6$22zo|L-TPpWNO;c}Kg#f+Oo$7#qL(Mf}+Oe`l#_9}&LGnP1HR(@+r1wewxW zLpregU2Qs4jK%>)oY~WZ0~z0&NY8&5dhDFQw*@9Y;rB`6rD1%XHo$mwoNw0~p3ZkY zJqhtEAElx^OTVb2re6CGK#yhUE_T0Z*aqUIVQo1rkNoahr^~rHKPK80Ir6ifReu#S z`cvbQu&t!)KM36d(*2I@yM*l~UfOW*SbzTA7MM_8_s0~PABEpTJp7oHH|;*gd(80QUyc*)3WxA7S2o!4hHPiTA16IO z%68g=q_?k<`t$I=5ie~ecin_!MMahLpbMGq-!uOh3#YMh!u|^8 zA8nzncW;CDK817tNB&hq~Q;-&WjuP=r3*MDiA$^Vw(A1Euq z?riyRcm97(x_*os(<4atw{jMLcAh>x7Q95p+sNWC?voB_c5DvVH>Tl}`G1`G{{*_J zR@c+2j~Tb(hiSVIFMS|*xr}!g>-Y72+BOK)6?h0+pdrajvL;a@--DS5?4y^?7BZi_9*I^vlMt{!P%M zeF9JG*(~0r%rExl(#KQyTJz^juyq09wOE|=C~hjBSzpyOa~7=&MDY6d5%g%Ez|&?1 z^LsJ#i@9bxo&WQ+*==~HpHb!A`mHWxOFwEqD}wiL??bPi;?cIo=pmh#GQZfD z)K@gjoGKifVV&&XBHm;E--RxX7d-86G35sSzaU=v?cm)-{yTIqJj9#LA5?ndhQjKG z+NmY=A?;cO`f}T@ZGhf=Oz&zlKZ0M(EetRHLGV^G-tUG7zhWMx+ZF3KP+yGa7|I2{ zc$kTD9odoe{BJ?;Nz&_hKaHazdlN7HS@7t2KAuizvvHK@&+Rx~coyqi!%>UPUrKT5 zzdz~v--hnX5);Nhz{R)F}3_SEDz?!cDuE-4leE3k^jzSoFI7Ph?g$v|7PNKsdkMgbblV|ewg8h-!okve^xK?`>WpcgT(80%J>Wa zCy4*6%s<|zA7Q$mn00cbKdYA+j^oXsdA+B5nc?aBW*)gg8Grz!h19o5cHZ2-7J41Y zZ}+#19{gf#Z|Yk{H}Gg)?>UX{H;H=QqTkT*YgBvE^S=Z=S#qUs&uMGOZxq`{&j*e+~4oD5ft@kBu~LiApD42Kvy9bVGAI zr;ldi7BOE8splm)yIFvBsWgqytX8oK9^ zZm$kBZ;4t=ybSdH8Iu_A#*?=*%74rCEb39x^{;~NG}1kj$NwM1%a{RPBjcSi{wHo{ zqCO*C|I^T&OS-*z{C5&B;|lPuWxP|y|HSP~)FIOKKL%YkUO20hsZWj*-Hvz}H-Sg< zde2!44DST(jLd-0b|(5v((^w7JvL4_>xj{V-)Q1xpiRzrkmB8^$?#6*H?*CJ&LBPi zBhX{xgg)OJJ@`F`co}HpGoB^CXHPb~6Sgxl#=M=0#-5a^KmL`_dx7-&wxM<=dM5EQ zL_4^i@vi?P?MzCG?M(F5r0ZV}-G7iS_OSYhPoh1FzJ+)h8^EJ=e^0;voBxn@CK_Wh z8~=x(OY8q0tbw0y{Xavz49w#)X#L+4w$|`;x`)h9N~-0Fyt0{-j0jJw+-(^ek-ut?(&O1(WIXrbDvC_|9c_}O!~p^VB%%=0`F`JU*v0sr_)(KF-mma zI=;2_1+%AA&7*ly44YT_(MM$ZNH2=ruZ-W6x8ci-0gv|oJyHC*E^L2?{N^`aT3=Xq zv7VdAbiSDM{7axm`~M!aF}6O%TuQu5v^|-FD16Z`u=*^{bESsN_I1%}kf)$Z>SxWC z6BJ#p#qY7(^u86kLrE9E?{TL1B*S?R@iL3R8_9TEG*8SA%zC4p55j%*xQalqYWBqH zOJ|unWp&XeTK|~mWsWA@*s(M}iCIUy%xdu1ygzocYuupMJ9WBC?`0FF&ulRM#pDc^ zh*!rEr0d6=Jd@4;2Q--VW0W_n4cKtr4Blj=f&V=N-Zk?=@Gy5Uyv$ng*t|Ze*zk}} za{oyORQ$?-3}s1WV7OQu#vBe|lvt}AY+j!{%qk3-V?-23mP8$+WWArU-=j-@~ZMT_Da(8&xhVKOmC~{r|`TV*6(Jn z0dF1g(#IK|jjybI)-#;)GtDx-NHY@;Kh}3LUnRYaR%Tp+bYbTUGT#L6UB{C%GJy&QTUkX~jY)wfvI-)5rjWq!tZj~br#o2AaLs#Q1Xx*#71 zy|B3{!YyAKJb2_@MYa$cqW|@Q=7w;BCgHS+0XiA|2*g&CcW$tIvyC4`Qyp& zK(rwP*}Omd3&k^*$Hje=s@*a(aT$5>BdYm0Z^fVc=+7Zte-m`s{6A-!BToZ}^zj!n z-YoDWB0YL?zGXbD_1f|}2Ryb;FlaL4O=P?}@Ywu+(0>^3&x|(>JUS=f8GI3)PxiC= zIWP*mIFlNVXYe+|ljWiL@3vM4&a;amFq82`-(ll19eM*uFZV+HPMYEIesMB*X^gj( z@m^wj7lD^Wyu9-m?;XZFA3U~SkhhufHZva5av)p(A5zJ9|6#oIz$+%dLpCwqe#S$; zJ#ZB9hL)Q2a~veAO_zZc;EiFtPYn<0yu+-=U;)yWzN$+5a21$|bQWg|Z90#I9vd$V zJKwY);IZ-Mz#w?6Umv!^@ZeYdUIuGoM5%ASe;Aj?{EB$6eS-YyrXIuZDB=yQ2aomZ z`TGq|);GHfWTV?cdoJ!_wDGNk-dsw*;;)S!{G!Ym-oPusWBvN@^9@g?v+g(5??{X1 z^yT9@F=lKc)MYxe^WuJtp$F1)0zAX*{jc!*SLPSvtbwdwA5n2~zv6)w&HQ3+VB+B~ zhu#v3?}+!zcn5y57GZb;?*(r;@k;D-F=hTXi!YwvRawNIb1R;Baj6c7JM=&d2YBVRCj@OzMW0}mmp z>HUG~G+0&-~2M=}3q|3ma z;IV$aJk#*t*NzjY9*M_KkXKcY;(5PS0KI+WxBMj&5BQzW{Qd$S>(@tD7#{qp`&s2E zfjpxou}783_})f({#@uCC%+ZpW;_eO4-hY_wd2iV{dvVQ%@gxKan1+NLzkCoEwy_+ zBBRGc%W@t69O?Qorq5#i|2Y?!bcFv`iI>$AJl3zDqsJ+7eBw&)BJs%F{1Fw+(t9K6 z`Lm(N`v1x*)9%AB-^V~%%Zj4(socnTyP4h~@Ypz^YB=Nl%6KW@vHrj64aVc+#zgQ~ z|6e`W#d^Vo@IYV@<=9Ykv~-SpPp} zniDQ!FL`JS3@;1y6TdZNF3*_#nkUMGxvv}DweVavwzx7Sh&!qquvIs?wti}G1{T`X z?HE$`T+;Q&LH8UZ>v+b_qjmiLQ;3&^{ypn_;+>1ziNq(lUuo7OLi|@vo7vD5oKrKY zX=Vf63L^bqO1l33(4D|^*>hj}W3FrCkFaFb5%0YAEw4vV{Hy*vdqP7E(qN|DEEeGv z>38rZ)Lj6#c^&O z&O^-qo#3%~|DWPDPn0`(-jW(1Rql#r&Yp<-;$}6}OsZ|HovDuq2>%J4N!K3<-R0!} zPtTJ7gtLj4h53Khlf*ke=T!cy5akp2M_n`ND&}rk&obTh%s(4nX1xI3E5y5?MDxV` z#UJZ@w>^MLfqaZv%Zh>xHB)OFn`%_y$JAVk$aFY|g(D35uao|TURsY#z*yOYH|uTi z-eB1KWp*RZrIh8fC+0~1d|uWYx*w8muoLx132c8MYcqIXGTx1b zhjd`)yiNI+{zp`p$2!RJpRkz_8{Wb#<6x+J>TL4{_%TeSco?Pkp7!U*WVSo zLz(U~;+kLJMVkAU=j>UBPhDE6CC)#~b#!=gs|#$LKKkD*tzpuD>;OXENP)So*VZV>a?Edmiy-l>M>v$0A|K z1W&{t&+oSJ^0$TVRZRCoDt~z1w&i6n0PhCk)sO!p<*zVURi0mgCyl^|A2DR^|ylV15Ecv%Krgu zeI@%5@SY&vtj0f*|A>Dz`>_z1%lOxm|JdK5`wY|lh527ZyzDjLy+ph}U;4-Vw^aTH zEF<06W6*t#=^klE=Xti)O!O8>d_&F0+$Sicv07`k7RZc{PyznA&n0p4!L z+ra#X?!U4mFoCEF$nvk_pTzpV*aOi0k#uLX-(5)J{h#0+CSJ?GyTDur%EX~qc1NSK z75SRP`oGwN&^^v{Z>RP*iS>UutsQSpN8(*_<|*1==^v|U$b)lO11SBo{x5bPbh|O# zrPTf3j5 zPy$H*tpAJM1Knh%`!tomq%{=IoDA>=5f8t+AXDRn{f~`*$TF&|*GU+=oAx&rWjtpn z(_KUDZ_=m4%P9hHB=IiGJw^K~{f{jSj>yL^yqKrfs&*xb^?$K=pEH{2zCrCz66^nR zs=*siyvs{i`=g%IA3FXq{?Yg|_cH#;tpAI}95g4$bT^X!WY+)XOa^Z{@va#22mQMq zJS*}a&x@q=-vQm3Om_>VKc4Ssc{wPvIrE5j<-|Xj{_^pkq3NGoPP(x>p?ek6-NoY1 z_Pui!fOiA&uA2D=<6k%;+z{%pRNvlzUk#G8NlAB=zb=tBOa zd+Gln=6^eMA0XYUTT%T_X6uwWkAU|C<1PFn^&jQGtc({wRsP;${)2Ud|fuUS_-{ny2RdE%m>q1{C6PTFri_P3nIu^}Vs5Lwh}5Y@h$S1gE_W$9l}` zHpIon&91F)N>2+m#mCK=P&d0K-iPWorM9MSvM(yiC)+n)Ec>FY@nX5aApKyBgZ9Q7 z`w4t}fEPQzcm0Y}`EjfIh74hT)TtSjULEFAdc|&npDmPL3)^ZxsDCM#>)ZD4eek|! zyh|9*&v=+KYSxF_< zVTFClon$`<^Z!AetbpgnflgcLM~nl%h{J>UhQ2gAN{NNJ> zLxzj3XAbHP-Cj)hF~=LKi^rpBQK(qmf);dBSbPUz?QT#6=`QN-v742v5=uJ&!Wqn)?8PnBL!IN%5QB#SY4D=tD6d4wx7QU>rGr&+;u~; zCLP4LR@SC(3ffkyn+x3n6I{o0Q(364xH-DHuK2bE-F-}VICRUHF6Qh!yy84wb6xRm zbKO*j>0*pH=seQBxt}i2x}4ESSE}purEi70N#71LNjDZ{W6%Xm_id`59i|X(&_wX2 z5$_iC**soiU%q*~#J4TPE1Gm;S3!3M(_KpbQ`3kyr~$mWjEB7;?q95HHuo>SZNYy5 z>Bgd74Pxg67x$!fPVvkoQ(j`x-wk5t1Qw5FJfw}`ob3&vXr9vd$#Ni*kJpr`s>;mjMm06fK2ANiX^ccx?awp8bqBj`1*m8T1+H zExpW~1Bc!;#=~4@&{pEz+nUZ9i)UDv{EdDEyl)uqCdOm)w&=$!N4)WTK3m6ko7D0S z+O6=+ftHsSqK5SZz-vgtoKN#pu2J_Www_Gua)qW@bK$+58Q3- zOP6tcinjla@Z%hxuD;LG^#q^FCUXDv8mBX@WgEDCgT{3^#HaEEj?d9}iux4dMH^{XvbNZt<6UaQv{w zY3};dwv;1p9+C<5LO$mE*b|iWU z@!1`$KIi5--dt#4J;Yr9LJ_z1Id_=0A7Ef-Q(LaD$Ekw`6Mmu7mdeuzZC^t8OB^rN zIJFla_T+el#;Lvd@CqLOYK>ES@!=QT{ydFSd+|}a(~iP-zQ$>-`J?-I{4Ub?{pv6N z|Jcjg%iPHtf0FQvI6h6|H23=WZ@hlgY5X&5{|T?JxwAA*R*uir z_-TZH%l+$qdT_YKKP}++d~Hwp|LG*Izd+-Z|DUes_(F|S{oZ^g*I%S@s^6O%IDV_f zseW(1gX=HW_#Nsm{@=Wh<9BQPL5qJjoa^7Gaa+GVo_BfqT8{bwjlsHK1^Y0XK&l^) zX#01q{^8rX|Hm}0`z2w2oa3uBzQfudna;!atj2Y_k55N#H%#%=lWIO{n6o5pSV@p!uP@c*uG z>b^amR2F{oeV#2p9?!Kb{qtHY`*ybf^9;Cv`Om}PM`*Ou#p_nxDPmP2ch+nyq*egf04D1zlM!x@_K9B=AS2i2e;SdzI}tW?_bJspZY$p zfbf@i{B^kVDlDGRpW|`b{zAf+b39Swbrw&=R)p=J@=`QDkMQd`o}uxDgdgO1w#JuO zy!aNLKj{DSppkdK#S1s_{28Y0Un884@A8T?ZrAQSMQ8BxGeYBETKl2}952ci4 z`#AD>-9J|})Xr?EZMt+g?yQ(41&-_W#XMb(V5cw7vYt*KiZAvK^Wdu;_<3kE+vj+e z?Qy(bYmdq$@PU|=x9t#tBS9+Ge@3bkj_BRVn z#0!mtx;zhl%EKpYZcyPH5{LKKcpmD`^)de!xCq~n%kchs&qFAW6uzZOb;x=x?|2>_ z<#ea`FN4hz_{XF5qhE6W8#TT{`4Rfx@bvje;q6-^e^Kt+ckw)y z?X;ov-K=pv-fiE<^H?#*x9ITy+3G+3z0;GzFT%80hkrNTzu`eHv;5z#a2fu+c>lKN ziE}=fAK?ReGmd`hS6cL;eo3@W6+>hT8d$=b5dnJ`RBGAROx20w*eo`N)i}Yuuvqaw+*CdcWvo ze5IYY@)PCoxGop|jMysO{^Mx7GiAlY*4sn8o~zq?qV=}g(2R|Sk2n6zvzI=sf6CAn=HKjt+i`R=`lt0z_p5N6E@hwSO?>jG zDM>_6OwoJ%34L;$3diBnZ5}6o9)C=qP>pEZ6)pSgwScTE!g#$QCa^q-l@R&V&5 zQzGYWrMu8Q#d+=bL%uAUKhs7GzaH`jqWP2S!aj9?vWe`A(G|a_*fI#6QOCeY*Er zG``tK{z}60+TLN63gaIS^dRUxm-|KDq%!ASVpYZl(!p~QqQu#V4pS1hT zHv;`T^^tjy(l_wOqokDQQzngmhb)EVJ0(0kKJT=t)U?2#HIRY+EU!CsKTFU;z1e5{ z?Xj``{WPUe-yhLm;`J%r&qqGgUl4BE;T2E6COU4sD?GTasQX#!5c(TW;?sW3mMYz* z`}tlF`d<+}1Fq#~b^qRI{AAbzRDPKMn-OkaU)Sd!jPSBl$jinX4}Jb|l^?`spWQOO-ZSxk z{*L;nAK&au;bG$2*QGc0&u>KiZ)MWxS<=i;jhn0{#PnPb9dp6ckJ+!(giW#@ z%hykXU$#6ojXo^@nyg3i`3yMcJ!~nGs^713^q+x0>+v!o7mRbt_c?^r4_oTaVWmFy zsKe&~D7WQ9N`3s2lmC0*lY|c{HSw!X{ClPRIqHDAnsl3^FH%R9LzDf8dI9^|R)Zv?jZ-(RbrPB`ow(xJm@mk157gLg;{M&?YgX6XEsKcKU zPXAkmSH-6szEk*4I9?S`IeeG!U2wcAm=uV`-y?hv9Ir)79llTaJ~&>Bjys&=V%y&_ zI9`jVID9|c9KZcMIM$0dJIC*U@B?tX7XQ-WhlC%p9%@O>;YWlYf#bD=MK-bW9TR>W zj#uR^4nGbzpPyD9l(o`rAFZN41t->XryczX(Vu`5>-l?~@^=XDurbt&R~-I^@HgOi z9r&ulPYHh)j@JRV{(Io2ei;YLD9gb=a`JZ;Za!aUc|4@lu~!}5FT5X)*RdXlUl4x5 zdZ^~v4u4npH8@_)Pdoe)+|=(S9+dT!^-lS&2)_cy>y_U){F=wpe1F74{p%)&zvsoz z#h)&GIvlUIYKIpKFNfpR z_6vv4gwsyaGpRq?#Hs7?5~pG7tVEnG+u8_clZLhX-Bm@sH?ZW>y*Dj^c8Soy*1?M zD}`6W@#^_Ahc6S(m%B7xJxva;5?%$ztJlrn3gIi@c=07HUO%gZuY%*%+vo5#!p$+n z>&!BTuNA%)j@Ox&9KKHYIyhc$=Q+Gucr_fax0yUqY&Qqwb6O+329DR;zi@c1@QrZ1 z&T_Fdrr!uR$7d@Kj^+E#IF+sweI1-w?>pmYdW-NaaJ+78bo{pp-wwxXWP-!DOZ**h z@;XxQw2vL4Z-NtRgvs+*{_90w4=2|DKJ4gs3*QaL>jSP3e)OZ;Ydqtg0LCx0!%+u=vyH4bm%-1!9<&un_eGiKH)(*D{#o+%^^3(>iM zaGZCF{|LNU>EhQM|1QaY7yK}jyOW*#cMI=^cfucYc(3qYco+PP!~2By!Ml~d>rWki zPWU-^FWl`v2ZVFH(tS#E&!>3%yD0o3{2csy4!&r|wq&Uqy5 z(tN(GK2rd1b^NDD`<+7kHl?5ZVZ8ljiaegJ#=j80)8W(k?nfSE(>wkDk3@Sh*P%1T z@H>30^e(=Nn|C*TK9kucz9VERc&2@t$<`R3#s0(aN}g$-qxf9**TR=^z2ngYUc$A7 zX<__*)$)58KmI)UWc1}WjUL6*@V|q5b*T4kmEY0$dUORf@CBlGIs1)&wvsd@N;k}Q z;!|#`Ukgve|Hkn*(G#iJO`_X!gzs6WbW>t_XgW&*F0`dI~^mB3esKm7;Cz)mK| z{8x!T{RhWjG^bu{{d>n?G+*o0U)IE*hkmM4zI9Umb?^lVyxQYg#)!;Xc!{I0;di)g zu#G0yN ze+Rrafo~W8diX{rdzlQ5`R@?_-SD~uUN8Q8;ad{;Zt-t`Z)Gx;$=aCzUh!{)Z%^P2 z;@P$<>(uQSonqGro`F z&Ejv`NK*oD5&w4hL2vRj=HDj%o$$j6yj}de;71d9r}$rlH!C|i8uRZG|I6@}1l}$F z=iqG#yqEsF zO8h~1H@wq{f7zDbwoC*DZ;0~C&K^4;YGrW;Dzu5 z4xcWZHpKOE{o{{2yjbdgF7-2{>?Cot{;5~n{<0VF=5B!SQ6_pF~JcG|eY z7sbyn@U`tfTTYtk%1$Digns+W&Xf2H;Kd0%E%7VhGZT2Zjc+Vd*;(-aa^f$L_{-pP zm7QcZiG%nR62A&wlE5n^{tEcK1ip;%ak6owe#+q;@$-vpm5pyXbzmo{&6^wmIq?fC8SbqRbO{3V0!rcaj3?}~kWHGHR! z(Yw4x&QEJ7Kkcupi1Slc=mq7gwcHq_IEU3;A9eUfes?}Q^na7%6w}wiY2&i#QGAQk zPZRztn1pxrTe(l^?Y#ovG~dDfjep}~^t&8=J^VjEgzr{rKIh?C zp4oKwq4@bzcCY1zrLy(#oepnMtUff@Zn|d||4)b&c0v6%(tn%J{!x#cMF2701YZen z{w@5V)L#o}>byk+G5ulc|7Tus{%W&Gz`P6M6PNziY^iJ!`~`;-*XFMc-T-HjfJq$a zTO@z&@Wuq*Ci&}xHzn|P>u)Sg9oR(#+eBG4&s!d}TF_>3D z`7guCadz;xaCB2F68>-T`vn-C^&i4xK-onOCS~A1B>uzjiwS&K^dmNpc9BC&KjP_g z=J+vwn?(>&&VCc$Y^f~cmszAh`Txg{pBroS9%uX-#q$^+Sd*LMnN6QBiG;d#E2XKX1Vjep>EByyj6HnsOQu52OX-w^3+3?M<6dJ=&r1qkf#>d-Kjgga@#kv z>Bmi1qM!ZjjHPLw_rCCZW7g-Yw|@5ecjojx({=ZwHkq3LCT0GN_nP}5rKZ;M_`3H# z&HCb8*k7yEj^O?rsi`as4ARw+?jBEL{*GhOpLw=^-;1Q%OuBi7c-y$UBI*7ylI~li z;{uMqjjN2LOXRu zT>pvd=fw2f`zFw@MIWp+=7$4WDQ7eJZw>O#-7w3GHWvBCS^2>Hii#!oNB4a3%k$?i zj_$}-e1$t1neyK8u}Hl2#H)?u_a*7?&HCNp;=9f5*=CVhtD73p{Vlpp5naz{-CSSy z>4 \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task5.language.settings.xml b/.metadata/.plugins/org.eclipse.cdt.core/task5.language.settings.xml new file mode 100644 index 0000000..2346830 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/task5.language.settings.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.dsf.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.cdt.dsf.ui/dialog_settings.xml new file mode 100644 index 0000000..d4693b4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.dsf.ui/dialog_settings.xml @@ -0,0 +1,9 @@ + +
+
+ + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c @@ -0,0 +1 @@ + diff --git a/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp @@ -0,0 +1 @@ + diff --git a/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml new file mode 100644 index 0000000..1cb58a4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.c b/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.c new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.cpp b/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.cpp new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/A3_Timer.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/A3_Timer.build.log new file mode 100644 index 0000000..48e284c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.ui/A3_Timer.build.log @@ -0,0 +1,22 @@ +11:15:24 **** Build of configuration Debug for project A3_Timer **** +make -j6 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"Startup/startup_stm32g431kbtx.d" -MT"Startup/startup_stm32g431kbtx.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/startup_stm32g431kbtx.o" "../Startup/startup_stm32g431kbtx.s" +arm-none-eabi-gcc "../Startup/syscalls.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/syscalls.d" -MT"Startup/syscalls.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/syscalls.o" +arm-none-eabi-gcc "../Startup/sysmem.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/sysmem.d" -MT"Startup/sysmem.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/sysmem.o" +arm-none-eabi-gcc "../Src/A3_Timer.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/A3_Timer.d" -MT"Src/A3_Timer.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/A3_Timer.o" +arm-none-eabi-gcc "../Src/A3_Timer_it.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/A3_Timer_it.d" -MT"Src/A3_Timer_it.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/A3_Timer_it.o" +arm-none-eabi-gcc -o "A3_Timer.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\kerschensteinerto\Downloads\mct_bei_workspace_24w\A3_Timer\STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="A3_Timer.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +C:/ST/STM32CubeIDE_1.16.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.200.202406191623/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.exe: warning: A3_Timer.elf has a LOAD segment with RWX permissions +Finished building target: A3_Timer.elf + +arm-none-eabi-size A3_Timer.elf +arm-none-eabi-objdump -h -S A3_Timer.elf > "A3_Timer.list" + text data bss dec hex filename + 1012 8 1568 2588 a1c A3_Timer.elf +Finished building: default.size.stdout + +Finished building: A3_Timer.list + + +11:15:25 Build Finished. 0 errors, 1 warnings. (took 1s.221ms) + diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml new file mode 100644 index 0000000..d09acbb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml @@ -0,0 +1,10 @@ + +
+
+
+
+
+
+ +
+
diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log new file mode 100644 index 0000000..82d74c4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log @@ -0,0 +1,219 @@ +13:22:40 **** Clean-only build of configuration Debug for project task4 **** +make -j6 clean +rm -rf ./Startup/startup_stm32g431kbtx.d ./Startup/startup_stm32g431kbtx.o ./Startup/syscalls.cyclo ./Startup/syscalls.d ./Startup/syscalls.o ./Startup/syscalls.su ./Startup/sysmem.cyclo ./Startup/sysmem.d ./Startup/sysmem.o ./Startup/sysmem.su +rm -rf ./Src/task4.cyclo ./Src/task4.d ./Src/task4.o ./Src/task4.su ./Src/task4_it.cyclo ./Src/task4_it.d ./Src/task4_it.o ./Src/task4_it.su +rm -rf default.size.stdout task4.elf task4.list task4.map + +11:23:37 **** Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"Startup/startup_stm32g431kbtx.d" -MT"Startup/startup_stm32g431kbtx.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/startup_stm32g431kbtx.o" "../Startup/startup_stm32g431kbtx.s" +arm-none-eabi-gcc "../Startup/syscalls.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/syscalls.d" -MT"Startup/syscalls.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/syscalls.o" +arm-none-eabi-gcc "../Startup/sysmem.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/sysmem.d" -MT"Startup/sysmem.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/sysmem.o" +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc "../Src/task1_it.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1_it.d" -MT"Src/task1_it.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1_it.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:24:11 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:26:26 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1160 0 1568 2728 aa8 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:29:10 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1160 0 1568 2728 aa8 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:29:28 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1160 0 1568 2728 aa8 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:32:51 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1160 0 1568 2728 aa8 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:33:03 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1160 0 1568 2728 aa8 task1.elf +Finished building: default.size.stdout + +11:35:32 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:40:26 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:44:36 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:45:00 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:46:39 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:48:57 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:52:13 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:52:24 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:52:45 **** Clean-only build of configuration Debug for project task1 **** +make -j12 clean +rm -rf ./Startup/startup_stm32g431kbtx.d ./Startup/startup_stm32g431kbtx.o ./Startup/syscalls.cyclo ./Startup/syscalls.d ./Startup/syscalls.o ./Startup/syscalls.su ./Startup/sysmem.cyclo ./Startup/sysmem.d ./Startup/sysmem.o ./Startup/sysmem.su +rm -rf ./Src/task1.cyclo ./Src/task1.d ./Src/task1.o ./Src/task1.su ./Src/task1_it.cyclo ./Src/task1_it.d ./Src/task1_it.o ./Src/task1_it.su +rm -rf default.size.stdout task1.elf task1.list task1.map + +11:52:45 **** Clean-only build of configuration Debug for project task2 **** +make -j12 clean +11:52:45 **** Clean-only build of configuration Debug for project task3 **** +make -j12 clean +makefile:62: *** multiple target patterns. Stop. +"make -j12 clean" terminated with exit code 2. Build might be incomplete. +11:52:46 **** Clean-only build of configuration Debug for project task4 **** +make -j12 clean +makefile:62: *** multiple target patterns. Stop. +"make -j12 clean" terminated with exit code 2. Build might be incomplete. +11:53:09 **** Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"Startup/startup_stm32g431kbtx.d" -MT"Startup/startup_stm32g431kbtx.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/startup_stm32g431kbtx.o" "../Startup/startup_stm32g431kbtx.s" +arm-none-eabi-gcc "../Startup/syscalls.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/syscalls.d" -MT"Startup/syscalls.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/syscalls.o" +arm-none-eabi-gcc "../Startup/sysmem.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/sysmem.d" -MT"Startup/sysmem.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/sysmem.o" +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc "../Src/task1_it.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1_it.d" -MT"Src/task1_it.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1_it.o" +arm-none-eabi-gcc -o "task1.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: task1.elf + +arm-none-eabi-size task1.elf +arm-none-eabi-objdump -h -S task1.elf > "task1.list" + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +Finished building: task1.list + +11:53:37 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:54:23 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + +11:56:08 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/task1.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/task1.build.log new file mode 100644 index 0000000..e315722 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.ui/task1.build.log @@ -0,0 +1,10 @@ +11:56:08 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-size task1.elf + text data bss dec hex filename + 1144 0 1568 2712 a98 task1.elf +Finished building: default.size.stdout + + +11:56:08 Build Finished. 0 errors, 0 warnings. (took 119ms) + diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/task2.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/task2.build.log new file mode 100644 index 0000000..dbb8e08 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.ui/task2.build.log @@ -0,0 +1,5 @@ +11:52:45 **** Clean-only build of configuration Debug for project task2 **** +make -j12 clean + +11:52:45 Build Finished. 0 errors, 0 warnings. (took 126ms) + diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/task3.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/task3.build.log new file mode 100644 index 0000000..72c4abb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.ui/task3.build.log @@ -0,0 +1,7 @@ +11:52:45 **** Clean-only build of configuration Debug for project task3 **** +make -j12 clean +makefile:62: *** multiple target patterns. Stop. +"make -j12 clean" terminated with exit code 2. Build might be incomplete. + +11:52:45 Build Failed. 1 errors, 0 warnings. (took 126ms) + diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/task4.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/task4.build.log new file mode 100644 index 0000000..816d22b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.ui/task4.build.log @@ -0,0 +1,7 @@ +11:52:46 **** Clean-only build of configuration Debug for project task4 **** +make -j12 clean +makefile:62: *** multiple target patterns. Stop. +"make -j12 clean" terminated with exit code 2. Build might be incomplete. + +11:52:46 Build Failed. 1 errors, 0 warnings. (took 127ms) + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/29/000b35075b15001110f98d2c88520103 b/.metadata/.plugins/org.eclipse.core.resources/.history/29/000b35075b15001110f98d2c88520103 new file mode 100644 index 0000000..820bdbe --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/29/000b35075b15001110f98d2c88520103 @@ -0,0 +1,147 @@ +/* *************************************************************************************** + * Project: task1 - C:GPIO + * File: task1.c + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 10.09.2021 + * + * Version: 2.1 + * History: + * 10.09.2021 ML create project + * 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U + * 18.02.2025 TK changed projectname to "C: GPIO) + * + * Status: under development + * + * Description: + * Blinks the red LED of STefi Light, currently. + * This file contains the main routine and the initialization. + * + * Notes: + * - MCU speed at startup is 16 MHz + * + * Todo: + * - Change the example code to match the description and requirements + * of the requested application in the lab exercise guide. + * + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +#define LOOPS_PER_MS 1244 // NOP-loops for delay() +#define WAITTIME 500 + + +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +int state = 0; +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ + + +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +static void GPIO_init(void); +static void delay(const uint16_t ms); + + +/* ------------------------------------ M A I N --------------------------------------- */ +int main(void) +{ + /* --- initialization --- */ + __disable_irq(); // disable interrupts globally + + GPIO_init(); + + __enable_irq(); // enable interrupts globally + + + /* --- one time tasks --- */ + + + /* --- infinite processing loop --- */ + while (1) + { + /* ... add your code to implement the lab assignment ... */ + + switch (state) { + case 0: + GPIOA->ODR &= ~(1 << 1); // LED0 on + + state++; + break; + case 1: + delay(WAITTIME); // wait + state++; + break; + case 2: + GPIOA->ODR |= (1 << 1); // LED0 off + delay(WAITTIME); // wait + state = 0; + break; + default: + break; + } + } + + return 1; +} + + +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + + +/* ------------------------------------ PRIVATE FUNCTIONS ----------------------------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: static void GPIO_init(void) + * + * Initializes GPIOs on STefi Light for pins with peripherals attached. + * + * requires: - nothing - + * parameters: - none - + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void GPIO_init(void) +{ + /* enable port clocks */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // LEDs: A + + + /* --- LEDs --- */ + //GPIOA->ODR |= MASK_LED_RED; + GPIOA->ODR |= MASK_LED_YELLOW; + GPIOA->MODER &= ~(3 << 0); + GPIOA->MODER |= (1 << 1); // set LED pin to output +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: static void delay(const uint16_t ms) + * + * Realizes a millisecond delay by very bad busy-wait. + * + * requires: - nothing - + * parameters: ms - delay time in milliseconds + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void delay(const uint16_t ms) +{ + for (uint16_t i = 0; i < ms; ++i) + { + for (uint16_t j = 0; j < LOOPS_PER_MS; ++j) + { + __asm("NOP"); + } + } +} + + +/* ************************************ E O F ***************************************** */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9c/d0b12ae9a11b00111e1997f66d7c19f4 b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/d0b12ae9a11b00111e1997f66d7c19f4 new file mode 100644 index 0000000..142bf4f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/d0b12ae9a11b00111e1997f66d7c19f4 @@ -0,0 +1,147 @@ +/* *************************************************************************************** + * Project: task1 - C:GPIO + * File: task1.c + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 10.09.2021 + * + * Version: 2.1 + * History: + * 10.09.2021 ML create project + * 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U + * 18.02.2025 TK changed projectname to "C: GPIO) + * + * Status: under development + * + * Description: + * Blinks the red LED of STefi Light, currently. + * This file contains the main routine and the initialization. + * + * Notes: + * - MCU speed at startup is 16 MHz + * + * Todo: + * - Change the example code to match the description and requirements + * of the requested application in the lab exercise guide. + * + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +#define LOOPS_PER_MS 1244 // NOP-loops for delay() +#define WAITTIME 500 + + +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +int state = 0; +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ + + +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +static void GPIO_init(void); +static void delay(const uint16_t ms); + + +/* ------------------------------------ M A I N --------------------------------------- */ +int main(void) +{ + /* --- initialization --- */ + __disable_irq(); // disable interrupts globally + + GPIO_init(); + + __enable_irq(); // enable interrupts globally + + + /* --- one time tasks --- */ + + + /* --- infinite processing loop --- */ + while (1) + { + /* ... add your code to implement the lab assignment ... */ + + switch (state) { + case 0: + GPIOA->ODR &= ~(1 << 0); // LED0 on + + state++; + break; + case 1: + delay(WAITTIME); // wait + state++; + break; + case 2: + GPIOA->ODR |= (1 << 0); // LED0 off + delay(WAITTIME); // wait + state = 0; + break; + default: + break; + } + } + + return 1; +} + + +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + + +/* ------------------------------------ PRIVATE FUNCTIONS ----------------------------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: static void GPIO_init(void) + * + * Initializes GPIOs on STefi Light for pins with peripherals attached. + * + * requires: - nothing - + * parameters: - none - + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void GPIO_init(void) +{ + /* enable port clocks */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // LEDs: A + + + /* --- LEDs --- */ + GPIOA->ODR |= MASK_LED_RED; + //GPIOA->ODR |= MASK_LED_YELLOW; + GPIOA->MODER &= ~(3 << 0); + GPIOA->MODER |= (1 << 0); // set LED pin to output +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: static void delay(const uint16_t ms) + * + * Realizes a millisecond delay by very bad busy-wait. + * + * requires: - nothing - + * parameters: ms - delay time in milliseconds + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void delay(const uint16_t ms) +{ + for (uint16_t i = 0; i < ms; ++i) + { + for (uint16_t j = 0; j < LOOPS_PER_MS; ++j) + { + __asm("NOP"); + } + } +} + + +/* ************************************ E O F ***************************************** */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/1.tree b/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/1.tree new file mode 100644 index 0000000000000000000000000000000000000000..5e81890e35460b4950308a63e7d97413ba46ac6e GIT binary patch literal 129 zcmZQ!W@2Ih0!Bs#MhGRPmtT~wmztcDSx}s+mzthgqL-Xsl&Y7UTL4s|z# zPA|@+L7VJgkJ-NOv4Ug)xfhFMYHkBz$H-1e+^a?*%Ryzpf`aeF(79ywQcP!9#e5Ur wlIQ^2e~>A4gwgK>Pq7M{s4xVj<~f-}kL0TebC7Y>{XuWuUD;MTu9{2x01!!GZvX%Q literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/history.index new file mode 100644 index 0000000000000000000000000000000000000000..9bee9c15dc1b48c87459fe2ffd264e3000691e8d GIT binary patch literal 45 zcmZQ#U|?Wm;L#5*O4ct)EY3F6O9t|}P1&PG83YA>_Ud#5F*0|p{k~!jBLf2f%mfPO literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..ea4ef1c2acd8b727ffb71fb3d21663befff0bbab GIT binary patch literal 130 zcmYj}K@Nj33;xhT)Wi=Y`c%I! z777n~7c8ujY^}ezYIS~iIGvw6Yzo2k8dKv@;O)AK(hv!5}&F5KPf E0dayXYXATM literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..0ac7bf5caae730ca155307ad18774e1babff0b34 GIT binary patch literal 362 zcmZvY!A`?442Hc9#EwWC5}bGgt4)_yoDm$k@C0dM(r8UmrODXdo^-ucNVa6@|NZ-u zHvq87{ZPQc2aO~LGfsq3MU*}e?1hZxOz+f`ZEPm-%>b7VPX9=1KnbGOY9^IxWA3?gk$g{g?Pm=lVVRs_Yt<7 iH#1Xy#mew&RP5odD&OkG@VGKuvRJe7fAI?2nl*o0VQZ!U literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.markers new file mode 100644 index 0000000000000000000000000000000000000000..e14f0b04be3274ef0bdd239f91fb4f83417b5178 GIT binary patch literal 349 zcmZQzU|?pD&@V|W&NkHd%uCh}4oOYR)b+_s&nVH$U|?Wi1Y!{AV`7lZFG|--P0qcHlpQ4RnwJ8S{m;Ojn_66)n4Zeaz#8K3;;+EKQBahbUzAx=36uxA zfh#97FV(L!Hz~CUBp?SAn`B~|@RmUc>h$2EWC%+y8LRtuj7&sp*N|8W3|)L4=L literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task2/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task2/.indexes/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..fb0e92918d4c8a7ffc2c550f6605b990196174d0 GIT binary patch literal 564 zcmbV}KTpFj5XCPEhz!s zs2we=`BGKmcu>~BLRgJHv`1%5G%G?S3AJdjG7V~Octvv6sI5fN8NlXgK-%y*};@wH*h24=O`60M5 literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/be/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/be/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..5adfea3c0e0bafa6bfd2a673ed8d62e0bd78f481 GIT binary patch literal 297 zcmbu4F$%&!5Je~2Ti95804Hb!4{Gt znVy|VZ+Cj}=EAmAEFqb}!HY#Q6*qyfWn`x$?pdLb<)G4IPQkZg=v1(J$zu$Q>As3@ uNVJFbH^>w^z-XM{ajHgzpmnyh`)u2FgF^DLgI{Q?@uAQMrTP(}{~_N5Jz;ME literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/c4/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/c4/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..f3589b3a3e51b9950782a4773860f8adb2ad7d53 GIT binary patch literal 130 zcmYj}F%E-33yI^6JWNTI4j4it&Pl=(6RmaYw*0MpgpUn%#-%Rbz1InuKou2<8nf;9Eb>Z$- E4{~NKZ2$lO literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task3/.indexes/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..35700d047f35a5de15a96fbff53d68712f12dc9c GIT binary patch literal 487 zcmZ{g%WA_g5Je|;3xRA3ZJ}ND4+hJMA6b`n*-gJdmZr8yWEojblfSPNcV!ZgKyYX7 zIcNm{t8h07JXzNw$%7t7La97T>j)l&^!iBew*S%XC@hYx8Djy@d2b2&AHS`ivK zVcSn=L@!!W&7==1l*C1(6QQDJYLS(BRutK`Dk2wPJt%9wgduqGV%&3N72j2LRWnv* zImR@B*QJ{g`yd$w-;^GuJ(45!Ek)mxn_WNkfiAV{xptHZ+{Y(_XB?az$oVr4!4x~v zZRa5^iZVKduUHKHYUMk)W7&?+0}qRVQwVvUT@TNY^1S?~^PBW~d)ZHK(9@dLu|I{Y M@N#!O3~S5P+u%wXFz>A}EODqKAN+gEtW`wueHoN(vq&-Hhqd{IS^-m0o;^9)!L? zkG_d#U&VvYVj7A_wF}G6?CnJZ9o;pqJ=YbP>L%bIu0zieTZk`M{NMyi} zha%08abGc>NMxx@`XNTJ2K5X_D1~}7Xn_G+#RwaDQg}4Sr0xbEc+yp#RK_P2sOh{F z`$ZOEmU#iqv^Bz+W!ttD<)IR3h!(91P+6&`6v{YbmgTA>Ww0KK7_aiEk5Zp}LA29Z zZM+G4g;YD{j@u)nla2@miVd_7RbAc;*#Ff_-v`u4D#<0swr_%Y+3YO}kmLt!%SrKGzP^cxlcpZ^EgSqgZ)D&P?TPG=26eE~AB!C?RZ literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/a3/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/a3/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..1c3da2e7b9e6d89278c9a2dd8316f798241e7d2f GIT binary patch literal 156 zcmYj}K?=e!5Je{*z%#gWH$^MBcHzF%14vAVFxWIfpeCK6lN|;SQ&XSlEu#`6j@DH97%JPK-Y;a%lNxt+jx*% WNNk1ue<)1$iP2Xk literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/be/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/be/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..8a2cced40bfcba4014a3e79e96e7379bf73a93d7 GIT binary patch literal 136 zcmZQ%U|?Wm5YqR|OV$q#NlnYt^~p@nDACJcU}R!2&o4^XOHIznEGSOZE6vo)%qvMP z%1g}AD@skzEG{Xk)C)>2&Mz%WPIXPmEXgklf(kS6LHGeh`30#(C6x?{$Oa{+lzx>`gM literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.indexes/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..94223121dcbff888a69cfe855d69b0411f1f4e2f GIT binary patch literal 236 zcmZ9GI}XAy5JVSf=%Ij$8?5rTs1cMjoWNNxmX+9!{6QR_1UjUhYBg`(3IJAfHfz}X zppj`bQ)DESkbGd+NlNC$7w?`%=OB~u4zA=a#x$R;E6P2iQH+){YM0SUCpD`+n^Db> zrHK4yRNQBcWzjZ;=&G(_CN?iZ| literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/task4/.markers new file mode 100644 index 0000000000000000000000000000000000000000..5640cffbe83434a5d859e0373148b93574109bac GIT binary patch literal 723 zcmb7?y-UMD6u@5+w5>RZAShJH9PqL@Ik?yk1+hcAm+R%39?ch*OFLYpx9NZl8`TP%awR$KacH_F##{xOD{a41gN7M*)36#P zSQI>>ot{BBbUn{=lQPyakI|)55o$N*TBAw}=DLB-at3R$O!2f#MySloM@0KDYh2#J zb|uwIg&z#aX#Ye;W6j1!h{AM*4Ld)2nR-Bjq_R>8?1c_E$DP5V07<^VdRd_AhEf|t zy0jLeRnn`4RtEh}--TwbWcF1f>pS|ML4SE}Kfz{&9w_mdF=1%u%wS!c#QKZQ8U9A+ nh-K+^4c)9|-_*aQrW;E74GVx*{{y`L74UIcz>$;?eHE=kNSVBj@0H#agiFtIQ*1Cju?mK^B- literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.markers b/.metadata/.plugins/org.eclipse.core.resources/.root/.markers new file mode 100644 index 0000000000000000000000000000000000000000..9e5bd1582b707c2aea080c7a0b9a43267383af16 GIT binary patch literal 533 zcmaKpK}*Ci5QSeFVO8`8=s^OC;-y|ZNRNtM*7f4vmPOKLtYO=k|05JbTJtR19Y?)F~>9(V^P%c%J_hni%)_-q$Q#jq2OG|RqHrlwE zv@5dM!B+7k?Y)!MC2ziPIO6m8Wy7(djdnO4(dOTy=0i(~hh#V&(d*K9)T^d9E{K6$ zOV2%Zj?}F-9|luQ0_?R>pQs11T@;s$%qvoi;Urf4S&BBDlT{T>oYd5HvLud+^}@tY zj7*5ddI6aT`Ilnhe6~!?scsu9?Xbjl?8m*|csTmM=Z|WX O4)^3?QS4=S<(uzo-mxqI literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/63.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/63.tree new file mode 100644 index 0000000000000000000000000000000000000000..53bebfec38d200fda1002cf4cf3319da4ac2c859 GIT binary patch literal 7089 zcmbtZYit}>6~5!$&Dd+ZaTE7JP=r~Bq_lWw?Nu>UKoU?NqAf*^M0v?w&yF`+?<+gI ziBldHJLjHz?s?sDGSSr~Bn{uEM!q_S^qnIHtM!5x_@!bk3_L&I@ce2$z|$^~ zYUIM1Ys6?fpq#7Z3PFCVSuEv)y2N{hpi<7w1o}5AT(gg_g?+-$RVqRKBh|`uv9MDK zCLvBTA-Wug?owitXNw97MWw6fmutciL&*(5&7U25TT@Oi5;xFzUX$SEK-l0$Am{FR z>tzL`wF=Rvzx4Hp9?!4Ut9J%|19F9fr_S+g`NJb@QngZw-dj@oY&qop^(WhsgbV9 zxgL?2sQVGzr!?+>8tIxmh)oKcQ~6@uE6)I(+(A;89{cMruT`kzL5$t{ejfWJecAK( z`=u)I1JYber`+E?sW6#yYNTuCpF+3_pYMppbEeE|1{;-2<_FPprp&*fl9C%XI|>GX zDf2o!K!PX9&trOjUjYfml=-(1X~Pm#o#B8mW!|viQSE=MKm=jRyvbH1h1wRt;(=kx zyamflG;;MulftvL?J4S*Wm+(%B2yv1?|g8na$>8QQr?HdE$5VmaRE znvN?D!ZT(5i-_#(NAFjdBqd7rqodf8aDV9MN~N&FmOQLjNGMb0JZx-OqHB3X!vSF$ z#!U+zRsWO%5rk-w9ge~>w^-LL z`X_e5+9Nj?3%eWMZnC*dnRaO#gj{Tlq#+>&{Bl?fCsDF$*rmE;5-}z!GVBKs(5sjV zzP}6}HB+#Y0l!}1_XhQ_SgkC>bFnqYrLZRztx3O}T?W3vf?o!e%C+WXu3p~zzGd)K z8+i$+|NSOm&CW`WxTP+!I5r8f0gm4Y%ADymTijOA-Awd$AugTRb<5c34akfi+qvuZ z$?I?4F>#|;qPQHCW?tBQ?3vrZLPWmGI|?1SsK$1k_fPV4aoHmeQL9*b?9KD1=^+TV z5u_5xxs}~iRwsgAOci+Hx<4m%jux0!a6f}EvTK1+W4DynS|xo=C6>$Q)ab;G3(FV} zc?X52$(klQG zjpK8byb~g?d(Kfp#(K_ap!zhjue(#vX~$X>$N`N$0IgT-IST-?=mrvmY57PIZTnY$ z21k@s(<2RgQWxBFE{^@-`5`63$zaqT<-B`MJtu`K(H?v#4vCP1a#C!4mG)nXS z|53a9m~r=ojn(W68c8d-NxE>!;K>`QUxz*AhU9R7X8Awzqz9y(vAi-k37l`YAYkaeP3E7cSQ*e07U} zM_Ru)91te5P^8}?i|D;@u`VXJ+@ar6lC4xhj>6bD4Pd}_9>-=bZ= zM+tWK@&s_EeY)Qo^JGUZd$`3&H||{)@8>BV?0!qZt$xb|gvtE^G}MQ_){<>708H)|v3j}W zA(`0POV+~WdxlOcuzLcd?mOIX=o&W`V;D^R`haGDY_na5b=}IEx@85OAdWu8C6;?N zc=%aD5zXV%EANE3zf;|^MWa?3(f4+&TXT(b*O5q~uc|>_k9Mu)eIBcQ6g=Epefz?S z&6)LZJR*9B#}-R}&Mr1PkxKDC@0RCZmq3xCE=*HuORLxz+#Bj)>RpV2w5{zWVTY1x zESuU2bV74p8TD=>S-*HmZL=g_v8rTribnE#+KP=-V{v55hpyIBqpM|4OX0Uzv5Dz@ zl_mYXuw&#sgNVVgG^311!DYW^h{Ly7aI7OzY~VZ}cmmIf4yi$253f{gUVA|!;V7mr z{oX3Y#xOkqCcR1GTgw+4gGa2gQxSfp!@c2IvgY^>EY$gMZ{Xjw;14ceYz!W1m?b>4 zQn4`{P{MFLvTCt0Y*5CqJ-Sk{QKwR?*oY%wP2xj@^w4&=Z|(YF1(DYyy4Yl8u~Db! z#gT0j+coBCjC{C%5oV>#n{6*PTTecx;m=s`v1mBT?$dU@yEP9Dht^hXjFsSe#zP*b zc(992{Jj27z#WZLb=OBjba&NrA%2W9--Wbz)7>#liol i)c?8?PV@}{9_Y6yr+T{RU`RBM4@EhVDuP-EeE%QCVbgB_ literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000000000000000000000000000000000000..b506e1fbf03b5d43429505e5d46d085c81d5856c GIT binary patch literal 656 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsgaw!Lw<|+6l7AY7QDi|7B8JSuc znkhKDhA0>r7@2V;=cFbUxuoWlB*y0#rR$|8=VTTXr|K1@=H{2A>LuqFrP`Jhm8No~ zfRwma6l4}9mSpDVp(svHDS@aoG&eUgHZw6cG&42DX>>|zQfazgX(q&69QMPF1Y3?n z5yT{f8};>&y^xxo32~NQa&CdXUP)1Es;waxlwoGfbs*yRXK<(me(tH>U4G1gwxO7o am{UxXV1yWqBZ%PPh*uR-Ktj|}7Lov>GwRs@ literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs new file mode 100644 index 0000000..5db98de --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs @@ -0,0 +1,11 @@ +DeviceConfigurationTool..FirmwareRepositoryPath=C\:\\ST\\STM32_CubeMX_Libs\\Repository +DeviceConfigurationTool..OffLineMode=true +DeviceConfigurationTool..UpdaterCheckInterval=5 +DeviceConfigurationTool..UpdaterDataRefresh=dataRefreshDataOnly +DeviceConfigurationTool..UpdaterDataRefreshInterfval=3 +DeviceConfigurationTool.AskToDoCodeGenerationOnIocSave=false +DeviceConfigurationTool.AskToDoSaveAllOnCodeGeneration=false +DeviceConfigurationTool.AskToSwitchToCPerspectiveOnCodeGeneration=false +DeviceConfigurationTool.AskToSwitchToCdtPerspective=false +DeviceConfigurationTool.AskToSwitchToCubeMxPerspective=false +eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.debug.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.debug.prefs new file mode 100644 index 0000000..1211161 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.debug.prefs @@ -0,0 +1,2 @@ +debug.stlink_preferences/latest_version_enabled=true +eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.ide.oss.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.ide.oss.prefs new file mode 100644 index 0000000..94c9b45 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.ide.oss.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +project_presentation/setHierarchicalMode=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 0000000..885fe02 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,74 @@ +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.localvarreturn=-Warning +org.eclipse.cdt.codan.checkers.localvarreturn.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(\\"Returning the address of a local variable\\")"} +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.BlacklistProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.BlacklistProblem.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 or method is blacklisted\\")",blacklist\=>()} +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\\")",checkMacro\=>true} +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.FloatCompareProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.FloatCompareProblem.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(\\"Direct float comparison\\")"} +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.MagicNumberProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem.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(\\"Avoid magic numbers\\")",checkArray\=>true,checkOperatorParen\=>true,exceptions\=>(1,0,-1,2,1.0,0.0,-1.0)} +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.MultipleDeclarationsProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MultipleDeclarationsProblem.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(\\"Multiple variable declaration\\")"} +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.NoDiscardProblem=Warning +org.eclipse.cdt.codan.internal.checkers.NoDiscardProblem.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 value not evaluated\\")",macro\=>true} +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.ShallowCopyProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem.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(\\"Miss copy constructor or assignment operator\\")",onlynew\=>false} +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.StaticVariableInHeaderProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.StaticVariableInHeaderProblem.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(\\"Static variable in header file\\")"} +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.SymbolShadowingProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem.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 shadowing\\")",paramFuncParameters\=>true} +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\\")"} diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 0000000..834b0fc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,221 @@ +ToolChainManager/order/0.id=gcc-x86_64-C\:/tools/CodeBlocks/MinGW/bin/gcc.exe +ToolChainManager/order/0.type=org.eclipse.cdt.build.gcc +ToolChainManager/order/1.id=gcc-x86_64-C\:/tools/CodeBlocks/MinGW/bin/x86_64-w64-mingw32-gcc.exe +ToolChainManager/order/1.type=org.eclipse.cdt.build.gcc +ToolChainManager/order/n=2 +build.all.configs.enabled=false +build.proj.ref.configs.enabled=false +doxygen/doxygen_new_line_after_brief=true +doxygen/doxygen_use_brief_tag=false +doxygen/doxygen_use_javadoc_tags=true +doxygen/doxygen_use_pre_tag=false +doxygen/doxygen_use_structural_commands=false +eclipse.preferences.version=1 +errorparser.default.ids=org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.MakeErrorParser +indexer/indexAllFiles=true +indexer/indexAllHeaderVersions=false +indexer/indexAllVersionsSpecificHeaders= +indexer/indexOnOpen=false +indexer/indexUnusedHeadersWithDefaultLang=true +indexer/indexerId=org.eclipse.cdt.core.fastIndexer +indexer/skipFilesLargerThanMB=8 +indexer/skipImplicitReferences=false +indexer/skipIncludedFilesLargerThanMB=16 +indexer/skipMacroReferences=false +indexer/skipReferences=false +indexer/skipTypeReferences=false +indexer/updatePolicy=0 +indexer/useHeuristicIncludeResolution=true +language.settings.providers.workspace.prefs.toggle=true +macros/workspace=\r\n\r\n +org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.cdt.core.formatter.alignment_for_assignment=16 +org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80 +org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=34 +org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 +org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0 +org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 +org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48 +org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 +org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.cdt.core.formatter.alignment_for_lambda_expression=20 +org.eclipse.cdt.core.formatter.alignment_for_member_access=0 +org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16 +org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=next_line +org.eclipse.cdt.core.formatter.brace_position_for_block=next_line +org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.cdt.core.formatter.brace_position_for_linkage_declaration=end_of_line +org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line +org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.cdt.core.formatter.comment.line_up_line_comment_in_blocks_on_first_column=true +org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1 +org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true +org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true +org.eclipse.cdt.core.formatter.comment_formatter_off_tag=@formatter\:off +org.eclipse.cdt.core.formatter.comment_formatter_on_tag=@formatter\:on +org.eclipse.cdt.core.formatter.compact_else_if=true +org.eclipse.cdt.core.formatter.continuation_indentation=2 +org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.cdt.core.formatter.format_block_comment=true +org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.cdt.core.formatter.format_header_comment=true +org.eclipse.cdt.core.formatter.format_line_comment=true +org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false +org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 +org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true +org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_linkage=false +org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false +org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false +org.eclipse.cdt.core.formatter.indent_empty_lines=false +org.eclipse.cdt.core.formatter.indent_label_compare_to_statements=true +org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.cdt.core.formatter.indentation.size=4 +org.eclipse.cdt.core.formatter.insert_new_line_after_colon_in_constructor_initializer_list=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_after_label=insert +org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_structured_binding_name_list=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_lambda_return=insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_structured_binding_name_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_pointer_in_declarator_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_pointer_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_structured_binding_name_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_structured_binding_name_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_lambda_return=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_linkage_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_structured_binding_name_list=insert +org.eclipse.cdt.core.formatter.insert_space_before_pointer_in_declarator_list=insert +org.eclipse.cdt.core.formatter.insert_space_before_pointer_in_method_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_before_ref_qualifier_in_structured_binding=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.join_wrapped_lines=true +org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.cdt.core.formatter.lineSplit=100 +org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.cdt.core.formatter.tabulation.char=space +org.eclipse.cdt.core.formatter.tabulation.size=4 +org.eclipse.cdt.core.formatter.use_comment_formatter_tag=true +org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.cdt.core.showSourceFilesInBinaries=true +org.eclipse.cdt.core.showSourceNotFoundEditor=all_time +org.eclipse.cdt.core.showSourceRootsAtTopLevelOfProject=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task1.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task1.prefs new file mode 100644 index 0000000..d25cb75 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task1.prefs @@ -0,0 +1,18 @@ +eclipse.preferences.version=1 +indexer/indexAllFiles=true +indexer/indexAllHeaderVersions=false +indexer/indexAllVersionsSpecificHeaders= +indexer/indexImportLocation=.settings/cdt-index.zip +indexer/indexOnOpen=false +indexer/indexUnusedHeadersWithAlternateLang=false +indexer/indexUnusedHeadersWithDefaultLang=false +indexer/indexerId=org.eclipse.cdt.core.fastIndexer +indexer/preferenceScope=1 +indexer/skipFilesLargerThanMB=8 +indexer/skipImplicitReferences=false +indexer/skipIncludedFilesLargerThanMB=16 +indexer/skipMacroReferences=false +indexer/skipReferences=false +indexer/skipTypeReferences=false +indexer/updatePolicy=0 +indexer/useHeuristicIncludeResolution=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task2.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task2.prefs new file mode 100644 index 0000000..d25cb75 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task2.prefs @@ -0,0 +1,18 @@ +eclipse.preferences.version=1 +indexer/indexAllFiles=true +indexer/indexAllHeaderVersions=false +indexer/indexAllVersionsSpecificHeaders= +indexer/indexImportLocation=.settings/cdt-index.zip +indexer/indexOnOpen=false +indexer/indexUnusedHeadersWithAlternateLang=false +indexer/indexUnusedHeadersWithDefaultLang=false +indexer/indexerId=org.eclipse.cdt.core.fastIndexer +indexer/preferenceScope=1 +indexer/skipFilesLargerThanMB=8 +indexer/skipImplicitReferences=false +indexer/skipIncludedFilesLargerThanMB=16 +indexer/skipMacroReferences=false +indexer/skipReferences=false +indexer/skipTypeReferences=false +indexer/updatePolicy=0 +indexer/useHeuristicIncludeResolution=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task3.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task3.prefs new file mode 100644 index 0000000..7d12f1d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task3.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +indexer/preferenceScope=0 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task4.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task4.prefs new file mode 100644 index 0000000..d25cb75 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-task4.prefs @@ -0,0 +1,18 @@ +eclipse.preferences.version=1 +indexer/indexAllFiles=true +indexer/indexAllHeaderVersions=false +indexer/indexAllVersionsSpecificHeaders= +indexer/indexImportLocation=.settings/cdt-index.zip +indexer/indexOnOpen=false +indexer/indexUnusedHeadersWithAlternateLang=false +indexer/indexUnusedHeadersWithDefaultLang=false +indexer/indexerId=org.eclipse.cdt.core.fastIndexer +indexer/preferenceScope=1 +indexer/skipFilesLargerThanMB=8 +indexer/skipImplicitReferences=false +indexer/skipIncludedFilesLargerThanMB=16 +indexer/skipMacroReferences=false +indexer/skipReferences=false +indexer/skipTypeReferences=false +indexer/updatePolicy=0 +indexer/useHeuristicIncludeResolution=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs new file mode 100644 index 0000000..2920a93 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs @@ -0,0 +1,3 @@ +BreakpointActionManager.actionData=\n\n \n \n\n +eclipse.preferences.version=1 +org.eclipse.cdt.debug.core.cDebug.default_source_containers=\n\n \n \n \n \n \n\n diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs new file mode 100644 index 0000000..a475ba0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs @@ -0,0 +1,9 @@ +ActionDialog.lastSelectedAction=Log Action +SoundBehaviorDialog.recentSounds=\n\n +columnOrderKeyEXE=0,1,2,3,4,5 +columnOrderKeySF=0,1,2,3,4,5 +columnSortDirectionKeyEXE=128 +columnSortDirectionKeySF=128 +eclipse.preferences.version=1 +visibleColumnsKeyEXE=1,1,1,0,0,0 +visibleColumnsKeySF=1,1,0,0,0,0 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.dsf.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.dsf.ui.prefs new file mode 100644 index 0000000..2c7c1b9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.dsf.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +useAnnotationsPrefPage=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs new file mode 100644 index 0000000..64fc1fd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.cdt.make.core.scanner.discovery.console.enabled=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs new file mode 100644 index 0000000..30613e7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -0,0 +1,17 @@ +eclipse.preferences.version=1 +properties/A3_Timer.null.148366063/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1523048267=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.2036235554\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.754678538\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1977208673\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1389756657\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.696261002\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.488808980\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.318877871\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1073955033\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1166341985\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1747744409\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.2034847490\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1404951732\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1523048267\=rebuildState\\\=false\\r\\nrcState\\\=0\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1167899044\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1635898778\=rebuildState\\\=false\\r\\n\r\n +properties/A3_Timer.null.148366063/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.693743165=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.559094\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.879330916\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.821200644\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.857752223\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1707235624\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.532547938\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.792063387\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1086464965\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1842345348\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1353652202\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1695548782\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1201748324\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.37314053\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.322737673\=rebuildState\\\=true\\r\\n\r\n +properties/task1.null.2118552201/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1620550475=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.467912240\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.734163534\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.987892239\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.296915995\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1522446011\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.51304434\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.366539338\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.499655283\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1275583489\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1501852922\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.190431523\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.515759530\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.792640049\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1620550475\=rebuildState\\\=false\\nrcState\\\=0\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.858378881\=rebuildState\\\=false\\n\n +properties/task1.null.2118552201/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1737696549=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.195540233\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.172195184\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1875497860\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.321869981\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.58066653\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1195065367\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1569980417\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1728952743\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.314381235\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.944037994\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1297281366\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.918673526\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.622413367\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.281040195\=rebuildState\\\=true\\n\n +properties/task2.null.446352778/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.43085415=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.351938269\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1591029960\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1990807025\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.1109510031\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.823397583\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.93075999\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1187446961\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1079770202\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.2018839348\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.463680753\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1540545168\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.43085415\=rebuildState\\\=false\\nrcState\\\=0\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1867071021\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1521271156\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1852199179\=rebuildState\\\=false\\n\n +properties/task2.null.446352778/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1504690380=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.2101582729\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1714160403\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1187835881\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.286153171\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1787991196\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1034471659\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1516704411\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1702470287\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1916448803\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1277268639\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1543486940\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.2133680473\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.434611973\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.2129058748\=rebuildState\\\=true\\n\n +properties/task3.cdt.managedbuild.target.gnu.cross.exe.632164981/cdt.managedbuild.config.gnu.cross.exe.debug.1099421527=cdt.managedbuild.tool.gnu.cross.cpp.compiler.1200703946\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.archiver.660560516\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.c.compiler.648515416\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.assembler.757128141\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.c.linker.392758414\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.cpp.linker.688297847\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.toolchain.gnu.cross.exe.debug.661016800\=rebuildState\\\=true\\r\\n\r\n +properties/task3.cdt.managedbuild.target.gnu.cross.exe.632164981/cdt.managedbuild.config.gnu.cross.exe.release.2020925561=cdt.managedbuild.tool.gnu.cross.c.compiler.2132811992\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.cpp.linker.2113413902\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.archiver.914263932\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.toolchain.gnu.cross.exe.release.1769845313\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.c.linker.548272655\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.cpp.compiler.1923772161\=rebuildState\\\=true\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.assembler.1992458790\=rebuildState\\\=true\\r\\n\r\n +properties/task3.null.1275456853/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.407745008=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.232537644\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1035221994\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1598609565\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1314749204\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.407745008\=rebuildState\\\=false\\r\\nrcState\\\=0\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1273870059\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.915751546\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1840384229\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.212445446\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1149033452\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.89513622\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1148164293\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.64328770\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1294498294\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.562886967\=rebuildState\\\=false\\r\\n\r\n +properties/task3.null.1275456853/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1522773171=com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1715909476\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.318254991\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1165014142\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.182564104\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1723288046\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.2035635013\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.925894944\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1162860628\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1300459893\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.959976561\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.244821773\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1900431973\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1072336722\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.150455301\=rebuildState\\\=true\\r\\n\r\n +properties/task3.null.1898839469/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1216157763=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.606293410\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.1947820112\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1836941222\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.762093604\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1212280541\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1993571926\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.2118490653\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1216157763\=rebuildState\\\=false\\r\\nrcState\\\=0\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1425125328\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.899143234\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1800220528\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.543589025\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1322118056\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.481179617\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.2064671237\=rebuildState\\\=false\\r\\n\r\n +properties/task3.null.1898839469/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.435457595=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.197816929\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1662102144\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.395128502\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.322289673\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.933174539\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.732710058\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.13741732\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.958421243\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.503104139\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1110538165\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1826379156\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1523301098\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.2016071322\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.945056554\=rebuildState\\\=true\\r\\n\r\n +properties/task4.null.1688711246/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1054076261=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.354011565\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1228099115\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1139073144\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.422382587\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1236508096\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.222325469\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.549150906\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1054076261\=rebuildState\\\=false\\nrcState\\\=0\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1712518208\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1123280063\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.874658681\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.789362698\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.1447577805\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1286958391\=rebuildState\\\=false\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.953024194\=rebuildState\\\=false\\n\n +properties/task4.null.1688711246/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.577803811=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.302386966\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1802369860\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.151654985\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.264122243\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.33574342\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1382994982\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.688471561\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1930277785\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.173134075\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.2077870415\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1862078334\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1235454776\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1511214546\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1135454788\=rebuildState\\\=true\\n\n +properties/task5.null.837809533/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1650059136=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.574725079\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.982386977\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.2076793678\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.782108627\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1219255366\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1851651664\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1650059136\=rebuildState\\\=false\\r\\nrcState\\\=0\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1496327494\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.726389530\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1653209997\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.120347588\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1285610694\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1817995764\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.235156569\=rebuildState\\\=false\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.936509312\=rebuildState\\\=false\\r\\n\r\n +properties/task5.null.837809533/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.298648676=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.998361209\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1193290996\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1628197668\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.590953560\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.168188474\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1877705505\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.597438936\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1472457344\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.964597558\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.751138915\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.520108075\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.455653897\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1033584369\=rebuildState\\\=true\\r\\n\r\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.224687662\=rebuildState\\\=true\\r\\n\r\n diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs new file mode 100644 index 0000000..b53d372 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs @@ -0,0 +1,49 @@ +content_assist_proposals_timeout=5000 +eclipse.preferences.version=1 +editor_folding_enabled=false +formatter_profile=_BSD/Allman [MCT] +formatter_settings_version=1 +hoverModifierMasks=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;0;org.eclipse.cdt.ui.ProblemHover;0;org.eclipse.cdt.ui.CDocHover;0;org.eclipse.cdt.ui.CMacroExpansionHover;0;org.eclipse.cdt.ui.CSourceHover;131072;org.eclipse.cdt.ui.AnnotationHover;0; +hoverModifiers=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;\!0;org.eclipse.cdt.ui.ProblemHover;\!0;org.eclipse.cdt.ui.CDocHover;\!0;org.eclipse.cdt.ui.CMacroExpansionHover;\!0;org.eclipse.cdt.ui.CSourceHover;Shift;org.eclipse.cdt.ui.AnnotationHover;\!0; +matchingBracketsColor=255,0,0 +nameStyle.constant.prefix= +nameStyle.constant.suffix= +nameStyle.constant.wordDelimiter=_ +nameStyle.cpp.header.prefix= +nameStyle.cpp.header.suffix=.h +nameStyle.cpp.header.wordDelimiter= +nameStyle.cpp.source.prefix= +nameStyle.cpp.source.suffix=.cpp +nameStyle.cpp.source.wordDelimiter= +nameStyle.cpp.test.prefix= +nameStyle.cpp.test.suffix=_test.cpp +nameStyle.cpp.test.wordDelimiter= +nameStyle.field.prefix= +nameStyle.field.suffix= +nameStyle.field.wordDelimiter= +nameStyle.getter.prefix=get +nameStyle.getter.prefixForBoolean=is +nameStyle.getter.suffix= +nameStyle.getter.wordDelimiter= +nameStyle.method.prefix= +nameStyle.method.suffix= +nameStyle.method.wordDelimiter= +nameStyle.setter.prefix=set +nameStyle.setter.suffix= +nameStyle.setter.wordDelimiter= +nameStyle.variable.prefix= +nameStyle.variable.suffix= +nameStyle.variable.wordDelimiter= +org.eclipse.cdt.ui.formatterprofiles=\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n +org.eclipse.cdt.ui.formatterprofiles.version=1 +org.eclipse.cdt.ui.text.custom_code_templates= +org.eclipse.cdt.ui.text.templates.custom= +properties.multi.displ.mode=1 +properties.multi.write.mode=4 +removeTrailingWhitespaceEditedLines=false +scalability.detect=false +sourceHoverBackgroundColor=255,255,225 +spelling_locale_initialized=true +spelling_user_dictionary_encoding=Cp1252 +useAnnotationsPrefPage=true +useQuickDiffPrefPage=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..6de3a31 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +description.filestatelongevity=86400000 +description.maxfilestates=1 +eclipse.preferences.version=1 +version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs new file mode 100644 index 0000000..bff41cd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs @@ -0,0 +1,8 @@ +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.debug.gdbjtag.launchConfigurationType=org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate,debug,; +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.applicationLaunchType=org.eclipse.cdt.dsf.gdb.launch.localCLaunch,debug,;org.eclipse.cdt.cdi.launch.localCLaunch,run,; +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.attachLaunchType=org.eclipse.cdt.dsf.gdb.launch.attachCLaunch,debug,; +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.postmortemLaunchType=org.eclipse.cdt.dsf.gdb.launch.coreCLaunch,debug,; +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.remoteApplicationLaunchType=org.eclipse.rse.remotecdt.dsf.debug,debug,; +eclipse.preferences.version=1 +org.eclipse.debug.core.PREF_DELETE_CONFIGS_ON_PROJECT_DELETE=false +prefWatchExpressions=\n\n diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs new file mode 100644 index 0000000..aa9a5d4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs @@ -0,0 +1,15 @@ +StringVariablePreferencePage=184,154,153,122, +eclipse.preferences.version=1 +org.eclipse.debug.ui.MemoryView.orientation=0 +org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\n\n +org.eclipse.debug.ui.save_dirty_editors_before_launch=always +org.eclipse.debug.ui.switch_perspective_on_suspend=always +org.eclipse.debug.ui.user_view_bindings=\n\n \n \n \n\n +pref_state_memento.org.eclipse.debug.ui.BreakpointView=\n\n\n\n\n +pref_state_memento.org.eclipse.debug.ui.DebugVieworg.eclipse.debug.ui.DebugView=\r\n +pref_state_memento.org.eclipse.debug.ui.ExpressionView=\n\n\n\n\n\n +pref_state_memento.org.eclipse.debug.ui.ModuleView=\n +pref_state_memento.org.eclipse.debug.ui.RegisterView=\n\n\n\n\n\n\n\njava.lang.String\n\n\n\n +pref_state_memento.org.eclipse.debug.ui.VariableView=\n\n\n\n\n\n +preferredDetailPanes=NumberFormatPane\:NumberFormatPane|DefaultDetailPane\:DefaultDetailPane| +preferredTargets=org.eclipse.cdt.debug.ui.toggleCBreakpointTarget,org.eclipse.cdt.debug.ui.toggleCDynamicPrintfTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget| diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs new file mode 100644 index 0000000..77840f2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +themeid=org.eclipse.e4.ui.css.theme.e4_dark diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.workbench.renderers.swt.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.workbench.renderers.swt.prefs new file mode 100644 index 0000000..367f4ff --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.workbench.renderers.swt.prefs @@ -0,0 +1,4 @@ +USE_ROUND_TABS=false +eclipse.preferences.version=1 +enableMRU=true +themeEnabled=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jsch.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jsch.core.prefs new file mode 100644 index 0000000..6e37bb1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jsch.core.prefs @@ -0,0 +1,10 @@ +CVSSSH2PreferencePage.PREF_AUTH_METHODS=gssapi-with-mic,publickey,password,keyboard-interactive +CVSSSH2PreferencePage.PREF_AUTH_METHODS_ORDER=gssapi-with-mic,publickey,password,keyboard-interactive +CVSSSH2PreferencePage.PREF_KEX_METHODS=diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521 +CVSSSH2PreferencePage.PREF_KEX_METHODS_ORDER=diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521 +CVSSSH2PreferencePage.PREF_MAC_METHODS=hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96 +CVSSSH2PreferencePage.PREF_MAC_METHODS_ORDER=hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96 +CVSSSH2PreferencePage.PREF_SSHAGENT= +eclipse.preferences.version=1 +org.eclipse.jsch.core.hasChangedDefaultWin32SshHome=true +org.eclipse.jsch.core.hasMigratedSsh2Preferences=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs new file mode 100644 index 0000000..c5f1f83 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs @@ -0,0 +1,21 @@ +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/arch=x86_64 +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/name=Local +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/os=win32 +configDescList=org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task3 Debug,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task3,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task4,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task2,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task1 +eclipse.preferences.version=1 +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:A3_Timer/activeLaunchMode=run +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task1/activeLaunchMode=debug +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task1/activeLaunchTarget=null\:--- +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task2/activeLaunchMode=run +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task2/activeLaunchTarget=null\:--- +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task3/activeLaunchMode=run +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task3/activeLaunchTarget=null\:--- +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task4/activeLaunchMode=run +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task4/activeLaunchTarget=null\:--- +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:task5/activeLaunchTarget=null\:--- +org.eclipse.launchbar.core.descriptorType.default\:task1\ Debug/activeLaunchMode=run +org.eclipse.launchbar.core.descriptorType.default\:task1\ Debug/activeLaunchTarget=org.eclipse.launchbar.core.launchTargetType.local\:Local +org.eclipse.launchbar.core.descriptorType.default\:task2\ Debug/activeLaunchTarget=org.eclipse.launchbar.core.launchTargetType.local\:Local +org.eclipse.launchbar.core.descriptorType.default\:task3\ Debug/activeLaunchTarget=org.eclipse.launchbar.core.launchTargetType.local\:Local +org.eclipse.launchbar.core.descriptorType.default\:task4\ Debug/activeLaunchTarget=org.eclipse.launchbar.core.launchTargetType.local\:Local +org.eclipse.launchbar.core.descriptorType.default\:task5\ Debug/activeLaunchTarget=org.eclipse.launchbar.core.launchTargetType.local\:Local diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ltk.ui.refactoring.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ltk.ui.refactoring.prefs new file mode 100644 index 0000000..895718b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ltk.ui.refactoring.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.ltk.ui.refactoring.do.not.warn.delete.descriptor=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.remote.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.remote.core.prefs new file mode 100644 index 0000000..d41426f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.remote.core.prefs @@ -0,0 +1,2 @@ +connectionTypeId=org.eclipse.remote.JSch +eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs new file mode 100644 index 0000000..5656294 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs new file mode 100644 index 0000000..3434e82 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.team.ui.syncview_default_perspective=org.eclipse.team.ui.sync_view_perspective_none diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs new file mode 100644 index 0000000..2a8d90c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs @@ -0,0 +1,3 @@ +browser-choice=0 +browsers=\r\n\r\n\r\n\r\n\r\n\r\n +eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs new file mode 100644 index 0000000..7299a20 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +printMargin=true +printMarginColumn=90 +removeSpacesAsTabs=true +spacesForTabs=true +spellingEnabled=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs new file mode 100644 index 0000000..8e12a8c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -0,0 +1,6 @@ +IMPORT_FILES_AND_FOLDERS_RELATIVE=true +IMPORT_FILES_AND_FOLDERS_TYPE=23,1 +eclipse.preferences.version=1 +platformState=1772304866304 +quickStart=false +tipsAndTricks=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.monitoring.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.monitoring.prefs new file mode 100644 index 0000000..21d31ee --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.monitoring.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +noninteresting_thread_filter=java.*,org.eclipse.core.internal.jobs.Worker.run,org.eclipse.core.internal.jobs.WorkerPool.sleep,org.eclipse.core.internal.jobs.WorkerPool.startJob,org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run,org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run,org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent,org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run,sun.* diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.navigator.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.navigator.prefs new file mode 100644 index 0000000..e5ee263 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.navigator.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.ui.navigator.ProjectExplorer.filterActivation=\:org.eclipse.ui.navigator.resources.filters.startsWithDot\:org.eclipse.cdt.ui.navigator.filters.AnonymousStructFilter\:org.eclipse.ui.navigator.resources.nested.HideTopLevelProjectIfNested\:org.eclipse.ui.navigator.resources.nested.HideFolderWhenProjectIsShownAsNested\:org.eclipse.cdt.ui.navigator.filters.ForwardDeclarationFilter\: diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs new file mode 100644 index 0000000..bd7d210 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +showIntro=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs new file mode 100644 index 0000000..de508ea --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs @@ -0,0 +1,32 @@ +//org.eclipse.ui.commands/state/com.st.stm32cube.ide.mcu.buildanalyzer.showstate/org.eclipse.ui.commands.radioState=human +//org.eclipse.ui.commands/state/org.eclipse.ui.navigator.resources.nested.changeProjectPresentation/org.eclipse.ui.commands.radioState=false +ColorsAndFontsPreferencePage.expandedCategories=Torg.eclipse.ui.workbenchMisc +ColorsAndFontsPreferencePage.selectedElement=Forg.eclipse.ui.workbench.texteditor.blockSelectionModeFont +PLUGINS_NOT_ACTIVATED_ON_STARTUP= +UIActivities.org.eclipse.cdt.debug.dsfgdbActivity=true +eclipse.preferences.version=1 +editors=\r\n\r\n\r\n\r\n\r\n\r\n +org.eclipse.cdt.debug.ui.ModulesDetailPaneFont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.cdt.internal.ui.compare.AsmMergeViewer=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.cdt.internal.ui.compare.CMergeViewer=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.cdt.make.internal.ui.compare.MakefileMergeViewer=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.cdt.ui.buildconsole.ConsoleFont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.cdt.ui.editors.textfont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.compare.contentmergeviewer.TextMergeViewer=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.debug.ui.DetailPaneFont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.debug.ui.MemoryViewTableFont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.debug.ui.consoleFont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.jface.textfont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +org.eclipse.ui.commands=\r\n\r\n\r\n\r\n\r\n +org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_END=41,41,41 +org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START=43,44,45 +org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_TEXT_COLOR=204,204,204 +org.eclipse.ui.workbench.ACTIVE_TAB_BG_END=41,41,41 +org.eclipse.ui.workbench.ACTIVE_TAB_BG_START=43,44,45 +org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR=221,221,221 +org.eclipse.ui.workbench.INACTIVE_TAB_BG_END=49,53,56 +org.eclipse.ui.workbench.INACTIVE_TAB_BG_START=59,64,66 +org.eclipse.ui.workbench.INACTIVE_TAB_TEXT_COLOR=187,187,187 +org.eclipse.ui.workbench.texteditor.blockSelectionModeFont=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; +resourcetypes=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n +terminal.views.view.font.definition=1|Consolas|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|49|Consolas; diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.urischeme.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.urischeme.prefs new file mode 100644 index 0000000..25d1e72 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.urischeme.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +processedSchemes=,eclipse+mpc,eclipse+command diff --git a/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml new file mode 100644 index 0000000..9f8064e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml @@ -0,0 +1,21 @@ + +
+
+ + + + + + +
+
+ + + +
+
+ + + +
+
diff --git a/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml new file mode 100644 index 0000000..3a04ff5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi new file mode 100644 index 0000000..7d141e6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -0,0 +1,2492 @@ + + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + + + + + + + + topLevel + shellMaximized + + + + + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.cdt.ui.SearchActionSet + persp.actionSet:org.eclipse.cdt.ui.CElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.cdt.ui.CView + persp.viewSC:org.eclipse.ui.views.PropertySheet + persp.viewSC:org.eclipse.ui.views.TaskList + persp.newWizSC:org.eclipse.cdt.ui.wizards.ConvertToMakeWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewMakeFromExisting + persp.newWizSC:org.eclipse.cdt.ui.wizard.project + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFolderCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewClassCreationWizard + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.perspSC:org.eclipse.team.ui.TeamSynchronizingPerspective + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet + persp.actionSet:org.eclipse.cdt.ui.NavigationActionSet + persp.actionSet:org.eclipse.cdt.ui.OpenActionSet + persp.actionSet:org.eclipse.cdt.ui.CodingActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.presentation + persp.showIn:org.eclipse.cdt.ui.includeBrowser + persp.showIn:org.eclipse.cdt.ui.CView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.cdt.ui.includeBrowser + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard + persp.viewSC:org.eclipse.cdt.make.ui.views.MakeView + persp.actionSet:org.eclipse.cdt.make.ui.makeTargetActionSet + persp.showIn:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails + persp.viewSC:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails + persp.viewSC:com.st.stm32cube.ide.mcu.buildanalyzer.view + persp.viewSC:com.st.stm32cube.ide.mcu.stackanalyzer.stackanalyzer.view + persp.viewSC:com.st.stm32cube.ide.mcu.sfrview + + + + View + categoryTag:General + + + View + categoryTag:C/C++ + + + View + categoryTag:General + + + + + + + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + + General + + View + categoryTag:C/C++ + + + View + categoryTag:C/C++ + + + View + categoryTag:General + + + + + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Make + + + + + + + + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.debug.ui.debugActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.debug.ui.DebugView + persp.viewSC:org.eclipse.debug.ui.VariableView + persp.viewSC:org.eclipse.debug.ui.BreakpointView + persp.viewSC:org.eclipse.debug.ui.ExpressionView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.perspSC:org.eclipse.cdt.ui.CPerspective + persp.actionSet:com.st.stm32cube.ide.mcu.debug.dsf.oss.ui.debugActionSet + persp.viewSC:org.eclipse.cdt.debug.ui.SignalsView + persp.viewSC:org.eclipse.debug.ui.RegisterView + persp.viewSC:org.eclipse.debug.ui.ModuleView + persp.viewSC:org.eclipse.debug.ui.MemoryView + persp.viewSC:org.eclipse.cdt.debug.ui.executablesView + persp.actionSet:org.eclipse.cdt.debug.ui.debugActionSet + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard + persp.viewSC:org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser + persp.viewSC:org.eclipse.cdt.dsf.debug.ui.disassembly.view + persp.viewSC:com.st.stm32cube.ide.mcu.buildanalyzer.view + persp.viewSC:org.eclipse.cdt.dsf.gdb.ui.tracecontrol.view + persp.viewSC:org.eclipse.cdt.debug.ui.debuggerConsoleView + persp.viewSC:org.eclipse.cdt.dsf.gdb.ui.debugsources.view + persp.viewSC:com.st.stm32cube.ide.mcu.stackanalyzer.stackanalyzer.view + persp.viewSC:com.st.stm32cube.ide.mcu.livewatch.LiveExpressionsView + persp.viewSC:com.st.stm32cube.ide.mcu.faultanalyzer.view + persp.viewSC:com.st.stm32cube.ide.mcu.sfrview + persp.editorOnboardingImageUri:platform:/plugin/org.eclipse.debug.ui/icons/full/onboarding_debug_persp.png + persp.editorOnboardingText:Go hunt your bugs here. + persp.editorOnboardingCommand:Find Actions$$$Ctrl+3 + persp.editorOnboardingCommand:Step Into$$$F5 + persp.editorOnboardingCommand:Step Over$$$F6 + persp.editorOnboardingCommand:Step Return$$$F7 + persp.editorOnboardingCommand:Resume$$$F8 + + + + org.eclipse.e4.primaryNavigationStack + + View + categoryTag:Debug + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + + + + + + + org.eclipse.e4.secondaryNavigationStack + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + + + Debug + noFocus + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + + + + + + + View + categoryTag:Help + + + View + categoryTag:General + + + View + categoryTag:Help + + + + + + + View + categoryTag:Help + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Help + + + + org.eclipse.e4.primaryDataStack + EditorStack + active + noFocus + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.asm.AsmEditor + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + active + activeOnClose + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:Make + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:C/C++ + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:C/C++ + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Debug + activeOnClose + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + Draggable + + + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + Draggable + + + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + + + + + + + + + + + + + + + + + + + + platform:gtk + + + platform:gtk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + type:user + + + type:user + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + removeOnHide + + + + + View + categoryTag:Device Configuration Tool + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:Debug + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Make + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Help + + + + + View + categoryTag:Connections + + + + + View + categoryTag:General + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:C/C++ + + + View + categoryTag:Debug + + + + + View + categoryTag:Other + + + + glue + move_after:PerspectiveSpacer + SHOW_RESTORE_MENU + + + move_after:Spacer Glue + HIDEABLE + SHOW_RESTORE_MENU + + + glue + move_after:SearchField + SHOW_RESTORE_MENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.egit.core/.org.eclipse.egit.core.cmp/.project b/.metadata/.plugins/org.eclipse.egit.core/.org.eclipse.egit.core.cmp/.project new file mode 100644 index 0000000..2a39e7b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.egit.core/.org.eclipse.egit.core.cmp/.project @@ -0,0 +1,11 @@ + + + .org.eclipse.egit.core.cmp + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/10/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/10/refactorings.history new file mode 100644 index 0000000..6aeb157 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/10/refactorings.history @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/10/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/10/refactorings.index new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.history new file mode 100644 index 0000000..b49d4e7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.history @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.index new file mode 100644 index 0000000..ccd8d99 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2022/3/11/refactorings.index @@ -0,0 +1,5 @@ +1646933066773 Delete 3 resources +1646933069239 Delete resource 'task1/Startup/startup_stm32g431kbtx.s' +1646934207190 Delete 2 resources +1646934725600 Delete 16 resources +1646935029802 Delete 6 resources diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.history new file mode 100644 index 0000000..71922fa --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.index new file mode 100644 index 0000000..469378a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2024/9/39/refactorings.index @@ -0,0 +1 @@ +1727454502375 Delete resource 'task5' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.history new file mode 100644 index 0000000..0a7a1df --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.index new file mode 100644 index 0000000..7c6730d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/7/refactorings.index @@ -0,0 +1,7 @@ +1739176087517 Delete 5 resources +1739176247573 Delete resource 'task3' +1739176305562 Delete resource 'task3' +1739176806264 Delete resource 'task3' +1739176925412 Delete 3 resources +1739176950801 Delete 6 resources +1739188539239 Delete resource 'task3' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.history new file mode 100644 index 0000000..1b6a5bc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.index new file mode 100644 index 0000000..a29cad4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/2/8/refactorings.index @@ -0,0 +1,2 @@ +1739787456621 Rename resource 'A3_Timer' +1739787798364 Delete resource 'task3' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.history new file mode 100644 index 0000000..77495a0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.index new file mode 100644 index 0000000..151420e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task2/2022/3/11/refactorings.index @@ -0,0 +1,2 @@ +1646935073007 Rename resource 'F042_task2.s' +1646935085065 Rename resource 'F042_addr.s' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.history new file mode 100644 index 0000000..15ba38b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.index new file mode 100644 index 0000000..8df6f43 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task3/2025/2/8/refactorings.index @@ -0,0 +1,6 @@ +1739787434729 Rename resource 'A3_Timer_it.c' +1739787446428 Rename resource 'A3_Timer.c' +1739787515548 Rename resource 'A3_Timer.launch' +1739787833797 Rename resource 'task1_it.c' +1739787841183 Rename resource 'task1.c' +1739797632467 Rename resource 'task1.launch' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.history new file mode 100644 index 0000000..28ab6c2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.index new file mode 100644 index 0000000..2ac87fa --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task4/2022/3/11/refactorings.index @@ -0,0 +1,2 @@ +1646935356191 Rename resource 'F042_task4_it.c' +1646935360575 Rename resource 'F042_task4.c' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.history new file mode 100644 index 0000000..0cf08e3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.index new file mode 100644 index 0000000..30c7d12 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/task5/2022/3/11/refactorings.index @@ -0,0 +1,2 @@ +1646935395518 Rename resource 'F042_task5_it.c' +1646935400361 Rename resource 'F042_task5.c' diff --git a/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml new file mode 100644 index 0000000..0bed10e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -0,0 +1,15 @@ + +
+
+ + +
+
+ +
+
+ + + +
+
diff --git a/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/.metadata/.plugins/org.eclipse.search/dialog_settings.xml new file mode 100644 index 0000000..ba45bd2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.search/dialog_settings.xml @@ -0,0 +1,60 @@ + +
+
+ +
+
+ +
+
+ +
+
+ + + + + + + + + + +
+
+ + + + + + +
+ + + + + + + + + + +
+
+ +
+
+
+ +
+
+ + + + + +
+
+ +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml new file mode 100644 index 0000000..e4f30a7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml new file mode 100644 index 0000000..c503e2b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -0,0 +1,35 @@ + +
+
+ + + + + + + + + + + + +
+
+ + + + + + +
+
+
+
+ + +
+
+ + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml new file mode 100644 index 0000000..7c9eb35 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml @@ -0,0 +1,35 @@ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 0000000..c7a5ded --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,42 @@ + +
+
+ + + +
+
+ + + + + +
+
+ + + + + + + + +
+
+
+
+ + + + + + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 0000000..6207b45 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/version.ini b/.metadata/version.ini new file mode 100644 index 0000000..a51422e --- /dev/null +++ b/.metadata/version.ini @@ -0,0 +1,3 @@ +#Mon Mar 09 11:19:41 CET 2026 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.30.0.v20231201-0110 diff --git a/task1/.cproject b/task1/.cproject new file mode 100644 index 0000000..a184a4d --- /dev/null +++ b/task1/.cproject @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task1/.project b/task1/.project new file mode 100644 index 0000000..24b64b7 --- /dev/null +++ b/task1/.project @@ -0,0 +1,31 @@ + + + task1 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + org.eclipse.cdt.core.cnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUManagedMakefileProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/task1/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs b/task1/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs new file mode 100644 index 0000000..9a16796 --- /dev/null +++ b/task1/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}} diff --git a/task1/.settings/language.settings.xml b/task1/.settings/language.settings.xml new file mode 100644 index 0000000..db73c0f --- /dev/null +++ b/task1/.settings/language.settings.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task1/.settings/org.eclipse.core.resources.prefs b/task1/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/task1/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/task1/Debug/Src/subdir.mk b/task1/Debug/Src/subdir.mk new file mode 100644 index 0000000..b942426 --- /dev/null +++ b/task1/Debug/Src/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Src/task1.c \ +../Src/task1_it.c + +OBJS += \ +./Src/task1.o \ +./Src/task1_it.o + +C_DEPS += \ +./Src/task1.d \ +./Src/task1_it.d + + +# Each subdirectory must supply rules for building sources it contributes +Src/%.o Src/%.su Src/%.cyclo: ../Src/%.c Src/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" + +clean: clean-Src + +clean-Src: + -$(RM) ./Src/task1.cyclo ./Src/task1.d ./Src/task1.o ./Src/task1.su ./Src/task1_it.cyclo ./Src/task1_it.d ./Src/task1_it.o ./Src/task1_it.su + +.PHONY: clean-Src + diff --git a/task1/Debug/Src/task1.cyclo b/task1/Debug/Src/task1.cyclo new file mode 100644 index 0000000..80db2d2 --- /dev/null +++ b/task1/Debug/Src/task1.cyclo @@ -0,0 +1,3 @@ +../Src/task1.c:56:5:main 5 +../Src/task1.c:112:13:GPIO_init 1 +../Src/task1.c:135:13:delay 3 diff --git a/task1/Debug/Src/task1.d b/task1/Debug/Src/task1.d new file mode 100644 index 0000000..88b76a7 --- /dev/null +++ b/task1/Debug/Src/task1.d @@ -0,0 +1,11 @@ +Src/task1.o: ../Src/task1.c ../Inc/stm32g431xx.h ../Inc/core_cm4.h \ + ../Inc/cmsis_version.h ../Inc/cmsis_compiler.h ../Inc/cmsis_gcc.h \ + ../Inc/mpu_armv7.h ../Inc/system_stm32g4xx.h ../Inc/STefi-Light.h +../Inc/stm32g431xx.h: +../Inc/core_cm4.h: +../Inc/cmsis_version.h: +../Inc/cmsis_compiler.h: +../Inc/cmsis_gcc.h: +../Inc/mpu_armv7.h: +../Inc/system_stm32g4xx.h: +../Inc/STefi-Light.h: diff --git a/task1/Debug/Src/task1.o b/task1/Debug/Src/task1.o new file mode 100644 index 0000000000000000000000000000000000000000..0fd4c2530fffa1f7bafa8d5abf1cde0191e7dc5a GIT binary patch literal 637260 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%0D1$d02#A8q%BRQC+)IX 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 N`hq|2{yidh{|8+OYTW<; literal 0 HcmV?d00001 diff --git a/task1/Debug/Src/task1.su b/task1/Debug/Src/task1.su new file mode 100644 index 0000000..14847ca --- /dev/null +++ b/task1/Debug/Src/task1.su @@ -0,0 +1,3 @@ +../Src/task1.c:56:5:main 8 static,ignoring_inline_asm +../Src/task1.c:112:13:GPIO_init 4 static +../Src/task1.c:135:13:delay 24 static,ignoring_inline_asm diff --git a/task1/Debug/Src/task1_it.cyclo b/task1/Debug/Src/task1_it.cyclo new file mode 100644 index 0000000..98e7272 --- /dev/null +++ b/task1/Debug/Src/task1_it.cyclo @@ -0,0 +1,2 @@ +../Src/task1_it.c:56:6:ISR_error 1 +../Src/task1_it.c:76:6:ISR_default 1 diff --git a/task1/Debug/Src/task1_it.d b/task1/Debug/Src/task1_it.d new file mode 100644 index 0000000..77538df --- /dev/null +++ b/task1/Debug/Src/task1_it.d @@ -0,0 +1,11 @@ +Src/task1_it.o: ../Src/task1_it.c ../Inc/stm32g431xx.h ../Inc/core_cm4.h \ + ../Inc/cmsis_version.h ../Inc/cmsis_compiler.h ../Inc/cmsis_gcc.h \ + ../Inc/mpu_armv7.h ../Inc/system_stm32g4xx.h ../Inc/STefi-Light.h +../Inc/stm32g431xx.h: +../Inc/core_cm4.h: +../Inc/cmsis_version.h: +../Inc/cmsis_compiler.h: +../Inc/cmsis_gcc.h: +../Inc/mpu_armv7.h: +../Inc/system_stm32g4xx.h: +../Inc/STefi-Light.h: diff --git a/task1/Debug/Src/task1_it.o b/task1/Debug/Src/task1_it.o new file mode 100644 index 0000000000000000000000000000000000000000..21c0e1ec7b0f0d2314cd3a177e7fff6b8958acbb GIT binary patch literal 637952 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≧pP_#v>A^Mzy?zP2xc(J;o*dd&3&7gKdz7 zY6y<8GA>ufgNJ`RI$@)qr2u`Vrvl`Y0$-xY4!2aHbdBr|ND%!d+!1;6YPIuh4Z^)~ zO8`xP3B@Ipc#}t*l)@w_sxapOU5 zyvS{t5bZC+g@oJ7sP5Bz`_1l3GJG}0v#+Q+`c|OBA)sdIa3N~>az^$GRP;=myX5{n zLvBO(9=8=dddk4nWR`&BBb?I<4VKhcI-3V=h%BE->+>iBNfU1)BnP`I0;xeKuQTMj z7uQ|1*SVGB{>eAQ_W8P(R|36=<$TDTnk;Hi$W4RNf) z+GH%n4-MfjJ45)akbs49sEn+Y8XsoipZLp2JEU0nPXY3{3|Lhl@A2X~c~iA`Ye)M~Svdt$|)cM9}aeFaDt3kHbFN)1j=o_)YMjJT3Q=GbR!U+`l%pjzN6o&+VGmyLI)_dj-PPdGG2AdBmq29u%L_7~<#(lf4JTc^un@gKv8h3?)h|*wR)a-IqKIRMzbL<%fl}HzZVav>% zi_zqYa4>j9I@R*n3+ORSi)`kjF*8~zCN;d<;t-VG@L90xh|tiL)PxO(HNe#}r=%CI zYL28^-3Q37f?F8Y4%}2GU!Td{pLw(1uyM}SAfJqlR9nT`I=*&pgj07pnc?z*fT9v+ zV++!Nu8tcnGkDXm2daYQ28hidkxUFXH%ym6CrQz1(F`<+cu1pGj;M4G(9eaCBO|zI z27F52?X=qsK3h}5E6lz#hYxs{$V!v${tvY%h{6sxvv@s79a5O@KXPTp<4GRhg@SYF zN3Sxf?vNb?jGkK%8KCK}3~q9|Tv`qOyE>VB{m$)Bm~CGaYeUD7Udy`4Rb`$)6TLR; zFl0C}cVQ{?y6o8w+RK%gp>42}wN~T$;2Hww64to`E%LFP$yR#m!FQ&%uv0MnUns;zG%EX1rh8kdKIFJ<;%n0+u5szVV#9rRrrwGvzd9 z?htOwLUIru0?Xp5EL2s999)PNCkf|?9^73$1`zHae`5}g=^(#_W0jYd z2A=QEXV%){hy)C00h)(!AQM>xn*nM(=I*?=08snS|HzmbwhBrj_%paIVfStZ=vrzH zxALo(4>v~hufRXh9WVbk7#sHB63Cuhf_oUvSKx=>+<`e2+wYakz{QQ_`|jS|-Gk>C zUOe!M+>7)0e_>xlkKFgbUHkIIGE`+S$$hIxspVJX_B9Z;wqH)|pwKIGZw?UQjMcH) zL3;#-*ZEL2t8hvOhXh2eQklhh(QDFbK;*RTBJ@b)^EVHhQIqX1o!J=JuQ zHJ{KX!751UjwMXe~M-W@}wH$VKPmzW&%FQYLD6r8udN(VV3MSOfPZdIQ3fM)Fl{ zy!8kXqlODAF($~u)VKCNiu1a;bFFlD<9x)Yg7rX@6cCF95lCYd0}^QYApb{dKH#ND zMQBY-^agZz263t;d-rk{YL`JTDF9Uux5kpm2|VCT7R>WcvK);-Wio5`k0`D?cvh;x zjQ?*Kr+g`OtR+c(c5H~UAR}G4o;yVT%-Kst_Hq$|XXKa3#jsXJNIK(Wn9u0<`)cu> z@?Ul$Ygzv;nOTD1(540IW6abVLoY(6;FVu*^1@zj%^1eX)g+z{@UTOl+(Q29 z789BQ2c5vf7Fk|3hG`@^X5?*~{;DDWHaja;AcQ!bXNE>Gt6NZ0E>F7birIs94l*DW z_Xt6DcdLs4{_tjar)lfsM}<8OmUMN_lEI}*=sUz6;>;5O!_){Tnk26=1N;&uG@evR0#yk(>r7f@Qj|N~Xt>Co7DKz|*z5`O5yn9n ziHFK?@9E*CcmiX%2I_bO6M8cyE-_5SIbYs|NkrJEG-|5>!^1dfgsL=FYLKbY;r?Fg z)Nt?H5IUAb+Z&yR^vT4Hp_x^3M4S<#K*Jr=FW==1N?#SRC_O-Zts5U%oYW?ul*aFN zHSUHMhbj)=kwKQq%6g2hF&ZnEQcd;e2{5ROJ|TTX$QI5!cK{;mKnN^Tr!`#!zh106 zJ?N^bESY9c0k4qmDF1G{xsvV44h}8?Go@21>l>FmdNanh>eawK1vGc=)^@R02n zw@eW^6|u@j=hQ8Jvqr^Y6(%~7jRIAf+Arh}Is0(mf@WbobWf2!I|gYiKvf0za28w% zI0D{Xwtt$z{rAf4Tf34 zeen1usj*>^)J*ume1lGVEFWhJQ&VD^CSW!MU78xlQb?PQcjWf$$DJq*wh4|iQJ$Q5 z406a@5MBoCLktDiG+?opxDN+Jf|?l0`c;oXR)bP%&x)^78N!SVPy2}O_W|24ch(dH ze{>G?;niXy*?>{yZq&W9mSyqjaAnVF2vg(1)&o7XEZ=}*;A0jL*-*mrmNnjd9%EDt z#0`Y(RTWGK z>d!M`NwfwJNUb*}tuiFrPDjZHF+x0&h56y|g>J;IE7ms}WGEGuSu%f@!NvPeGt?iC zur&cN9V|%*QBPj3kxsH#u7QxMhge`Q2z~wJjX=ArJ6Io37zh_CJENnVoCtyDvl3Zl*CMuXF} zt88kFjWBQAU|J|$e+6);7W4Kdk;T}=2F_a#AQk6o=yqNMf(>#^#G4?9g^ia*E{hzH zC5+@tEWY!%vR7Gu7R-0xwlYMF8K%>%pWdTLPpcJ*bTlHkMw_0eDZDA3*`OJqDg=1S zp*y^K(l=M*vP%oHgL}c5_G6fuhvKEuz@5f4sL;w)V~rI9{5LSDNbrxm3M@B*h3Dd9 zZvCD@{5KcI49K4;4a^7}x+2!Zzs*^*Sn~S89uD|a@7@|KNAiln=T!^l5f43+iKkIa z6iU1INt2ycL~Kk-DF*vZ9bag+7NX3qjm@k}6w*X$y(6#A0P|#k>B2fzvtWkhlbSKZ z(~J5-+P4l5a&?1eUm3B=2Mf791ITqIoFrDKKeu;V=(q5;Vb4L zl*)_ifSM(BAMTTCi-@9+#?Xd(FwC8T?D%)J?aj3~Q*DWLbkBEs>9*hVouPOOlp`Hk zkD4#oDt6xb71Vc1Y_)ENSve|(skjhDYWcG_YJ9Lo^8Moo-)QzZvAA_95T><2HRQ%+ ztX4#%UWx9_R5n*L)>5_Gc{0yw-j)(J~LKwZZjl=OskA$(JI{&>%n7_Yf{A5s0_fkreW~> zr6$$d@C4rH7>$^SUa0vrxY%gl;$&LoQJRbl;1cm-?4L*Wo-!MqqCEh7VM z+q6dJP=}V#oF^JKsrGS7b#!TnoMD8#2oNF~=iWpwrm2w>MUd51wbZ--?oBNcdvLnp zzc*6<{4zcwK7ZK(n2JOEm_Deu3UAnEhc=pUFxSiivhL? zx8CEOk^!or$l2UHpaOw9ecuBw`Jq{E5*oX$hZl^sJvo|EWA`X zaJccRfL}#TdsN51+%le^E}@#yBpXEmv@OHI9^@qRI5lQqSHeHTEkzB~fbEF0V2xPT zNW`mH73_B{voo35a0))D@#r8Dr}!|%&NeC~7^Cb`axN}EoR4aT$z?&sD$bf+rdW* zuUJpxl|wuL6f5@>$I4)Hv*yC@zHviodf{q1I*HW@Jm#e!D80AhnvRJI3#kcyrOZfj z?nRd2i+senX0434eUBNGE-a!pbpmPGM)-F+jAhbVXkjPAG}^_`>*G!oAnWLFS3B9x z#4binf9Kj-I&t&##A?N+L(7UTs7OHS$;^!d{cv4*V}8X zXvH~MMR~zbm4pY)pz^~H<0!6X}5#i^d@h_c7Jan29 z%T$3vSnY(lMU9w-bSej_YR%yJRKJ`Csl~8x;&9gz`ZlpK!MU@u>VT#KpQ1$jQxg>* zyulrs5TwFhj;c=7gKGe`d={!I)+ZMe)q?5^+9^tpp<23c0W&mt1eJJ?wPF-lu+Ik% zjTexM+B%~q_FOLY0PY29e~5qvnnLTbr3-Xi9jDC30E{7AE1!y7`980lMNo}g3qvB@ znn4uK;Sq>F=COb{FCCH7Wrf2LXO6=yp+1X3GeGs4qGY}*Fvx{>7jj~dN|W?)gyjjh zdF>@aX`vto^MWBgpb*Jdvmr4Xwm*JDnfF*d0e9;k1Jw)3yb0skNL$IwX@lNFS=m+| zMOKz;jB+@m6Sy9<-s~M`RqR*5d|k#mS5WvA6qjL&ra3blIx$;vMAQe#2$wOl8CoYt z0eN96tLu$n8h|-#h%z!ToZ$bs%flVTIm}YOEGyp&SA%{};d)6EOhKQQ-iRu=Izb6l zbuu2kPy?MM(H}8O|107Kp!y_^?#4V^nklA*X-yAF6dE(H8ak?D&{PCcgN{j|cZpGI zIxDhXI}RQe0ZUHQ2yuD)&K(ESIXTk6Mt8;yhBs1c#W6D6)Xp&tCRuQgE;V3ruX7d6 zhG5bzO@SJ?wSCj>&9CMWb5E6qAUA6;g@TJ~AV@RH+rKqiJbZcy89NStn+t9!J8b5y zZy`19PCr9l2621rY0$%M;2X`BBi)pqg@yny_{JO%3U9qobwakgGSTRJH|Brw_O{J! zTv?i+e+t4A6CqEPD+qw3q@AdZAVGjci69{W6s7uta963Tz3Y}|Y`MY{+uOf=pXWK} z+4dYLA(>HypzE%_4`V|jWn zZy6jacgNYLP0Ouap-q!AQj?jrA(Cnn!;u^>-Vhxd$6PKo=jwu4o2!Y!^^2_$`lY?? z>V8FI4MMNxQV(1BE;{#zpXK z<>PK^>1`hRbb;x!M9~(-j?91ZpGcRQf|~usOB(sPX{zB;qv2q^R+_Y$mm44_Btc0= z8tB2~MnE5e|MBs!>;z{a_Bt46)H48&@;Msl!Pt=IDk*C0`t}ww);*kq_9I>IEQlHb z)P_c0C3nE$EEC-RXd4@vp>b>*D9jyOaK(6fDfq!BV7J`VsQDOh57x^lEMO9t(75Y+ zhN!7l-Cg#`8@L0qu?es2^9V}Dah^rD$XAPXb7cptvhAgI2EW9PU&AC-ehLx@ler{b z6+N}C%9D|iql!9QW#3hNU)P|H#d_|phmjqFYK|S$78R?zvWL?fK)s`*9Hu`o{sI2X zZ;>2ob?f|t+ttC`E+rv;A{}Qi)^{j)SpYjm7IrLyaN{m6yP*j z2sXPb-wI*fG2gaP6aE6|g&uAUL#}@F+b0CyN6%u@j5SdQgLk6ab#n2wOD&Em7a`NG z!K!A$)d2J|Zg%WKM29ob9_F^@sP<4jqTL9}*ej&3gHobQKg*Hx@yU3;^IZ!(qm*yN+<`S=DC=hPjk86E) za95u?>2NCT}Q52CU$JtG~Hueci=8jv-Xfe6MgdlO(R zZ`Zzg>kUo4@T+@ITQ#KA`3_h*jh1NIoUR`R?9a4j8g(Cr%I~$fuy`ZpuQed`@YH}ZeeM$eJ^F$~V z%!odaw+`AV;uZs<)iYI} zG+q6fTo(Gs?8(11`nzZTJMl(Q?#bMVfM^MVmerFZZ@(r~@S)k1xxRDySHEN_C z?@$s5`y(2nK&Z{ID#DeN?7us6Nf5Dri#NdM#SmtfdUraOcZWt$Xd!h#!ISmmR->&z zJrL0gs!oSHAUN0roP1UwGMzg_fRj#6!$$U6>Hev0*+bjnr$*5{J+h0<<$T=$tk)4Q zP?5qM15n+ymzt&I@@Sr$Qtbo{n;oyNcNG786*$JE9aZ_V%*gaGb%N7fa`SDrv%Y7p29gf0(|WoxPsDdVO(m_VU$qcJcAsmn)M`TM@h{W3t5DH>rJxnp8%B z>VsmJnh;lujCk`y4+u@#m%Q}7h2A6FtmqM7_o;$MoIZOeM;hd5fc5gYSsv~lZxras z0}GT0bY6;*)9hw=8G0imcAAE(qApS4$hIrgEmg4ah0PFsloY5sd%SAc+8(9{(4V5! zgCo+cm*a+TJ*NIvRmbjSm`mzC+|m(m%V6PYa1?$X%EP z+Z;59B`8#dI0bttpB4Dh<@FOI+O&9_zOZ%9jtJC$M(IgkR-am9+Y2yH7G-D5)x79L z%MIae1{Z>|og2dXJflbNEQBcb>faYiLXM@KqDnmcH8VZ#|y z230*Bp!$&QE>y?{+9Bp~)u(Zp9ngA4!~yP(|9H%$Fvl>dDZWsYO4KT0Rh{df&)j_k z1TKo(r*tC2iuW_uU6=@kd>Z0eBP@!?XCO=<~u{lRWrpw5B1gs%zfpDOa z9uF%0&`nbRoXP&QCHqq&`~88;`neufK2}e6;eI-&*qJ$g*&3?fRRuQ8TtCtvEk4Bq zm@=kUSzfRk+Uruwk*PKPTuKmbkO-k5Rl8fSsEU5NUhPG}@(sPL@RqLFtcpd=472O; zKg@0Dyu$%7_NJfR0aznSt~I`u%|0GFvjk5wkOh9DhVr;bE`OF8mWhe*7+9O){Z`G% zMFpA(TL$ZcvF0eKve~*^&C`wHm|Gq)e5TuR0!>*2L#{s0=^>G^+6RvtsKwh$O*K#` z(!elFOC*6g9zXv2`QxXbzyI+Q2o+Mo{PJ6K!u*1qF#kI;!jPJS?LaUeQk1pGxB+Rd z%AI$>63t0%A!-~P+8m}?svUeCIk$n3ac}85LeK0XX5_11>36zbKo5urB|SGoq;L|W z_S13>efM=h^+5M(z;Z;v6|YK}0}V@A0(tm7dERaO^2r!;oom|ZQ?@N68A4pJp;D77 z=GE1DV5s}ZoGBdxq1NLj1TvdpCG-bQEW(5ETW157;~X~8hl48x3j-wvkU~?Nk3zpe z)VLx4uGbAoQ)X{%Vv9tAqa_>|xr@`awz2NPnua>n2*tsRO}ymo15ys(Ew4~zdwINGAxf6%1x4A{hdXen z>xCJ>WDrN8ylbtq*~fXQ*9`fHOeBX;&FyJc9KL5PBAKk2oDnKmAZEllCCk?;apCXX zsC@18(4v_V0nfX9*#oHhX1fX>Tr4hPkNH&{up6s9hX@crt%g8rg6DvOIHD_CA_$YT zN=OIHJKPx!YZ)+gBjb$Zq!9aua!t)Nr7L~KNx+_^b@s(}=$C4t&E$?IMZEHUv@lyL z&g;Diiq55rlKt#FULWU;p%;7XHiiCO$2cT=(xK{E7`&1><_@vyM#MYR$(Y}=r_Yag?#P0=z8XzNb!o^Y+_E%Q*R<){kD`?*sVCYyZrW9V?$RG9oC0N<* zx6_NApBqFAeEgrkeEj+I?Z;0afBNq8k3WF~Mig`fjfFs0s6XgD{KzSC7s>V%DX2bl z7RX<_g!B2C6I7@z?OM}U1}uL6EF2k}-9UnU8!I=9!rQNJ${s-&N20w*87QF2S*=z@jWT>0YgoDJE17PZydsr*XszV&)o#YHNOM$-e%(ca)p zehFJgh-Rb~0cNauPAs)ZP+7NKy0)kqGo_KOykr+|YhUD;q!pwOLoU&vqvrHsw1K9Q zU08W1nfdn=GntMmPWK6x(9XU2E2Z4m+#-o+I&~)+W@c>8TrA6Wv3uN3LACV*>YUyP zWUDvQOfS(ncbCgP8+{A2Z<@zB^rJT+6hk$K3+-tmOgOwCXS*c=zkG?^&C=vJWD`*C zt$L+rIa|b1gY>Kkkh+jeceraNSh7!T(w%aed{Kuj^h&NG9P^xuBjO9U@`sdR<-{ z3a@SYu)r<{ZT4?wMUM};h}YHzQ|zRS5pqeOAd}ztXPwJGi&!KzL!5#8W*~}aI)@h` zoiOaTKG0qB1LJxSJZz_oLtCh5^_AEf|Lya|FdesUk_Rvin{Lq?hBkwA<0&)h>gi$8;O-t~Q(`Qg1sjn*T#;C}INaI3u8oZx zbT_dJ(~>6JMQm<$EjLs)6pD(PEpLSav&BHD%w8seC_l7(@W{MG^@c6< zaFwc2Vk^oehhst*rQI=s$c`wms4O-%hv<5WEKbloi^^P079<$s(Rm!S(kpaYfnXtc zEbX}Zg|@qONfNHrK#N&7%TLad=Z2I0!_^ii`QF79pQWLJrM6QyvT*6zZx=&N`Q0ic zXbZhxzIV1U9N<>>p@?yhIEz-XdBuKy+?uJJdmFzsK=YX2fQ-^(e!qN>n~|L4+nd(f zq6`rN2u#%aW;pjrl7R$q=S&di)o!8MDSEI9(x}4&k##gC`9fbKa!?|j{T%`hnk&Ig zoQFiYTC?P)U;g;%pTGZG=G1dDXIoJv^l=X#DQ0Q8zF$sYQh9audel`^x)X>V1OHK} ze@q*N#iQB`LxOCAjVw+bcAfpxemi;b@4QsC9A0PB2{4-UZ4E{wL6ZSBpf*#U3hC*= z?A4JB38}ioywjg&{bsp4;T2n@(-RTB#rxQDx`K!4{@hi`~AK zEjE%t+l7{_QDQKb5zLNWN!K3!huI4bNsbPxKXxhe+{mGh{3WTC&6Wo;->>#16*f)I8TRbk>1CRax$cWh6(gNl2uh> z%vnKXQMa?=Ie7230eBrqgF$W`S6Wmj0Vv0|-(Jq)(5B6HeYoN_hOFiZDm~F7CRDZ3 z%6dz>X?y1@TD;Y>xtLRBB6A7$u0h}TN~Nh)nu$W9V#VPaxZw=S9w;hrK8Qu*h9L%s zyxwGHskAS`DaE;-lIPq)MG*kQGZg_doW?knNc~!GY9WY#T7|qR8ZZ@3NQNym&2+v5 z7LgAo3H;>0eKXO8B+3$b@P4`4AD1gI1l%7lBw1@)AquCi&$tr@GOi_`7%>XIsUuvX z2digB*p3QWp>r6c%}h>l%sSRUPYN}-V>1{62_NE?-K!a2H;y1e=$aLS?IO5C8Ruot zsVoF-K!Yq}!CyGgdf|LL)da;|v(ru)EQVV|`%A2dD70mw%V-_9Yct2|RUCj%r@I!XSxFb_=jr6Yx&eEdU2tq$g5cA{q3@XDK8zDBtyy$)m9??bYWNBap|(`Ml!EeMD&b^ zVh|!bA~&|veL9OQSJ%=vq^ank-c8I9@;9l{&-7BHD5r|d;t0=HhUo>NXorvc;}yg$ zaRk(<=G`%C_KL}|ac=0V>xL6@%Bh!N_nq`8H54w5@HD&{EBb*^gG>9u7N$38eD23M)Amnu-2wGLQW2U1C@PfKR6%~rMhK!NiXlaB zOT2WN$T!fB7V{PQBt%2DT}}Xfo`lwH{_+%V8+SlGpfS5;D-@Ajp`h5XsxIcvU&|+& zm+F6L5TGCM&x|V&LVrMFt)h3M^!$8*j|Qs@BTZqO@q1*tTD|zd<@m>+KHhx%r(gaC zO}mP@z@6Z>IK7;ZUG~vP^FqeyhH6n(Km@A7O>#|~Z#grwRGK-5qKy?!!z_f^h_vaj zyDhb1{gcVI<4}EzM=r$+Y+6-957Z;JJQCpM?s39Z%d6Sj`C3?c%guptsE1om02(oI z+A9U5*23x-E!72!<2&kgmf-2jDRQrtlg;!J^&%o`eZ!GcN@!>C7#2Wz@d{VJMJM-f zU&$B^VM`Zv7gFfvcAQ~WP1BX{s2$%@q?&L5EFoS!w9HPik+Ebs?t(KCFQ0^mtuSh&kY9y;`q4Nl1YD=$n6#R+UjWWT$i#nkCN{Ph-D(+BnCtvyLiNsQe#q}+664+p< zp5V+=?<yUwmPWU+Sv^dzgX$|}^c0j!;oxSB^zqbfeOYf`B zA`%FU*(Oq(mdkRmq&+viJJMh!je5POw!sa^cz9aIb+ z&_#zrR~{j_v2?q53Rs`aF4utcFLb_Cy;Lb4RMe&T6o>7{cf6JQV^rV(-s%V!i|S*M z?%2S=KA~tj3lt&b?0%36?QDhKL~zi%y4EK>@BN;-DZzUnRYChwVYk_woYVET^` zq3dt5>}S{;Jc5`c9zRM?&>R$^P6X_R7;yOumHss*+}$kzw+#y&G3(RYuApeD*OB3) zkV5^KZ^q=0E!{+bHCp2YX%_{CW#%~?(2;wZRN^P{ob(~;Z5u62ujYcMLMPJ1s<#}w zX3p7tcR!6QeJh9)ir8#smnP7K_~W9fu?rrrrTQ_a*@ZzX_0ZgJ;I;kio;due&)XDu zxVJjZ@Tth!0uJZC=5PVKelz*ENdbOX-rqky=R3E%C5TaKa((}_4AI6AQxhg|Y0O*E zDrzUyeN-kfBp*21#A1(&K5U>7Q?Q8?0`}K7kX+oJk!NJPW+evy;~PjG>BXd1GU`FG z+54G@T`10SCxe}oV4u37(=D_LL8i%l_8YE+X>duZL8LaE#QGb0DUV6(lK}4+>f9Ok zQ4A?<3%$Nj?9J}#BsCXI&E*yA4$i=7y-&)VH~S_03eO-78dbC74?Q_QSWbafKRRV3siZS+S zf4jPRg1il5EI<=DRecr1p{lmJ=Ig3#R)tDFKdr_jr3%x>%HdY}qeQ;fzfk%QZ zWQD3VM!SB#cb#fsYF_Xs*R)%_7N+K8Rrk+iNpODk_qxY0qfOGcN-TEyoNsyiTmtJM zO>l{d@$_I~$UrsW(y@hQ4gWsge{iK>x}%vrA~ydXV*md5_Gt}oqKB&oGcC|uy13sl zKFm#~?cOzxuW68mLA&T`*=tV05b;qof@ z8ipkCNYO+ft9FBr8` zzFli&!+~dTMDfCe!V=<4O`UE5p=FB!YLJg^W7!V~EIrHhnkM3lnGhuva58?lhTydk z4jOU>>cx@ILU}M(N{_=sZI_xy+ahMp*k3i)4VYoD1>KPt*oX=*HxT%h;JshXUJW6R zqX!d&K4b@-C}W8^i}+|XAf~0*0fFjWDhypYtpv3B0*??%%nkB#(Yzg;8M%ZCQ*+qw zR_h~j3?Na&-OMcrhBtp5(zS33_TZ^5Ng@xAW=!Jt`~6<4qElC9_KW zLJQLrwgg~cdmn)HkoF{LsbmhG8h#{Zj~liE^?;BfWLaR%2Wc6@d}!A?cj}xeAm#G_I*c0$w=cr8&nbb_&a>KS1_A-`3E7Adwb;Fl6gvrE7z+>XmJjk<3Ihc&maHt z<1a84aJ6PHjW|GO4hH>g-8#wAP+*#hN{mdbKKpeE`Dl5wk|5m^Nndx1W#SRTG3YIZ zmJoXcP}enb2f5Q|xm1g!Gd;}C7EIkgyrq`0hp5VMwIWw94hVTJ&$~_1qp^f>5&_TM zb?sf`M)QOvS&yFa-$ypKnMm?bJ7I2g0?!^EEW+BHWF+H)SI#ji;84o=kBr5 zCVDvJ0lJ^if(0iO`0_S^G`f#&NU4mhXs}1z@2)pNiLnjD0LWn$3d7l)j=1Cgv<0kh z8^+#Xl@MCEZ(Nu78*Umyig3(1|ZLc=ObI5$1_n#(;4xw3iL2tA{O@g zcC&a=tWZgzrfCD_flVo;?5`=-5?o&rbd5NS+U%Uzb`p~WGj`~vce2OZqZp(4> zlM+rE{;rw&W@81}K-COXZZk(c1$g)keTld$vNvQ?SH7>;1%gC?9RkVr*M?h37JLtk zG|+>Xek;_zgm>{Uk3|F113H9OMWp&-_(xipnoDE#e&%Yd_lP@%f{KRi$w`Pt-t-q3 z0-=Mpm8AP1%3vbBYe=QxZz8Qun}T5mA*|uusgy|x8~|4*Ih`avcZcaD{Z>aDgJY#Y zNqaic0rfK2?GKyz?Dl*<{qHK?MlPJ z{jMKKItxxEK?1=0@(M-gcz7s$+D~=NyH?w?d{-;zCc* zPJz`iVNZvzNPXNo zc|9u5>ZRNmG%zxPn((4saM@8RGM`B~79(Ui0xII#$7%5jz>~eKQ>6od)N7sW5~^aF zj&iBj`MzHrP{GpngxuzMY~}6E7_Q)KOyk;shF|eCRPhy4mbgj{lE_sNIVml7%>PY^ z36ye2Mi$B&tOstLqu_~I^6DK7@%Q<&V<}fu9OLy(*chpj97_N`ebW|$IpdpUa+b`5 z$SfG4H*SS)ZZ)d_zd;rvCeNcqBj z25M%?qTfi*)OeJl2{LMR7KCELjpg&xwqF-+qzcm~g!@AHGEHg{Q+lW#5qT)lRvsLhA`{63fu}-7 zO9^v96hUk^%iXk^z<8xDYa{oCMewPKj6|GQu+NCQo3m#rZrARrPx-v#9K)uVbI%N+ zdI(jPYLO+nx1rY*g;8%X)L#uP!aV zwbCoN1{9H?@TOgu(afTPCZ0s4H?d^#Kml!R99?oSxq&&-cyb-~J69 zi`Meg!TnL(i2I|V6S#kV;ytfU+@D?m#cJ+@Gw!!U2hG;M+imtwhYlrc-Ez4^ukQS-EjlTZxsy76`vMwtvd)DYsF`*qCH7Sc^9$6 zFcl=*21HG*^H7>A79EAJd{x{KIsm7KEJmPTM|&b*YCgth&SyQJxx|^!-l_FsN4Hi6 z>-9Ru$!Da9;Mthl!1Y+5F1iU7^^-G(Elka|fn*$5+`l=0MW@^0Ev?j$tSo*LS+Q37 z7?~=H&l1_nk035!FO9y8HyfLjGLz$TQqZ1>P~_H)ddDZ@dp%s=3cAA>qd?JE%<6M) zST|yE(*624#3F?#g~7KN2B^=pidhSr@N^>%h80qHgn$ZcoEZ*m_Xg&ZYomax)&X&k zMMm*!y_6@^G|b38)0VDjL3*P_)!kjaTS|1M55gA3e2-U9TI`=u(r<qc*cUlX42vcEBOt5xFh>*?TP_V zpBtf^@CF#YTR-7~h}Qs(E5TbGh1J!R+DL{1odPemi3u@O-5+Rp%~I4b`wW;B5t?rP zI-rJ<$<@4fH|~IXfRpNa%vUWUZXmWSpgK&q3Yi0&Vt2DH4jdGz9J%hPL8%U7E#?iN zUI#f!;g&)46ZP*|1hLwqOoAYzY=R)8jDiw%c7%WC+N&93vizWVJ&tolb&wJEjXMBq zI9crsdsGgn>g>KsPHP0NM-=nQ{;08Idy9;ohH*R&#cT^z)*|(^)_r)()Bj38;E(e!nY+Vgt1_@ zzmza|`@G%3rqblB;WDd0r@_=cb7+MYV)5cH-%S4Ul}Vm7y0Z|0qx`tk*06Qky}w;8 zj=S9|GGx>nYNdVWj^LxnqQKM*A)Lc|2*~*7>TqRVIO&F7$^k^yeAPMXNLUNB>2Fkh zNXy<{>$QRHP@kNNnf5Y`*+TCmIpf_XoCuXy6kCQm&OW$)!OxAb9XbTtq$qYEK)a<6 zlUzwhLy@TGAUmMO%lWjAISi$hguB)`v}Joso;VIf`|jv#e|b5CdjVS zp2V6gpW_VLg$)Ns1<#_2SGJnrLQvm;NmT>i^nvtss+Ib#4HmvN&Z^kuOX*kSi|{T= z%>`xIxW6As2GyenZPa z6S)$)yjxr`A+sjNzuUv~(Tb(v)QOkMk&alJmwIKZONp6weY+9hwu#=`%pFck@tRPK zIq=d6_dY8}*E_HM2=ZawcMc-mBjBcU2n zs*UNSz0?xwgr$1qE;raAyAb9qbx0(zlq=f-HPKLnVccEqZXynY=@cqan7m+`l|CSq z`Rx^uTKwF=lHBayHC}E=+r~X=esC48*@)vtM*w%_B0nGE_$5w(#CQGhP0B(6Aw`>T z-!{{WJ4c+UEJkK$A+A*J1{WUvx8}qTG0q9X5s{p)yH=YdoLm}5n6nrb#|&F-h&Z&Z z(v2HMVv8Zz&n{opfa^ne=4Kcir3V632Kp<$u%dM}yKrg$2S82Da>Vc5A@s$(7z&f> zJsNML$F>HYIleHlY-)Wmrx1o~>} zU*aJS7=A?8dxYS5luf;*71eQXE6nLF^bm3>WC<0*;l1PUgI(2Ud9YCU82M*{1v2+# zX1zG0+mxjM?S#A8mxVikHSdmdncJRjtkaaSKHpPsip(TIIJz66FHu&UIO&M^Ok!VJ zSY342Fu;LRd%!PWaX7Gw0reqe{a!+1xl(VqTe0&~AuhRqf@DT;*06=Xx?g-E$^aTc z#$KF))#JSdAI+YC8$#(sg^-grG857daftrX6cv#$N8%jY*b4hF9Rh%Kj}~$Xzh@nz ze5Z_z+`#PkCxoaigXG3X$Qk{32 zHHOcVjr5AN<8qNLadtS^?`fMv0LzAvzj3MQ=TSkToT5nK{%mfjRcv_@pwXFwM!;a| zji0ZmC#q>9>&h{ZX9Hsh^FNQ2YY7@adWDMHq1-i+GBt)y`#^>2k>DAi|I}!aU|Q@z zSm|c&(KsW*YIwa~@7V$Mb}>-w{7>Kg<>U1)KYI;suu7&M^y6+alJ63&N^$c%I(uJk zyiAH1eNrI+nk}jpJ4&*96~6bCy5N>3b$@q5UPiU z1p6hi9mHVzMt`BSrt^Fw*?XMaRppMo=Qli{9?6*!93FIJ^`|DY?h{6-^*X2?YI7oQ z5KuUU+1gH_o=YBNDk2SAV$3ZCks^zO=6l8UEPoE1@_MVH%AyXJA4_D>+)x?|xq@2_GGJ2sfnbzf;WCh?&L_h@HQH8P zS-yvHV2Mhu51{TWOn~xHTkc*RsnzN=hp+gm%k#dLJ z8PP?pi#a=3MZ%R)B!BlhwN)@B$$koaO<@{e2og&Xd( z8<(D4c5WdWrn=KQM%A5cJ8iUyZ=alG8$vOIIjypy&UwuWI3C&erNBPH(u{G6cGGhg z@cc?}ZTac|DN!doMB?m7;%c*>q1q%-k!|E43vCmPF{47)wm8D%dktFDuHc?Bi5fzE zYaO63G{qTkDejp*K!>R)=aFrh!(%Uf`G#=4js#owIj9)$TQx83rNQ`90;V+O_Ca?X z<#QFHSH*FL)0KMVFQ7&QjnjVQrAdid?HB!>uly4YP+y>+D09$m3C3!B(jXLIJv2nx ztk*btx9%7?czN|k*{m>+Ad^%GcuwvsFWPQtxUa;cN1g@tTVA{Pizt~|`>o3uk0ik4 znA>II(Urrd0W|_j)x-l!mQq)Jv~pE@Tm@cibg0U7@aj$8OY9!_pPGGA2>~*Jn$>Nk z*O<<=825ZfH6WYn5>2zeUoN5G$!IKYsms2(LArSAAv;%HWZbDka}jOy`vs;B0Gr*F zY6_;op+v(}Ds#rzWj2MY*#Py1L;_z8{dtN%huRte_Ye*68PjEw-D=s5>8=n+=Shv9Qb0#B}k3Qe!pY7fy4DZ9DB6LNI6mC4Cr=} z2#>r_h^Q#bp~}wvk(w%`Jt!5~%E!i9=$j!U(!OR=;_YuTwOK2@BJH!O*HX0&ITcea zhbbHg7zh~~(;g>IS%v9!LQ@Jz;jbwI``br`a6MLKEL2G;n(lCZ=%97z$N=M-%~xUO zZf@Cjx?{R3fu3PaHU_n>Fmu>9+=Cn{dg*Pndue95v8I(l$A9YYR9|-rc)CrsC+At-=WI zS$b3&KRX7iTS`5ilFeNlntQemVP^)#+rM$u;4Hadd6m1jkfZbk8Qj!4!$Sy>@gP6H zp3cn%3V-dso~HF;1fZ_Cu*U>4A^7pPVASG7ZOF}c|JRQ{k+u@THFFMiyp7h5D2^rq zWQ^R)YE$Q#l-am}SxT8*hbodBamJp5xLm4lu~(>7Of|XfQZ4d3Qr#J&Kg?cGd{CXv zWQYbZ(4TJ?mZZ${gh6JY++a&Y!c8oI0TV-5Rlm4UhivO%<3V&#m4g-^48Yz8DDc-i zJO%B}`s!gBj(Of`Dfm0M9*q4+i%!WMVeDkoxEpPvhq*rbWKpgx9}Ed<6BgADXiJhCj*i&Yy?hWECOwAp|nYRLXAN+`o z>=QZGLXX-2El4?BVf^5?)!OHnY2!2W3lAGRXX=Aujhl%low)g~DeKLJfnF~H5=jZg zrC@8wlYT;NvY%MS#6Dl`9^>o{i zFOQje-QLG(&HQFbXQYJ6C!#kut-F)*gw(RS1s7WYS8VR3)d5f=Bq5E(Nbk~6(L6-)CHF10+M;b~r# zOG!CXftnoSNEC~5cn?;byIyWAIyY4?*f9-ocMrEDE3~y|%tuNu5>ln^7+ZF?c?YDL zF0^F_c^tKxex?UN_1F$H_R-^w$GTab6rqtQhz#@1!|u-rOAR~Dw9P{eIj0WQ6@
PSsQP;hwwf-`#< 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 clMO?}C+{V2;!jnA5uXuw$@E-r*Q^uMb$mew? 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 XAf{jVcimWrLkoia{p%*KjH&y7>i?23 literal 0 HcmV?d00001 diff --git a/task1/Debug/Src/task1_it.su b/task1/Debug/Src/task1_it.su new file mode 100644 index 0000000..e608c86 --- /dev/null +++ b/task1/Debug/Src/task1_it.su @@ -0,0 +1,2 @@ +../Src/task1_it.c:56:6:ISR_error 4 static +../Src/task1_it.c:76:6:ISR_default 4 static diff --git a/task1/Debug/Startup/startup_stm32g431kbtx.d b/task1/Debug/Startup/startup_stm32g431kbtx.d new file mode 100644 index 0000000..11b27a3 --- /dev/null +++ b/task1/Debug/Startup/startup_stm32g431kbtx.d @@ -0,0 +1 @@ +Startup/startup_stm32g431kbtx.o: ../Startup/startup_stm32g431kbtx.s diff --git a/task1/Debug/Startup/startup_stm32g431kbtx.o b/task1/Debug/Startup/startup_stm32g431kbtx.o new file mode 100644 index 0000000000000000000000000000000000000000..c80d4e0333ece4ebc315abc3fa641fa235b7413f GIT binary patch literal 2540 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 literal 0 HcmV?d00001 diff --git a/task1/Debug/Startup/syscalls.su b/task1/Debug/Startup/syscalls.su new file mode 100644 index 0000000..db376b7 --- /dev/null +++ b/task1/Debug/Startup/syscalls.su @@ -0,0 +1,18 @@ +../Startup/syscalls.c:44:6:initialise_monitor_handles 4 static +../Startup/syscalls.c:48:5:_getpid 4 static +../Startup/syscalls.c:53:5:_kill 16 static +../Startup/syscalls.c:61:6:_exit 16 static +../Startup/syscalls.c:67:27:_read 32 static +../Startup/syscalls.c:80:27:_write 32 static +../Startup/syscalls.c:92:5:_close 16 static +../Startup/syscalls.c:99:5:_fstat 16 static +../Startup/syscalls.c:106:5:_isatty 16 static +../Startup/syscalls.c:112:5:_lseek 24 static +../Startup/syscalls.c:120:5:_open 12 static +../Startup/syscalls.c:128:5:_wait 16 static +../Startup/syscalls.c:135:5:_unlink 16 static +../Startup/syscalls.c:142:5:_times 16 static +../Startup/syscalls.c:148:5:_stat 16 static +../Startup/syscalls.c:155:5:_link 16 static +../Startup/syscalls.c:163:5:_fork 8 static +../Startup/syscalls.c:169:5:_execve 24 static diff --git a/task1/Debug/Startup/sysmem.cyclo b/task1/Debug/Startup/sysmem.cyclo new file mode 100644 index 0000000..4092bc6 --- /dev/null +++ b/task1/Debug/Startup/sysmem.cyclo @@ -0,0 +1 @@ +../Startup/sysmem.c:53:7:_sbrk 3 diff --git a/task1/Debug/Startup/sysmem.d b/task1/Debug/Startup/sysmem.d new file mode 100644 index 0000000..17ffda1 --- /dev/null +++ b/task1/Debug/Startup/sysmem.d @@ -0,0 +1 @@ +Startup/sysmem.o: ../Startup/sysmem.c diff --git a/task1/Debug/Startup/sysmem.o b/task1/Debug/Startup/sysmem.o new file mode 100644 index 0000000000000000000000000000000000000000..c167de85d3d3c6942b093e9d72e663d88c5d8ce1 GIT binary patch literal 47856 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 literal 0 HcmV?d00001 diff --git a/task1/Debug/Startup/sysmem.su b/task1/Debug/Startup/sysmem.su new file mode 100644 index 0000000..718d300 --- /dev/null +++ b/task1/Debug/Startup/sysmem.su @@ -0,0 +1 @@ +../Startup/sysmem.c:53:7:_sbrk 32 static diff --git a/task1/Debug/makefile b/task1/Debug/makefile new file mode 100644 index 0000000..257e591 --- /dev/null +++ b/task1/Debug/makefile @@ -0,0 +1,93 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Startup/subdir.mk +-include Src/subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +OPTIONAL_TOOL_DEPS := \ +$(wildcard ../makefile.defs) \ +$(wildcard ../makefile.init) \ +$(wildcard ../makefile.targets) \ + + +BUILD_ARTIFACT_NAME := task1 +BUILD_ARTIFACT_EXTENSION := elf +BUILD_ARTIFACT_PREFIX := +BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),) + +# Add inputs and outputs from these tool invocations to the build variables +EXECUTABLES += \ +task1.elf \ + +MAP_FILES += \ +task1.map \ + +SIZE_OUTPUT += \ +default.size.stdout \ + +OBJDUMP_LIST += \ +task1.list \ + + +# All Target +all: main-build + +# Main-build Target +main-build: task1.elf secondary-outputs + +# Tool invocations +task1.elf task1.map: $(OBJS) $(USER_OBJS) /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "task1.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"/home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group + @echo 'Finished building target: $@' + @echo ' ' + +default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-size $(EXECUTABLES) + @echo 'Finished building: $@' + @echo ' ' + +task1.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "task1.list" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) default.size.stdout task1.elf task1.list task1.map + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) + +fail-specified-linker-script-missing: + @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' + @exit 2 + +warn-no-linker-script-specified: + @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' + +.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified + +-include ../makefile.targets diff --git a/task1/Debug/objects.list b/task1/Debug/objects.list new file mode 100644 index 0000000..5a6acde --- /dev/null +++ b/task1/Debug/objects.list @@ -0,0 +1,5 @@ +"./Src/task1.o" +"./Src/task1_it.o" +"./Startup/startup_stm32g431kbtx.o" +"./Startup/syscalls.o" +"./Startup/sysmem.o" diff --git a/task1/Debug/objects.mk b/task1/Debug/objects.mk new file mode 100644 index 0000000..94e86f7 --- /dev/null +++ b/task1/Debug/objects.mk @@ -0,0 +1,9 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/task1/Debug/sources.mk b/task1/Debug/sources.mk new file mode 100644 index 0000000..d8710ab --- /dev/null +++ b/task1/Debug/sources.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +CYCLO_FILES := +SIZE_OUTPUT := +OBJDUMP_LIST := +SU_FILES := +EXECUTABLES := +OBJS := +MAP_FILES := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Src \ +Startup \ + diff --git a/task1/Debug/task1.elf b/task1/Debug/task1.elf new file mode 100755 index 0000000000000000000000000000000000000000..dc3cd374cce2590346700aea961fad2630b3ec12 GIT binary patch literal 550896 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

N!+zzN&6cUx;5*_w|ABx_Y7??%{?y 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 z

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 z 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

$WD3SeoSP;1$sCWu6@z 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

Ji2doA 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 HnZiqAeu;deZ{IUhHoK0# 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 literal 0 HcmV?d00001 diff --git a/task1/Debug/task1.list b/task1/Debug/task1.list new file mode 100644 index 0000000..0ce510d --- /dev/null +++ b/task1/Debug/task1.list @@ -0,0 +1,501 @@ + +task1.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 000001d8 08000000 08000000 00001000 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00000298 080001d8 080001d8 000011d8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 00000000 08000470 08000478 00001478 2**0 + CONTENTS, ALLOC, LOAD, DATA + 3 .ARM.extab 00000000 08000470 08000470 00001478 2**0 + CONTENTS + 4 .ARM 00000000 08000470 08000470 00001478 2**0 + CONTENTS + 5 .preinit_array 00000000 08000470 08000478 00001478 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 08000470 08000470 00001470 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08000474 08000474 00001474 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 00000000 20000000 20000000 00001478 2**0 + CONTENTS, ALLOC, LOAD, DATA + 9 .ccmsram 00000000 10000000 10000000 00001478 2**0 + CONTENTS + 10 .bss 00000020 20000000 20000000 00002000 2**2 + ALLOC + 11 ._user_heap_stack 00000600 20000020 20000020 00002000 2**0 + ALLOC + 12 .ARM.attributes 00000030 00000000 00000000 00001478 2**0 + CONTENTS, READONLY + 13 .debug_info 000007b3 00000000 00000000 000014a8 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_abbrev 00000279 00000000 00000000 00001c5b 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_aranges 00000078 00000000 00000000 00001ed8 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_rnglists 00000039 00000000 00000000 00001f50 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_macro 00013740 00000000 00000000 00001f89 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_line 00000953 00000000 00000000 000156c9 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .debug_str 0006f80d 00000000 00000000 0001601c 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 20 .comment 00000043 00000000 00000000 00085829 2**0 + CONTENTS, READONLY + 21 .debug_frame 000000e0 00000000 00000000 0008586c 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 22 .debug_line_str 0000007a 00000000 00000000 0008594c 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +080001d8 <__do_global_dtors_aux>: + 80001d8: b510 push {r4, lr} + 80001da: 4c05 ldr r4, [pc, #20] @ (80001f0 <__do_global_dtors_aux+0x18>) + 80001dc: 7823 ldrb r3, [r4, #0] + 80001de: b933 cbnz r3, 80001ee <__do_global_dtors_aux+0x16> + 80001e0: 4b04 ldr r3, [pc, #16] @ (80001f4 <__do_global_dtors_aux+0x1c>) + 80001e2: b113 cbz r3, 80001ea <__do_global_dtors_aux+0x12> + 80001e4: 4804 ldr r0, [pc, #16] @ (80001f8 <__do_global_dtors_aux+0x20>) + 80001e6: f3af 8000 nop.w + 80001ea: 2301 movs r3, #1 + 80001ec: 7023 strb r3, [r4, #0] + 80001ee: bd10 pop {r4, pc} + 80001f0: 20000000 .word 0x20000000 + 80001f4: 00000000 .word 0x00000000 + 80001f8: 08000458 .word 0x08000458 + +080001fc : + 80001fc: b508 push {r3, lr} + 80001fe: 4b03 ldr r3, [pc, #12] @ (800020c ) + 8000200: b11b cbz r3, 800020a + 8000202: 4903 ldr r1, [pc, #12] @ (8000210 ) + 8000204: 4803 ldr r0, [pc, #12] @ (8000214 ) + 8000206: f3af 8000 nop.w + 800020a: bd08 pop {r3, pc} + 800020c: 00000000 .word 0x00000000 + 8000210: 20000004 .word 0x20000004 + 8000214: 08000458 .word 0x08000458 + +08000218
: +static void delay(const uint16_t ms); + + +/* ------------------------------------ M A I N --------------------------------------- */ +int main(void) +{ + 8000218: b580 push {r7, lr} + 800021a: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 800021c: b672 cpsid i +} + 800021e: bf00 nop + /* --- initialization --- */ + __disable_irq(); // disable interrupts globally + + GPIO_init(); + 8000220: f000 f83a bl 8000298 + __ASM volatile ("cpsie i" : : : "memory"); + 8000224: b662 cpsie i +} + 8000226: bf00 nop + /* --- infinite processing loop --- */ + while (1) + { + /* ... add your code to implement the lab assignment ... */ + + switch (state) { + 8000228: 4b1a ldr r3, [pc, #104] @ (8000294 ) + 800022a: 681b ldr r3, [r3, #0] + 800022c: 2b02 cmp r3, #2 + 800022e: d01e beq.n 800026e + 8000230: 2b02 cmp r3, #2 + 8000232: dc2c bgt.n 800028e + 8000234: 2b00 cmp r3, #0 + 8000236: d002 beq.n 800023e + 8000238: 2b01 cmp r3, #1 + 800023a: d00e beq.n 800025a + GPIOA->ODR |= (1 << 0); // LED0 off + delay(WAITTIME); // wait + state = 0; + break; + default: + break; + 800023c: e027 b.n 800028e + GPIOA->ODR &= ~(1 << 0); // LED0 on + 800023e: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 8000242: 695b ldr r3, [r3, #20] + 8000244: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 8000248: f023 0301 bic.w r3, r3, #1 + 800024c: 6153 str r3, [r2, #20] + state++; + 800024e: 4b11 ldr r3, [pc, #68] @ (8000294 ) + 8000250: 681b ldr r3, [r3, #0] + 8000252: 3301 adds r3, #1 + 8000254: 4a0f ldr r2, [pc, #60] @ (8000294 ) + 8000256: 6013 str r3, [r2, #0] + break; + 8000258: e01a b.n 8000290 + delay(WAITTIME); // wait + 800025a: f44f 70fa mov.w r0, #500 @ 0x1f4 + 800025e: f000 f843 bl 80002e8 + state++; + 8000262: 4b0c ldr r3, [pc, #48] @ (8000294 ) + 8000264: 681b ldr r3, [r3, #0] + 8000266: 3301 adds r3, #1 + 8000268: 4a0a ldr r2, [pc, #40] @ (8000294 ) + 800026a: 6013 str r3, [r2, #0] + break; + 800026c: e010 b.n 8000290 + GPIOA->ODR |= (1 << 0); // LED0 off + 800026e: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 8000272: 695b ldr r3, [r3, #20] + 8000274: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 8000278: f043 0301 orr.w r3, r3, #1 + 800027c: 6153 str r3, [r2, #20] + delay(WAITTIME); // wait + 800027e: f44f 70fa mov.w r0, #500 @ 0x1f4 + 8000282: f000 f831 bl 80002e8 + state = 0; + 8000286: 4b03 ldr r3, [pc, #12] @ (8000294 ) + 8000288: 2200 movs r2, #0 + 800028a: 601a str r2, [r3, #0] + break; + 800028c: e000 b.n 8000290 + break; + 800028e: bf00 nop + switch (state) { + 8000290: e7ca b.n 8000228 + 8000292: bf00 nop + 8000294: 2000001c .word 0x2000001c + +08000298 : + * requires: - nothing - + * parameters: - none - + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void GPIO_init(void) +{ + 8000298: b480 push {r7} + 800029a: af00 add r7, sp, #0 + /* enable port clocks */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // LEDs: A + 800029c: 4b11 ldr r3, [pc, #68] @ (80002e4 ) + 800029e: 6cdb ldr r3, [r3, #76] @ 0x4c + 80002a0: 4a10 ldr r2, [pc, #64] @ (80002e4 ) + 80002a2: f043 0301 orr.w r3, r3, #1 + 80002a6: 64d3 str r3, [r2, #76] @ 0x4c + + + /* --- LEDs --- */ + GPIOA->ODR |= MASK_LED_RED; + 80002a8: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 80002ac: 695b ldr r3, [r3, #20] + 80002ae: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 80002b2: f043 0301 orr.w r3, r3, #1 + 80002b6: 6153 str r3, [r2, #20] + //GPIOA->ODR |= MASK_LED_YELLOW; + GPIOA->MODER &= ~(3 << 0); + 80002b8: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 80002bc: 681b ldr r3, [r3, #0] + 80002be: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 80002c2: f023 0303 bic.w r3, r3, #3 + 80002c6: 6013 str r3, [r2, #0] + GPIOA->MODER |= (1 << 0); // set LED pin to output + 80002c8: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 80002cc: 681b ldr r3, [r3, #0] + 80002ce: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 80002d2: f043 0301 orr.w r3, r3, #1 + 80002d6: 6013 str r3, [r2, #0] +} + 80002d8: bf00 nop + 80002da: 46bd mov sp, r7 + 80002dc: f85d 7b04 ldr.w r7, [sp], #4 + 80002e0: 4770 bx lr + 80002e2: bf00 nop + 80002e4: 40021000 .word 0x40021000 + +080002e8 : + * requires: - nothing - + * parameters: ms - delay time in milliseconds + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void delay(const uint16_t ms) +{ + 80002e8: b480 push {r7} + 80002ea: b085 sub sp, #20 + 80002ec: af00 add r7, sp, #0 + 80002ee: 4603 mov r3, r0 + 80002f0: 80fb strh r3, [r7, #6] + for (uint16_t i = 0; i < ms; ++i) + 80002f2: 2300 movs r3, #0 + 80002f4: 81fb strh r3, [r7, #14] + 80002f6: e00e b.n 8000316 + { + for (uint16_t j = 0; j < LOOPS_PER_MS; ++j) + 80002f8: 2300 movs r3, #0 + 80002fa: 81bb strh r3, [r7, #12] + 80002fc: e003 b.n 8000306 + { + __asm("NOP"); + 80002fe: bf00 nop + for (uint16_t j = 0; j < LOOPS_PER_MS; ++j) + 8000300: 89bb ldrh r3, [r7, #12] + 8000302: 3301 adds r3, #1 + 8000304: 81bb strh r3, [r7, #12] + 8000306: 89bb ldrh r3, [r7, #12] + 8000308: f240 42db movw r2, #1243 @ 0x4db + 800030c: 4293 cmp r3, r2 + 800030e: d9f6 bls.n 80002fe + for (uint16_t i = 0; i < ms; ++i) + 8000310: 89fb ldrh r3, [r7, #14] + 8000312: 3301 adds r3, #1 + 8000314: 81fb strh r3, [r7, #14] + 8000316: 89fa ldrh r2, [r7, #14] + 8000318: 88fb ldrh r3, [r7, #6] + 800031a: 429a cmp r2, r3 + 800031c: d3ec bcc.n 80002f8 + } + } +} + 800031e: bf00 nop + 8000320: bf00 nop + 8000322: 3714 adds r7, #20 + 8000324: 46bd mov sp, r7 + 8000326: f85d 7b04 ldr.w r7, [sp], #4 + 800032a: 4770 bx lr + +0800032c : + * + * Default interrupt handler for core interrupts. + * Enables the green and red LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_error(void) +{ + 800032c: b480 push {r7} + 800032e: af00 add r7, sp, #0 + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + 8000330: 4b10 ldr r3, [pc, #64] @ (8000374 ) + 8000332: 6cdb ldr r3, [r3, #76] @ 0x4c + 8000334: 4a0f ldr r2, [pc, #60] @ (8000374 ) + 8000336: f043 0301 orr.w r3, r3, #1 + 800033a: 64d3 str r3, [r2, #76] @ 0x4c + GPIOA->ODR |= MASK_LED_ALL; + 800033c: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 8000340: 695b ldr r3, [r3, #20] + 8000342: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 8000346: f043 030f orr.w r3, r3, #15 + 800034a: 6153 str r3, [r2, #20] + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x11; + 800034c: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 8000350: 681b ldr r3, [r3, #0] + 8000352: f023 03ff bic.w r3, r3, #255 @ 0xff + 8000356: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 800035a: f043 0311 orr.w r3, r3, #17 + 800035e: 6013 str r3, [r2, #0] + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~(MASK_LED_GREEN | MASK_LED_RED); + 8000360: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 8000364: 695b ldr r3, [r3, #20] + 8000366: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 800036a: f023 0305 bic.w r3, r3, #5 + 800036e: 6153 str r3, [r2, #20] + 8000370: e7f6 b.n 8000360 + 8000372: bf00 nop + 8000374: 40021000 .word 0x40021000 + +08000378 : + * + * Default interrupt handler for non-core interrupts. + * Enables the blue and yellow LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_default(void) +{ + 8000378: b480 push {r7} + 800037a: af00 add r7, sp, #0 + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + 800037c: 4b10 ldr r3, [pc, #64] @ (80003c0 ) + 800037e: 6cdb ldr r3, [r3, #76] @ 0x4c + 8000380: 4a0f ldr r2, [pc, #60] @ (80003c0 ) + 8000382: f043 0301 orr.w r3, r3, #1 + 8000386: 64d3 str r3, [r2, #76] @ 0x4c + GPIOA->ODR |= MASK_LED_ALL; + 8000388: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 800038c: 695b ldr r3, [r3, #20] + 800038e: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 8000392: f043 030f orr.w r3, r3, #15 + 8000396: 6153 str r3, [r2, #20] + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x44; + 8000398: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 800039c: 681b ldr r3, [r3, #0] + 800039e: f023 03ff bic.w r3, r3, #255 @ 0xff + 80003a2: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 80003a6: f043 0344 orr.w r3, r3, #68 @ 0x44 + 80003aa: 6013 str r3, [r2, #0] + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~(MASK_LED_BLUE | MASK_LED_YELLOW); + 80003ac: f04f 4390 mov.w r3, #1207959552 @ 0x48000000 + 80003b0: 695b ldr r3, [r3, #20] + 80003b2: f04f 4290 mov.w r2, #1207959552 @ 0x48000000 + 80003b6: f023 030a bic.w r3, r3, #10 + 80003ba: 6153 str r3, [r2, #20] + 80003bc: e7f6 b.n 80003ac + 80003be: bf00 nop + 80003c0: 40021000 .word 0x40021000 + +080003c4 : + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + 80003c4: 480c ldr r0, [pc, #48] @ (80003f8 ) + mov sp, r0 /* set stack pointer */ + 80003c6: 4685 mov sp, r0 +/* Call the clock system initialization function.*/ +// bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 80003c8: 480c ldr r0, [pc, #48] @ (80003fc ) + ldr r1, =_edata + 80003ca: 490d ldr r1, [pc, #52] @ (8000400 ) + ldr r2, =_sidata + 80003cc: 4a0d ldr r2, [pc, #52] @ (8000404 ) + movs r3, #0 + 80003ce: 2300 movs r3, #0 + b LoopCopyDataInit + 80003d0: e002 b.n 80003d8 + +080003d2 : + +CopyDataInit: + ldr r4, [r2, r3] + 80003d2: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 80003d4: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 80003d6: 3304 adds r3, #4 + +080003d8 : + +LoopCopyDataInit: + adds r4, r0, r3 + 80003d8: 18c4 adds r4, r0, r3 + cmp r4, r1 + 80003da: 428c cmp r4, r1 + bcc CopyDataInit + 80003dc: d3f9 bcc.n 80003d2 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 80003de: 4a0a ldr r2, [pc, #40] @ (8000408 ) + ldr r4, =_ebss + 80003e0: 4c0a ldr r4, [pc, #40] @ (800040c ) + movs r3, #0 + 80003e2: 2300 movs r3, #0 + b LoopFillZerobss + 80003e4: e001 b.n 80003ea + +080003e6 : + +FillZerobss: + str r3, [r2] + 80003e6: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 80003e8: 3204 adds r2, #4 + +080003ea : + +LoopFillZerobss: + cmp r2, r4 + 80003ea: 42a2 cmp r2, r4 + bcc FillZerobss + 80003ec: d3fb bcc.n 80003e6 + +/* Call static constructors */ + bl __libc_init_array + 80003ee: f000 f80f bl 8000410 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 80003f2: f7ff ff11 bl 8000218
+ +080003f6 : + +LoopForever: + b LoopForever + 80003f6: e7fe b.n 80003f6 + ldr r0, =_estack + 80003f8: 20008000 .word 0x20008000 + ldr r0, =_sdata + 80003fc: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000400: 20000000 .word 0x20000000 + ldr r2, =_sidata + 8000404: 08000478 .word 0x08000478 + ldr r2, =_sbss + 8000408: 20000000 .word 0x20000000 + ldr r4, =_ebss + 800040c: 20000020 .word 0x20000020 + +08000410 <__libc_init_array>: + 8000410: b570 push {r4, r5, r6, lr} + 8000412: 4d0d ldr r5, [pc, #52] @ (8000448 <__libc_init_array+0x38>) + 8000414: 4c0d ldr r4, [pc, #52] @ (800044c <__libc_init_array+0x3c>) + 8000416: 1b64 subs r4, r4, r5 + 8000418: 10a4 asrs r4, r4, #2 + 800041a: 2600 movs r6, #0 + 800041c: 42a6 cmp r6, r4 + 800041e: d109 bne.n 8000434 <__libc_init_array+0x24> + 8000420: 4d0b ldr r5, [pc, #44] @ (8000450 <__libc_init_array+0x40>) + 8000422: 4c0c ldr r4, [pc, #48] @ (8000454 <__libc_init_array+0x44>) + 8000424: f000 f818 bl 8000458 <_init> + 8000428: 1b64 subs r4, r4, r5 + 800042a: 10a4 asrs r4, r4, #2 + 800042c: 2600 movs r6, #0 + 800042e: 42a6 cmp r6, r4 + 8000430: d105 bne.n 800043e <__libc_init_array+0x2e> + 8000432: bd70 pop {r4, r5, r6, pc} + 8000434: f855 3b04 ldr.w r3, [r5], #4 + 8000438: 4798 blx r3 + 800043a: 3601 adds r6, #1 + 800043c: e7ee b.n 800041c <__libc_init_array+0xc> + 800043e: f855 3b04 ldr.w r3, [r5], #4 + 8000442: 4798 blx r3 + 8000444: 3601 adds r6, #1 + 8000446: e7f2 b.n 800042e <__libc_init_array+0x1e> + 8000448: 08000470 .word 0x08000470 + 800044c: 08000470 .word 0x08000470 + 8000450: 08000470 .word 0x08000470 + 8000454: 08000474 .word 0x08000474 + +08000458 <_init>: + 8000458: b5f8 push {r3, r4, r5, r6, r7, lr} + 800045a: bf00 nop + 800045c: bcf8 pop {r3, r4, r5, r6, r7} + 800045e: bc08 pop {r3} + 8000460: 469e mov lr, r3 + 8000462: 4770 bx lr + +08000464 <_fini>: + 8000464: b5f8 push {r3, r4, r5, r6, r7, lr} + 8000466: bf00 nop + 8000468: bcf8 pop {r3, r4, r5, r6, r7} + 800046a: bc08 pop {r3} + 800046c: 469e mov lr, r3 + 800046e: 4770 bx lr diff --git a/task1/Debug/task1.map b/task1/Debug/task1.map new file mode 100644 index 0000000..bcfcdc4 --- /dev/null +++ b/task1/Debug/task1.map @@ -0,0 +1,825 @@ +Archive member included to satisfy reference by file (symbol) + +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o (exit) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fwalk.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) (__sread) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o (memset) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) (_close_r) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) (errno) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-impure.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) (_impure_ptr) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lseekr.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-readr.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) (_read_r) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-writer.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) (_write_r) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-errno.o) + ./Startup/syscalls.o (__errno) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o (__libc_init_array) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) (_free_r) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) (__malloc_lock) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-sbrkr.o) + /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) + +Discarded input sections + + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + .data 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .rodata 0x00000000 0x24 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .text 0x00000000 0x7c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o + .ARM.extab 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o + .ARM.exidx 0x00000000 0x10 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o + .ARM.attributes + 0x00000000 0x20 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .group 0x00000000 0xc ./Src/task1.o + .text 0x00000000 0x0 ./Src/task1.o + .data 0x00000000 0x0 ./Src/task1.o + .bss 0x00000000 0x0 ./Src/task1.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .group 0x00000000 0xc ./Src/task1_it.o + .text 0x00000000 0x0 ./Src/task1_it.o + .data 0x00000000 0x0 ./Src/task1_it.o + .bss 0x00000000 0x0 ./Src/task1_it.o + .debug_macro 0x00000000 0xac0 ./Src/task1_it.o + .debug_macro 0x00000000 0x28 ./Src/task1_it.o + .debug_macro 0x00000000 0x22 ./Src/task1_it.o + .debug_macro 0x00000000 0x8e ./Src/task1_it.o + .debug_macro 0x00000000 0x51 ./Src/task1_it.o + .debug_macro 0x00000000 0x103 ./Src/task1_it.o + .debug_macro 0x00000000 0x6a ./Src/task1_it.o + .debug_macro 0x00000000 0x1df ./Src/task1_it.o + .debug_macro 0x00000000 0x1c ./Src/task1_it.o + .debug_macro 0x00000000 0x22 ./Src/task1_it.o + .debug_macro 0x00000000 0xfb ./Src/task1_it.o + .debug_macro 0x00000000 0x1011 ./Src/task1_it.o + .debug_macro 0x00000000 0x11f ./Src/task1_it.o + .debug_macro 0x00000000 0x11396 ./Src/task1_it.o + .debug_macro 0x00000000 0x70 ./Src/task1_it.o + .text 0x00000000 0x14 ./Startup/startup_stm32g431kbtx.o + .data 0x00000000 0x0 ./Startup/startup_stm32g431kbtx.o + .bss 0x00000000 0x0 ./Startup/startup_stm32g431kbtx.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/syscalls.o + .text 0x00000000 0x0 ./Startup/syscalls.o + .data 0x00000000 0x0 ./Startup/syscalls.o + .bss 0x00000000 0x0 ./Startup/syscalls.o + .bss.__env 0x00000000 0x4 ./Startup/syscalls.o + .data.environ 0x00000000 0x4 ./Startup/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xe ./Startup/syscalls.o + .text._getpid 0x00000000 0x10 ./Startup/syscalls.o + .text._kill 0x00000000 0x20 ./Startup/syscalls.o + .text._exit 0x00000000 0x16 ./Startup/syscalls.o + .text._read 0x00000000 0x3a ./Startup/syscalls.o + .text._write 0x00000000 0x38 ./Startup/syscalls.o + .text._close 0x00000000 0x18 ./Startup/syscalls.o + .text._fstat 0x00000000 0x20 ./Startup/syscalls.o + .text._isatty 0x00000000 0x16 ./Startup/syscalls.o + .text._lseek 0x00000000 0x1a ./Startup/syscalls.o + .text._open 0x00000000 0x1c ./Startup/syscalls.o + .text._wait 0x00000000 0x1e ./Startup/syscalls.o + .text._unlink 0x00000000 0x1e ./Startup/syscalls.o + .text._times 0x00000000 0x18 ./Startup/syscalls.o + .text._stat 0x00000000 0x20 ./Startup/syscalls.o + .text._link 0x00000000 0x20 ./Startup/syscalls.o + .text._fork 0x00000000 0x16 ./Startup/syscalls.o + .text._execve 0x00000000 0x22 ./Startup/syscalls.o + .debug_info 0x00000000 0x6a3 ./Startup/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Startup/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Startup/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Startup/syscalls.o + .debug_macro 0x00000000 0x274 ./Startup/syscalls.o + .debug_macro 0x00000000 0xac0 ./Startup/syscalls.o + .debug_macro 0x00000000 0x22 ./Startup/syscalls.o + .debug_macro 0x00000000 0x5b ./Startup/syscalls.o + .debug_macro 0x00000000 0x2a ./Startup/syscalls.o + .debug_macro 0x00000000 0x94 ./Startup/syscalls.o + .debug_macro 0x00000000 0x43 ./Startup/syscalls.o + .debug_macro 0x00000000 0x34 ./Startup/syscalls.o + .debug_macro 0x00000000 0x57 ./Startup/syscalls.o + .debug_macro 0x00000000 0x189 ./Startup/syscalls.o + .debug_macro 0x00000000 0x369 ./Startup/syscalls.o + .debug_macro 0x00000000 0x16 ./Startup/syscalls.o + .debug_macro 0x00000000 0x43 ./Startup/syscalls.o + .debug_macro 0x00000000 0x34 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x58 ./Startup/syscalls.o + .debug_macro 0x00000000 0x8e ./Startup/syscalls.o + .debug_macro 0x00000000 0x1c ./Startup/syscalls.o + .debug_macro 0x00000000 0x177 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x35 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x6a ./Startup/syscalls.o + .debug_macro 0x00000000 0x1c ./Startup/syscalls.o + .debug_macro 0x00000000 0x52 ./Startup/syscalls.o + .debug_macro 0x00000000 0x22 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x52 ./Startup/syscalls.o + .debug_macro 0x00000000 0xcf ./Startup/syscalls.o + .debug_macro 0x00000000 0x1c ./Startup/syscalls.o + .debug_macro 0x00000000 0x3d ./Startup/syscalls.o + .debug_macro 0x00000000 0x35 ./Startup/syscalls.o + .debug_macro 0x00000000 0x12c ./Startup/syscalls.o + .debug_macro 0x00000000 0x16 ./Startup/syscalls.o + .debug_macro 0x00000000 0x16 ./Startup/syscalls.o + .debug_macro 0x00000000 0x29 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x242 ./Startup/syscalls.o + .debug_macro 0x00000000 0x1c ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x10 ./Startup/syscalls.o + .debug_macro 0x00000000 0x16 ./Startup/syscalls.o + .debug_macro 0x00000000 0x146 ./Startup/syscalls.o + .debug_macro 0x00000000 0x103 ./Startup/syscalls.o + .debug_macro 0x00000000 0x1df ./Startup/syscalls.o + .debug_macro 0x00000000 0x18a ./Startup/syscalls.o + .debug_macro 0x00000000 0x16 ./Startup/syscalls.o + .debug_macro 0x00000000 0xce ./Startup/syscalls.o + .debug_line 0x00000000 0x7e6 ./Startup/syscalls.o + .debug_str 0x00000000 0x98e2 ./Startup/syscalls.o + .comment 0x00000000 0x44 ./Startup/syscalls.o + .debug_frame 0x00000000 0x2ac ./Startup/syscalls.o + .ARM.attributes + 0x00000000 0x34 ./Startup/syscalls.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .group 0x00000000 0xc ./Startup/sysmem.o + .text 0x00000000 0x0 ./Startup/sysmem.o + .data 0x00000000 0x0 ./Startup/sysmem.o + .bss 0x00000000 0x0 ./Startup/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Startup/sysmem.o + .text._sbrk 0x00000000 0x6c ./Startup/sysmem.o + .debug_info 0x00000000 0x168 ./Startup/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Startup/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Startup/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Startup/sysmem.o + .debug_macro 0x00000000 0xff ./Startup/sysmem.o + .debug_macro 0x00000000 0xac0 ./Startup/sysmem.o + .debug_macro 0x00000000 0x10 ./Startup/sysmem.o + .debug_macro 0x00000000 0x22 ./Startup/sysmem.o + .debug_macro 0x00000000 0x5b ./Startup/sysmem.o + .debug_macro 0x00000000 0x2a ./Startup/sysmem.o + .debug_macro 0x00000000 0x94 ./Startup/sysmem.o + .debug_macro 0x00000000 0x43 ./Startup/sysmem.o + .debug_macro 0x00000000 0x34 ./Startup/sysmem.o + .debug_macro 0x00000000 0x189 ./Startup/sysmem.o + .debug_macro 0x00000000 0x16 ./Startup/sysmem.o + .debug_macro 0x00000000 0x43 ./Startup/sysmem.o + .debug_macro 0x00000000 0x57 ./Startup/sysmem.o + .debug_macro 0x00000000 0x34 ./Startup/sysmem.o + .debug_macro 0x00000000 0x10 ./Startup/sysmem.o + .debug_macro 0x00000000 0x58 ./Startup/sysmem.o + .debug_macro 0x00000000 0x8e ./Startup/sysmem.o + .debug_macro 0x00000000 0x1c ./Startup/sysmem.o + .debug_macro 0x00000000 0x177 ./Startup/sysmem.o + .debug_macro 0x00000000 0x23c ./Startup/sysmem.o + .debug_macro 0x00000000 0x103 ./Startup/sysmem.o + .debug_macro 0x00000000 0x6a ./Startup/sysmem.o + .debug_macro 0x00000000 0x1df ./Startup/sysmem.o + .debug_line 0x00000000 0x4b7 ./Startup/sysmem.o + .debug_str 0x00000000 0x60fa ./Startup/sysmem.o + .comment 0x00000000 0x44 ./Startup/sysmem.o + .debug_frame 0x00000000 0x34 ./Startup/sysmem.o + .ARM.attributes + 0x00000000 0x34 ./Startup/sysmem.o + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + .text.memset 0x00000000 0x10 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00000000 0x20 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xac /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x94 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-freer.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x108 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtend.o + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtend.o + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtend.o + .rodata 0x00000000 0x24 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtend.o + .eh_frame 0x00000000 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtend.o + .ARM.attributes + 0x00000000 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtend.o + .text 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + .data 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + .bss 0x00000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + +Memory Configuration + +Name Origin Length Attributes +CCMSRAM 0x10000000 0x00002800 xrw +RAM 0x20000000 0x00008000 xrw +FLASH 0x08000000 0x00020000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o +LOAD ./Src/task1.o +LOAD ./Src/task1_it.o +LOAD ./Startup/startup_stm32g431kbtx.o +LOAD ./Startup/syscalls.o +LOAD ./Startup/sysmem.o +START GROUP +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libm.a +END GROUP +START GROUP +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/libgcc.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a +END GROUP +START GROUP +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/libgcc.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libnosys.a +END GROUP +START GROUP +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/libgcc.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libnosys.a +END GROUP +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtend.o +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + 0x20008000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x1d8 + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x1d8 ./Src/task1_it.o + 0x08000000 paIsrFunc + 0x080001d8 . = ALIGN (0x4) + +.text 0x080001d8 0x298 + 0x080001d8 . = ALIGN (0x4) + *(.text) + .text 0x080001d8 0x40 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + *(.text*) + .text.main 0x08000218 0x80 ./Src/task1.o + 0x08000218 main + .text.GPIO_init + 0x08000298 0x50 ./Src/task1.o + .text.delay 0x080002e8 0x44 ./Src/task1.o + .text.ISR_error + 0x0800032c 0x4c ./Src/task1_it.o + 0x0800032c ISR_error + .text.ISR_default + 0x08000378 0x4c ./Src/task1_it.o + 0x08000378 ISR_default + .text.Reset_Handler + 0x080003c4 0x4c ./Startup/startup_stm32g431kbtx.o + 0x080003c4 Reset_Handler + .text.__libc_init_array + 0x08000410 0x48 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + 0x08000410 __libc_init_array + *(.glue_7) + .glue_7 0x08000458 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08000458 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08000458 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + *(.init) + .init 0x08000458 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + 0x08000458 _init + .init 0x0800045c 0x8 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + *(.fini) + .fini 0x08000464 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + 0x08000464 _fini + .fini 0x08000468 0x8 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o + 0x08000470 . = ALIGN (0x4) + 0x08000470 _etext = . + +.vfp11_veneer 0x08000470 0x0 + .vfp11_veneer 0x08000470 0x0 linker stubs + +.v4_bx 0x08000470 0x0 + .v4_bx 0x08000470 0x0 linker stubs + +.iplt 0x08000470 0x0 + .iplt 0x08000470 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + +.rodata 0x08000470 0x0 + 0x08000470 . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + 0x08000470 . = ALIGN (0x4) + +.ARM.extab 0x08000470 0x0 + 0x08000470 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08000470 . = ALIGN (0x4) + +.ARM 0x08000470 0x0 + 0x08000470 . = ALIGN (0x4) + 0x08000470 __exidx_start = . + *(.ARM.exidx*) + 0x08000470 __exidx_end = . + 0x08000470 . = ALIGN (0x4) + +.preinit_array 0x08000470 0x0 + 0x08000470 . = ALIGN (0x4) + 0x08000470 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x08000470 PROVIDE (__preinit_array_end = .) + 0x08000470 . = ALIGN (0x4) + +.init_array 0x08000470 0x4 + 0x08000470 . = ALIGN (0x4) + 0x08000470 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x08000470 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + 0x08000474 PROVIDE (__init_array_end = .) + 0x08000474 . = ALIGN (0x4) + +.fini_array 0x08000474 0x4 + 0x08000474 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08000474 0x4 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08000478 . = ALIGN (0x4) + 0x08000478 _sidata = LOADADDR (.data) + +.rel.dyn 0x08000478 0x0 + .rel.iplt 0x08000478 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + +.data 0x20000000 0x0 load address 0x08000478 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + *(.RamFunc) + *(.RamFunc*) + 0x20000000 . = ALIGN (0x4) + 0x20000000 _edata = . + 0x08000478 _siccmsram = LOADADDR (.ccmsram) + +.igot.plt 0x20000000 0x0 load address 0x08000478 + .igot.plt 0x20000000 0x0 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + +.ccmsram 0x10000000 0x0 load address 0x08000478 + 0x10000000 . = ALIGN (0x4) + 0x10000000 _sccmsram = . + *(.ccmsram) + *(.ccmsram*) + 0x10000000 . = ALIGN (0x4) + 0x10000000 _eccmsram = . + 0x10000000 . = ALIGN (0x4) + +.bss 0x20000000 0x20 + 0x20000000 _sbss = . + 0x20000000 __bss_start__ = _sbss + *(.bss) + .bss 0x20000000 0x1c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + *(.bss*) + .bss.state 0x2000001c 0x4 ./Src/task1.o + 0x2000001c state + *(COMMON) + 0x20000020 . = ALIGN (0x4) + 0x20000020 _ebss = . + 0x20000020 __bss_end__ = _ebss + +._user_heap_stack + 0x20000020 0x600 + 0x20000020 . = ALIGN (0x8) + [!provide] PROVIDE (end = .) + 0x20000020 PROVIDE (_end = .) + 0x20000220 . = (. + _Min_Heap_Size) + *fill* 0x20000020 0x200 + 0x20000620 . = (. + _Min_Stack_Size) + *fill* 0x20000220 0x400 + 0x20000620 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x30 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x22 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crti.o + .ARM.attributes + 0x00000022 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .ARM.attributes + 0x00000056 0x34 ./Src/task1.o + .ARM.attributes + 0x0000008a 0x34 ./Src/task1_it.o + .ARM.attributes + 0x000000be 0x21 ./Startup/startup_stm32g431kbtx.o + .ARM.attributes + 0x000000df 0x34 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x00000113 0x22 /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/crtn.o +OUTPUT(task1.elf elf32-littlearm) +LOAD linker stubs +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libm.a +LOAD /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v7e-m+fp/hard/libgcc.a + +.debug_info 0x00000000 0x7b3 + .debug_info 0x00000000 0x3f7 ./Src/task1.o + .debug_info 0x000003f7 0x38b ./Src/task1_it.o + .debug_info 0x00000782 0x31 ./Startup/startup_stm32g431kbtx.o + +.debug_abbrev 0x00000000 0x279 + .debug_abbrev 0x00000000 0x156 ./Src/task1.o + .debug_abbrev 0x00000156 0xfd ./Src/task1_it.o + .debug_abbrev 0x00000253 0x26 ./Startup/startup_stm32g431kbtx.o + +.debug_aranges 0x00000000 0x78 + .debug_aranges + 0x00000000 0x30 ./Src/task1.o + .debug_aranges + 0x00000030 0x28 ./Src/task1_it.o + .debug_aranges + 0x00000058 0x20 ./Startup/startup_stm32g431kbtx.o + +.debug_rnglists + 0x00000000 0x39 + .debug_rnglists + 0x00000000 0x20 ./Src/task1.o + .debug_rnglists + 0x00000020 0x19 ./Src/task1_it.o + +.debug_macro 0x00000000 0x13740 + .debug_macro 0x00000000 0xd4 ./Src/task1.o + .debug_macro 0x000000d4 0xac0 ./Src/task1.o + .debug_macro 0x00000b94 0x28 ./Src/task1.o + .debug_macro 0x00000bbc 0x22 ./Src/task1.o + .debug_macro 0x00000bde 0x8e ./Src/task1.o + .debug_macro 0x00000c6c 0x51 ./Src/task1.o + .debug_macro 0x00000cbd 0x103 ./Src/task1.o + .debug_macro 0x00000dc0 0x6a ./Src/task1.o + .debug_macro 0x00000e2a 0x1df ./Src/task1.o + .debug_macro 0x00001009 0x1c ./Src/task1.o + .debug_macro 0x00001025 0x22 ./Src/task1.o + .debug_macro 0x00001047 0xfb ./Src/task1.o + .debug_macro 0x00001142 0x1011 ./Src/task1.o + .debug_macro 0x00002153 0x11f ./Src/task1.o + .debug_macro 0x00002272 0x11396 ./Src/task1.o + .debug_macro 0x00013608 0x70 ./Src/task1.o + .debug_macro 0x00013678 0xc8 ./Src/task1_it.o + +.debug_line 0x00000000 0x953 + .debug_line 0x00000000 0x4a4 ./Src/task1.o + .debug_line 0x000004a4 0x445 ./Src/task1_it.o + .debug_line 0x000008e9 0x6a ./Startup/startup_stm32g431kbtx.o + +.debug_str 0x00000000 0x6f80d + .debug_str 0x00000000 0x6f794 ./Src/task1.o + 0x6f930 (size before relaxing) + .debug_str 0x0006f794 0x48 ./Src/task1_it.o + 0x6f900 (size before relaxing) + .debug_str 0x0006f7dc 0x31 ./Startup/startup_stm32g431kbtx.o + 0x96 (size before relaxing) + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Src/task1.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Src/task1_it.o + +.debug_frame 0x00000000 0xe0 + .debug_frame 0x00000000 0x74 ./Src/task1.o + .debug_frame 0x00000074 0x40 ./Src/task1_it.o + .debug_frame 0x000000b4 0x2c /opt/st/stm32cubeide_1.16.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + +.debug_line_str + 0x00000000 0x7a + .debug_line_str + 0x00000000 0x7a ./Startup/startup_stm32g431kbtx.o diff --git a/task1/Inc/STefi-Light.h b/task1/Inc/STefi-Light.h new file mode 100644 index 0000000..737ce2a --- /dev/null +++ b/task1/Inc/STefi-Light.h @@ -0,0 +1,80 @@ +/* *************************************************************************************** + * Project: task1 + * File: STefi-Light.h + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32F042K6 / STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 30.07.2021 + * + * Version: 1.1 + * History: + * 30.07.2021 ML create file + * 09.03.2022 ML check G431 compatibility + * + * Status: working + * + * Description: + * Definitions and declarations related to STefi Light board hardware + * extended by application related elements. + * + * + * Notes: + * Default MCU speed at startup is: + * - F042 = 8 MHz + * - G431 = 16 MHz + * + * ToDo: + * - none - + ************************************************************************************** */ +#ifndef STEFI_LIGHT_H_ +#define STEFI_LIGHT_H_ +/* ==================================================================================== */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ + + +/* ------------------------------------ DEFINES --------------------------------------- */ + +/* --- STefi peripherals related definitions --- */ + +// LEDs +#define MASK_LED0 (1 << 0) +#define MASK_LED1 (1 << 1) +#define MASK_LED2 (1 << 2) +#define MASK_LED3 (1 << 3) + +#define MASK_LED_RED (MASK_LED0) +#define MASK_LED_YELLOW (MASK_LED1) +#define MASK_LED_GREEN (MASK_LED2) +#define MASK_LED_BLUE (MASK_LED3) +#define MASK_LED_ALL (MASK_LED_RED | MASK_LED_YELLOW | MASK_LED_GREEN | MASK_LED_BLUE) + + +// buttons +#define MASK_S0 (1 << 0) +#define MASK_S1 (1 << 4) +#define MASK_S2 (1 << 5) +#define MASK_S3 (1 << 7) + +#define MASK_KEY0 (MASK_S0) +#define MASK_KEY1 (MASK_S1) +#define MASK_KEY2 (MASK_S2) +#define MASK_KEY3 (MASK_S3) + + +/* --- STefi MCU related definitions --- */ + +/* --- application related definitions --- */ + +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + +/* ==================================================================================== */ +#endif /* STEFI_LIGHT_H_ */ +/* ************************************ E O F ***************************************** */ diff --git a/task1/Inc/cmsis_compiler.h b/task1/Inc/cmsis_compiler.h new file mode 100644 index 0000000..21a2c71 --- /dev/null +++ b/task1/Inc/cmsis_compiler.h @@ -0,0 +1,283 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.1.0 + * @date 09. October 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6.6 LTM (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) + #include "cmsis_armclang_ltm.h" + + /* + * Arm Compiler above 6.10.1 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #define __RESTRICT __restrict + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/task1/Inc/cmsis_gcc.h b/task1/Inc/cmsis_gcc.h new file mode 100644 index 0000000..1e08e7e --- /dev/null +++ b/task1/Inc/cmsis_gcc.h @@ -0,0 +1,2168 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START + +/** + \brief Initializes data and bss sections + \details This default implementations initialized all data and additional bss + sections relying on .copy.table and .zero.table specified properly + in the used linker script. + + */ +__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) +{ + extern void _start(void) __NO_RETURN; + + typedef struct { + uint32_t const* src; + uint32_t* dest; + uint32_t wlen; + } __copy_table_t; + + typedef struct { + uint32_t* dest; + uint32_t wlen; + } __zero_table_t; + + extern const __copy_table_t __copy_table_start__; + extern const __copy_table_t __copy_table_end__; + extern const __zero_table_t __zero_table_start__; + extern const __zero_table_t __zero_table_end__; + + for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = pTable->src[i]; + } + } + + for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = 0u; + } + } + + _start(); +} + +#define __PROGRAM_START __cmsis_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP __StackTop +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT __StackLimit +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section(".vectors"))) +#endif + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/task1/Inc/cmsis_version.h b/task1/Inc/cmsis_version.h new file mode 100644 index 0000000..3174cf6 --- /dev/null +++ b/task1/Inc/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.3 + * @date 24. June 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 3U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/task1/Inc/core_cm4.h b/task1/Inc/core_cm4.h new file mode 100644 index 0000000..90c2a72 --- /dev/null +++ b/task1/Inc/core_cm4.h @@ -0,0 +1,2124 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + 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) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \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) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + 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 Used priority group. + \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) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M4 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/task1/Inc/mpu_armv7.h b/task1/Inc/mpu_armv7.h new file mode 100644 index 0000000..337eb65 --- /dev/null +++ b/task1/Inc/mpu_armv7.h @@ -0,0 +1,272 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.1.0 + * @date 08. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2017-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \ + (((SubRegionDisable) << MPU_RASR_SRD_Pos) & MPU_RASR_SRD_Msk) | \ + (((Size) << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk) | \ + (((MPU_RASR_ENABLE_Msk)))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if shareable) or 010b (if non-shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/task1/Inc/stm32g431xx.h b/task1/Inc/stm32g431xx.h new file mode 100644 index 0000000..7e3265d --- /dev/null +++ b/task1/Inc/stm32g431xx.h @@ -0,0 +1,13139 @@ +/** + ****************************************************************************** + * @file stm32g431xx.h + * @author MCD Application Team + * @brief CMSIS STM32G431xx Device Peripheral Access Layer Header File. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2019 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32g431xx + * @{ + */ + +#ifndef __STM32G431xx_H +#define __STM32G431xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ +#define __CM4_REV 0x0001U /*!< Cortex-M4 revision r0p1 */ +#define __MPU_PRESENT 1U /*!< STM32G4XX provides an MPU */ +#define __NVIC_PRIO_BITS 4U /*!< STM32G4XX uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1U /*!< FPU present */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32G4XX Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum +{ +/****** Cortex-M4 Processor Exceptions Numbers *********************************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Cortex-M4 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M4 Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt */ +/****** STM32 specific Interrupt Numbers ***************************************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_PVM_IRQn = 1, /*!< PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection Interrupts */ + RTC_TAMP_LSECSS_IRQn = 2, /*!< RTC Tamper and TimeStamp and RCC LSE CSS interrupts through the EXTI */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_IRQn = 19, /*!< USB HP Interrupt */ + USB_LP_IRQn = 20, /*!< USB LP Interrupt */ + FDCAN1_IT0_IRQn = 21, /*!< FDCAN1 IT0 Interrupt */ + FDCAN1_IT1_IRQn = 22, /*!< FDCAN1 IT1 Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break, Transition error, Index error and TIM15 global interrupt */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update Interrupt and TIM16 global interrupt */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 TIM1 Trigger, Commutation, Direction change, Index and TIM17 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Wakeup through EXTI line Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break, Transition error and Index error Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger, Commutation, Direction change and Index Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + LPTIM1_IRQn = 49, /*!< LP TIM1 Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&3 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global interrupts */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + UCPD1_IRQn = 63, /*!< UCPD global Interrupt */ + COMP1_2_3_IRQn = 64, /*!< COMP1, COMP2 and COMP3 Interrupts */ + COMP4_IRQn = 65, /*!< COMP4 */ + CRS_IRQn = 75, /*!< CRS global interrupt */ + SAI1_IRQn = 76, /*!< Serial Audio Interface global interrupt */ + FPU_IRQn = 81, /*!< FPU global interrupt */ + RNG_IRQn = 90, /*!< RNG global interrupt */ + LPUART1_IRQn = 91, /*!< LP UART 1 Interrupt */ + I2C3_EV_IRQn = 92, /*!< I2C3 Event Interrupt */ + I2C3_ER_IRQn = 93, /*!< I2C3 Error interrupt */ + DMAMUX_OVR_IRQn = 94, /*!< DMAMUX overrun global interrupt */ + DMA2_Channel6_IRQn = 97, /*!< DMA2 Channel 6 interrupt */ + CORDIC_IRQn = 100, /*!< CORDIC global Interrupt */ + FMAC_IRQn = 101 /*!< FMAC global Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#include "system_stm32g4xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR1; /*!< ADC sampling time register 1, Address offset: 0x14 */ + __IO uint32_t SMPR2; /*!< ADC sampling time register 2, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, 0x1C */ + __IO uint32_t TR1; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + __IO uint32_t TR2; /*!< ADC analog watchdog 2 threshold register, Address offset: 0x24 */ + __IO uint32_t TR3; /*!< ADC analog watchdog 3 threshold register, Address offset: 0x28 */ + uint32_t RESERVED2; /*!< Reserved, 0x2C */ + __IO uint32_t SQR1; /*!< ADC group regular sequencer register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC group regular sequencer register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC group regular sequencer register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC group regular sequencer register 4, Address offset: 0x3C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, 0x44 */ + uint32_t RESERVED4; /*!< Reserved, 0x48 */ + __IO uint32_t JSQR; /*!< ADC group injected sequencer register, Address offset: 0x4C */ + uint32_t RESERVED5[4]; /*!< Reserved, 0x50 - 0x5C */ + __IO uint32_t OFR1; /*!< ADC offset register 1, Address offset: 0x60 */ + __IO uint32_t OFR2; /*!< ADC offset register 2, Address offset: 0x64 */ + __IO uint32_t OFR3; /*!< ADC offset register 3, Address offset: 0x68 */ + __IO uint32_t OFR4; /*!< ADC offset register 4, Address offset: 0x6C */ + uint32_t RESERVED6[4]; /*!< Reserved, 0x70 - 0x7C */ + __IO uint32_t JDR1; /*!< ADC group injected rank 1 data register, Address offset: 0x80 */ + __IO uint32_t JDR2; /*!< ADC group injected rank 2 data register, Address offset: 0x84 */ + __IO uint32_t JDR3; /*!< ADC group injected rank 3 data register, Address offset: 0x88 */ + __IO uint32_t JDR4; /*!< ADC group injected rank 4 data register, Address offset: 0x8C */ + uint32_t RESERVED7[4]; /*!< Reserved, 0x090 - 0x09C */ + __IO uint32_t AWD2CR; /*!< ADC analog watchdog 2 configuration register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC analog watchdog 3 Configuration Register, Address offset: 0xA4 */ + uint32_t RESERVED8; /*!< Reserved, 0x0A8 */ + uint32_t RESERVED9; /*!< Reserved, 0x0AC */ + __IO uint32_t DIFSEL; /*!< ADC differential mode selection register, Address offset: 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC calibration factors, Address offset: 0xB4 */ + uint32_t RESERVED10[2];/*!< Reserved, 0x0B8 - 0x0BC */ + __IO uint32_t GCOMP; /*!< ADC calibration factors, Address offset: 0xC0 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: 0x300 + 0x00 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x300 + 0x04 */ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: 0x300 + 0x08 */ + __IO uint32_t CDR; /*!< ADC common group regular data register Address offset: 0x300 + 0x0C */ +} ADC_Common_TypeDef; + +/** + * @brief FD Controller Area Network + */ + +typedef struct +{ + __IO uint32_t CREL; /*!< FDCAN Core Release register, Address offset: 0x000 */ + __IO uint32_t ENDN; /*!< FDCAN Endian register, Address offset: 0x004 */ + uint32_t RESERVED1; /*!< Reserved, 0x008 */ + __IO uint32_t DBTP; /*!< FDCAN Data Bit Timing & Prescaler register, Address offset: 0x00C */ + __IO uint32_t TEST; /*!< FDCAN Test register, Address offset: 0x010 */ + __IO uint32_t RWD; /*!< FDCAN RAM Watchdog register, Address offset: 0x014 */ + __IO uint32_t CCCR; /*!< FDCAN CC Control register, Address offset: 0x018 */ + __IO uint32_t NBTP; /*!< FDCAN Nominal Bit Timing & Prescaler register, Address offset: 0x01C */ + __IO uint32_t TSCC; /*!< FDCAN Timestamp Counter Configuration register, Address offset: 0x020 */ + __IO uint32_t TSCV; /*!< FDCAN Timestamp Counter Value register, Address offset: 0x024 */ + __IO uint32_t TOCC; /*!< FDCAN Timeout Counter Configuration register, Address offset: 0x028 */ + __IO uint32_t TOCV; /*!< FDCAN Timeout Counter Value register, Address offset: 0x02C */ + uint32_t RESERVED2[4]; /*!< Reserved, 0x030 - 0x03C */ + __IO uint32_t ECR; /*!< FDCAN Error Counter register, Address offset: 0x040 */ + __IO uint32_t PSR; /*!< FDCAN Protocol Status register, Address offset: 0x044 */ + __IO uint32_t TDCR; /*!< FDCAN Transmitter Delay Compensation register, Address offset: 0x048 */ + uint32_t RESERVED3; /*!< Reserved, 0x04C */ + __IO uint32_t IR; /*!< FDCAN Interrupt register, Address offset: 0x050 */ + __IO uint32_t IE; /*!< FDCAN Interrupt Enable register, Address offset: 0x054 */ + __IO uint32_t ILS; /*!< FDCAN Interrupt Line Select register, Address offset: 0x058 */ + __IO uint32_t ILE; /*!< FDCAN Interrupt Line Enable register, Address offset: 0x05C */ + uint32_t RESERVED4[8]; /*!< Reserved, 0x060 - 0x07C */ + __IO uint32_t RXGFC; /*!< FDCAN Global Filter Configuration register, Address offset: 0x080 */ + __IO uint32_t XIDAM; /*!< FDCAN Extended ID AND Mask register, Address offset: 0x084 */ + __IO uint32_t HPMS; /*!< FDCAN High Priority Message Status register, Address offset: 0x088 */ + uint32_t RESERVED5; /*!< Reserved, 0x08C */ + __IO uint32_t RXF0S; /*!< FDCAN Rx FIFO 0 Status register, Address offset: 0x090 */ + __IO uint32_t RXF0A; /*!< FDCAN Rx FIFO 0 Acknowledge register, Address offset: 0x094 */ + __IO uint32_t RXF1S; /*!< FDCAN Rx FIFO 1 Status register, Address offset: 0x098 */ + __IO uint32_t RXF1A; /*!< FDCAN Rx FIFO 1 Acknowledge register, Address offset: 0x09C */ + uint32_t RESERVED6[8]; /*!< Reserved, 0x0A0 - 0x0BC */ + __IO uint32_t TXBC; /*!< FDCAN Tx Buffer Configuration register, Address offset: 0x0C0 */ + __IO uint32_t TXFQS; /*!< FDCAN Tx FIFO/Queue Status register, Address offset: 0x0C4 */ + __IO uint32_t TXBRP; /*!< FDCAN Tx Buffer Request Pending register, Address offset: 0x0C8 */ + __IO uint32_t TXBAR; /*!< FDCAN Tx Buffer Add Request register, Address offset: 0x0CC */ + __IO uint32_t TXBCR; /*!< FDCAN Tx Buffer Cancellation Request register, Address offset: 0x0D0 */ + __IO uint32_t TXBTO; /*!< FDCAN Tx Buffer Transmission Occurred register, Address offset: 0x0D4 */ + __IO uint32_t TXBCF; /*!< FDCAN Tx Buffer Cancellation Finished register, Address offset: 0x0D8 */ + __IO uint32_t TXBTIE; /*!< FDCAN Tx Buffer Transmission Interrupt Enable register, Address offset: 0x0DC */ + __IO uint32_t TXBCIE; /*!< FDCAN Tx Buffer Cancellation Finished Interrupt Enable register, Address offset: 0x0E0 */ + __IO uint32_t TXEFS; /*!< FDCAN Tx Event FIFO Status register, Address offset: 0x0E4 */ + __IO uint32_t TXEFA; /*!< FDCAN Tx Event FIFO Acknowledge register, Address offset: 0x0E8 */ +} FDCAN_GlobalTypeDef; + +/** + * @brief FD Controller Area Network Configuration + */ + +typedef struct +{ + __IO uint32_t CKDIV; /*!< FDCAN clock divider register, Address offset: 0x100 + 0x000 */ +} FDCAN_Config_TypeDef; + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED0; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + +/** + * @brief Clock Recovery System + */ +typedef struct +{ + __IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */ + __IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */ + __IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */ + __IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */ +} CRS_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ + __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */ + __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */ + __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */ + __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */ + __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */ + __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */ + __IO uint32_t RESERVED[2]; + __IO uint32_t STR1; /*!< DAC Sawtooth register, Address offset: 0x58 */ + __IO uint32_t STR2; /*!< DAC Sawtooth register, Address offset: 0x5C */ + __IO uint32_t STMODR; /*!< DAC Sawtooth Mode register, Address offset: 0x60 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */ + __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */ +} DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief DMA Multiplexer + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA Multiplexer Channel x Control Register Address offset: 0x0004 * (channel x) */ +}DMAMUX_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< DMA Channel Status Register Address offset: 0x0080 */ + __IO uint32_t CFR; /*!< DMA Channel Clear Flag Register Address offset: 0x0084 */ +}DMAMUX_ChannelStatus_TypeDef; + +typedef struct +{ + __IO uint32_t RGCR; /*!< DMA Request Generator x Control Register Address offset: 0x0100 + 0x0004 * (Req Gen x) */ +}DMAMUX_RequestGen_TypeDef; + +typedef struct +{ + __IO uint32_t RGSR; /*!< DMA Request Generator Status Register Address offset: 0x0140 */ + __IO uint32_t RGCFR; /*!< DMA Request Generator Clear Flag Register Address offset: 0x0144 */ +}DMAMUX_RequestGenStatus_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR1; /*!< EXTI Interrupt mask register 1, Address offset: 0x00 */ + __IO uint32_t EMR1; /*!< EXTI Event mask register 1, Address offset: 0x04 */ + __IO uint32_t RTSR1; /*!< EXTI Rising trigger selection register 1, Address offset: 0x08 */ + __IO uint32_t FTSR1; /*!< EXTI Falling trigger selection register 1, Address offset: 0x0C */ + __IO uint32_t SWIER1; /*!< EXTI Software interrupt event register 1, Address offset: 0x10 */ + __IO uint32_t PR1; /*!< EXTI Pending register 1, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t IMR2; /*!< EXTI Interrupt mask register 2, Address offset: 0x20 */ + __IO uint32_t EMR2; /*!< EXTI Event mask register 2, Address offset: 0x24 */ + __IO uint32_t RTSR2; /*!< EXTI Rising trigger selection register 2, Address offset: 0x28 */ + __IO uint32_t FTSR2; /*!< EXTI Falling trigger selection register 2, Address offset: 0x2C */ + __IO uint32_t SWIER2; /*!< EXTI Software interrupt event register 2, Address offset: 0x30 */ + __IO uint32_t PR2; /*!< EXTI Pending register 2, Address offset: 0x34 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32_t PDKEYR; /*!< FLASH power down key register, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x14 */ + __IO uint32_t ECCR; /*!< FLASH ECC register, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x1C */ + __IO uint32_t OPTR; /*!< FLASH option register, Address offset: 0x20 */ + __IO uint32_t PCROP1SR; /*!< FLASH bank1 PCROP start address register, Address offset: 0x24 */ + __IO uint32_t PCROP1ER; /*!< FLASH bank1 PCROP end address register, Address offset: 0x28 */ + __IO uint32_t WRP1AR; /*!< FLASH bank1 WRP area A address register, Address offset: 0x2C */ + __IO uint32_t WRP1BR; /*!< FLASH bank1 WRP area B address register, Address offset: 0x30 */ + uint32_t RESERVED2[15]; /*!< Reserved2, Address offset: 0x34 */ + __IO uint32_t SEC1R; /*!< FLASH Securable memory register bank1, Address offset: 0x70 */ +} FLASH_TypeDef; + +/** + * @brief FMAC + */ +typedef struct +{ + __IO uint32_t X1BUFCFG; /*!< FMAC X1 Buffer Configuration register, Address offset: 0x00 */ + __IO uint32_t X2BUFCFG; /*!< FMAC X2 Buffer Configuration register, Address offset: 0x04 */ + __IO uint32_t YBUFCFG; /*!< FMAC Y Buffer Configuration register, Address offset: 0x08 */ + __IO uint32_t PARAM; /*!< FMAC Parameter register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< FMAC Control register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< FMAC Status register, Address offset: 0x14 */ + __IO uint32_t WDATA; /*!< FMAC Write Data register, Address offset: 0x18 */ + __IO uint32_t RDATA; /*!< FMAC Read Data register, Address offset: 0x1C */ +} FMAC_TypeDef; + + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + +/** + * @brief LPTIMER + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t CMP; /*!< LPTIM Compare register, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ + __IO uint32_t OR; /*!< LPTIM Option register, Address offset: 0x20 */ +} LPTIM_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */ + __IO uint32_t RESERVED[5]; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t TCMR; /*!< OPAMP timer controlled mux mode register, Address offset: 0x18 */ +} OPAMP_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< PWR power control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< PWR power control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< PWR power control register 3, Address offset: 0x08 */ + __IO uint32_t CR4; /*!< PWR power control register 4, Address offset: 0x0C */ + __IO uint32_t SR1; /*!< PWR power status register 1, Address offset: 0x10 */ + __IO uint32_t SR2; /*!< PWR power status register 2, Address offset: 0x14 */ + __IO uint32_t SCR; /*!< PWR power status reset register, Address offset: 0x18 */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t PUCRA; /*!< Pull_up control register of portA, Address offset: 0x20 */ + __IO uint32_t PDCRA; /*!< Pull_Down control register of portA, Address offset: 0x24 */ + __IO uint32_t PUCRB; /*!< Pull_up control register of portB, Address offset: 0x28 */ + __IO uint32_t PDCRB; /*!< Pull_Down control register of portB, Address offset: 0x2C */ + __IO uint32_t PUCRC; /*!< Pull_up control register of portC, Address offset: 0x30 */ + __IO uint32_t PDCRC; /*!< Pull_Down control register of portC, Address offset: 0x34 */ + __IO uint32_t PUCRD; /*!< Pull_up control register of portD, Address offset: 0x38 */ + __IO uint32_t PDCRD; /*!< Pull_Down control register of portD, Address offset: 0x3C */ + __IO uint32_t PUCRE; /*!< Pull_up control register of portE, Address offset: 0x40 */ + __IO uint32_t PDCRE; /*!< Pull_Down control register of portE, Address offset: 0x44 */ + __IO uint32_t PUCRF; /*!< Pull_up control register of portF, Address offset: 0x48 */ + __IO uint32_t PDCRF; /*!< Pull_Down control register of portF, Address offset: 0x4C */ + __IO uint32_t PUCRG; /*!< Pull_up control register of portG, Address offset: 0x50 */ + __IO uint32_t PDCRG; /*!< Pull_Down control register of portG, Address offset: 0x54 */ + uint32_t RESERVED1[10]; /*!< Reserved Address offset: 0x58 - 0x7C */ + __IO uint32_t CR5; /*!< PWR power control register 5, Address offset: 0x80 */ +} PWR_TypeDef; + + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC system PLL configuration register, Address offset: 0x0C */ + uint32_t RESERVED0; /*!< Reserved, Address offset: 0x10 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC clock interrupt enable register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC clock interrupt flag register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC clock interrupt clear register, Address offset: 0x20 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x28 */ + __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x2C */ + __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x30 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x34 */ + __IO uint32_t APB1RSTR1; /*!< RCC APB1 peripheral reset register 1, Address offset: 0x38 */ + __IO uint32_t APB1RSTR2; /*!< RCC APB1 peripheral reset register 2, Address offset: 0x3C */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x40 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x44 */ + __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clocks enable register, Address offset: 0x48 */ + __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clocks enable register, Address offset: 0x4C */ + __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clocks enable register, Address offset: 0x50 */ + uint32_t RESERVED5; /*!< Reserved, Address offset: 0x54 */ + __IO uint32_t APB1ENR1; /*!< RCC APB1 peripheral clocks enable register 1, Address offset: 0x58 */ + __IO uint32_t APB1ENR2; /*!< RCC APB1 peripheral clocks enable register 2, Address offset: 0x5C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clocks enable register, Address offset: 0x60 */ + uint32_t RESERVED6; /*!< Reserved, Address offset: 0x64 */ + __IO uint32_t AHB1SMENR; /*!< RCC AHB1 peripheral clocks enable in sleep and stop modes register, Address offset: 0x68 */ + __IO uint32_t AHB2SMENR; /*!< RCC AHB2 peripheral clocks enable in sleep and stop modes register, Address offset: 0x6C */ + __IO uint32_t AHB3SMENR; /*!< RCC AHB3 peripheral clocks enable in sleep and stop modes register, Address offset: 0x70 */ + uint32_t RESERVED7; /*!< Reserved, Address offset: 0x74 */ + __IO uint32_t APB1SMENR1; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 1, Address offset: 0x78 */ + __IO uint32_t APB1SMENR2; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 2, Address offset: 0x7C */ + __IO uint32_t APB2SMENR; /*!< RCC APB2 peripheral clocks enable in sleep mode and stop modes register, Address offset: 0x80 */ + uint32_t RESERVED8; /*!< Reserved, Address offset: 0x84 */ + __IO uint32_t CCIPR; /*!< RCC peripherals independent clock configuration register, Address offset: 0x88 */ + uint32_t RESERVED9; /*!< Reserved, Address offset: 0x8C */ + __IO uint32_t BDCR; /*!< RCC backup domain control register, Address offset: 0x90 */ + __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x94 */ + __IO uint32_t CRRCR; /*!< RCC clock recovery RC register, Address offset: 0x98 */ + __IO uint32_t CCIPR2; /*!< RCC peripherals independent clock configuration register 2, Address offset: 0x9C */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ +/* +* @brief Specific device feature definitions +*/ +#define RTC_TAMP_INT_6_SUPPORT +#define RTC_TAMP_INT_NB 4u + +#define RTC_TAMP_NB 3u +#define RTC_BACKUP_NB 16u + + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */ + __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x1C */ + uint32_t RESERVED1; /*!< Reserved Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x3C */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */ + __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */ + __IO uint32_t MISR; /*!< RTC Masked Interrupt Status register, Address offset: 0x54 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x58 */ + __IO uint32_t SCR; /*!< RTC Status Clear register, Address offset: 0x5C */ +} RTC_TypeDef; + +/** + * @brief Tamper and backup registers + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TAMP configuration register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TAMP configuration register 2, Address offset: 0x04 */ + uint32_t RESERVED0; /*!< no configuration register 3, Address offset: 0x08 */ + __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */ + uint32_t RESERVED1[6]; /*!< Reserved Address offset: 0x10 - 0x24 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x28 */ + __IO uint32_t IER; /*!< TAMP Interrupt enable register, Address offset: 0x2C */ + __IO uint32_t SR; /*!< TAMP Status register, Address offset: 0x30 */ + __IO uint32_t MISR; /*!< TAMP Masked Interrupt Status register Address offset: 0x34 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x38 */ + __IO uint32_t SCR; /*!< TAMP Status clear register, Address offset: 0x3C */ + uint32_t RESERVED4[48]; /*!< Reserved Address offset: 0x040 - 0xFC */ + __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */ + __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */ + __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */ + __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */ + __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */ + __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */ + __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */ + __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */ + __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */ + __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */ + __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */ + __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */ + __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */ + __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */ + __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */ + __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */ +} TAMP_TypeDef; + +/** + * @brief Serial Audio Interface + */ + +typedef struct +{ + __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */ + uint32_t RESERVED[16]; /*!< Reserved, Address offset: 0x04 to 0x40 */ + __IO uint32_t PDMCR; /*!< SAI PDM control register, Address offset: 0x44 */ + __IO uint32_t PDMDLY; /*!< SAI PDM delay register, Address offset: 0x48 */ +} SAI_TypeDef; + +typedef struct +{ + __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */ + __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */ + __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */ + __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */ + __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */ +} SAI_Block_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register, Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register, Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register, Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ + __IO uint32_t SCSR; /*!< SYSCFG CCMSRAM control and status register, Address offset: 0x18 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x1C */ + __IO uint32_t SWPR; /*!< SYSCFG CCMSRAM write protection register, Address offset: 0x20 */ + __IO uint32_t SKR; /*!< SYSCFG CCMSRAM Key Register, Address offset: 0x24 */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */ + __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */ + __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */ + __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */ + __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */ + __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */ + __IO uint32_t OR ; /*!< TIM option register, Address offset: 0x68 */ + uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + __IO uint32_t RTOR; /*!< USART Receiver Timeout register, Address offset: 0x14 */ + __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */ +} USART_TypeDef; + +/** + * @brief Universal Serial Bus Full Speed Device + */ + +typedef struct +{ + __IO uint16_t EP0R; /*!< USB Endpoint 0 register, Address offset: 0x00 */ + __IO uint16_t RESERVED0; /*!< Reserved */ + __IO uint16_t EP1R; /*!< USB Endpoint 1 register, Address offset: 0x04 */ + __IO uint16_t RESERVED1; /*!< Reserved */ + __IO uint16_t EP2R; /*!< USB Endpoint 2 register, Address offset: 0x08 */ + __IO uint16_t RESERVED2; /*!< Reserved */ + __IO uint16_t EP3R; /*!< USB Endpoint 3 register, Address offset: 0x0C */ + __IO uint16_t RESERVED3; /*!< Reserved */ + __IO uint16_t EP4R; /*!< USB Endpoint 4 register, Address offset: 0x10 */ + __IO uint16_t RESERVED4; /*!< Reserved */ + __IO uint16_t EP5R; /*!< USB Endpoint 5 register, Address offset: 0x14 */ + __IO uint16_t RESERVED5; /*!< Reserved */ + __IO uint16_t EP6R; /*!< USB Endpoint 6 register, Address offset: 0x18 */ + __IO uint16_t RESERVED6; /*!< Reserved */ + __IO uint16_t EP7R; /*!< USB Endpoint 7 register, Address offset: 0x1C */ + __IO uint16_t RESERVED7[17]; /*!< Reserved */ + __IO uint16_t CNTR; /*!< Control register, Address offset: 0x40 */ + __IO uint16_t RESERVED8; /*!< Reserved */ + __IO uint16_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */ + __IO uint16_t RESERVED9; /*!< Reserved */ + __IO uint16_t FNR; /*!< Frame number register, Address offset: 0x48 */ + __IO uint16_t RESERVEDA; /*!< Reserved */ + __IO uint16_t DADDR; /*!< Device address register, Address offset: 0x4C */ + __IO uint16_t RESERVEDB; /*!< Reserved */ + __IO uint16_t BTABLE; /*!< Buffer Table address register, Address offset: 0x50 */ + __IO uint16_t RESERVEDC; /*!< Reserved */ + __IO uint16_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */ + __IO uint16_t RESERVEDD; /*!< Reserved */ + __IO uint16_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */ + __IO uint16_t RESERVEDE; /*!< Reserved */ +} USB_TypeDef; + +/** + * @brief VREFBUF + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< VREFBUF control and status register, Address offset: 0x00 */ + __IO uint32_t CCR; /*!< VREFBUF calibration and control register, Address offset: 0x04 */ +} VREFBUF_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + +/** + * @brief RNG + */ +typedef struct +{ + __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */ + __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */ +} RNG_TypeDef; + +/** + * @brief CORDIC + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< CORDIC control and status register, Address offset: 0x00 */ + __IO uint32_t WDATA; /*!< CORDIC argument register, Address offset: 0x04 */ + __IO uint32_t RDATA; /*!< CORDIC result register, Address offset: 0x08 */ +} CORDIC_TypeDef; + +/** + * @brief UCPD + */ + +typedef struct +{ + __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */ + __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */ + __IO uint32_t RESERVED0; /*!< UCPD reserved register, Address offset: 0x08 */ + __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */ + __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */ + __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */ + __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */ + __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */ + __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */ + __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */ + __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */ + __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */ + __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */ + __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */ +} UCPD_TypeDef; + + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE (0x08000000UL) /*!< FLASH (up to 128 kB) base address */ +#define SRAM1_BASE (0x20000000UL) /*!< SRAM1(up to 16 KB) base address */ +#define SRAM2_BASE (0x20004000UL) /*!< SRAM2(6 KB) base address */ +#define CCMSRAM_BASE (0x10000000UL) /*!< CCMSRAM(10 KB) base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ + +#define SRAM1_BB_BASE (0x22000000UL) /*!< SRAM1(16 KB) base address in the bit-band region */ +#define SRAM2_BB_BASE (0x22080000UL) /*!< SRAM2(6 KB) base address in the bit-band region */ +#define CCMSRAM_BB_BASE (0x220B0000UL) /*!< CCMSRAM(10 KB) base address in the bit-band region */ +#define PERIPH_BB_BASE (0x42000000UL) /*!< Peripheral base address in the bit-band region */ +/* Legacy defines */ +#define SRAM_BASE SRAM1_BASE +#define SRAM_BB_BASE SRAM1_BB_BASE + +#define SRAM1_SIZE_MAX (0x00004000UL) /*!< maximum SRAM1 size (up to 16 KBytes) */ +#define SRAM2_SIZE (0x00001800UL) /*!< SRAM2 size (6 KBytes) */ +#define CCMSRAM_SIZE (0x00002800UL) /*!< CCMSRAM size (10 KBytes) */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000UL) + + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL) +#define CRS_BASE (APB1PERIPH_BASE + 0x2000UL) +#define TAMP_BASE (APB1PERIPH_BASE + 0x2400UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800UL) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800UL) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL) +#define USB_BASE (APB1PERIPH_BASE + 0x5C00UL) /*!< USB_IP Peripheral Registers base address */ +#define USB_PMAADDR (APB1PERIPH_BASE + 0x6000UL) /*!< USB_IP Packet Memory Area base address */ +#define FDCAN1_BASE (APB1PERIPH_BASE + 0x6400UL) +#define FDCAN_CONFIG_BASE (APB1PERIPH_BASE + 0x6500UL) /*!< FDCAN configuration registers base address */ +#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) +#define I2C3_BASE (APB1PERIPH_BASE + 0x7800UL) +#define LPTIM1_BASE (APB1PERIPH_BASE + 0x7C00UL) +#define LPUART1_BASE (APB1PERIPH_BASE + 0x8000UL) +#define UCPD1_BASE (APB1PERIPH_BASE + 0xA000UL) +#define SRAMCAN_BASE (APB1PERIPH_BASE + 0xA400UL) + +/*!< APB2 peripherals */ +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x0000UL) +#define VREFBUF_BASE (APB2PERIPH_BASE + 0x0030UL) +#define COMP1_BASE (APB2PERIPH_BASE + 0x0200UL) +#define COMP2_BASE (APB2PERIPH_BASE + 0x0204UL) +#define COMP3_BASE (APB2PERIPH_BASE + 0x0208UL) +#define COMP4_BASE (APB2PERIPH_BASE + 0x020CUL) +#define OPAMP_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP1_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP2_BASE (APB2PERIPH_BASE + 0x0304UL) +#define OPAMP3_BASE (APB2PERIPH_BASE + 0x0308UL) + +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400UL) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800UL) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000UL) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400UL) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800UL) +#define SAI1_BASE (APB2PERIPH_BASE + 0x5400UL) +#define SAI1_Block_A_BASE (SAI1_BASE + 0x0004UL) +#define SAI1_Block_B_BASE (SAI1_BASE + 0x0024UL) + +/*!< AHB1 peripherals */ +#define DMA1_BASE (AHB1PERIPH_BASE) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x0400UL) +#define DMAMUX1_BASE (AHB1PERIPH_BASE + 0x0800UL) +#define CORDIC_BASE (AHB1PERIPH_BASE + 0x0C00UL) +#define RCC_BASE (AHB1PERIPH_BASE + 0x1000UL) +#define FMAC_BASE (AHB1PERIPH_BASE + 0x1400UL) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x2000UL) +#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) + +#define DMA1_Channel1_BASE (DMA1_BASE + 0x0008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x0030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x0044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x0058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x006CUL) + +#define DMA2_Channel1_BASE (DMA2_BASE + 0x0008UL) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x001CUL) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x0030UL) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x0044UL) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x0058UL) +#define DMA2_Channel6_BASE (DMA2_BASE + 0x006CUL) + +#define DMAMUX1_Channel0_BASE (DMAMUX1_BASE) +#define DMAMUX1_Channel1_BASE (DMAMUX1_BASE + 0x0004UL) +#define DMAMUX1_Channel2_BASE (DMAMUX1_BASE + 0x0008UL) +#define DMAMUX1_Channel3_BASE (DMAMUX1_BASE + 0x000CUL) +#define DMAMUX1_Channel4_BASE (DMAMUX1_BASE + 0x0010UL) +#define DMAMUX1_Channel5_BASE (DMAMUX1_BASE + 0x0014UL) +#define DMAMUX1_Channel6_BASE (DMAMUX1_BASE + 0x0020UL) +#define DMAMUX1_Channel7_BASE (DMAMUX1_BASE + 0x0024UL) +#define DMAMUX1_Channel8_BASE (DMAMUX1_BASE + 0x0028UL) +#define DMAMUX1_Channel9_BASE (DMAMUX1_BASE + 0x002CUL) +#define DMAMUX1_Channel10_BASE (DMAMUX1_BASE + 0x0030UL) +#define DMAMUX1_Channel11_BASE (DMAMUX1_BASE + 0x0034UL) +#define DMAMUX1_RequestGenerator0_BASE (DMAMUX1_BASE + 0x0100UL) +#define DMAMUX1_RequestGenerator1_BASE (DMAMUX1_BASE + 0x0104UL) +#define DMAMUX1_RequestGenerator2_BASE (DMAMUX1_BASE + 0x0108UL) +#define DMAMUX1_RequestGenerator3_BASE (DMAMUX1_BASE + 0x010CUL) + +#define DMAMUX1_ChannelStatus_BASE (DMAMUX1_BASE + 0x0080UL) +#define DMAMUX1_RequestGenStatus_BASE (DMAMUX1_BASE + 0x0140UL) + +/*!< AHB2 peripherals */ +#define GPIOA_BASE (AHB2PERIPH_BASE + 0x0000UL) +#define GPIOB_BASE (AHB2PERIPH_BASE + 0x0400UL) +#define GPIOC_BASE (AHB2PERIPH_BASE + 0x0800UL) +#define GPIOD_BASE (AHB2PERIPH_BASE + 0x0C00UL) +#define GPIOE_BASE (AHB2PERIPH_BASE + 0x1000UL) +#define GPIOF_BASE (AHB2PERIPH_BASE + 0x1400UL) +#define GPIOG_BASE (AHB2PERIPH_BASE + 0x1800UL) + +#define ADC1_BASE (AHB2PERIPH_BASE + 0x08000000UL) +#define ADC2_BASE (AHB2PERIPH_BASE + 0x08000100UL) +#define ADC12_COMMON_BASE (AHB2PERIPH_BASE + 0x08000300UL) + +#define DAC_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC1_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC3_BASE (AHB2PERIPH_BASE + 0x08001000UL) + +#define RNG_BASE (AHB2PERIPH_BASE + 0x08060800UL) +/* Debug MCU registers base address */ +#define DBGMCU_BASE (0xE0042000UL) + +#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */ +#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE (0x1FFF75E0UL) /*!< Flash size data register base address */ +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define CRS ((CRS_TypeDef *) CRS_BASE) +#define TAMP ((TAMP_TypeDef *) TAMP_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define USB ((USB_TypeDef *) USB_BASE) +#define FDCAN1 ((FDCAN_GlobalTypeDef *) FDCAN1_BASE) +#define FDCAN_CONFIG ((FDCAN_Config_TypeDef *) FDCAN_CONFIG_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define LPUART1 ((USART_TypeDef *) LPUART1_BASE) +#define UCPD1 ((UCPD_TypeDef *) UCPD1_BASE) + +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define VREFBUF ((VREFBUF_TypeDef *) VREFBUF_BASE) +#define COMP1 ((COMP_TypeDef *) COMP1_BASE) +#define COMP2 ((COMP_TypeDef *) COMP2_BASE) +#define COMP3 ((COMP_TypeDef *) COMP3_BASE) +#define COMP4 ((COMP_TypeDef *) COMP4_BASE) + +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP1_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) OPAMP2_BASE) +#define OPAMP3 ((OPAMP_TypeDef *) OPAMP3_BASE) + +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define SAI1 ((SAI_TypeDef *) SAI1_BASE) +#define SAI1_Block_A ((SAI_Block_TypeDef *)SAI1_Block_A_BASE) +#define SAI1_Block_B ((SAI_Block_TypeDef *)SAI1_Block_B_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMAMUX1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_BASE) +#define CORDIC ((CORDIC_TypeDef *) CORDIC_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FMAC ((FMAC_TypeDef *) FMAC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC12_COMMON ((ADC_Common_TypeDef *) ADC12_COMMON_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define DAC3 ((DAC_TypeDef *) DAC3_BASE) +#define RNG ((RNG_TypeDef *) RNG_BASE) + +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) + +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define DMA2_Channel6 ((DMA_Channel_TypeDef *) DMA2_Channel6_BASE) + +#define DMAMUX1_Channel0 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel0_BASE) +#define DMAMUX1_Channel1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel1_BASE) +#define DMAMUX1_Channel2 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel2_BASE) +#define DMAMUX1_Channel3 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel3_BASE) +#define DMAMUX1_Channel4 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel4_BASE) +#define DMAMUX1_Channel5 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel5_BASE) +#define DMAMUX1_Channel6 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel6_BASE) +#define DMAMUX1_Channel7 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel7_BASE) +#define DMAMUX1_Channel8 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel8_BASE) +#define DMAMUX1_Channel9 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel9_BASE) +#define DMAMUX1_Channel10 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel10_BASE) +#define DMAMUX1_Channel11 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel11_BASE) + +#define DMAMUX1_RequestGenerator0 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator0_BASE) +#define DMAMUX1_RequestGenerator1 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator1_BASE) +#define DMAMUX1_RequestGenerator2 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator2_BASE) +#define DMAMUX1_RequestGenerator3 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator3_BASE) + +#define DMAMUX1_ChannelStatus ((DMAMUX_ChannelStatus_TypeDef *) DMAMUX1_ChannelStatus_BASE) +#define DMAMUX1_RequestGenStatus ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX1_RequestGenStatus_BASE) + + + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 130U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ + +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 serie) + */ +#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */ + +/******************** Bit definition for ADC_ISR register *******************/ +#define ADC_ISR_ADRDY_Pos (0U) +#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */ +#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOS_Pos (3U) +#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_JEOC_Pos (5U) +#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */ +#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */ +#define ADC_ISR_JEOS_Pos (6U) +#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */ +#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */ +#define ADC_ISR_AWD1_Pos (7U) +#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_ISR_AWD2_Pos (8U) +#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */ +#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */ +#define ADC_ISR_AWD3_Pos (9U) +#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */ +#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */ +#define ADC_ISR_JQOVF_Pos (10U) +#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */ +#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_IER register *******************/ +#define ADC_IER_ADRDYIE_Pos (0U) +#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */ +#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSIE_Pos (3U) +#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_JEOCIE_Pos (5U) +#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */ +#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */ +#define ADC_IER_JEOSIE_Pos (6U) +#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */ +#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */ +#define ADC_IER_AWD1IE_Pos (7U) +#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_IER_AWD2IE_Pos (8U) +#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */ +#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */ +#define ADC_IER_AWD3IE_Pos (9U) +#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */ +#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */ +#define ADC_IER_JQOVFIE_Pos (10U) +#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */ +#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */ + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */ +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_JADSTART_Pos (3U) +#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */ +#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_JADSTP_Pos (5U) +#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */ +#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */ +#define ADC_CR_ADVREGEN_Pos (28U) +#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */ +#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */ +#define ADC_CR_DEEPPWD_Pos (29U) +#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */ +#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */ +#define ADC_CR_ADCALDIF_Pos (30U) +#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */ +#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************** Bit definition for ADC_CFGR register ******************/ +#define ADC_CFGR_DMAEN_Pos (0U) +#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */ +#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */ +#define ADC_CFGR_DMACFG_Pos (1U) +#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */ +#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */ + +#define ADC_CFGR_RES_Pos (3U) +#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */ +#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */ +#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */ +#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR_EXTSEL_Pos (5U) +#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */ +#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */ +#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */ + +#define ADC_CFGR_EXTEN_Pos (10U) +#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */ + +#define ADC_CFGR_OVRMOD_Pos (12U) +#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR_CONT_Pos (13U) +#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR_AUTDLY_Pos (14U) +#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */ +#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */ +#define ADC_CFGR_ALIGN_Pos (15U) +#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */ +#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignement */ +#define ADC_CFGR_DISCEN_Pos (16U) +#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ + +#define ADC_CFGR_DISCNUM_Pos (17U) +#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */ +#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */ +#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */ +#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */ +#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */ + +#define ADC_CFGR_JDISCEN_Pos (20U) +#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */ +#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */ +#define ADC_CFGR_JQM_Pos (21U) +#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */ +#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */ +#define ADC_CFGR_AWD1SGL_Pos (22U) +#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR_AWD1EN_Pos (23U) +#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ +#define ADC_CFGR_JAWD1EN_Pos (24U) +#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */ +#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */ +#define ADC_CFGR_JAUTO_Pos (25U) +#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */ +#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */ + +#define ADC_CFGR_AWD1CH_Pos (26U) +#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */ +#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */ +#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */ + +#define ADC_CFGR_JQDIS_Pos (31U) +#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */ +#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */ + +/******************** Bit definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_ROVSE_Pos (0U) +#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */ +#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */ +#define ADC_CFGR2_JOVSE_Pos (1U) +#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */ +#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */ + +#define ADC_CFGR2_OVSR_Pos (2U) +#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */ +#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */ +#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */ +#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR2_OVSS_Pos (5U) +#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */ +#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */ +#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */ +#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */ +#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */ +#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR2_TROVS_Pos (9U) +#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */ +#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */ +#define ADC_CFGR2_ROVSM_Pos (10U) +#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */ +#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */ + +#define ADC_CFGR2_GCOMP_Pos (16U) +#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */ +#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */ + +#define ADC_CFGR2_SWTRIG_Pos (25U) +#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */ +#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */ +#define ADC_CFGR2_BULB_Pos (26U) +#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */ +#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */ +#define ADC_CFGR2_SMPTRIG_Pos (27U) +#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */ +#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */ + +/******************** Bit definition for ADC_SMPR1 register *****************/ +#define ADC_SMPR1_SMP0_Pos (0U) +#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */ +#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */ +#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */ +#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR1_SMP1_Pos (3U) +#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */ +#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */ +#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */ +#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR1_SMP2_Pos (6U) +#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */ +#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */ +#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR1_SMP3_Pos (9U) +#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */ +#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */ +#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR1_SMP4_Pos (12U) +#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */ +#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */ +#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR1_SMP5_Pos (15U) +#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */ +#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */ +#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */ +#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR1_SMP6_Pos (18U) +#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */ +#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */ +#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR1_SMP7_Pos (21U) +#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */ +#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */ +#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR1_SMP8_Pos (24U) +#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */ +#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */ +#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */ +#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */ + +#define ADC_SMPR1_SMP9_Pos (27U) +#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */ +#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */ +#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */ +#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */ + +#define ADC_SMPR1_SMPPLUS_Pos (31U) +#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */ +#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */ + +/******************** Bit definition for ADC_SMPR2 register *****************/ +#define ADC_SMPR2_SMP10_Pos (0U) +#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR2_SMP11_Pos (3U) +#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */ +#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */ +#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */ +#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR2_SMP12_Pos (6U) +#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */ +#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */ +#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR2_SMP13_Pos (9U) +#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */ +#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */ +#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR2_SMP14_Pos (12U) +#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */ +#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */ +#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */ +#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR2_SMP15_Pos (15U) +#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR2_SMP16_Pos (18U) +#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */ +#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */ +#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR2_SMP17_Pos (21U) +#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */ +#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */ +#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR2_SMP18_Pos (24U) +#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */ +#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */ +#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */ +#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */ +#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */ + +/******************** Bit definition for ADC_TR1 register *******************/ +#define ADC_TR1_LT1_Pos (0U) +#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */ +#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */ + +#define ADC_TR1_AWDFILT_Pos (12U) +#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */ +#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */ +#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */ +#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */ +#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */ + +#define ADC_TR1_HT1_Pos (16U) +#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */ + +/******************** Bit definition for ADC_TR2 register *******************/ +#define ADC_TR2_LT2_Pos (0U) +#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */ +#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */ + +#define ADC_TR2_HT2_Pos (16U) +#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */ +#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */ + +/******************** Bit definition for ADC_TR3 register *******************/ +#define ADC_TR3_LT3_Pos (0U) +#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */ +#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */ + +#define ADC_TR3_HT3_Pos (16U) +#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */ +#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */ + +/******************** Bit definition for ADC_SQR1 register ******************/ +#define ADC_SQR1_L_Pos (0U) +#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */ +#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */ +#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */ +#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */ +#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */ +#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */ + +#define ADC_SQR1_SQ1_Pos (6U) +#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */ +#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */ +#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */ +#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */ +#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */ +#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */ +#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */ + +#define ADC_SQR1_SQ2_Pos (12U) +#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */ +#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */ +#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */ +#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */ +#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */ +#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */ +#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */ + +#define ADC_SQR1_SQ3_Pos (18U) +#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */ +#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */ +#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */ +#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */ +#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */ +#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */ +#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */ + +#define ADC_SQR1_SQ4_Pos (24U) +#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */ +#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */ +#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */ +#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */ +#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */ +#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */ +#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR2 register ******************/ +#define ADC_SQR2_SQ5_Pos (0U) +#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */ +#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */ +#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */ +#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */ +#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */ +#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */ +#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */ + +#define ADC_SQR2_SQ6_Pos (6U) +#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */ +#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */ +#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */ +#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */ +#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */ +#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */ +#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */ + +#define ADC_SQR2_SQ7_Pos (12U) +#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */ +#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */ +#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */ +#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */ +#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */ +#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */ +#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */ + +#define ADC_SQR2_SQ8_Pos (18U) +#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */ +#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */ +#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */ +#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */ +#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */ +#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */ +#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */ + +#define ADC_SQR2_SQ9_Pos (24U) +#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */ +#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */ +#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */ +#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */ +#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */ +#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */ +#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR3 register ******************/ +#define ADC_SQR3_SQ10_Pos (0U) +#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */ +#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */ +#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */ +#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */ +#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */ +#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */ +#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */ + +#define ADC_SQR3_SQ11_Pos (6U) +#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */ +#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */ +#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */ +#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */ +#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */ +#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */ +#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */ + +#define ADC_SQR3_SQ12_Pos (12U) +#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */ +#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */ +#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */ +#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */ +#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */ +#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */ + +#define ADC_SQR3_SQ13_Pos (18U) +#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */ +#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */ +#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */ +#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */ +#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */ +#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */ + +#define ADC_SQR3_SQ14_Pos (24U) +#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */ +#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */ +#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */ +#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */ +#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */ +#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */ +#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR4 register ******************/ +#define ADC_SQR4_SQ15_Pos (0U) +#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */ +#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */ +#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */ +#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */ +#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */ +#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */ +#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */ + +#define ADC_SQR4_SQ16_Pos (6U) +#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */ +#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */ +#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */ +#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */ +#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */ +#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */ +#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_RDATA_Pos (0U) +#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */ + +/******************** Bit definition for ADC_JSQR register ******************/ +#define ADC_JSQR_JL_Pos (0U) +#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */ +#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */ +#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */ +#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */ + +#define ADC_JSQR_JEXTSEL_Pos (2U) +#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */ +#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */ +#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */ +#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */ +#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */ +#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */ + +#define ADC_JSQR_JEXTEN_Pos (7U) +#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */ +#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */ +#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */ +#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */ + +#define ADC_JSQR_JSQ1_Pos (9U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */ +#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */ +#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */ + +#define ADC_JSQR_JSQ2_Pos (15U) +#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */ +#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */ +#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */ +#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */ +#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */ +#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */ +#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */ + +#define ADC_JSQR_JSQ3_Pos (21U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */ +#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */ +#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */ +#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */ +#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */ + +#define ADC_JSQR_JSQ4_Pos (27U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */ +#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */ +#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */ +#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */ +#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */ + +/******************** Bit definition for ADC_OFR1 register ******************/ +#define ADC_OFR1_OFFSET1_Pos (0U) +#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */ +#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */ + +#define ADC_OFR1_OFFSETPOS_Pos (24U) +#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */ +#define ADC_OFR1_SATEN_Pos (25U) +#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */ + +#define ADC_OFR1_OFFSET1_CH_Pos (26U) +#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */ +#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR1_OFFSET1_EN_Pos (31U) +#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */ + +/******************** Bit definition for ADC_OFR2 register ******************/ +#define ADC_OFR2_OFFSET2_Pos (0U) +#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */ +#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */ + +#define ADC_OFR2_OFFSETPOS_Pos (24U) +#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */ +#define ADC_OFR2_SATEN_Pos (25U) +#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */ + +#define ADC_OFR2_OFFSET2_CH_Pos (26U) +#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */ +#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR2_OFFSET2_EN_Pos (31U) +#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */ + +/******************** Bit definition for ADC_OFR3 register ******************/ +#define ADC_OFR3_OFFSET3_Pos (0U) +#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */ +#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */ + +#define ADC_OFR3_OFFSETPOS_Pos (24U) +#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */ +#define ADC_OFR3_SATEN_Pos (25U) +#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */ + +#define ADC_OFR3_OFFSET3_CH_Pos (26U) +#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */ +#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR3_OFFSET3_EN_Pos (31U) +#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */ + +/******************** Bit definition for ADC_OFR4 register ******************/ +#define ADC_OFR4_OFFSET4_Pos (0U) +#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */ +#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */ + +#define ADC_OFR4_OFFSETPOS_Pos (24U) +#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */ +#define ADC_OFR4_SATEN_Pos (25U) +#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */ + +#define ADC_OFR4_OFFSET4_CH_Pos (26U) +#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */ +#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR4_OFFSET4_EN_Pos (31U) +#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */ + +/******************** Bit definition for ADC_JDR1 register ******************/ +#define ADC_JDR1_JDATA_Pos (0U) +#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */ + +/******************** Bit definition for ADC_JDR2 register ******************/ +#define ADC_JDR2_JDATA_Pos (0U) +#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */ + +/******************** Bit definition for ADC_JDR3 register ******************/ +#define ADC_JDR3_JDATA_Pos (0U) +#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */ + +/******************** Bit definition for ADC_JDR4 register ******************/ +#define ADC_JDR4_JDATA_Pos (0U) +#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */ + +/******************** Bit definition for ADC_AWD2CR register ****************/ +#define ADC_AWD2CR_AWD2CH_Pos (0U) +#define ADC_AWD2CR_AWD2CH_Msk (0x7FFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */ +#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_AWD3CR register ****************/ +#define ADC_AWD3CR_AWD3CH_Pos (0U) +#define ADC_AWD3CR_AWD3CH_Msk (0x7FFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */ +#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_DIFSEL register ****************/ +#define ADC_DIFSEL_DIFSEL_Pos (0U) +#define ADC_DIFSEL_DIFSEL_Msk (0x7FFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */ +#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */ +#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */ +#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */ +#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */ +#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */ +#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */ +#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */ +#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */ +#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */ +#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */ +#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */ +#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */ +#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */ +#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */ +#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */ +#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */ +#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */ +#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */ +#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */ +#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_CALFACT register ***************/ +#define ADC_CALFACT_CALFACT_S_Pos (0U) +#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */ +#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */ +#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */ +#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */ +#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */ +#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */ +#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */ +#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */ +#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */ + +#define ADC_CALFACT_CALFACT_D_Pos (16U) +#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */ +#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */ +#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */ +#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */ +#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */ +#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */ +#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */ +#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */ +#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */ + +/******************** Bit definition for ADC_GCOMP register *****************/ +#define ADC_GCOMP_GCOMPCOEFF_Pos (0U) +#define ADC_GCOMP_GCOMPCOEFF_Msk (0x3FFFUL << ADC_GCOMP_GCOMPCOEFF_Pos) /*!< 0x00003FFF */ +#define ADC_GCOMP_GCOMPCOEFF ADC_GCOMP_GCOMPCOEFF_Msk /*!< ADC Gain Compensation Coefficient */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC_CSR register *******************/ +#define ADC_CSR_ADRDY_MST_Pos (0U) +#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */ +#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */ +#define ADC_CSR_EOSMP_MST_Pos (1U) +#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */ +#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */ +#define ADC_CSR_EOC_MST_Pos (2U) +#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */ +#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_MST_Pos (3U) +#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */ +#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_MST_Pos (4U) +#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */ +#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */ +#define ADC_CSR_JEOC_MST_Pos (5U) +#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */ +#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_MST_Pos (6U) +#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */ +#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_MST_Pos (7U) +#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */ +#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */ +#define ADC_CSR_AWD2_MST_Pos (8U) +#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */ +#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */ +#define ADC_CSR_AWD3_MST_Pos (9U) +#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */ +#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_MST_Pos (10U) +#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */ +#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */ + +#define ADC_CSR_ADRDY_SLV_Pos (16U) +#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */ +#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */ +#define ADC_CSR_EOSMP_SLV_Pos (17U) +#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */ +#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */ +#define ADC_CSR_EOC_SLV_Pos (18U) +#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */ +#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_SLV_Pos (19U) +#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */ +#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_SLV_Pos (20U) +#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */ +#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */ +#define ADC_CSR_JEOC_SLV_Pos (21U) +#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */ +#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_SLV_Pos (22U) +#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */ +#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_SLV_Pos (23U) +#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */ +#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */ +#define ADC_CSR_AWD2_SLV_Pos (24U) +#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */ +#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */ +#define ADC_CSR_AWD3_SLV_Pos (25U) +#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */ +#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_SLV_Pos (26U) +#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */ +#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_CCR register *******************/ +#define ADC_CCR_DUAL_Pos (0U) +#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */ +#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */ +#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */ +#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */ +#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */ +#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */ +#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */ + +#define ADC_CCR_DELAY_Pos (8U) +#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */ +#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */ +#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */ +#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */ +#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */ +#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */ + +#define ADC_CCR_DMACFG_Pos (13U) +#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */ +#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */ + +#define ADC_CCR_MDMA_Pos (14U) +#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */ +#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */ +#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */ +#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */ + +#define ADC_CCR_CKMODE_Pos (16U) +#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */ +#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */ +#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */ + +#define ADC_CCR_PRESC_Pos (18U) +#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */ +#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */ +#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */ +#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */ +#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */ +#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */ + +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_VSENSESEL_Pos (23U) +#define ADC_CCR_VSENSESEL_Msk (0x1UL << ADC_CCR_VSENSESEL_Pos) /*!< 0x00800000 */ +#define ADC_CCR_VSENSESEL ADC_CCR_VSENSESEL_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATSEL_Pos (24U) +#define ADC_CCR_VBATSEL_Msk (0x1UL << ADC_CCR_VBATSEL_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATSEL ADC_CCR_VBATSEL_Msk /*!< ADC internal path to battery voltage enable */ + +/******************** Bit definition for ADC_CDR register *******************/ +#define ADC_CDR_RDATA_MST_Pos (0U) +#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */ +#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */ + +#define ADC_CDR_RDATA_SLV_Pos (16U) +#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */ +#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */ + + +/******************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/******************************************************************************/ +/********************** Bit definition for COMP_CSR register ****************/ +#define COMP_CSR_EN_Pos (0U) +#define COMP_CSR_EN_Msk (0x1UL << COMP_CSR_EN_Pos) /*!< 0x00000001 */ +#define COMP_CSR_EN COMP_CSR_EN_Msk /*!< Comparator enable */ + +#define COMP_CSR_INMSEL_Pos (4U) +#define COMP_CSR_INMSEL_Msk (0xFUL << COMP_CSR_INMSEL_Pos) /*!< 0x00000070 */ +#define COMP_CSR_INMSEL COMP_CSR_INMSEL_Msk /*!< Comparator input minus selection */ +#define COMP_CSR_INMSEL_0 (0x1UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000010 */ +#define COMP_CSR_INMSEL_1 (0x2UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000020 */ +#define COMP_CSR_INMSEL_2 (0x4UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000040 */ +#define COMP_CSR_INMSEL_3 (0x8UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000080 */ + +#define COMP_CSR_INPSEL_Pos (8U) +#define COMP_CSR_INPSEL_Msk (0x1UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000100 */ +#define COMP_CSR_INPSEL COMP_CSR_INPSEL_Msk /*!< Comparator input plus selection */ + +#define COMP_CSR_POLARITY_Pos (15U) +#define COMP_CSR_POLARITY_Msk (0x1UL << COMP_CSR_POLARITY_Pos) /*!< 0x00008000 */ +#define COMP_CSR_POLARITY COMP_CSR_POLARITY_Msk /*!< Comparator output polarity */ + +#define COMP_CSR_HYST_Pos (16U) +#define COMP_CSR_HYST_Msk (0x7UL << COMP_CSR_HYST_Pos) /*!< 0x00070000 */ +#define COMP_CSR_HYST COMP_CSR_HYST_Msk /*!< Comparator hysteresis */ +#define COMP_CSR_HYST_0 (0x1UL << COMP_CSR_HYST_Pos) /*!< 0x00010000 */ +#define COMP_CSR_HYST_1 (0x2UL << COMP_CSR_HYST_Pos) /*!< 0x00020000 */ +#define COMP_CSR_HYST_2 (0x4UL << COMP_CSR_HYST_Pos) /*!< 0x00040000 */ + +#define COMP_CSR_BLANKING_Pos (19U) +#define COMP_CSR_BLANKING_Msk (0x7UL << COMP_CSR_BLANKING_Pos) /*!< 0x00380000 */ +#define COMP_CSR_BLANKING COMP_CSR_BLANKING_Msk /*!< Comparator blanking source */ +#define COMP_CSR_BLANKING_0 (0x1UL << COMP_CSR_BLANKING_Pos) /*!< 0x00080000 */ +#define COMP_CSR_BLANKING_1 (0x2UL << COMP_CSR_BLANKING_Pos) /*!< 0x00100000 */ +#define COMP_CSR_BLANKING_2 (0x4UL << COMP_CSR_BLANKING_Pos) /*!< 0x00200000 */ + +#define COMP_CSR_BRGEN_Pos (22U) +#define COMP_CSR_BRGEN_Msk (0x1UL << COMP_CSR_BRGEN_Pos) /*!< 0x00400000 */ +#define COMP_CSR_BRGEN COMP_CSR_BRGEN_Msk /*!< Comparator scaler bridge enable */ + +#define COMP_CSR_SCALEN_Pos (23U) +#define COMP_CSR_SCALEN_Msk (0x1UL << COMP_CSR_SCALEN_Pos) /*!< 0x00800000 */ +#define COMP_CSR_SCALEN COMP_CSR_SCALEN_Msk /*!< Comparator voltage scaler enable */ + +#define COMP_CSR_VALUE_Pos (30U) +#define COMP_CSR_VALUE_Msk (0x1UL << COMP_CSR_VALUE_Pos) /*!< 0x40000000 */ +#define COMP_CSR_VALUE COMP_CSR_VALUE_Msk /*!< Comparator output level */ + +#define COMP_CSR_LOCK_Pos (31U) +#define COMP_CSR_LOCK_Msk (0x1UL << COMP_CSR_LOCK_Pos) /*!< 0x80000000 */ +#define COMP_CSR_LOCK COMP_CSR_LOCK_Msk /*!< Comparator lock */ + +/******************************************************************************/ +/* */ +/* CORDIC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CORDIC_CSR register *****************/ +#define CORDIC_CSR_FUNC_Pos (0U) +#define CORDIC_CSR_FUNC_Msk (0xFUL << CORDIC_CSR_FUNC_Pos) /*!< 0x0000000F */ +#define CORDIC_CSR_FUNC CORDIC_CSR_FUNC_Msk /*!< Function */ +#define CORDIC_CSR_FUNC_0 (0x1UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000001 */ +#define CORDIC_CSR_FUNC_1 (0x2UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000002 */ +#define CORDIC_CSR_FUNC_2 (0x4UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000004 */ +#define CORDIC_CSR_FUNC_3 (0x8UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000008 */ +#define CORDIC_CSR_PRECISION_Pos (4U) +#define CORDIC_CSR_PRECISION_Msk (0xFUL << CORDIC_CSR_PRECISION_Pos) /*!< 0x000000F0 */ +#define CORDIC_CSR_PRECISION CORDIC_CSR_PRECISION_Msk /*!< Precision */ +#define CORDIC_CSR_PRECISION_0 (0x1UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000010 */ +#define CORDIC_CSR_PRECISION_1 (0x2UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000020 */ +#define CORDIC_CSR_PRECISION_2 (0x4UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000040 */ +#define CORDIC_CSR_PRECISION_3 (0x8UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000080 */ +#define CORDIC_CSR_SCALE_Pos (8U) +#define CORDIC_CSR_SCALE_Msk (0x7UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000700 */ +#define CORDIC_CSR_SCALE CORDIC_CSR_SCALE_Msk /*!< Scaling factor */ +#define CORDIC_CSR_SCALE_0 (0x1UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000100 */ +#define CORDIC_CSR_SCALE_1 (0x2UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000200 */ +#define CORDIC_CSR_SCALE_2 (0x4UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000400 */ +#define CORDIC_CSR_IEN_Pos (16U) +#define CORDIC_CSR_IEN_Msk (0x1UL << CORDIC_CSR_IEN_Pos) /*!< 0x00010000 */ +#define CORDIC_CSR_IEN CORDIC_CSR_IEN_Msk /*!< Interrupt Enable */ +#define CORDIC_CSR_DMAREN_Pos (17U) +#define CORDIC_CSR_DMAREN_Msk (0x1UL << CORDIC_CSR_DMAREN_Pos) /*!< 0x00020000 */ +#define CORDIC_CSR_DMAREN CORDIC_CSR_DMAREN_Msk /*!< DMA Read channel Enable */ +#define CORDIC_CSR_DMAWEN_Pos (18U) +#define CORDIC_CSR_DMAWEN_Msk (0x1UL << CORDIC_CSR_DMAWEN_Pos) /*!< 0x00040000 */ +#define CORDIC_CSR_DMAWEN CORDIC_CSR_DMAWEN_Msk /*!< DMA Write channel Enable */ +#define CORDIC_CSR_NRES_Pos (19U) +#define CORDIC_CSR_NRES_Msk (0x1UL << CORDIC_CSR_NRES_Pos) /*!< 0x00080000 */ +#define CORDIC_CSR_NRES CORDIC_CSR_NRES_Msk /*!< Number of results in WDATA register */ +#define CORDIC_CSR_NARGS_Pos (20U) +#define CORDIC_CSR_NARGS_Msk (0x1UL << CORDIC_CSR_NARGS_Pos) /*!< 0x00100000 */ +#define CORDIC_CSR_NARGS CORDIC_CSR_NARGS_Msk /*!< Number of arguments in RDATA register */ +#define CORDIC_CSR_RESSIZE_Pos (21U) +#define CORDIC_CSR_RESSIZE_Msk (0x1UL << CORDIC_CSR_RESSIZE_Pos) /*!< 0x00200000 */ +#define CORDIC_CSR_RESSIZE CORDIC_CSR_RESSIZE_Msk /*!< Width of output data */ +#define CORDIC_CSR_ARGSIZE_Pos (22U) +#define CORDIC_CSR_ARGSIZE_Msk (0x1UL << CORDIC_CSR_ARGSIZE_Pos) /*!< 0x00400000 */ +#define CORDIC_CSR_ARGSIZE CORDIC_CSR_ARGSIZE_Msk /*!< Width of input data */ +#define CORDIC_CSR_RRDY_Pos (31U) +#define CORDIC_CSR_RRDY_Msk (0x1UL << CORDIC_CSR_RRDY_Pos) /*!< 0x80000000 */ +#define CORDIC_CSR_RRDY CORDIC_CSR_RRDY_Msk /*!< Result Ready Flag */ + +/******************* Bit definition for CORDIC_WDATA register ***************/ +#define CORDIC_WDATA_ARG_Pos (0U) +#define CORDIC_WDATA_ARG_Msk (0xFFFFFFFFUL << CORDIC_WDATA_ARG_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_WDATA_ARG CORDIC_WDATA_ARG_Msk /*!< Input Argument */ + +/******************* Bit definition for CORDIC_RDATA register ***************/ +#define CORDIC_RDATA_RES_Pos (0U) +#define CORDIC_RDATA_RES_Msk (0xFFFFFFFFUL << CORDIC_RDATA_RES_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_RDATA_RES CORDIC_RDATA_RES_Msk /*!< Output Result */ + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ +#define CRC_CR_POLYSIZE_Pos (3U) +#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */ +#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */ +#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */ +#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */ +#define CRC_CR_REV_IN_Pos (5U) +#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */ +#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */ +#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */ +#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */ +#define CRC_CR_REV_OUT_Pos (7U) +#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */ +#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */ + +/******************* Bit definition for CRC_INIT register *******************/ +#define CRC_INIT_INIT_Pos (0U) +#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */ +#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */ + +/******************* Bit definition for CRC_POL register ********************/ +#define CRC_POL_POL_Pos (0U) +#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */ +#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */ + +/******************************************************************************/ +/* */ +/* CRS Clock Recovery System */ +/******************************************************************************/ + +/******************* Bit definition for CRS_CR register *********************/ +#define CRS_CR_SYNCOKIE_Pos (0U) +#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */ +#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */ +#define CRS_CR_SYNCWARNIE_Pos (1U) +#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */ +#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */ +#define CRS_CR_ERRIE_Pos (2U) +#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */ +#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */ +#define CRS_CR_ESYNCIE_Pos (3U) +#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */ +#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */ +#define CRS_CR_CEN_Pos (5U) +#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */ +#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */ +#define CRS_CR_AUTOTRIMEN_Pos (6U) +#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */ +#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */ +#define CRS_CR_SWSYNC_Pos (7U) +#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */ +#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */ +#define CRS_CR_TRIM_Pos (8U) +#define CRS_CR_TRIM_Msk (0x7FUL << CRS_CR_TRIM_Pos) /*!< 0x00007F00 */ +#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */ + +/******************* Bit definition for CRS_CFGR register *********************/ +#define CRS_CFGR_RELOAD_Pos (0U) +#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */ +#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */ +#define CRS_CFGR_FELIM_Pos (16U) +#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */ +#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */ + +#define CRS_CFGR_SYNCDIV_Pos (24U) +#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */ +#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */ +#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */ +#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */ +#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */ + +#define CRS_CFGR_SYNCSRC_Pos (28U) +#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */ +#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */ +#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */ +#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */ + +#define CRS_CFGR_SYNCPOL_Pos (31U) +#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */ +#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */ + +/******************* Bit definition for CRS_ISR register *********************/ +#define CRS_ISR_SYNCOKF_Pos (0U) +#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */ +#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */ +#define CRS_ISR_SYNCWARNF_Pos (1U) +#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */ +#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */ +#define CRS_ISR_ERRF_Pos (2U) +#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */ +#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */ +#define CRS_ISR_ESYNCF_Pos (3U) +#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */ +#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */ +#define CRS_ISR_SYNCERR_Pos (8U) +#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */ +#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */ +#define CRS_ISR_SYNCMISS_Pos (9U) +#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */ +#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */ +#define CRS_ISR_TRIMOVF_Pos (10U) +#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */ +#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */ +#define CRS_ISR_FEDIR_Pos (15U) +#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */ +#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */ +#define CRS_ISR_FECAP_Pos (16U) +#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */ +#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */ + +/******************* Bit definition for CRS_ICR register *********************/ +#define CRS_ICR_SYNCOKC_Pos (0U) +#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */ +#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */ +#define CRS_ICR_SYNCWARNC_Pos (1U) +#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */ +#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */ +#define CRS_ICR_ERRC_Pos (2U) +#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */ +#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */ +#define CRS_ICR_ESYNCC_Pos (3U) +#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */ +#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter */ +/* */ +/******************************************************************************/ +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 series) + */ +#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1_Pos (0U) +#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */ +#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/ +#define DAC_CR_CEN1_Pos (14U) +#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */ +#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/ + +#define DAC_CR_HFSEL_Pos (15U) +#define DAC_CR_HFSEL_Msk (0x1UL << DAC_CR_HFSEL_Pos) /*!< 0x00008000 */ +#define DAC_CR_HFSEL DAC_CR_HFSEL_Msk /*!*/ + +#define DAC_CR_EN2_Pos (16U) +#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */ +#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/ +#define DAC_CR_CEN2_Pos (30U) +#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */ +#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1_Pos (0U) +#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */ +#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text (READONLY) : + { + . = 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 (READONLY) : + { + . = 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 (READONLY) : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array (READONLY) : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array (READONLY) : + { + . = 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 */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + _siccmsram = LOADADDR(.ccmsram); + + /* CCM-SRAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmsram : + { + . = ALIGN(4); + _sccmsram = .; /* create a global symbol at ccmsram start */ + *(.ccmsram) + *(.ccmsram*) + + . = ALIGN(4); + _eccmsram = .; /* create a global symbol at ccmsram end */ + } >CCMSRAM 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) } +} diff --git a/task1/Src/task1.c b/task1/Src/task1.c new file mode 100644 index 0000000..3b27bc4 --- /dev/null +++ b/task1/Src/task1.c @@ -0,0 +1,152 @@ +/* *************************************************************************************** + * Project: task1 - C:GPIO + * File: task1.c + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 10.09.2021 + * + * Version: 2.1 + * History: + * 10.09.2021 ML create project + * 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U + * 18.02.2025 TK changed projectname to "C: GPIO) + * + * Status: under development + * + * Description: + * Blinks the red LED of STefi Light, currently. + * This file contains the main routine and the initialization. + * + * Notes: + * - MCU speed at startup is 16 MHz + * + * Todo: + * - Change the example code to match the description and requirements + * of the requested application in the lab exercise guide. + * + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +#define LOOPS_PER_MS 1244 // NOP-loops for delay() +#define WAITTIME 500 + + +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +int state = 0; +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ + + +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +static void GPIO_init(void); +static void delay(const uint16_t ms); + + +/* ------------------------------------ M A I N --------------------------------------- */ +int main(void) +{ + /* --- initialization --- */ + __disable_irq(); // disable interrupts globally + + GPIO_init(); + + __enable_irq(); // enable interrupts globally + + + /* --- one time tasks --- */ + + + /* --- infinite processing loop --- */ + while (1) + { + /* ... add your code to implement the lab assignment ... */ + + switch (state) { + case 0: + GPIOA->ODR &= ~(1 << 0); // LED0 on + + state++; + break; + case 1: + delay(WAITTIME); // wait + state++; + break; + case 2: + GPIOA->ODR |= (1 << 0); // LED0 off + delay(WAITTIME); // wait + state = 0; + break; + default: + break; + } + } + + return 1; +} + + +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + + +/* ------------------------------------ PRIVATE FUNCTIONS ----------------------------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: static void GPIO_init(void) + * + * Initializes GPIOs on STefi Light for pins with peripherals attached. + * + * requires: - nothing - + * parameters: - none - + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void GPIO_init(void) +{ + /* enable port clocks */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // LEDs: A + + + /* --- LEDs --- */ + GPIOA->ODR |= MASK_LED_ALL; + GPIOA->MODER &= ~(3 << 0); + GPIOA->MODER &= ~(3 << 2); + GPIOA->MODER &= ~(3 << 4); + GPIOA->MODER &= ~(3 << 6); + GPIOA->MODER |= (1 << 0); // set LED pin to output + GPIOA->MODER |= (1 << 2); + GPIOA->MODER |= (1 << 4); + GPIOA->MODER |= (1 << 6); +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: static void delay(const uint16_t ms) + * + * Realizes a millisecond delay by very bad busy-wait. + * + * requires: - nothing - + * parameters: ms - delay time in milliseconds + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void delay(const uint16_t ms) +{ + for (uint16_t i = 0; i < ms; ++i) + { + for (uint16_t j = 0; j < LOOPS_PER_MS; ++j) + { + __asm("NOP"); + } + } +} + + +/* ************************************ E O F ***************************************** */ diff --git a/task1/Src/task1_it.c b/task1/Src/task1_it.c new file mode 100644 index 0000000..02cd469 --- /dev/null +++ b/task1/Src/task1_it.c @@ -0,0 +1,218 @@ +/* *************************************************************************************** + * Project: task1 - C:GPIO + * File: task1_it.c + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 10.09.2021 + * + * Version: 2.1 + * History: + * 10.09.2021 ML create project + * 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U + * 18.02.2025 TK changed projectname to "C: GPIO) + * + * Status: working + * + * Description: + * this file contains the interrupt vector table and the implementation of all + * interrupt handlers used in the lab exercises. + * + * Notes: + * - MCU speed at startup is 16 MHz + * + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ + + +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +extern void* _estack; // initial stack pointer from ldscript +extern void* Reset_Handler; // exception handler from startup code + + +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ +/* ------------------------------------ PROTOTYPES ------------------------------------ */ + + +/* ------------------------------------ GLOBAL FUNCTIONS (Exceptions Handlers) -------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: void ISR_error(void) + * + * Default interrupt handler for core interrupts. + * Enables the green and red LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_error(void) +{ + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + GPIOA->ODR |= MASK_LED_ALL; + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x11; + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~(MASK_LED_GREEN | MASK_LED_RED); + } +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: void ISR_default(void) + * + * Default interrupt handler for non-core interrupts. + * Enables the blue and yellow LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_default(void) +{ + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + GPIOA->ODR |= MASK_LED_ALL; + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x44; + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~(MASK_LED_BLUE | MASK_LED_YELLOW); + } +} + + +/* ------------------------------------ INTERRUPT VECTOR TABLE ------------------------ */ + +__attribute__ ((section (".isr_vector"))) +void (* const paIsrFunc[118])(void) = +{ + /* --- core vectors --- */ + (void *)&_estack, /* 00 (0x00000000) initial stack pointer */ + (void *)&Reset_Handler, /* 01 (0x00000004) (prio: -3) initial program counter (leads to first command to execute) */ + ISR_error, /* 02 (0x00000008) (prio: -2) non-maskable interrupt */ + ISR_error, /* 03 (0x0000000C) (prio: -1) hard fault exception */ + ISR_error, /* 04 (0x00000010) memory management */ + ISR_error, /* 05 (0x00000014) bus fault - pre-fetch fault, memory access fault */ + ISR_error, /* 06 (0x00000018) usage fault - undefined instruction or illegal state */ + ISR_error, /* 07 (0x0000001C) reserved vector 7 */ + ISR_error, /* 08 (0x00000020) reserved vector 8 */ + ISR_error, /* 09 (0x00000024) reserved vector 9 */ + ISR_error, /* 10 (0x00000028) reserved vector 10 */ + ISR_error, /* 11 (0x0000002C) system service call via SWI instruction */ + ISR_error, /* 12 (0x00000030) monitor */ + ISR_error, /* 13 (0x00000034) reserved vector 13 */ + ISR_error, /* 14 (0x00000038) pendable service call exception */ + ISR_error, /* 15 (0x0000003C) SysTick exception */ + /* --- non-core vectors --- */ + ISR_default, /* 0 (0x00000040) window watchdog interrupt */ + ISR_default, /* 1 (0x00000044) PVD through EXTI line 16 interrupt */ + ISR_default, /* 2 (0x00000048) RTC/TAMP/CSS on LSE through EXTI line 19 interrupt */ + ISR_default, /* 3 (0x0000004C) RTC Wakeup timer through EXTI line 20 interrupt */ + ISR_default, /* 4 (0x00000050) Flash global interrupt */ + ISR_default, /* 5 (0x00000054) RCC global interrupt */ + ISR_default, /* 6 (0x00000058) EXTI Line 0 interrupt */ + ISR_default, /* 7 (0x0000005C) EXTI Line 1 interrupt */ + ISR_default, /* 8 (0x00000060) EXTI Line 2 interrupt */ + ISR_default, /* 9 (0x00000064) EXTI Line 3 interrupt */ + ISR_default, /* 10 (0x00000068) EXTI Line 4 interrupt */ + ISR_default, /* 11 (0x0000006C) DMA1 channel 1 interrupt */ + ISR_default, /* 12 (0x00000070) DMA1 channel 2 interrupt */ + ISR_default, /* 13 (0x00000074) DMA1 channel 3 interrupt */ + ISR_default, /* 14 (0x00000078) DMA1 channel 4 interrupt */ + ISR_default, /* 15 (0x0000007C) DMA1 channel 5 interrupt */ + ISR_default, /* 16 (0x00000080) DMA1 channel 6 interrupt */ + ISR_default, /* 17 (0x00000084) DMA1 channel 7 interrupt */ + ISR_default, /* 18 (0x00000088) ADC1 + ADC2 global interrupt */ + ISR_default, /* 19 (0x0000008C) USB high priority interrupts */ + ISR_default, /* 20 (0x00000090) USB low priority interrupts */ + ISR_default, /* 21 (0x00000094) FDCAN1 interrupt 0 */ + ISR_default, /* 22 (0x00000098) FDCAN1 interrupt 1 */ + ISR_default, /* 23 (0x0000009C) EXTI line [9:5] interrupts */ + ISR_default, /* 24 (0x000000A0) TIM1 break + TIM15 global interrupts */ + ISR_default, /* 25 (0x000000A4) TIM1 update + TIM16 global interrupts */ + ISR_default, /* 26 (0x000000A8) TIM1 trigger, commutation, direction change, index + TIM17 interrupts */ + ISR_default, /* 27 (0x000000AC) TIM1 capture compare interrupt */ + ISR_default, /* 28 (0x000000B0) TIM2 global interrupt */ + ISR_default, /* 29 (0x000000B4) TIM3 global interrupt */ + ISR_default, /* 30 (0x000000B8) TIM4 global interrupt */ + ISR_default, /* 31 (0x000000BC) I2C1 event + EXTI line 23 interrupts */ + ISR_default, /* 32 (0x000000C0) I2C1 error interrupt */ + ISR_default, /* 33 (0x000000C4) I2C2 event + EXTI line 24 interrupts */ + ISR_default, /* 34 (0x000000C8) I2C2 error interrupt */ + ISR_default, /* 35 (0x000000CC) SPI1 global interrupt */ + ISR_default, /* 36 (0x000000D0) SPI2 global interrupt */ + ISR_default, /* 37 (0x000000D4) USART1 global + EXTI line 25 interrupts */ + ISR_default, /* 38 (0x000000D8) USART2 global + EXTI line 26 interrupts */ + ISR_default, /* 39 (0x000000DC) USART3 global + EXTI line 28 interrupts */ + ISR_default, /* 40 (0x000000E0) EXTI line [15:10] interrupts */ + ISR_default, /* 41 (0x000000E4) RTC alarms interrupts */ + ISR_default, /* 42 (0x000000E8) USB wakeup from suspend trough EXTI line 18 interrupt */ + ISR_default, /* 43 (0x000000EC) TIM8 break, transition error, index error interrupts */ + ISR_default, /* 44 (0x000001F0) TIM8 update interrupt */ + ISR_default, /* 45 (0x000001F4) TIM8 trigger, commutation, direction change, index interrupts */ + ISR_default, /* 46 (0x000001F8) TIM8 capture compare interrupt */ + ISR_default, /* 47 (0x000001FC) ADC3 global interrupt */ + ISR_default, /* 48 (0x00000100) FSMC global interrupt */ + ISR_default, /* 49 (0x00000104) LPTIM1 global interrupt */ + ISR_default, /* 50 (0x00000108) TIM5 global interrupt */ + ISR_default, /* 51 (0x0000010C) SPI3 global interrupt */ + ISR_default, /* 52 (0x00000110) UART4 global + EXTI line 34 interrupts */ + ISR_default, /* 53 (0x00000114) UART5 global + EXTI line 35 interrupts */ + ISR_default, /* 54 (0x00000118) TIM6 + DAC1/3 underrun global interrupts */ + ISR_default, /* 55 (0x0000011C) TIM7 + DAC2/4 underrun global interrupts */ + ISR_default, /* 56 (0x00000120) DMA2 channel 1 interrupt */ + ISR_default, /* 57 (0x00000124) DMA2 channel 2 interrupt */ + ISR_default, /* 58 (0x00000128) DMA2 channel 3 interrupt */ + ISR_default, /* 59 (0x0000012C) DMA2 channel 4 interrupt */ + ISR_default, /* 60 (0x00000130) DMA2 channel 5 interrupt */ + ISR_default, /* 61 (0x00000134) ADC4 global interrupt */ + ISR_default, /* 62 (0x00000138) ADC5 global interrupt */ + ISR_default, /* 63 (0x0000013C) UCPD1 global + EXTI line 43 interrupts */ + ISR_default, /* 64 (0x00000140) COMP1/COMP2/COMP3 through EXTI lines 21/22/29 interrupts */ + ISR_default, /* 65 (0x00000144) COMP4/COMP5/COMP6 through EXTI lines 30/31/32 interrupts */ + ISR_default, /* 66 (0x00000148) COMP7 through EXTI line 33 interrupt */ + ISR_default, /* 67 (0x0000014C) HRTIM master timer interrupt (hrtim_it1) */ + ISR_default, /* 68 (0x00000150) HRTIM timer A interrupt (hrtim_it2) */ + ISR_default, /* 69 (0x00000154) HRTIM timer B interrupt (hrtim_it3) */ + ISR_default, /* 70 (0x00000158) HRTIM timer C interrupt (hrtim_it4) */ + ISR_default, /* 71 (0x0000015C) HRTIM timer D interrupt (hrtim_it5) */ + ISR_default, /* 72 (0x00000160) HRTIM timer E interrupt (hrtim_it6) */ + ISR_default, /* 73 (0x00000164) HRTIM fault interrupt (hrtim_it8) */ + ISR_default, /* 74 (0x00000168) HRTIM timer F interrupt (hrtim_it7) */ + ISR_default, /* 75 (0x0000016C) CRS interrupt */ + ISR_default, /* 76 (0x00000170) SAI */ + ISR_default, /* 77 (0x00000174) TIM20 break, transition error, index error interrupts */ + ISR_default, /* 78 (0x00000178) TIM20 update interrupt */ + ISR_default, /* 79 (0x0000017C) TIM20 trigger, commutation, direction change, index interrupts */ + ISR_default, /* 80 (0x00000180) TIM20 capture compare interrupt */ + ISR_default, /* 81 (0x00000184) Floating point interrupt */ + ISR_default, /* 82 (0x00000188) I2C4 event + EXTI line 4 interrupts */ + ISR_default, /* 83 (0x0000018C) I2C4 error interrupt */ + ISR_default, /* 84 (0x00000190) SPI4 global interrupt */ + ISR_default, /* 85 (0x00000194) AES global interrupt */ + ISR_default, /* 86 (0x00000198) FDCAN2 interrupt 0 */ + ISR_default, /* 87 (0x0000019C) FDCAN2 interrupt 1 */ + ISR_default, /* 88 (0x000001A0) FDCAN3 interrupt 0 */ + ISR_default, /* 89 (0x000001A4) FDCAN3 interrupt 1 */ + ISR_default, /* 90 (0x000001A8) RNG global interrupt */ + ISR_default, /* 91 (0x000001AC) LPUART global interrupt */ + ISR_default, /* 92 (0x000001B0) I2C3 event + EXTI line 27 interrupts */ + ISR_default, /* 93 (0x000001B4) I2C3 error interrupt */ + ISR_default, /* 94 (0x000001B8) DMAMUX overrun interrupt */ + ISR_default, /* 95 (0x000001BC) QUADSPI global interrupt */ + ISR_default, /* 96 (0x000001C0) DMA1 channel 8 interrupt */ + ISR_default, /* 97 (0x000001C4) DMA2 channel 6 interrupt */ + ISR_default, /* 98 (0x000001C8) DMA2 channel 7 interrupt */ + ISR_default, /* 99 (0x000001CC) DMA2 channel 8 interrupt */ + ISR_default, /* 100 (0x000001D0) Cordic interrupt */ + ISR_default /* 101 (0x000001D4) FMAC interrupt */ +}; + + +/* ************************************ E O F ***************************************** */ diff --git a/task1/Startup/startup_stm32g431kbtx.s b/task1/Startup/startup_stm32g431kbtx.s new file mode 100644 index 0000000..88e31ea --- /dev/null +++ b/task1/Startup/startup_stm32g431kbtx.s @@ -0,0 +1,105 @@ +/** + ****************************************************************************** + * @file startup_stm32g431kbtx.s + * @author Auto-generated by STM32CubeIDE + * @brief STM32G431KBTx device vector table for GCC toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + ****************************************************************************** + * @attention + * + * Copyright (c) ${year} STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +.syntax unified +.cpu cortex-m4 +.fpu softvfp +.thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + mov sp, r0 /* set stack pointer */ +/* Call the clock system initialization function.*/ +// bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + movs r3, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 + +LoopCopyDataInit: + adds r4, r0, r3 + cmp r4, r1 + bcc CopyDataInit + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b LoopFillZerobss + +FillZerobss: + str r3, [r2] + adds r2, r2, #4 + +LoopFillZerobss: + cmp r2, r4 + bcc FillZerobss + +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + +LoopForever: + b LoopForever + + .size Reset_Handler, .-Reset_Handler + + +/************************ (C) COPYRIGHT STMicroelectonics *****END OF FILE****/ diff --git a/task1/Startup/syscalls.c b/task1/Startup/syscalls.c new file mode 100644 index 0000000..f3462a0 --- /dev/null +++ b/task1/Startup/syscalls.c @@ -0,0 +1,176 @@ +/** + ****************************************************************************** + * @file syscalls.c + * @author Auto-generated by STM32CubeIDE + * @brief STM32CubeIDE Minimal System calls file + * + * For more information about which c-functions + * need which of these lowlevel functions + * please consult the Newlib libc-manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + (void)pid; + (void)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) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + + return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + (void)file; + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + (void)file; + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + (void)file; + (void)ptr; + (void)dir; + return 0; +} + +int _open(char *path, int flags, ...) +{ + (void)path; + (void)flags; + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + (void)status; + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + (void)name; + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + (void)buf; + return -1; +} + +int _stat(char *file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + (void)old; + (void)new; + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + (void)name; + (void)argv; + (void)env; + errno = ENOMEM; + return -1; +} diff --git a/task1/Startup/sysmem.c b/task1/Startup/sysmem.c new file mode 100644 index 0000000..6122419 --- /dev/null +++ b/task1/Startup/sysmem.c @@ -0,0 +1,79 @@ +/** + ****************************************************************************** + * @file sysmem.c + * @author Generated by STM32CubeIDE + * @brief STM32CubeIDE System Memory calls file + * + * For more information about which C functions + * need which of these lowlevel functions + * please consult the newlib libc manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include + +/** + * Pointer to the current high watermark of the heap usage + */ +static uint8_t *__sbrk_heap_end = NULL; + +/** + * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + * and others from the C library + * + * @verbatim + * ############################################################################ + * # .data # .bss # newlib heap # MSP stack # + * # # # # Reserved by _Min_Stack_Size # + * ############################################################################ + * ^-- RAM start ^-- _end _estack, RAM end --^ + * @endverbatim + * + * This implementation starts allocating at the '_end' linker symbol + * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + * The implementation considers '_estack' linker symbol to be RAM end + * NOTE: If the MSP stack, at any point during execution, grows larger than the + * reserved size, please increase the '_Min_Stack_Size'. + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + const uint8_t *max_heap = (uint8_t *)stack_limit; + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + { + __sbrk_heap_end = &_end; + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + { + errno = ENOMEM; + return (void *)-1; + } + + prev_heap_end = __sbrk_heap_end; + __sbrk_heap_end += incr; + + return (void *)prev_heap_end; +} diff --git a/task1/task1.launch b/task1/task1.launch new file mode 100644 index 0000000..957bfbf --- /dev/null +++ b/task1/task1.launch @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task2/.cproject b/task2/.cproject new file mode 100644 index 0000000..15f7918 --- /dev/null +++ b/task2/.cproject @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.project b/task2/.project new file mode 100644 index 0000000..9f9666d --- /dev/null +++ b/task2/.project @@ -0,0 +1,31 @@ + + + task2 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + org.eclipse.cdt.core.cnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUManagedMakefileProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/task2/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs b/task2/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs new file mode 100644 index 0000000..690d2f9 --- /dev/null +++ b/task2/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}} +svd_custom_file_path= +svd_file_path=platform\:/plugin/com.st.stm32cube.ide.mcu.productdb.debug/resources/cmsis/STMicroelectronics_CMSIS_SVD/STM32G431xx.svd diff --git a/task2/.settings/language.settings.xml b/task2/.settings/language.settings.xml new file mode 100644 index 0000000..8238781 --- /dev/null +++ b/task2/.settings/language.settings.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.settings/org.eclipse.cdt.codan.core.prefs b/task2/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 0000000..885fe02 --- /dev/null +++ b/task2/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,74 @@ +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.localvarreturn=-Warning +org.eclipse.cdt.codan.checkers.localvarreturn.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(\\"Returning the address of a local variable\\")"} +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.BlacklistProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.BlacklistProblem.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 or method is blacklisted\\")",blacklist\=>()} +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\\")",checkMacro\=>true} +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.FloatCompareProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.FloatCompareProblem.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(\\"Direct float comparison\\")"} +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.MagicNumberProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem.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(\\"Avoid magic numbers\\")",checkArray\=>true,checkOperatorParen\=>true,exceptions\=>(1,0,-1,2,1.0,0.0,-1.0)} +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.MultipleDeclarationsProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MultipleDeclarationsProblem.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(\\"Multiple variable declaration\\")"} +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.NoDiscardProblem=Warning +org.eclipse.cdt.codan.internal.checkers.NoDiscardProblem.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 value not evaluated\\")",macro\=>true} +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.ShallowCopyProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem.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(\\"Miss copy constructor or assignment operator\\")",onlynew\=>false} +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.StaticVariableInHeaderProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.StaticVariableInHeaderProblem.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(\\"Static variable in header file\\")"} +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.SymbolShadowingProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem.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 shadowing\\")",paramFuncParameters\=>true} +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\\")"} diff --git a/task2/.settings/org.eclipse.cdt.core.prefs b/task2/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 0000000..4025163 --- /dev/null +++ b/task2/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,6 @@ +doxygen/doxygen_new_line_after_brief=true +doxygen/doxygen_use_brief_tag=false +doxygen/doxygen_use_javadoc_tags=true +doxygen/doxygen_use_pre_tag=false +doxygen/doxygen_use_structural_commands=false +eclipse.preferences.version=1 diff --git a/task2/.settings/org.eclipse.core.resources.prefs b/task2/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/task2/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/task2/G431_addr.s b/task2/G431_addr.s new file mode 100644 index 0000000..d3723f4 --- /dev/null +++ b/task2/G431_addr.s @@ -0,0 +1,764 @@ +#***************************************************************************************** +# Project: task2 - switch triggered LEDs +# File: G431_addr.s +# +# Language: ASM +# +# Hardware: STefi v1.1 +# Processor: STM32G431KBT6U +# +# Author: Manuel Lederhofer +# Datum: 20.08.2015 +# +# Version: 3.0 +# History: +# 20.08.2015 ML create file +# 07.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG +# 27.02.2019 ML change from absolute addresses to BASE + OFFSET notation and +# add more timer modules +# 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U +# +# Status: working +# +# Description: +# Connects assembly addresses for STM32G431 MCU to symbolic register names +# used in the datasheets. +# +# Notes: +# - default MCU speed at startup is 16 MHz. +# +# ToDo: +# - none - +#***************************************************************************************** + + +#----------------------------------------------------------------------------------------# +# MCU Bus Base Addresses +#----------------------------------------------------------------------------------------# + + .equ APB1_BASE, 0x40000000 + .equ APB2_BASE, 0x40010000 + .equ AHB1_BASE, 0x40020000 + .equ AHB2_BASE, 0x48000000 + .equ AHB3_BASE, 0xA0000000 //!!! FSMC + QSPI registers = AHB3 ? + .equ PPB_BASE, 0xE0000000 /* Cortex M4 with FPU Internal Peripherals */ + +#----------------------------------------------------------------------------------------# +# System Configuration Controller +# +# address space: 0x4001_0000 .. 0x4001_0029 +#----------------------------------------------------------------------------------------# + + .equ SYSCFG_BASE, APB2_BASE + + .equ SYSCFG_MEMRMP, SYSCFG_BASE + 0x00 + .equ SYSCFG_CFGR1, SYSCFG_BASE + 0x04 + .equ SYSCFG_EXTICR1, SYSCFG_BASE + 0x08 + .equ SYSCFG_EXTICR2, SYSCFG_BASE + 0x0C + .equ SYSCFG_EXTICR3, SYSCFG_BASE + 0x10 + .equ SYSCFG_EXTICR4, SYSCFG_BASE + 0x14 + .equ SYSCFG_SCSR, SYSCFG_BASE + 0x18 + .equ SYSCFG_CFGR2, SYSCFG_BASE + 0x1C + .equ SYSCFG_SWPR, SYSCFG_BASE + 0x20 + .equ SYSCFG_SKR, SYSCFG_BASE + 0x24 + +#----------------------------------------------------------------------------------------# +# Extended Interrupts And Events Controller +# +# address space: 0x4001_0400 .. 0x4001_07FF +#----------------------------------------------------------------------------------------# + + .equ EXTI_BASE, APB2_BASE + 0x400 + + .equ EXTI_IMR1, EXTI_BASE + 0x00 + .equ EXTI_EMR1, EXTI_BASE + 0x04 + .equ EXTI_RTSR1, EXTI_BASE + 0x08 + .equ EXTI_FTSR1, EXTI_BASE + 0x0C + .equ EXTI_SWIER1, EXTI_BASE + 0x10 + .equ EXTI_PR1, EXTI_BASE + 0x14 + + .equ EXTI_IMR2, EXTI_BASE + 0x20 + .equ EXTI_EMR2, EXTI_BASE + 0x24 + .equ EXTI_RTSR2, EXTI_BASE + 0x28 + .equ EXTI_FTSR2, EXTI_BASE + 0x2C + .equ EXTI_SWIER2, EXTI_BASE + 0x30 + .equ EXTI_PR2, EXTI_BASE + 0x34 + +#----------------------------------------------------------------------------------------# +# TIM module common configuration +# +# Every timer has 1 KB address space: +# +# TIM2 .. TIM7: 0x4000_0000 .. 0x4000_17FF (APB1) +# TIM1: 0x4001_2C00 .. 0x4001_2FFF (APB2) +# TIM8: 0x4001_3400 .. 0x4001_37FF (APB2) +# TIM15 .. TIM17: 0x4001_4000 .. 0x4001_4BFF (APB2) +# TIM20: 0x4001_5000 .. 0x4001_53FF (APB2) +# +# note: +# TIM2 + TIM5 are 32 bit timers. All others have a width of 16 bit. +# Below, the timers on one line share a common register set description. +# +# TIM 1, 8, 20 advances control timers +# TIM 2, 3, 4, 5 general purpose timers (TIM2/5 = 32 bit) +# TIM 15 general purpose timers +# TIM 16, 17 general purpose timers +# TIM 6, 7 basic timers +#----------------------------------------------------------------------------------------# + + .equ TIM_CR1_OFFSET, 0x00 + .equ TIM_CR2_OFFSET, 0x04 + .equ TIM_SMCR_OFFSET, 0x08 + .equ TIM_DIER_OFFSET, 0x0C + .equ TIM_SR_OFFSET, 0x10 + .equ TIM_EGR_OFFSET, 0x14 + .equ TIM_CCMR1_OFFSET, 0x18 + .equ TIM_CCMR2_OFFSET, 0x1C + .equ TIM_CCER_OFFSET, 0x20 + .equ TIM_CNT_OFFSET, 0x24 + .equ TIM_PSC_OFFSET, 0x28 + .equ TIM_ARR_OFFSET, 0x2C + .equ TIM_RCR_OFFSET, 0x30 + .equ TIM_CCR1_OFFSET, 0x34 + .equ TIM_CCR2_OFFSET, 0x38 + .equ TIM_CCR3_OFFSET, 0x3C + .equ TIM_CCR4_OFFSET, 0x40 + .equ TIM_BDTR_OFFSET, 0x44 + .equ TIM_CCR5_OFFSET, 0x48 + .equ TIM_CCR6_OFFSET, 0x4C + .equ TIM_CCMR3_OFFSET, 0x50 + .equ TIM_DTR2_OFFSET, 0x54 + .equ TIM_ECR_OFFSET, 0x58 + .equ TIM_TISEL_OFFSET, 0x5C + .equ TIM_AF1_OFFSET, 0x60 + .equ TIM_AF2_OFFSET, 0x64 + .equ TIM_OR1_OFFSET, 0x68 + + .equ TIM_DCR_OFFSET, 0x3DC + .equ TIM_DMAR_OFFSET, 0x3E0 + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +#--- Genral Purpose Timer - TIM2 / address space: 0x4000_0000 .. 0x4000_03FF + + .equ TIM2_BASE, APB1_BASE + + .equ TIM2_CR1, TIM2_BASE + TIM_CR1_OFFSET + .equ TIM2_CR2, TIM2_BASE + TIM_CR2_OFFSET + .equ TIM2_SMCR, TIM2_BASE + TIM_SMCR_OFFSET + .equ TIM2_DIER, TIM2_BASE + TIM_DIER_OFFSET + .equ TIM2_SR, TIM2_BASE + TIM_SR_OFFSET + .equ TIM2_EGR, TIM2_BASE + TIM_EGR_OFFSET + .equ TIM2_CCMR1, TIM2_BASE + TIM_CCMR1_OFFSET + .equ TIM2_CCMR2, TIM2_BASE + TIM_CCMR2_OFFSET + .equ TIM2_CCER, TIM2_BASE + TIM_CCER_OFFSET + .equ TIM2_CNT, TIM2_BASE + TIM_CNT_OFFSET + .equ TIM2_PSC, TIM2_BASE + TIM_PSC_OFFSET + .equ TIM2_ARR, TIM2_BASE + TIM_ARR_OFFSET + + .equ TIM2_CCR1, TIM2_BASE + TIM_CCR1_OFFSET + .equ TIM2_CCR2, TIM2_BASE + TIM_CCR2_OFFSET + .equ TIM2_CCR3, TIM2_BASE + TIM_CCR3_OFFSET + .equ TIM2_CCR4, TIM2_BASE + TIM_CCR4_OFFSET + + .equ TIM2_ECR, TIM2_BASE + TIM_ECR_OFFSET + .equ TIM2_TISEL, TIM2_BASE + TIM_TISEL_OFFSET + .equ TIM2_AF1, TIM2_BASE + TIM_ECR_OFFSET + .equ TIM2_AF2, TIM2_BASE + TIM_ECR_OFFSET + + .equ TIM2_DCR, TIM2_BASE + TIM_DCR_OFFSET + .equ TIM2_DMAR, TIM2_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM3 / address space: 0x4000_0400 .. 0x4000_07FF + + .equ TIM3_BASE, APB1_BASE + 0x400 + + .equ TIM3_CR1, TIM3_BASE + TIM_CR1_OFFSET + .equ TIM3_CR2, TIM3_BASE + TIM_CR2_OFFSET + .equ TIM3_SMCR, TIM3_BASE + TIM_SMCR_OFFSET + .equ TIM3_DIER, TIM3_BASE + TIM_DIER_OFFSET + .equ TIM3_SR, TIM3_BASE + TIM_SR_OFFSET + .equ TIM3_EGR, TIM3_BASE + TIM_EGR_OFFSET + .equ TIM3_CCMR1, TIM3_BASE + TIM_CCMR1_OFFSET + .equ TIM3_CCMR2, TIM3_BASE + TIM_CCMR2_OFFSET + .equ TIM3_CCER, TIM3_BASE + TIM_CCER_OFFSET + .equ TIM3_CNT, TIM3_BASE + TIM_CNT_OFFSET + .equ TIM3_PSC, TIM3_BASE + TIM_PSC_OFFSET + .equ TIM3_ARR, TIM3_BASE + TIM_ARR_OFFSET + + .equ TIM3_CCR1, TIM3_BASE + TIM_CCR1_OFFSET + .equ TIM3_CCR2, TIM3_BASE + TIM_CCR2_OFFSET + .equ TIM3_CCR3, TIM3_BASE + TIM_CCR3_OFFSET + .equ TIM3_CCR4, TIM3_BASE + TIM_CCR4_OFFSET + + .equ TIM3_ECR, TIM3_BASE + TIM_ECR_OFFSET + .equ TIM3_TISEL, TIM3_BASE + TIM_TISEL_OFFSET + .equ TIM3_AF1, TIM3_BASE + TIM_ECR_OFFSET + .equ TIM3_AF2, TIM3_BASE + TIM_ECR_OFFSET + + .equ TIM3_DCR, TIM3_BASE + TIM_DCR_OFFSET + .equ TIM3_DMAR, TIM3_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM4 / address space: 0x4000_0800 .. 0x4000_0BFF + + .equ TIM4_BASE, APB1_BASE + 0x800 + + .equ TIM4_CR1, TIM4_BASE + TIM_CR1_OFFSET + .equ TIM4_CR2, TIM4_BASE + TIM_CR2_OFFSET + .equ TIM4_SMCR, TIM4_BASE + TIM_SMCR_OFFSET + .equ TIM4_DIER, TIM4_BASE + TIM_DIER_OFFSET + .equ TIM4_SR, TIM4_BASE + TIM_SR_OFFSET + .equ TIM4_EGR, TIM4_BASE + TIM_EGR_OFFSET + .equ TIM4_CCMR1, TIM4_BASE + TIM_CCMR1_OFFSET + .equ TIM4_CCMR2, TIM4_BASE + TIM_CCMR2_OFFSET + .equ TIM4_CCER, TIM4_BASE + TIM_CCER_OFFSET + .equ TIM4_CNT, TIM4_BASE + TIM_CNT_OFFSET + .equ TIM4_PSC, TIM4_BASE + TIM_PSC_OFFSET + .equ TIM4_ARR, TIM4_BASE + TIM_ARR_OFFSET + + .equ TIM4_CCR1, TIM4_BASE + TIM_CCR1_OFFSET + .equ TIM4_CCR2, TIM4_BASE + TIM_CCR2_OFFSET + .equ TIM4_CCR3, TIM4_BASE + TIM_CCR3_OFFSET + .equ TIM4_CCR4, TIM4_BASE + TIM_CCR4_OFFSET + + .equ TIM4_ECR, TIM4_BASE + TIM_ECR_OFFSET + .equ TIM4_TISEL, TIM4_BASE + TIM_TISEL_OFFSET + .equ TIM4_AF1, TIM4_BASE + TIM_ECR_OFFSET + .equ TIM4_AF2, TIM4_BASE + TIM_ECR_OFFSET + + .equ TIM4_DCR, TIM4_BASE + TIM_DCR_OFFSET + .equ TIM4_DMAR, TIM4_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM5 / address space: 0x4000_0C00 .. 0x4000_0FFF + + .equ TIM5_BASE, APB1_BASE + 0xC00 + + .equ TIM5_CR1, TIM5_BASE + TIM_CR1_OFFSET + .equ TIM5_CR2, TIM5_BASE + TIM_CR2_OFFSET + .equ TIM5_SMCR, TIM5_BASE + TIM_SMCR_OFFSET + .equ TIM5_DIER, TIM5_BASE + TIM_DIER_OFFSET + .equ TIM5_SR, TIM5_BASE + TIM_SR_OFFSET + .equ TIM5_EGR, TIM5_BASE + TIM_EGR_OFFSET + .equ TIM5_CCMR1, TIM5_BASE + TIM_CCMR1_OFFSET + .equ TIM5_CCMR2, TIM5_BASE + TIM_CCMR2_OFFSET + .equ TIM5_CCER, TIM5_BASE + TIM_CCER_OFFSET + .equ TIM5_CNT, TIM5_BASE + TIM_CNT_OFFSET + .equ TIM5_PSC, TIM5_BASE + TIM_PSC_OFFSET + .equ TIM5_ARR, TIM5_BASE + TIM_ARR_OFFSET + + .equ TIM5_CCR1, TIM5_BASE + TIM_CCR1_OFFSET + .equ TIM5_CCR2, TIM5_BASE + TIM_CCR2_OFFSET + .equ TIM5_CCR3, TIM5_BASE + TIM_CCR3_OFFSET + .equ TIM5_CCR4, TIM5_BASE + TIM_CCR4_OFFSET + + .equ TIM5_ECR, TIM5_BASE + TIM_ECR_OFFSET + .equ TIM5_TISEL, TIM5_BASE + TIM_TISEL_OFFSET + .equ TIM5_AF1, TIM5_BASE + TIM_ECR_OFFSET + .equ TIM5_AF2, TIM5_BASE + TIM_ECR_OFFSET + + .equ TIM5_DCR, TIM5_BASE + TIM_DCR_OFFSET + .equ TIM5_DMAR, TIM5_BASE + TIM_DMAR_OFFSET + +#--- Basic Timer - TIM6 / address space: 0x4000_1000 .. 0x4000_13FF + + .equ TIM6_BASE, APB1_BASE + 0x1000 + + .equ TIM6_CR1, TIM6_BASE + TIM_CR1_OFFSET + .equ TIM6_CR2, TIM6_BASE + TIM_CR2_OFFSET + + .equ TIM6_DIER, TIM6_BASE + TIM_DIER_OFFSET + .equ TIM6_SR, TIM6_BASE + TIM_SR_OFFSET + .equ TIM6_EGR, TIM6_BASE + TIM_EGR_OFFSET + + .equ TIM6_CNT, TIM6_BASE + TIM_CNT_OFFSET + .equ TIM6_PSC, TIM6_BASE + TIM_PSC_OFFSET + .equ TIM6_ARR, TIM6_BASE + TIM_ARR_OFFSET + +#--- Basic Timer - TIM7 / address space: 0x4000_1400 .. 0x4000_17FF + + .equ TIM7_BASE, APB1_BASE + 0x1400 + + .equ TIM7_CR1, TIM7_BASE + TIM_CR1_OFFSET + .equ TIM7_CR2, TIM7_BASE + TIM_CR2_OFFSET + + .equ TIM7_DIER, TIM7_BASE + TIM_DIER_OFFSET + .equ TIM7_SR, TIM7_BASE + TIM_SR_OFFSET + .equ TIM7_EGR, TIM7_BASE + TIM_EGR_OFFSET + + .equ TIM7_CNT, TIM7_BASE + TIM_CNT_OFFSET + .equ TIM7_PSC, TIM7_BASE + TIM_PSC_OFFSET + .equ TIM7_ARR, TIM7_BASE + TIM_ARR_OFFSET + +#--- Advanced Control Timer - TIM1 / address space: 0x4001_2C00 .. 0x4001_2FFF + + .equ TIM1_BASE, APB2_BASE + 0x2C00 + + .equ TIM1_CR1, TIM1_BASE + TIM_CR1_OFFSET + .equ TIM1_CR2, TIM1_BASE + TIM_CR2_OFFSET + .equ TIM1_SMCR, TIM1_BASE + TIM_SMCR_OFFSET + .equ TIM1_DIER, TIM1_BASE + TIM_DIER_OFFSET + .equ TIM1_SR, TIM1_BASE + TIM_SR_OFFSET + .equ TIM1_EGR, TIM1_BASE + TIM_EGR_OFFSET + .equ TIM1_CCMR1, TIM1_BASE + TIM_CCMR1_OFFSET + .equ TIM1_CCMR2, TIM1_BASE + TIM_CCMR2_OFFSET + .equ TIM1_CCER, TIM1_BASE + TIM_CCER_OFFSET + .equ TIM1_CNT, TIM1_BASE + TIM_CNT_OFFSET + .equ TIM1_PSC, TIM1_BASE + TIM_PSC_OFFSET + .equ TIM1_ARR, TIM1_BASE + TIM_ARR_OFFSET + .equ TIM1_RCR, TIM1_BASE + TIM_RCR_OFFSET + .equ TIM1_CCR1, TIM1_BASE + TIM_CCR1_OFFSET + .equ TIM1_CCR2, TIM1_BASE + TIM_CCR2_OFFSET + .equ TIM1_CCR3, TIM1_BASE + TIM_CCR3_OFFSET + .equ TIM1_CCR4, TIM1_BASE + TIM_CCR4_OFFSET + .equ TIM1_BDTR, TIM1_BASE + TIM_BDTR_OFFSET + .equ TIM1_CCR5, TIM1_BASE + TIM_CCR5_OFFSET + .equ TIM1_CCR6, TIM1_BASE + TIM_CCR6_OFFSET + .equ TIM1_CCMR3, TIM1_BASE + TIM_CCMR3_OFFSET + .equ TIM1_DTR2, TIM1_BASE + TIM_DTR2_OFFSET + .equ TIM1_ECR, TIM1_BASE + TIM_ECR_OFFSET + .equ TIM1_TISEL, TIM1_BASE + TIM_TISEL_OFFSET + .equ TIM1_AF1, TIM1_BASE + TIM_AF1_OFFSET + .equ TIM1_AF2, TIM1_BASE + TIM_AF2_OFFSET + + .equ TIM1_DCR, TIM1_BASE + TIM_DCR_OFFSET + .equ TIM1_DMAR, TIM1_BASE + TIM_DMAR_OFFSET + +#--- Advanced Control Timer - TIM8 / address space: 0x4001_3400 .. 0x4001_37FF + + .equ TIM8_BASE, APB2_BASE + 0x3400 + + .equ TIM8_CR1, TIM8_BASE + TIM_CR1_OFFSET + .equ TIM8_CR2, TIM8_BASE + TIM_CR2_OFFSET + .equ TIM8_SMCR, TIM8_BASE + TIM_SMCR_OFFSET + .equ TIM8_DIER, TIM8_BASE + TIM_DIER_OFFSET + .equ TIM8_SR, TIM8_BASE + TIM_SR_OFFSET + .equ TIM8_EGR, TIM8_BASE + TIM_EGR_OFFSET + .equ TIM8_CCMR1, TIM8_BASE + TIM_CCMR1_OFFSET + .equ TIM8_CCMR2, TIM8_BASE + TIM_CCMR2_OFFSET + .equ TIM8_CCER, TIM8_BASE + TIM_CCER_OFFSET + .equ TIM8_CNT, TIM8_BASE + TIM_CNT_OFFSET + .equ TIM8_PSC, TIM8_BASE + TIM_PSC_OFFSET + .equ TIM8_ARR, TIM8_BASE + TIM_ARR_OFFSET + .equ TIM8_RCR, TIM8_BASE + TIM_RCR_OFFSET + .equ TIM8_CCR1, TIM8_BASE + TIM_CCR1_OFFSET + .equ TIM8_CCR2, TIM8_BASE + TIM_CCR2_OFFSET + .equ TIM8_CCR3, TIM8_BASE + TIM_CCR3_OFFSET + .equ TIM8_CCR4, TIM8_BASE + TIM_CCR4_OFFSET + .equ TIM8_BDTR, TIM8_BASE + TIM_BDTR_OFFSET + .equ TIM8_CCR5, TIM8_BASE + TIM_CCR5_OFFSET + .equ TIM8_CCR6, TIM8_BASE + TIM_CCR6_OFFSET + .equ TIM8_CCMR3, TIM8_BASE + TIM_CCMR3_OFFSET + .equ TIM8_DTR2, TIM8_BASE + TIM_DTR2_OFFSET + .equ TIM8_ECR, TIM8_BASE + TIM_ECR_OFFSET + .equ TIM8_TISEL, TIM8_BASE + TIM_TISEL_OFFSET + .equ TIM8_AF1, TIM8_BASE + TIM_AF1_OFFSET + .equ TIM8_AF2, TIM8_BASE + TIM_AF2_OFFSET + + .equ TIM8_DCR, TIM8_BASE + TIM_DCR_OFFSET + .equ TIM8_DMAR, TIM8_BASE + TIM_DMAR_OFFSET + +#--- Advanced Control Timer - TIM20 / address space: 0x4001_5000 .. 0x4001_53FF + + .equ TIM20_BASE, APB2_BASE + 0x5000 + + .equ TIM20_CR1, TIM20_BASE + TIM_CR1_OFFSET + .equ TIM20_CR2, TIM20_BASE + TIM_CR2_OFFSET + .equ TIM20_SMCR, TIM20_BASE + TIM_SMCR_OFFSET + .equ TIM20_DIER, TIM20_BASE + TIM_DIER_OFFSET + .equ TIM20_SR, TIM20_BASE + TIM_SR_OFFSET + .equ TIM20_EGR, TIM20_BASE + TIM_EGR_OFFSET + .equ TIM20_CCMR1, TIM20_BASE + TIM_CCMR1_OFFSET + .equ TIM20_CCMR2, TIM20_BASE + TIM_CCMR2_OFFSET + .equ TIM20_CCER, TIM20_BASE + TIM_CCER_OFFSET + .equ TIM20_CNT, TIM20_BASE + TIM_CNT_OFFSET + .equ TIM20_PSC, TIM20_BASE + TIM_PSC_OFFSET + .equ TIM20_ARR, TIM20_BASE + TIM_ARR_OFFSET + .equ TIM20_RCR, TIM20_BASE + TIM_RCR_OFFSET + .equ TIM20_CCR1, TIM20_BASE + TIM_CCR1_OFFSET + .equ TIM20_CCR2, TIM20_BASE + TIM_CCR2_OFFSET + .equ TIM20_CCR3, TIM20_BASE + TIM_CCR3_OFFSET + .equ TIM20_CCR4, TIM20_BASE + TIM_CCR4_OFFSET + .equ TIM20_BDTR, TIM20_BASE + TIM_BDTR_OFFSET + .equ TIM20_CCR5, TIM20_BASE + TIM_CCR5_OFFSET + .equ TIM20_CCR6, TIM20_BASE + TIM_CCR6_OFFSET + .equ TIM20_CCMR3, TIM20_BASE + TIM_CCMR3_OFFSET + .equ TIM20_DTR2, TIM20_BASE + TIM_DTR2_OFFSET + .equ TIM20_ECR, TIM20_BASE + TIM_ECR_OFFSET + .equ TIM20_TISEL, TIM20_BASE + TIM_TISEL_OFFSET + .equ TIM20_AF1, TIM20_BASE + TIM_AF1_OFFSET + .equ TIM20_AF2, TIM20_BASE + TIM_AF2_OFFSET + + .equ TIM20_DCR, TIM20_BASE + TIM_DCR_OFFSET + .equ TIM20_DMAR, TIM20_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM15 / address space: 0x4001_4000 .. 0x4001_43FF + + .equ TIM15_BASE, APB2_BASE + 0x4000 + + .equ TIM15_CR1, TIM15_BASE + TIM_CR1_OFFSET + .equ TIM15_CR2, TIM15_BASE + TIM_CR2_OFFSET + .equ TIM15_SMCR, TIM15_BASE + TIM_SMCR_OFFSET + .equ TIM15_DIER, TIM15_BASE + TIM_DIER_OFFSET + .equ TIM15_SR, TIM15_BASE + TIM_SR_OFFSET + .equ TIM15_EGR, TIM15_BASE + TIM_EGR_OFFSET + .equ TIM15_CCMR1, TIM15_BASE + TIM_CCMR1_OFFSET + + .equ TIM15_CCER, TIM15_BASE + TIM_CCER_OFFSET + .equ TIM15_CNT, TIM15_BASE + TIM_CNT_OFFSET + .equ TIM15_PSC, TIM15_BASE + TIM_PSC_OFFSET + .equ TIM15_ARR, TIM15_BASE + TIM_ARR_OFFSET + .equ TIM15_RCR, TIM15_BASE + TIM_RCR_OFFSET + .equ TIM15_CCR1, TIM15_BASE + TIM_CCR1_OFFSET + .equ TIM15_CCR2, TIM15_BASE + TIM_CCR2_OFFSET + + .equ TIM15_BDTR, TIM15_BASE + TIM_BDTR_OFFSET + + .equ TIM15_DTR2, TIM15_BASE + TIM_DTR2_OFFSET + + .equ TIM15_TISEL, TIM15_BASE + TIM_TISEL_OFFSET + .equ TIM15_AF1, TIM15_BASE + TIM_AF1_OFFSET + .equ TIM15_AF2, TIM15_BASE + TIM_AF2_OFFSET + + .equ TIM15_DCR, TIM15_BASE + TIM_DCR_OFFSET + .equ TIM15_DMAR, TIM15_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM16 / address space: 0x4001_4400 .. 0x4001_47FF + + .equ TIM16_BASE, APB2_BASE + 0x4400 + + .equ TIM16_CR1, TIM16_BASE + TIM_CR1_OFFSET + .equ TIM16_CR2, TIM16_BASE + TIM_CR2_OFFSET + + .equ TIM16_DIER, TIM16_BASE + TIM_DIER_OFFSET + .equ TIM16_SR, TIM16_BASE + TIM_SR_OFFSET + .equ TIM16_EGR, TIM16_BASE + TIM_EGR_OFFSET + .equ TIM16_CCMR1, TIM16_BASE + TIM_CCMR1_OFFSET + + .equ TIM16_CCER, TIM16_BASE + TIM_CCER_OFFSET + .equ TIM16_CNT, TIM16_BASE + TIM_CNT_OFFSET + .equ TIM16_PSC, TIM16_BASE + TIM_PSC_OFFSET + .equ TIM16_ARR, TIM16_BASE + TIM_ARR_OFFSET + .equ TIM16_RCR, TIM16_BASE + TIM_RCR_OFFSET + .equ TIM16_CCR1, TIM16_BASE + TIM_CCR1_OFFSET + + .equ TIM16_BDTR, TIM16_BASE + TIM_BDTR_OFFSET + + .equ TIM16_DTR2, TIM16_BASE + TIM_DTR2_OFFSET + + .equ TIM16_TISEL, TIM16_BASE + TIM_TISEL_OFFSET + .equ TIM16_AF1, TIM16_BASE + TIM_AF1_OFFSET + .equ TIM16_AF2, TIM16_BASE + TIM_AF2_OFFSET + .equ TIM16_OR1, TIM16_BASE + TIM_OR1_OFFSET + + .equ TIM16_DCR, TIM16_BASE + TIM_DCR_OFFSET + .equ TIM16_DMAR, TIM16_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM17 / address space: 0x4001_4800 .. 0x4001_4BFF + + .equ TIM17_BASE, APB2_BASE + 0x4800 + + .equ TIM17_CR1, TIM17_BASE + TIM_CR1_OFFSET + .equ TIM17_CR2, TIM17_BASE + TIM_CR2_OFFSET + + .equ TIM17_DIER, TIM17_BASE + TIM_DIER_OFFSET + .equ TIM17_SR, TIM17_BASE + TIM_SR_OFFSET + .equ TIM17_EGR, TIM17_BASE + TIM_EGR_OFFSET + .equ TIM17_CCMR1, TIM17_BASE + TIM_CCMR1_OFFSET + + .equ TIM17_CCER, TIM17_BASE + TIM_CCER_OFFSET + .equ TIM17_CNT, TIM17_BASE + TIM_CNT_OFFSET + .equ TIM17_PSC, TIM17_BASE + TIM_PSC_OFFSET + .equ TIM17_ARR, TIM17_BASE + TIM_ARR_OFFSET + .equ TIM17_RCR, TIM17_BASE + TIM_RCR_OFFSET + .equ TIM17_CCR1, TIM17_BASE + TIM_CCR1_OFFSET + + .equ TIM17_BDTR, TIM17_BASE + TIM_BDTR_OFFSET + + .equ TIM17_DTR2, TIM17_BASE + TIM_DTR2_OFFSET + + .equ TIM17_TISEL, TIM17_BASE + TIM_TISEL_OFFSET + .equ TIM17_AF1, TIM17_BASE + TIM_AF1_OFFSET + .equ TIM17_AF2, TIM17_BASE + TIM_AF2_OFFSET + .equ TIM17_OR1, TIM17_BASE + TIM_OR1_OFFSET + + .equ TIM17_DCR, TIM17_BASE + TIM_DCR_OFFSET + .equ TIM17_DMAR, TIM17_BASE + TIM_DMAR_OFFSET + +#----------------------------------------------------------------------------------------# +# Reset and Clock Control +# +# address space: 0x4002_1000 .. 0x4002_13FF +#----------------------------------------------------------------------------------------# + + .equ RCC_BASE, AHB1_BASE + 0x1000 + + .equ RCC_CR, RCC_BASE + 0x00 + .equ RCC_ICSCR, RCC_BASE + 0x04 + .equ RCC_CFGR, RCC_BASE + 0x08 + .equ RCC_PLLCFGR, RCC_BASE + 0x0C + + .equ RCC_CIER, RCC_BASE + 0x18 + .equ RCC_CIFR, RCC_BASE + 0x1C + .equ RCC_CICR, RCC_BASE + 0x20 + + .equ RCC_AHB1RSTR, RCC_BASE + 0x28 + .equ RCC_AHB2RSTR, RCC_BASE + 0x2C + .equ RCC_AHB3RSTR, RCC_BASE + 0x30 + + .equ RCC_APB1RSTR1, RCC_BASE + 0x38 + .equ RCC_APB1RSTR2, RCC_BASE + 0x3C + .equ RCC_APB2RSTR, RCC_BASE + 0x40 + + .equ RCC_AHB1ENR, RCC_BASE + 0x48 + .equ RCC_AHB2ENR, RCC_BASE + 0x4C + .equ RCC_AHB3ENR, RCC_BASE + 0x50 + + .equ RCC_APB1ENR1, RCC_BASE + 0x58 + .equ RCC_APB1ENR2, RCC_BASE + 0x5C + .equ RCC_APB2ENR, RCC_BASE + 0x60 + + .equ RCC_AHB1SMENR, RCC_BASE + 0x68 + .equ RCC_AHB2SMENR, RCC_BASE + 0x6C + .equ RCC_AHB3SMENR, RCC_BASE + 0x70 + + .equ RCC_APB1SMENR1, RCC_BASE + 0x78 + .equ RCC_APB1SMENR2, RCC_BASE + 0x7C + .equ RCC_APB2SMENR, RCC_BASE + 0x80 + + .equ RCC_CCIPR, RCC_BASE + 0x88 + + .equ RCC_BDCR, RCC_BASE + 0x90 + .equ RCC_CSR, RCC_BASE + 0x94 + .equ RCC_CRRCR, RCC_BASE + 0x98 + .equ RCC_CCIPR2, RCC_BASE + 0x9C + +#----------------------------------------------------------------------------------------# +# GPIO module common configuration +# +# address space: 0x4800_0000 .. 0x4800_1FFF +#----------------------------------------------------------------------------------------# + + .equ GPIO_BASE, AHB2_BASE + + .equ GPIO_MODER_OFFSET, 0x00 + .equ GPIO_OTYPER_OFFSET, 0x04 + .equ GPIO_OSPEEDR_OFFSET, 0x08 + .equ GPIO_PUPDR_OFFSET, 0x0C + .equ GPIO_IDR_OFFSET, 0x10 + .equ GPIO_ODR_OFFSET, 0x14 + .equ GPIO_BSRR_OFFSET, 0x18 + .equ GPIO_LCKR_OFFSET, 0x1C + .equ GPIO_AFRL_OFFSET, 0x20 + .equ GPIO_AFRH_OFFSET, 0x24 + .equ GPIO_BRR_OFFSET, 0x28 + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +#--- Port A GPIO configuration / address space: 0x4800_0000 .. 0x4800_03FF + + .equ GPIOA_BASE, GPIO_BASE + + .equ GPIOA_MODER, GPIOA_BASE + GPIO_MODER_OFFSET + .equ GPIOA_OTYPER, GPIOA_BASE + GPIO_OTYPER_OFFSET + .equ GPIOA_OSPEEDR, GPIOA_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOA_PUPDR, GPIOA_BASE + GPIO_PUPDR_OFFSET + .equ GPIOA_IDR, GPIOA_BASE + GPIO_IDR_OFFSET + .equ GPIOA_ODR, GPIOA_BASE + GPIO_ODR_OFFSET + .equ GPIOA_BSRR, GPIOA_BASE + GPIO_BSRR_OFFSET + .equ GPIOA_LCKR, GPIOA_BASE + GPIO_LCKR_OFFSET + .equ GPIOA_AFRL, GPIOA_BASE + GPIO_AFRL_OFFSET + .equ GPIOA_AFRH, GPIOA_BASE + GPIO_AFRH_OFFSET + .equ GPIOA_BRR, GPIOA_BASE + GPIO_BRR_OFFSET + +#--- Port B GPIO configuration / address space: 0x4800_0400 .. 0x4800_07FF + + .equ GPIOB_BASE, GPIO_BASE + 0x400 + + .equ GPIOB_MODER, GPIOB_BASE + GPIO_MODER_OFFSET + .equ GPIOB_OTYPER, GPIOB_BASE + GPIO_OTYPER_OFFSET + .equ GPIOB_OSPEEDR, GPIOB_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOB_PUPDR, GPIOB_BASE + GPIO_PUPDR_OFFSET + .equ GPIOB_IDR, GPIOB_BASE + GPIO_IDR_OFFSET + .equ GPIOB_ODR, GPIOB_BASE + GPIO_ODR_OFFSET + .equ GPIOB_BSRR, GPIOB_BASE + GPIO_BSRR_OFFSET + .equ GPIOB_LCKR, GPIOB_BASE + GPIO_LCKR_OFFSET + .equ GPIOB_AFRL, GPIOB_BASE + GPIO_AFRL_OFFSET + .equ GPIOB_AFRH, GPIOB_BASE + GPIO_AFRH_OFFSET + .equ GPIOB_BRR, GPIOB_BASE + GPIO_BRR_OFFSET + +#--- Port C GPIO configuration / address space: 0x4800_0800 .. 0x4800_0BFF + + .equ GPIOC_BASE, GPIO_BASE + 0x800 + + .equ GPIOC_MODER, GPIOC_BASE + GPIO_MODER_OFFSET + .equ GPIOC_OTYPER, GPIOC_BASE + GPIO_OTYPER_OFFSET + .equ GPIOC_OSPEEDR, GPIOC_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOC_PUPDR, GPIOC_BASE + GPIO_PUPDR_OFFSET + .equ GPIOC_IDR, GPIOC_BASE + GPIO_IDR_OFFSET + .equ GPIOC_ODR, GPIOC_BASE + GPIO_ODR_OFFSET + .equ GPIOC_BSRR, GPIOC_BASE + GPIO_BSRR_OFFSET + .equ GPIOC_LCKR, GPIOC_BASE + GPIO_LCKR_OFFSET + .equ GPIOC_AFRL, GPIOC_BASE + GPIO_AFRL_OFFSET + .equ GPIOC_AFRH, GPIOC_BASE + GPIO_AFRH_OFFSET + .equ GPIOC_BRR, GPIOC_BASE + GPIO_BRR_OFFSET + +#--- Port D GPIO configuration / address space: 0x4800_0C00 .. 0x4800_0FFF + + .equ GPIOD_BASE, GPIO_BASE + 0xC00 + + .equ GPIOD_MODER, GPIOD_BASE + GPIO_MODER_OFFSET + .equ GPIOD_OTYPER, GPIOD_BASE + GPIO_OTYPER_OFFSET + .equ GPIOD_OSPEEDR, GPIOD_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOD_PUPDR, GPIOD_BASE + GPIO_PUPDR_OFFSET + .equ GPIOD_IDR, GPIOD_BASE + GPIO_IDR_OFFSET + .equ GPIOD_ODR, GPIOD_BASE + GPIO_ODR_OFFSET + .equ GPIOD_BSRR, GPIOD_BASE + GPIO_BSRR_OFFSET + .equ GPIOD_LCKR, GPIOD_BASE + GPIO_LCKR_OFFSET + .equ GPIOD_AFRL, GPIOD_BASE + GPIO_AFRL_OFFSET + .equ GPIOD_AFRH, GPIOD_BASE + GPIO_AFRH_OFFSET + .equ GPIOD_BRR, GPIOD_BASE + GPIO_BRR_OFFSET + +#--- Port E GPIO configuration / address space: 0x4800_1000 .. 0x4800_13FF + + .equ GPIOE_BASE, GPIO_BASE + 0x1000 + + .equ GPIOE_MODER, GPIOE_BASE + GPIO_MODER_OFFSET + .equ GPIOE_OTYPER, GPIOE_BASE + GPIO_OTYPER_OFFSET + .equ GPIOE_OSPEEDR, GPIOE_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOE_PUPDR, GPIOE_BASE + GPIO_PUPDR_OFFSET + .equ GPIOE_IDR, GPIOE_BASE + GPIO_IDR_OFFSET + .equ GPIOE_ODR, GPIOE_BASE + GPIO_ODR_OFFSET + .equ GPIOE_BSRR, GPIOE_BASE + GPIO_BSRR_OFFSET + .equ GPIOE_LCKR, GPIOE_BASE + GPIO_LCKR_OFFSET + .equ GPIOE_AFRL, GPIOE_BASE + GPIO_AFRL_OFFSET + .equ GPIOE_AFRH, GPIOE_BASE + GPIO_AFRH_OFFSET + .equ GPIOE_BRR, GPIOE_BASE + GPIO_BRR_OFFSET + +#--- Port F GPIO configuration / address space: 0x4800_1400 .. 0x4800_17FF + + .equ GPIOF_BASE, GPIO_BASE + 0x1400 + + .equ GPIOF_MODER, GPIOF_BASE + GPIO_MODER_OFFSET + .equ GPIOF_OTYPER, GPIOF_BASE + GPIO_OTYPER_OFFSET + .equ GPIOF_OSPEEDR, GPIOF_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOF_PUPDR, GPIOF_BASE + GPIO_PUPDR_OFFSET + .equ GPIOF_IDR, GPIOF_BASE + GPIO_IDR_OFFSET + .equ GPIOF_ODR, GPIOF_BASE + GPIO_ODR_OFFSET + .equ GPIOF_BSRR, GPIOF_BASE + GPIO_BSRR_OFFSET + .equ GPIOF_LCKR, GPIOF_BASE + GPIO_LCKR_OFFSET + .equ GPIOF_AFRL, GPIOF_BASE + GPIO_AFRL_OFFSET + .equ GPIOF_AFRH, GPIOF_BASE + GPIO_AFRH_OFFSET + .equ GPIOF_BRR, GPIOF_BASE + GPIO_BRR_OFFSET + +#--- Port G GPIO configuration / address space: 0x4800_1800 .. 0x4800_1BFF + + .equ GPIOG_BASE, GPIO_BASE + 0x1800 + + .equ GPIOG_MODER, GPIOG_BASE + GPIO_MODER_OFFSET + .equ GPIOG_OTYPER, GPIOG_BASE + GPIO_OTYPER_OFFSET + .equ GPIOG_OSPEEDR, GPIOG_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOG_PUPDR, GPIOG_BASE + GPIO_PUPDR_OFFSET + .equ GPIOG_IDR, GPIOG_BASE + GPIO_IDR_OFFSET + .equ GPIOG_ODR, GPIOG_BASE + GPIO_ODR_OFFSET + .equ GPIOG_BSRR, GPIOG_BASE + GPIO_BSRR_OFFSET + .equ GPIOG_LCKR, GPIOG_BASE + GPIO_LCKR_OFFSET + .equ GPIOG_AFRL, GPIOG_BASE + GPIO_AFRL_OFFSET + .equ GPIOG_AFRH, GPIOG_BASE + GPIO_AFRH_OFFSET + .equ GPIOG_BRR, GPIOG_BASE + GPIO_BRR_OFFSET + +#----------------------------------------------------------------------------------------# +# System Control Space +# +# address space: 0xE000_E000 .. 0xE000_EFFF +#----------------------------------------------------------------------------------------# + + .equ SCS_BASE, PPB_BASE + 0xE000 + +#----------------------------------------------------------------------------------------# +# System Timer (SysTick) +# +# address space: 0xE000_E010 .. 0xE000_E01F +#----------------------------------------------------------------------------------------# + + .equ STK_BASE, SCS_BASE + 10 // 0xE000_E010 + + .equ STK_CTRL, SCS_BASE + 0x00 + .equ STK_LOAD, SCS_BASE + 0x04 + .equ STK_VAL, SCS_BASE + 0x08 + .equ STK_CALIB, SCS_BASE + 0x0C + +#----------------------------------------------------------------------------------------# +# Nested Vector Interrupt Controller +# +# address space: 0xE000_E100 .. 0xE000_E4EF +#----------------------------------------------------------------------------------------# + + .equ NVIC_BASE, SCS_BASE + 0x100 // 0xE000_E100 + + .equ NVIC_ISER0, NVIC_BASE + 0x00 + .equ NVIC_ISER1, NVIC_BASE + 0x04 + .equ NVIC_ISER2, NVIC_BASE + 0x08 + .equ NVIC_ISER3, NVIC_BASE + 0x0C + + .equ NVIC_ICER0, NVIC_BASE + 0x80 + .equ NVIC_ICER1, NVIC_BASE + 0x84 + .equ NVIC_ICER2, NVIC_BASE + 0x88 + .equ NVIC_ICER3, NVIC_BASE + 0x8C + + .equ NVIC_ISPR0, NVIC_BASE + 0x100 + .equ NVIC_ISPR1, NVIC_BASE + 0x104 + .equ NVIC_ISPR2, NVIC_BASE + 0x108 + .equ NVIC_ISPR3, NVIC_BASE + 0x10C + + .equ NVIC_ICPR0, NVIC_BASE + 0x180 + .equ NVIC_ICPR1, NVIC_BASE + 0x184 + .equ NVIC_ICPR2, NVIC_BASE + 0x188 + .equ NVIC_ICPR3, NVIC_BASE + 0x18C + + .equ NVIC_IABR0, NVIC_BASE + 0x200 + .equ NVIC_IABR1, NVIC_BASE + 0x204 + .equ NVIC_IABR2, NVIC_BASE + 0x208 + .equ NVIC_IABR3, NVIC_BASE + 0x20C + + .equ NVIC_IPR0, NVIC_BASE + 0x300 + .equ NVIC_IPR1, NVIC_BASE + 0x304 + .equ NVIC_IPR2, NVIC_BASE + 0x308 + .equ NVIC_IPR3, NVIC_BASE + 0x30C + .equ NVIC_IPR4, NVIC_BASE + 0x310 + .equ NVIC_IPR5, NVIC_BASE + 0x314 + .equ NVIC_IPR6, NVIC_BASE + 0x318 + .equ NVIC_IPR7, NVIC_BASE + 0x31C + .equ NVIC_IPR8, NVIC_BASE + 0x320 + .equ NVIC_IPR9, NVIC_BASE + 0x324 + .equ NVIC_IPR10, NVIC_BASE + 0x328 + .equ NVIC_IPR11, NVIC_BASE + 0x32C + .equ NVIC_IPR12, NVIC_BASE + 0x330 + .equ NVIC_IPR13, NVIC_BASE + 0x334 + .equ NVIC_IPR14, NVIC_BASE + 0x338 + .equ NVIC_IPR15, NVIC_BASE + 0x33C + .equ NVIC_IPR16, NVIC_BASE + 0x340 + .equ NVIC_IPR17, NVIC_BASE + 0x344 + .equ NVIC_IPR18, NVIC_BASE + 0x348 + .equ NVIC_IPR19, NVIC_BASE + 0x34C + .equ NVIC_IPR20, NVIC_BASE + 0x350 + .equ NVIC_IPR21, NVIC_BASE + 0x354 + .equ NVIC_IPR22, NVIC_BASE + 0x358 + .equ NVIC_IPR23, NVIC_BASE + 0x35C + .equ NVIC_IPR24, NVIC_BASE + 0x360 + .equ NVIC_IPR25, NVIC_BASE + 0x364 + + .equ STIR, NVIC_BASE + 0xE00 + +#----------------------------------------------------------------------------------------# +# MCU Debug Component +# +# address space: 0xE004_2000 .. 0xE004_2013 +#----------------------------------------------------------------------------------------# + + .equ DBGMCU_BASE, PPB_BASE + 0x42000 + + .equ DBGMCU_IDCODE, DBGMCU_BASE + 0x00 + .equ DBGMCU_CR, DBGMCU_BASE + 0x04 + .equ DBGMCU_APB1FZR1, DBGMCU_BASE + 0x08 + .equ DBGMCU_APB1FZR2, DBGMCU_BASE + 0x0C + .equ DBGMCU_APB2DZR, DBGMCU_BASE + 0x10 diff --git a/task2/ldscript_rom.ld b/task2/ldscript_rom.ld new file mode 100644 index 0000000..c174be4 --- /dev/null +++ b/task2/ldscript_rom.ld @@ -0,0 +1,65 @@ +/* *************************************************************************************** + * Project: task2 - switch triggered LEDs + * File: ldscript_rom.ld + * + * Language: ld + * + * Hardware: STefi Light v1.1 + * Processor: STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 31.10.2014 + * + * Version: 6.0 + * History: + * 31.10.2014 ML create file for Kinetis tower + * 22.07.2015 ML change MEMORY to switch from MK60N512VMD100 to MKL05Z32VLC4 + * 05.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG + * remove PROTECT area, fit MEMORY regions + * 25.09.2019 ML change PGM memory base from 0x08002000 to 0x08000400 + * 04.09.2020 HL port from STM32L476RG to STM32F411xE + * 29.09.2021 ML port from STM32F411xE to STM32F042K6T6 + * 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U + * + * Status: working + * + * Description: + * Linker script for the STefi Light in MCT lab exercises. + * + * Notes: + * The G431 incorporates three types of memory: + * - 128K flash @ 0x08000000 + * - 32K SRAM @ SRAM1 (16K): 0x20000000, SRAM2 (6K): 0x20004000 + * - 10K CCMSRAM @ 0x10000000 || 0x20005800 + ************************************************************************************** */ + +MEMORY +{ + IVECS (R) : ORIGIN = 0x08000000, LENGTH = 0x000001D8 + PGM (RX) : ORIGIN = 0x08000400, LENGTH = 0x00000C00 + EXHANDS (RX) : ORIGIN = 0x08001000, LENGTH = 0x00000400 + RAM (RW) : ORIGIN = 0x20000000, LENGTH = 0x00001800 +} + +SECTIONS +{ + .vectortable (READONLY) : + { + . = ALIGN(4); + KEEP(*(.vectortable)) + . = ALIGN(4); + } > IVECS + + .text (READONLY) : + { + *(.text) + } > PGM + + .exhand (READONLY) : + { + *(.exhand) + } > EXHANDS +} + + +/* ************************************ E O F ***************************************** */ \ No newline at end of file diff --git a/task2/makefile b/task2/makefile new file mode 100644 index 0000000..39e0560 --- /dev/null +++ b/task2/makefile @@ -0,0 +1,83 @@ +#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +# Project: task2 - switch triggered LEDs +# File: makefile +# +# Language: make +# +# Hardware: STefi Light v1.1 +# Processor: STM32G431KBT6U +# +# Author: Flaviu Popp-Nowak, Manuel Lederhofer +# Datum: 00.12.2013 +# +# Version: 5.0 +# History: +# 18.12.2013 FPN initial version +# 11.07.2014 ML switch to GNU ARM toolchain, add output files, nicify code +# 21.10.2014 ML add path entries for testing with Sourcery CodeBench toolchain +# 28.01.2015 ML changed naming of list files +# 29.09.2015 ML changed GCCDIR to Freescale KDS toolchain +# 27.09.2016 HL changed GCCDIR to KDS 3.2 toolchain +# 07.12.2018 ML remove unnecessary inactive paths and variables +# 18.12.2018 ML port from MKL05Z32VLC4 (KDS) to STM32L476RG (sw4stm) +# 13.03.2019 ML move gcc and make path to poject properties +# 29.09.2021 ML port from STM32L476RG/STM32F411xE to STM32F042K6T6 +# 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U +# +# Status: working +# +# Description: +# Default makefile for this project. +# +# Notes: +# - / - +#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +#--------- general config ---------------------------------------------------------------- + +TOOLPREFIX = arm-none-eabi + +AS = $(TOOLPREFIX)-as +LD = $(TOOLPREFIX)-ld +SIZE = $(TOOLPREFIX)-size +OBJDUMP = $(TOOLPREFIX)-objdump + +RM = rm -rf + + +#--------- specific config --------------------------------------------------------------- + +TARGET = task2 +ARMCPU = cortex-m4 + +#GCCFLAGS = -O0 -g3 -Wall -c -fmessage-length=0 -mabi=aapcs -mthumb -msoft-float --save-temps -fverbose-asm +#ASFLAGS = -specs=nosys.specs +ASFLAGS = -march=armv7-m -mcpu=$(ARMCPU) -adglns -g -mthumb --warn +LDFLAGS = -g -Map $(@:%.elf=%.map) --cref -static +LDSCRIPT = ldscript_rom.ld +OBJDFLAGS = -htdr -j .text -j .data -j .bss -j .vectortable -j .exhand + +RMFILES = *.elf *.o *.lst *.map *.als + + +#--------- machine room ------------------------------------------------------------------ + +all: $(TARGET).elf makefile $(LDSCRIPT) + @echo Target '$@' ready + +$(TARGET).elf: $(TARGET).o + $(LD) -o $@ -T $(LDSCRIPT) $< $(LDFLAGS) + $(OBJDUMP) $(OBJDFLAGS) $@ > $(@:%.elf=%.lst) + $(SIZE) $@ + +$(TARGET).o: $(TARGET).s G431_addr.s + $(AS) -o $@ $< $(ASFLAGS) > $(@:%.o=%.als) + +clean: + @-$(RM) $(wildcard $(RMFILES)) + + +.PHONY: clean + + +#'''''''''''''''''''''''''''''''''''''' E O F '''''''''''''''''''''''''''''''''''''''''''# diff --git a/task2/task2.launch b/task2/task2.launch new file mode 100644 index 0000000..114d818 --- /dev/null +++ b/task2/task2.launch @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task2/task2.s b/task2/task2.s new file mode 100644 index 0000000..fa2ba02 --- /dev/null +++ b/task2/task2.s @@ -0,0 +1,314 @@ +#****************************************************************************************# +# Project: task2 - ASM: Interrupts +# File: task2.s +# +# Language: ASM +# +# Hardware: STefi Light v1.1 +# Processor: STM32G431KBT6U +# +# Author: Manuel Lederhofer +# Datum: 31.10.2014 +# +# Version: 6.0 +# History: +# 31.10.2014 ML create file +# 27.09.2018 ML edit comments, extend vector table +# 18.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG +# 27.02.2019 ML move section of exception handlers to bottom of file +# 25.09.2019 ML minor changes for a better code and comment understanding +# 04.09.2020 HL port from STM32L476RG to STM32F411xE +# 21.09.2020 ML tidy up, comments and formatting +# 29.09.2021 ML port from STM32F411xE to STM32F042K6T6 +# 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U +# 10.02.2025 TK remove ASM:Polling,move ASM:Interrupts to task2 +# 24.06.2025 TK remove /* ... place your code here ... */ +# +# Status: working +# +# Description: +# See the description and requirements of the requested application +# in the lab exercise guide. +# +# Notes: +# - MCU speed at startup is 16 MHz +# +# ToDo: +# - Change the example code to match the description and requirements +# of the requested application in the lab exercise guide. +#****************************************************************************************# + + .include "G431_addr.s" + + +#----------------------------------------------------------------------------------------# + .section .vectortable,"a" // vector table at begin of ROM +#----------------------------------------------------------------------------------------# + + .align 2 + + .word 0x20004000 // initial Stack Pointer: 0x20000000 (RAM base) + 0x4000 (16K SRAM1 length) + .word 0x08000401 // initial Program Counter + .word _ISR_NMI // non-masking interrupt + .word _ISR_HARDF // hard fault interrupt + + + + /* N.B. + Look at the .space or the .org assembler directive to insert the address of the + ISRs at the right place in the vector table. Verify your settings by the help of + the list file. */ + + .word _ISR_S0 + + +#----------------------------------------------------------------------------------------# + .text // section .text (default section for program code) +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global init + .type init, %function +init: + CPSID i // disable interrupts globally + + MOVS r0, #0 // safely initialize the GPRs + MOVS r1, #0 + MOVS r2, #0 + MOVS r3, #0 + MOVS r4, #0 + MOVS r5, #0 + MOVS r6, #0 + MOVS r7, #0 + MOV r8, r0 + MOV r9, r0 + MOV r10, r0 + MOV r11, r0 + MOV r12, r0 + +#--- enable port clocking + LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR + MOV r2, #0x01 // load mask for adjusting port clock gating (A: LEDs) + LDR r0, [r1, #0] // get current value of RCC_AHB2ENR + ORRS r0, r0, r2 // configure clock gating for ports + STR r0, [r1, #0] // apply settings + +#--- port init +#- LEDs + LDR r1, =GPIOA_MODER // load port A mode register address + MOVS r2, #0x03 // prepare mask + LDR r0, [r1, #0] // get current value of port A mode register + BICS r0, r2 // delete bits + MOVS r2, #0x01 // load configuration mask + ORRS r0, r0, r2 // apply mask + STR r0, [r1, #0] // apply result to port A mode register + +#- switch LED off + LDR r1, =GPIOA_ODR // load port A output data register + MOVS r2, #0x01 // load mask for LED + LDR r0, [r1, #0] // get current value of GPIOA + ORRS r0, r0, r2 // configure pin state + STR r0, [r1, #0] // apply settings + +#- buttons + + /* ... place your code here ... */ + + +#--- button interrupt config + +#- enable clock for SYSCFG module + + +#- connect GPIO pins of the buttons to EXTended Interrupt controller lines (EXTI) +# in SYSCFG module (SYSCFG_* registers) + + + + +#- configure lines in EXTI module (EXTI_* registers) + + + +#- NVIC: set interrupt priority, clear pending bits +# and enable interrupts for buttons (see: PM, ch. 4.3, NVIC) + + + + CPSIE i // enable interrupts globally + + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global main + .type main, %function +main: + LDR r1, =GPIOA_ODR + EORS r0, r0, r2 + STR r0, [r1, #0] + + BL delay + + + B main + + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global delay + .type delay, %function +delay: + MOVS r6, #0 // ... + LDR r7, =2000000 // ... +.L1: + ADDS r6, r6, #1 // ... + CMP r6, r7 // ... + BNE .L1 // ... + BX lr // ... + + +#----------------------------------------------------------------------------------------# + + .align 2 + .global stop +stop: + NOP // do nothing (NOP is here to avoid a debugger crash, only) + B stop // if this line is reached, something went wrong + + +#----------------------------------------------------------------------------------------# +.lp1: // this label is only to nicify the line up in the .lst file + .ltorg +#----------------------------------------------------------------------------------------# + + +#----------------------------------------------------------------------------------------# + .section .exhand,"ax" // section for exception handlers +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_NMI, %function +_ISR_NMI: +#--- enable clock + LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR + MOV r2, #0x01 // load mask + LDR r0, [r1, #0] // get current value of RCC_AHB2ENR + ORRS r0, r0, r2 // configure clock gating for port + STR r0, [r1, #0] // apply settings + +#--- init pins + LDR r1, =GPIOA_MODER // load port A mode register address + MOVS r2, #0xFF // prepare mask + LDR r0, [r1, #0] // get current value of port A mode register + BICS r0, r0, r2 // delete bits + MOVS r2, #0x44 // load configuration mask + ORRS r0, r0, r2 // configure pins + STR r0, [r1, #0] // apply settings to port A mode register + +#--- switch some LEDs on + LDR r1, =GPIOA_ODR // load port A data output register address + MOVS r2, #0x0A // load mask for blue and yellow LED + LDR r0, [r1, #0] + BICS r0, r0, r2 + STR r0, [r1, #0] // switch LEDs on + + B _ISR_NMI + + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_HARDF, %function +_ISR_HARDF: +#--- enable clock + LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR + MOV r2, #0x01 // load mask + LDR r0, [r1, #0] // get current value of RCC_AHB2ENR + ORRS r0, r0, r2 // configure clock gating for port + STR r0, [r1, #0] // apply settings + +#--- init pins + LDR r1, =GPIOA_MODER // load port A mode register address + MOVS r2, #0xFF // prepare mask + LDR r0, [r1, #0] // get current value of port A mode register + BICS r0, r0, r2 // delete bits + MOVS r2, #0x11 // load configuration mask + ORRS r0, r0, r2 // configure pins + STR r0, [r1, #0] // apply settings to port A mode register + +#--- switch some LEDs on + LDR r1, =GPIOA_ODR // load port A data output register address + MOVS r2, #0x05 // load mask for red and green LED + LDR r0, [r1, #0] + BICS r0, r0, r2 + STR r0, [r1, #0] // switch LEDs on + + B _ISR_HARDF + + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_S0, %function +_ISR_S0: + PUSH {lr} // save special content + +#--- do the work + + +#--- clear interrupt flag + + +#--- leave ISR + POP {r1} // get special content back + BX r1 // go back to where we came from + + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_S1, %function +_ISR_S1: + PUSH {lr} // save special content + +#--- do the work + + + + +#--- clear interrupt flag + + + +#--- leave ISR + POP {r1} // get special content back + BX r1 // go back to where we came from + + +#----------------------------------------------------------------------------------------# +.lp2: // this label is only to nicify the line up in the .lst file + .ltorg +#----------------------------------------------------------------------------------------# + + .end + +#************************************** E O F *******************************************# diff --git a/task3/.cproject b/task3/.cproject new file mode 100644 index 0000000..a184a4d --- /dev/null +++ b/task3/.cproject @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.project b/task3/.project new file mode 100644 index 0000000..e0874ac --- /dev/null +++ b/task3/.project @@ -0,0 +1,31 @@ + + + task3 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + org.eclipse.cdt.core.cnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUManagedMakefileProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/task3/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs b/task3/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs new file mode 100644 index 0000000..9a16796 --- /dev/null +++ b/task3/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}} diff --git a/task3/.settings/language.settings.xml b/task3/.settings/language.settings.xml new file mode 100644 index 0000000..db73c0f --- /dev/null +++ b/task3/.settings/language.settings.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.settings/org.eclipse.core.resources.prefs b/task3/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/task3/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/task3/Debug/Src/subdir.mk b/task3/Debug/Src/subdir.mk new file mode 100644 index 0000000..833e371 --- /dev/null +++ b/task3/Debug/Src/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Src/task3.c \ +../Src/task3_it.c + +OBJS += \ +./Src/task3.o \ +./Src/task3_it.o + +C_DEPS += \ +./Src/task3.d \ +./Src/task3_it.d + + +# Each subdirectory must supply rules for building sources it contributes +Src/%.o Src/%.su Src/%.cyclo: ../Src/%.c Src/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" + +clean: clean-Src + +clean-Src: + -$(RM) ./Src/task3.cyclo ./Src/task3.d ./Src/task3.o ./Src/task3.su ./Src/task3_it.cyclo ./Src/task3_it.d ./Src/task3_it.o ./Src/task3_it.su + +.PHONY: clean-Src + diff --git a/task3/Debug/Startup/subdir.mk b/task3/Debug/Startup/subdir.mk new file mode 100644 index 0000000..71046bb --- /dev/null +++ b/task3/Debug/Startup/subdir.mk @@ -0,0 +1,39 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +S_SRCS += \ +../Startup/startup_stm32g431kbtx.s + +C_SRCS += \ +../Startup/syscalls.c \ +../Startup/sysmem.c + +OBJS += \ +./Startup/startup_stm32g431kbtx.o \ +./Startup/syscalls.o \ +./Startup/sysmem.o + +S_DEPS += \ +./Startup/startup_stm32g431kbtx.d + +C_DEPS += \ +./Startup/syscalls.d \ +./Startup/sysmem.d + + +# Each subdirectory must supply rules for building sources it contributes +Startup/%.o: ../Startup/%.s Startup/subdir.mk + arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" "$<" +Startup/%.o Startup/%.su Startup/%.cyclo: ../Startup/%.c Startup/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" + +clean: clean-Startup + +clean-Startup: + -$(RM) ./Startup/startup_stm32g431kbtx.d ./Startup/startup_stm32g431kbtx.o ./Startup/syscalls.cyclo ./Startup/syscalls.d ./Startup/syscalls.o ./Startup/syscalls.su ./Startup/sysmem.cyclo ./Startup/sysmem.d ./Startup/sysmem.o ./Startup/sysmem.su + +.PHONY: clean-Startup + diff --git a/task3/Debug/makefile b/task3/Debug/makefile new file mode 100644 index 0000000..3c981a2 --- /dev/null +++ b/task3/Debug/makefile @@ -0,0 +1,93 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Startup/subdir.mk +-include Src/subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +OPTIONAL_TOOL_DEPS := \ +$(wildcard ../makefile.defs) \ +$(wildcard ../makefile.init) \ +$(wildcard ../makefile.targets) \ + + +BUILD_ARTIFACT_NAME := task3 +BUILD_ARTIFACT_EXTENSION := elf +BUILD_ARTIFACT_PREFIX := +BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),) + +# Add inputs and outputs from these tool invocations to the build variables +EXECUTABLES += \ +task3.elf \ + +MAP_FILES += \ +task3.map \ + +SIZE_OUTPUT += \ +default.size.stdout \ + +OBJDUMP_LIST += \ +task3.list \ + + +# All Target +all: main-build + +# Main-build Target +main-build: task3.elf secondary-outputs + +# Tool invocations +task3.elf task3.map: $(OBJS) $(USER_OBJS) U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\task3\STM32G431KBTX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "task3.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\task3\STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task3.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group + @echo 'Finished building target: $@' + @echo ' ' + +default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-size $(EXECUTABLES) + @echo 'Finished building: $@' + @echo ' ' + +task3.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "task3.list" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) default.size.stdout task3.elf task3.list task3.map + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) + +fail-specified-linker-script-missing: + @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' + @exit 2 + +warn-no-linker-script-specified: + @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' + +.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified + +-include ../makefile.targets diff --git a/task3/Debug/objects.list b/task3/Debug/objects.list new file mode 100644 index 0000000..51325c9 --- /dev/null +++ b/task3/Debug/objects.list @@ -0,0 +1,5 @@ +"./Src/task3.o" +"./Src/task3_it.o" +"./Startup/startup_stm32g431kbtx.o" +"./Startup/syscalls.o" +"./Startup/sysmem.o" diff --git a/task3/Debug/objects.mk b/task3/Debug/objects.mk new file mode 100644 index 0000000..758de29 --- /dev/null +++ b/task3/Debug/objects.mk @@ -0,0 +1,9 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/task3/Debug/sources.mk b/task3/Debug/sources.mk new file mode 100644 index 0000000..4f923d1 --- /dev/null +++ b/task3/Debug/sources.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +CYCLO_FILES := +SIZE_OUTPUT := +OBJDUMP_LIST := +SU_FILES := +EXECUTABLES := +OBJS := +MAP_FILES := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Src \ +Startup \ + diff --git a/task3/Inc/STefi-Light.h b/task3/Inc/STefi-Light.h new file mode 100644 index 0000000..737ce2a --- /dev/null +++ b/task3/Inc/STefi-Light.h @@ -0,0 +1,80 @@ +/* *************************************************************************************** + * Project: task1 + * File: STefi-Light.h + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32F042K6 / STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 30.07.2021 + * + * Version: 1.1 + * History: + * 30.07.2021 ML create file + * 09.03.2022 ML check G431 compatibility + * + * Status: working + * + * Description: + * Definitions and declarations related to STefi Light board hardware + * extended by application related elements. + * + * + * Notes: + * Default MCU speed at startup is: + * - F042 = 8 MHz + * - G431 = 16 MHz + * + * ToDo: + * - none - + ************************************************************************************** */ +#ifndef STEFI_LIGHT_H_ +#define STEFI_LIGHT_H_ +/* ==================================================================================== */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ + + +/* ------------------------------------ DEFINES --------------------------------------- */ + +/* --- STefi peripherals related definitions --- */ + +// LEDs +#define MASK_LED0 (1 << 0) +#define MASK_LED1 (1 << 1) +#define MASK_LED2 (1 << 2) +#define MASK_LED3 (1 << 3) + +#define MASK_LED_RED (MASK_LED0) +#define MASK_LED_YELLOW (MASK_LED1) +#define MASK_LED_GREEN (MASK_LED2) +#define MASK_LED_BLUE (MASK_LED3) +#define MASK_LED_ALL (MASK_LED_RED | MASK_LED_YELLOW | MASK_LED_GREEN | MASK_LED_BLUE) + + +// buttons +#define MASK_S0 (1 << 0) +#define MASK_S1 (1 << 4) +#define MASK_S2 (1 << 5) +#define MASK_S3 (1 << 7) + +#define MASK_KEY0 (MASK_S0) +#define MASK_KEY1 (MASK_S1) +#define MASK_KEY2 (MASK_S2) +#define MASK_KEY3 (MASK_S3) + + +/* --- STefi MCU related definitions --- */ + +/* --- application related definitions --- */ + +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + +/* ==================================================================================== */ +#endif /* STEFI_LIGHT_H_ */ +/* ************************************ E O F ***************************************** */ diff --git a/task3/Inc/cmsis_compiler.h b/task3/Inc/cmsis_compiler.h new file mode 100644 index 0000000..21a2c71 --- /dev/null +++ b/task3/Inc/cmsis_compiler.h @@ -0,0 +1,283 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.1.0 + * @date 09. October 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6.6 LTM (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) + #include "cmsis_armclang_ltm.h" + + /* + * Arm Compiler above 6.10.1 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #define __RESTRICT __restrict + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/task3/Inc/cmsis_gcc.h b/task3/Inc/cmsis_gcc.h new file mode 100644 index 0000000..1e08e7e --- /dev/null +++ b/task3/Inc/cmsis_gcc.h @@ -0,0 +1,2168 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START + +/** + \brief Initializes data and bss sections + \details This default implementations initialized all data and additional bss + sections relying on .copy.table and .zero.table specified properly + in the used linker script. + + */ +__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) +{ + extern void _start(void) __NO_RETURN; + + typedef struct { + uint32_t const* src; + uint32_t* dest; + uint32_t wlen; + } __copy_table_t; + + typedef struct { + uint32_t* dest; + uint32_t wlen; + } __zero_table_t; + + extern const __copy_table_t __copy_table_start__; + extern const __copy_table_t __copy_table_end__; + extern const __zero_table_t __zero_table_start__; + extern const __zero_table_t __zero_table_end__; + + for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = pTable->src[i]; + } + } + + for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = 0u; + } + } + + _start(); +} + +#define __PROGRAM_START __cmsis_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP __StackTop +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT __StackLimit +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section(".vectors"))) +#endif + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/task3/Inc/cmsis_version.h b/task3/Inc/cmsis_version.h new file mode 100644 index 0000000..3174cf6 --- /dev/null +++ b/task3/Inc/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.3 + * @date 24. June 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 3U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/task3/Inc/core_cm4.h b/task3/Inc/core_cm4.h new file mode 100644 index 0000000..90c2a72 --- /dev/null +++ b/task3/Inc/core_cm4.h @@ -0,0 +1,2124 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + 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) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \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) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + 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 Used priority group. + \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) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M4 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/task3/Inc/mpu_armv7.h b/task3/Inc/mpu_armv7.h new file mode 100644 index 0000000..337eb65 --- /dev/null +++ b/task3/Inc/mpu_armv7.h @@ -0,0 +1,272 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.1.0 + * @date 08. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2017-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \ + (((SubRegionDisable) << MPU_RASR_SRD_Pos) & MPU_RASR_SRD_Msk) | \ + (((Size) << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk) | \ + (((MPU_RASR_ENABLE_Msk)))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if shareable) or 010b (if non-shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/task3/Inc/stm32g431xx.h b/task3/Inc/stm32g431xx.h new file mode 100644 index 0000000..7e3265d --- /dev/null +++ b/task3/Inc/stm32g431xx.h @@ -0,0 +1,13139 @@ +/** + ****************************************************************************** + * @file stm32g431xx.h + * @author MCD Application Team + * @brief CMSIS STM32G431xx Device Peripheral Access Layer Header File. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2019 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32g431xx + * @{ + */ + +#ifndef __STM32G431xx_H +#define __STM32G431xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ +#define __CM4_REV 0x0001U /*!< Cortex-M4 revision r0p1 */ +#define __MPU_PRESENT 1U /*!< STM32G4XX provides an MPU */ +#define __NVIC_PRIO_BITS 4U /*!< STM32G4XX uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1U /*!< FPU present */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32G4XX Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum +{ +/****** Cortex-M4 Processor Exceptions Numbers *********************************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Cortex-M4 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M4 Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt */ +/****** STM32 specific Interrupt Numbers ***************************************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_PVM_IRQn = 1, /*!< PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection Interrupts */ + RTC_TAMP_LSECSS_IRQn = 2, /*!< RTC Tamper and TimeStamp and RCC LSE CSS interrupts through the EXTI */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_IRQn = 19, /*!< USB HP Interrupt */ + USB_LP_IRQn = 20, /*!< USB LP Interrupt */ + FDCAN1_IT0_IRQn = 21, /*!< FDCAN1 IT0 Interrupt */ + FDCAN1_IT1_IRQn = 22, /*!< FDCAN1 IT1 Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break, Transition error, Index error and TIM15 global interrupt */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update Interrupt and TIM16 global interrupt */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 TIM1 Trigger, Commutation, Direction change, Index and TIM17 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Wakeup through EXTI line Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break, Transition error and Index error Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger, Commutation, Direction change and Index Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + LPTIM1_IRQn = 49, /*!< LP TIM1 Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&3 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global interrupts */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + UCPD1_IRQn = 63, /*!< UCPD global Interrupt */ + COMP1_2_3_IRQn = 64, /*!< COMP1, COMP2 and COMP3 Interrupts */ + COMP4_IRQn = 65, /*!< COMP4 */ + CRS_IRQn = 75, /*!< CRS global interrupt */ + SAI1_IRQn = 76, /*!< Serial Audio Interface global interrupt */ + FPU_IRQn = 81, /*!< FPU global interrupt */ + RNG_IRQn = 90, /*!< RNG global interrupt */ + LPUART1_IRQn = 91, /*!< LP UART 1 Interrupt */ + I2C3_EV_IRQn = 92, /*!< I2C3 Event Interrupt */ + I2C3_ER_IRQn = 93, /*!< I2C3 Error interrupt */ + DMAMUX_OVR_IRQn = 94, /*!< DMAMUX overrun global interrupt */ + DMA2_Channel6_IRQn = 97, /*!< DMA2 Channel 6 interrupt */ + CORDIC_IRQn = 100, /*!< CORDIC global Interrupt */ + FMAC_IRQn = 101 /*!< FMAC global Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#include "system_stm32g4xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR1; /*!< ADC sampling time register 1, Address offset: 0x14 */ + __IO uint32_t SMPR2; /*!< ADC sampling time register 2, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, 0x1C */ + __IO uint32_t TR1; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + __IO uint32_t TR2; /*!< ADC analog watchdog 2 threshold register, Address offset: 0x24 */ + __IO uint32_t TR3; /*!< ADC analog watchdog 3 threshold register, Address offset: 0x28 */ + uint32_t RESERVED2; /*!< Reserved, 0x2C */ + __IO uint32_t SQR1; /*!< ADC group regular sequencer register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC group regular sequencer register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC group regular sequencer register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC group regular sequencer register 4, Address offset: 0x3C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, 0x44 */ + uint32_t RESERVED4; /*!< Reserved, 0x48 */ + __IO uint32_t JSQR; /*!< ADC group injected sequencer register, Address offset: 0x4C */ + uint32_t RESERVED5[4]; /*!< Reserved, 0x50 - 0x5C */ + __IO uint32_t OFR1; /*!< ADC offset register 1, Address offset: 0x60 */ + __IO uint32_t OFR2; /*!< ADC offset register 2, Address offset: 0x64 */ + __IO uint32_t OFR3; /*!< ADC offset register 3, Address offset: 0x68 */ + __IO uint32_t OFR4; /*!< ADC offset register 4, Address offset: 0x6C */ + uint32_t RESERVED6[4]; /*!< Reserved, 0x70 - 0x7C */ + __IO uint32_t JDR1; /*!< ADC group injected rank 1 data register, Address offset: 0x80 */ + __IO uint32_t JDR2; /*!< ADC group injected rank 2 data register, Address offset: 0x84 */ + __IO uint32_t JDR3; /*!< ADC group injected rank 3 data register, Address offset: 0x88 */ + __IO uint32_t JDR4; /*!< ADC group injected rank 4 data register, Address offset: 0x8C */ + uint32_t RESERVED7[4]; /*!< Reserved, 0x090 - 0x09C */ + __IO uint32_t AWD2CR; /*!< ADC analog watchdog 2 configuration register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC analog watchdog 3 Configuration Register, Address offset: 0xA4 */ + uint32_t RESERVED8; /*!< Reserved, 0x0A8 */ + uint32_t RESERVED9; /*!< Reserved, 0x0AC */ + __IO uint32_t DIFSEL; /*!< ADC differential mode selection register, Address offset: 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC calibration factors, Address offset: 0xB4 */ + uint32_t RESERVED10[2];/*!< Reserved, 0x0B8 - 0x0BC */ + __IO uint32_t GCOMP; /*!< ADC calibration factors, Address offset: 0xC0 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: 0x300 + 0x00 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x300 + 0x04 */ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: 0x300 + 0x08 */ + __IO uint32_t CDR; /*!< ADC common group regular data register Address offset: 0x300 + 0x0C */ +} ADC_Common_TypeDef; + +/** + * @brief FD Controller Area Network + */ + +typedef struct +{ + __IO uint32_t CREL; /*!< FDCAN Core Release register, Address offset: 0x000 */ + __IO uint32_t ENDN; /*!< FDCAN Endian register, Address offset: 0x004 */ + uint32_t RESERVED1; /*!< Reserved, 0x008 */ + __IO uint32_t DBTP; /*!< FDCAN Data Bit Timing & Prescaler register, Address offset: 0x00C */ + __IO uint32_t TEST; /*!< FDCAN Test register, Address offset: 0x010 */ + __IO uint32_t RWD; /*!< FDCAN RAM Watchdog register, Address offset: 0x014 */ + __IO uint32_t CCCR; /*!< FDCAN CC Control register, Address offset: 0x018 */ + __IO uint32_t NBTP; /*!< FDCAN Nominal Bit Timing & Prescaler register, Address offset: 0x01C */ + __IO uint32_t TSCC; /*!< FDCAN Timestamp Counter Configuration register, Address offset: 0x020 */ + __IO uint32_t TSCV; /*!< FDCAN Timestamp Counter Value register, Address offset: 0x024 */ + __IO uint32_t TOCC; /*!< FDCAN Timeout Counter Configuration register, Address offset: 0x028 */ + __IO uint32_t TOCV; /*!< FDCAN Timeout Counter Value register, Address offset: 0x02C */ + uint32_t RESERVED2[4]; /*!< Reserved, 0x030 - 0x03C */ + __IO uint32_t ECR; /*!< FDCAN Error Counter register, Address offset: 0x040 */ + __IO uint32_t PSR; /*!< FDCAN Protocol Status register, Address offset: 0x044 */ + __IO uint32_t TDCR; /*!< FDCAN Transmitter Delay Compensation register, Address offset: 0x048 */ + uint32_t RESERVED3; /*!< Reserved, 0x04C */ + __IO uint32_t IR; /*!< FDCAN Interrupt register, Address offset: 0x050 */ + __IO uint32_t IE; /*!< FDCAN Interrupt Enable register, Address offset: 0x054 */ + __IO uint32_t ILS; /*!< FDCAN Interrupt Line Select register, Address offset: 0x058 */ + __IO uint32_t ILE; /*!< FDCAN Interrupt Line Enable register, Address offset: 0x05C */ + uint32_t RESERVED4[8]; /*!< Reserved, 0x060 - 0x07C */ + __IO uint32_t RXGFC; /*!< FDCAN Global Filter Configuration register, Address offset: 0x080 */ + __IO uint32_t XIDAM; /*!< FDCAN Extended ID AND Mask register, Address offset: 0x084 */ + __IO uint32_t HPMS; /*!< FDCAN High Priority Message Status register, Address offset: 0x088 */ + uint32_t RESERVED5; /*!< Reserved, 0x08C */ + __IO uint32_t RXF0S; /*!< FDCAN Rx FIFO 0 Status register, Address offset: 0x090 */ + __IO uint32_t RXF0A; /*!< FDCAN Rx FIFO 0 Acknowledge register, Address offset: 0x094 */ + __IO uint32_t RXF1S; /*!< FDCAN Rx FIFO 1 Status register, Address offset: 0x098 */ + __IO uint32_t RXF1A; /*!< FDCAN Rx FIFO 1 Acknowledge register, Address offset: 0x09C */ + uint32_t RESERVED6[8]; /*!< Reserved, 0x0A0 - 0x0BC */ + __IO uint32_t TXBC; /*!< FDCAN Tx Buffer Configuration register, Address offset: 0x0C0 */ + __IO uint32_t TXFQS; /*!< FDCAN Tx FIFO/Queue Status register, Address offset: 0x0C4 */ + __IO uint32_t TXBRP; /*!< FDCAN Tx Buffer Request Pending register, Address offset: 0x0C8 */ + __IO uint32_t TXBAR; /*!< FDCAN Tx Buffer Add Request register, Address offset: 0x0CC */ + __IO uint32_t TXBCR; /*!< FDCAN Tx Buffer Cancellation Request register, Address offset: 0x0D0 */ + __IO uint32_t TXBTO; /*!< FDCAN Tx Buffer Transmission Occurred register, Address offset: 0x0D4 */ + __IO uint32_t TXBCF; /*!< FDCAN Tx Buffer Cancellation Finished register, Address offset: 0x0D8 */ + __IO uint32_t TXBTIE; /*!< FDCAN Tx Buffer Transmission Interrupt Enable register, Address offset: 0x0DC */ + __IO uint32_t TXBCIE; /*!< FDCAN Tx Buffer Cancellation Finished Interrupt Enable register, Address offset: 0x0E0 */ + __IO uint32_t TXEFS; /*!< FDCAN Tx Event FIFO Status register, Address offset: 0x0E4 */ + __IO uint32_t TXEFA; /*!< FDCAN Tx Event FIFO Acknowledge register, Address offset: 0x0E8 */ +} FDCAN_GlobalTypeDef; + +/** + * @brief FD Controller Area Network Configuration + */ + +typedef struct +{ + __IO uint32_t CKDIV; /*!< FDCAN clock divider register, Address offset: 0x100 + 0x000 */ +} FDCAN_Config_TypeDef; + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED0; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + +/** + * @brief Clock Recovery System + */ +typedef struct +{ + __IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */ + __IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */ + __IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */ + __IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */ +} CRS_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ + __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */ + __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */ + __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */ + __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */ + __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */ + __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */ + __IO uint32_t RESERVED[2]; + __IO uint32_t STR1; /*!< DAC Sawtooth register, Address offset: 0x58 */ + __IO uint32_t STR2; /*!< DAC Sawtooth register, Address offset: 0x5C */ + __IO uint32_t STMODR; /*!< DAC Sawtooth Mode register, Address offset: 0x60 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */ + __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */ +} DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief DMA Multiplexer + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA Multiplexer Channel x Control Register Address offset: 0x0004 * (channel x) */ +}DMAMUX_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< DMA Channel Status Register Address offset: 0x0080 */ + __IO uint32_t CFR; /*!< DMA Channel Clear Flag Register Address offset: 0x0084 */ +}DMAMUX_ChannelStatus_TypeDef; + +typedef struct +{ + __IO uint32_t RGCR; /*!< DMA Request Generator x Control Register Address offset: 0x0100 + 0x0004 * (Req Gen x) */ +}DMAMUX_RequestGen_TypeDef; + +typedef struct +{ + __IO uint32_t RGSR; /*!< DMA Request Generator Status Register Address offset: 0x0140 */ + __IO uint32_t RGCFR; /*!< DMA Request Generator Clear Flag Register Address offset: 0x0144 */ +}DMAMUX_RequestGenStatus_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR1; /*!< EXTI Interrupt mask register 1, Address offset: 0x00 */ + __IO uint32_t EMR1; /*!< EXTI Event mask register 1, Address offset: 0x04 */ + __IO uint32_t RTSR1; /*!< EXTI Rising trigger selection register 1, Address offset: 0x08 */ + __IO uint32_t FTSR1; /*!< EXTI Falling trigger selection register 1, Address offset: 0x0C */ + __IO uint32_t SWIER1; /*!< EXTI Software interrupt event register 1, Address offset: 0x10 */ + __IO uint32_t PR1; /*!< EXTI Pending register 1, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t IMR2; /*!< EXTI Interrupt mask register 2, Address offset: 0x20 */ + __IO uint32_t EMR2; /*!< EXTI Event mask register 2, Address offset: 0x24 */ + __IO uint32_t RTSR2; /*!< EXTI Rising trigger selection register 2, Address offset: 0x28 */ + __IO uint32_t FTSR2; /*!< EXTI Falling trigger selection register 2, Address offset: 0x2C */ + __IO uint32_t SWIER2; /*!< EXTI Software interrupt event register 2, Address offset: 0x30 */ + __IO uint32_t PR2; /*!< EXTI Pending register 2, Address offset: 0x34 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32_t PDKEYR; /*!< FLASH power down key register, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x14 */ + __IO uint32_t ECCR; /*!< FLASH ECC register, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x1C */ + __IO uint32_t OPTR; /*!< FLASH option register, Address offset: 0x20 */ + __IO uint32_t PCROP1SR; /*!< FLASH bank1 PCROP start address register, Address offset: 0x24 */ + __IO uint32_t PCROP1ER; /*!< FLASH bank1 PCROP end address register, Address offset: 0x28 */ + __IO uint32_t WRP1AR; /*!< FLASH bank1 WRP area A address register, Address offset: 0x2C */ + __IO uint32_t WRP1BR; /*!< FLASH bank1 WRP area B address register, Address offset: 0x30 */ + uint32_t RESERVED2[15]; /*!< Reserved2, Address offset: 0x34 */ + __IO uint32_t SEC1R; /*!< FLASH Securable memory register bank1, Address offset: 0x70 */ +} FLASH_TypeDef; + +/** + * @brief FMAC + */ +typedef struct +{ + __IO uint32_t X1BUFCFG; /*!< FMAC X1 Buffer Configuration register, Address offset: 0x00 */ + __IO uint32_t X2BUFCFG; /*!< FMAC X2 Buffer Configuration register, Address offset: 0x04 */ + __IO uint32_t YBUFCFG; /*!< FMAC Y Buffer Configuration register, Address offset: 0x08 */ + __IO uint32_t PARAM; /*!< FMAC Parameter register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< FMAC Control register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< FMAC Status register, Address offset: 0x14 */ + __IO uint32_t WDATA; /*!< FMAC Write Data register, Address offset: 0x18 */ + __IO uint32_t RDATA; /*!< FMAC Read Data register, Address offset: 0x1C */ +} FMAC_TypeDef; + + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + +/** + * @brief LPTIMER + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t CMP; /*!< LPTIM Compare register, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ + __IO uint32_t OR; /*!< LPTIM Option register, Address offset: 0x20 */ +} LPTIM_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */ + __IO uint32_t RESERVED[5]; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t TCMR; /*!< OPAMP timer controlled mux mode register, Address offset: 0x18 */ +} OPAMP_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< PWR power control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< PWR power control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< PWR power control register 3, Address offset: 0x08 */ + __IO uint32_t CR4; /*!< PWR power control register 4, Address offset: 0x0C */ + __IO uint32_t SR1; /*!< PWR power status register 1, Address offset: 0x10 */ + __IO uint32_t SR2; /*!< PWR power status register 2, Address offset: 0x14 */ + __IO uint32_t SCR; /*!< PWR power status reset register, Address offset: 0x18 */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t PUCRA; /*!< Pull_up control register of portA, Address offset: 0x20 */ + __IO uint32_t PDCRA; /*!< Pull_Down control register of portA, Address offset: 0x24 */ + __IO uint32_t PUCRB; /*!< Pull_up control register of portB, Address offset: 0x28 */ + __IO uint32_t PDCRB; /*!< Pull_Down control register of portB, Address offset: 0x2C */ + __IO uint32_t PUCRC; /*!< Pull_up control register of portC, Address offset: 0x30 */ + __IO uint32_t PDCRC; /*!< Pull_Down control register of portC, Address offset: 0x34 */ + __IO uint32_t PUCRD; /*!< Pull_up control register of portD, Address offset: 0x38 */ + __IO uint32_t PDCRD; /*!< Pull_Down control register of portD, Address offset: 0x3C */ + __IO uint32_t PUCRE; /*!< Pull_up control register of portE, Address offset: 0x40 */ + __IO uint32_t PDCRE; /*!< Pull_Down control register of portE, Address offset: 0x44 */ + __IO uint32_t PUCRF; /*!< Pull_up control register of portF, Address offset: 0x48 */ + __IO uint32_t PDCRF; /*!< Pull_Down control register of portF, Address offset: 0x4C */ + __IO uint32_t PUCRG; /*!< Pull_up control register of portG, Address offset: 0x50 */ + __IO uint32_t PDCRG; /*!< Pull_Down control register of portG, Address offset: 0x54 */ + uint32_t RESERVED1[10]; /*!< Reserved Address offset: 0x58 - 0x7C */ + __IO uint32_t CR5; /*!< PWR power control register 5, Address offset: 0x80 */ +} PWR_TypeDef; + + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC system PLL configuration register, Address offset: 0x0C */ + uint32_t RESERVED0; /*!< Reserved, Address offset: 0x10 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC clock interrupt enable register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC clock interrupt flag register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC clock interrupt clear register, Address offset: 0x20 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x28 */ + __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x2C */ + __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x30 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x34 */ + __IO uint32_t APB1RSTR1; /*!< RCC APB1 peripheral reset register 1, Address offset: 0x38 */ + __IO uint32_t APB1RSTR2; /*!< RCC APB1 peripheral reset register 2, Address offset: 0x3C */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x40 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x44 */ + __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clocks enable register, Address offset: 0x48 */ + __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clocks enable register, Address offset: 0x4C */ + __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clocks enable register, Address offset: 0x50 */ + uint32_t RESERVED5; /*!< Reserved, Address offset: 0x54 */ + __IO uint32_t APB1ENR1; /*!< RCC APB1 peripheral clocks enable register 1, Address offset: 0x58 */ + __IO uint32_t APB1ENR2; /*!< RCC APB1 peripheral clocks enable register 2, Address offset: 0x5C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clocks enable register, Address offset: 0x60 */ + uint32_t RESERVED6; /*!< Reserved, Address offset: 0x64 */ + __IO uint32_t AHB1SMENR; /*!< RCC AHB1 peripheral clocks enable in sleep and stop modes register, Address offset: 0x68 */ + __IO uint32_t AHB2SMENR; /*!< RCC AHB2 peripheral clocks enable in sleep and stop modes register, Address offset: 0x6C */ + __IO uint32_t AHB3SMENR; /*!< RCC AHB3 peripheral clocks enable in sleep and stop modes register, Address offset: 0x70 */ + uint32_t RESERVED7; /*!< Reserved, Address offset: 0x74 */ + __IO uint32_t APB1SMENR1; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 1, Address offset: 0x78 */ + __IO uint32_t APB1SMENR2; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 2, Address offset: 0x7C */ + __IO uint32_t APB2SMENR; /*!< RCC APB2 peripheral clocks enable in sleep mode and stop modes register, Address offset: 0x80 */ + uint32_t RESERVED8; /*!< Reserved, Address offset: 0x84 */ + __IO uint32_t CCIPR; /*!< RCC peripherals independent clock configuration register, Address offset: 0x88 */ + uint32_t RESERVED9; /*!< Reserved, Address offset: 0x8C */ + __IO uint32_t BDCR; /*!< RCC backup domain control register, Address offset: 0x90 */ + __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x94 */ + __IO uint32_t CRRCR; /*!< RCC clock recovery RC register, Address offset: 0x98 */ + __IO uint32_t CCIPR2; /*!< RCC peripherals independent clock configuration register 2, Address offset: 0x9C */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ +/* +* @brief Specific device feature definitions +*/ +#define RTC_TAMP_INT_6_SUPPORT +#define RTC_TAMP_INT_NB 4u + +#define RTC_TAMP_NB 3u +#define RTC_BACKUP_NB 16u + + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */ + __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x1C */ + uint32_t RESERVED1; /*!< Reserved Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x3C */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */ + __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */ + __IO uint32_t MISR; /*!< RTC Masked Interrupt Status register, Address offset: 0x54 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x58 */ + __IO uint32_t SCR; /*!< RTC Status Clear register, Address offset: 0x5C */ +} RTC_TypeDef; + +/** + * @brief Tamper and backup registers + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TAMP configuration register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TAMP configuration register 2, Address offset: 0x04 */ + uint32_t RESERVED0; /*!< no configuration register 3, Address offset: 0x08 */ + __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */ + uint32_t RESERVED1[6]; /*!< Reserved Address offset: 0x10 - 0x24 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x28 */ + __IO uint32_t IER; /*!< TAMP Interrupt enable register, Address offset: 0x2C */ + __IO uint32_t SR; /*!< TAMP Status register, Address offset: 0x30 */ + __IO uint32_t MISR; /*!< TAMP Masked Interrupt Status register Address offset: 0x34 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x38 */ + __IO uint32_t SCR; /*!< TAMP Status clear register, Address offset: 0x3C */ + uint32_t RESERVED4[48]; /*!< Reserved Address offset: 0x040 - 0xFC */ + __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */ + __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */ + __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */ + __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */ + __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */ + __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */ + __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */ + __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */ + __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */ + __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */ + __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */ + __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */ + __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */ + __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */ + __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */ + __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */ +} TAMP_TypeDef; + +/** + * @brief Serial Audio Interface + */ + +typedef struct +{ + __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */ + uint32_t RESERVED[16]; /*!< Reserved, Address offset: 0x04 to 0x40 */ + __IO uint32_t PDMCR; /*!< SAI PDM control register, Address offset: 0x44 */ + __IO uint32_t PDMDLY; /*!< SAI PDM delay register, Address offset: 0x48 */ +} SAI_TypeDef; + +typedef struct +{ + __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */ + __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */ + __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */ + __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */ + __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */ +} SAI_Block_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register, Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register, Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register, Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ + __IO uint32_t SCSR; /*!< SYSCFG CCMSRAM control and status register, Address offset: 0x18 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x1C */ + __IO uint32_t SWPR; /*!< SYSCFG CCMSRAM write protection register, Address offset: 0x20 */ + __IO uint32_t SKR; /*!< SYSCFG CCMSRAM Key Register, Address offset: 0x24 */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */ + __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */ + __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */ + __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */ + __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */ + __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */ + __IO uint32_t OR ; /*!< TIM option register, Address offset: 0x68 */ + uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + __IO uint32_t RTOR; /*!< USART Receiver Timeout register, Address offset: 0x14 */ + __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */ +} USART_TypeDef; + +/** + * @brief Universal Serial Bus Full Speed Device + */ + +typedef struct +{ + __IO uint16_t EP0R; /*!< USB Endpoint 0 register, Address offset: 0x00 */ + __IO uint16_t RESERVED0; /*!< Reserved */ + __IO uint16_t EP1R; /*!< USB Endpoint 1 register, Address offset: 0x04 */ + __IO uint16_t RESERVED1; /*!< Reserved */ + __IO uint16_t EP2R; /*!< USB Endpoint 2 register, Address offset: 0x08 */ + __IO uint16_t RESERVED2; /*!< Reserved */ + __IO uint16_t EP3R; /*!< USB Endpoint 3 register, Address offset: 0x0C */ + __IO uint16_t RESERVED3; /*!< Reserved */ + __IO uint16_t EP4R; /*!< USB Endpoint 4 register, Address offset: 0x10 */ + __IO uint16_t RESERVED4; /*!< Reserved */ + __IO uint16_t EP5R; /*!< USB Endpoint 5 register, Address offset: 0x14 */ + __IO uint16_t RESERVED5; /*!< Reserved */ + __IO uint16_t EP6R; /*!< USB Endpoint 6 register, Address offset: 0x18 */ + __IO uint16_t RESERVED6; /*!< Reserved */ + __IO uint16_t EP7R; /*!< USB Endpoint 7 register, Address offset: 0x1C */ + __IO uint16_t RESERVED7[17]; /*!< Reserved */ + __IO uint16_t CNTR; /*!< Control register, Address offset: 0x40 */ + __IO uint16_t RESERVED8; /*!< Reserved */ + __IO uint16_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */ + __IO uint16_t RESERVED9; /*!< Reserved */ + __IO uint16_t FNR; /*!< Frame number register, Address offset: 0x48 */ + __IO uint16_t RESERVEDA; /*!< Reserved */ + __IO uint16_t DADDR; /*!< Device address register, Address offset: 0x4C */ + __IO uint16_t RESERVEDB; /*!< Reserved */ + __IO uint16_t BTABLE; /*!< Buffer Table address register, Address offset: 0x50 */ + __IO uint16_t RESERVEDC; /*!< Reserved */ + __IO uint16_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */ + __IO uint16_t RESERVEDD; /*!< Reserved */ + __IO uint16_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */ + __IO uint16_t RESERVEDE; /*!< Reserved */ +} USB_TypeDef; + +/** + * @brief VREFBUF + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< VREFBUF control and status register, Address offset: 0x00 */ + __IO uint32_t CCR; /*!< VREFBUF calibration and control register, Address offset: 0x04 */ +} VREFBUF_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + +/** + * @brief RNG + */ +typedef struct +{ + __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */ + __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */ +} RNG_TypeDef; + +/** + * @brief CORDIC + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< CORDIC control and status register, Address offset: 0x00 */ + __IO uint32_t WDATA; /*!< CORDIC argument register, Address offset: 0x04 */ + __IO uint32_t RDATA; /*!< CORDIC result register, Address offset: 0x08 */ +} CORDIC_TypeDef; + +/** + * @brief UCPD + */ + +typedef struct +{ + __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */ + __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */ + __IO uint32_t RESERVED0; /*!< UCPD reserved register, Address offset: 0x08 */ + __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */ + __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */ + __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */ + __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */ + __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */ + __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */ + __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */ + __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */ + __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */ + __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */ + __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */ +} UCPD_TypeDef; + + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE (0x08000000UL) /*!< FLASH (up to 128 kB) base address */ +#define SRAM1_BASE (0x20000000UL) /*!< SRAM1(up to 16 KB) base address */ +#define SRAM2_BASE (0x20004000UL) /*!< SRAM2(6 KB) base address */ +#define CCMSRAM_BASE (0x10000000UL) /*!< CCMSRAM(10 KB) base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ + +#define SRAM1_BB_BASE (0x22000000UL) /*!< SRAM1(16 KB) base address in the bit-band region */ +#define SRAM2_BB_BASE (0x22080000UL) /*!< SRAM2(6 KB) base address in the bit-band region */ +#define CCMSRAM_BB_BASE (0x220B0000UL) /*!< CCMSRAM(10 KB) base address in the bit-band region */ +#define PERIPH_BB_BASE (0x42000000UL) /*!< Peripheral base address in the bit-band region */ +/* Legacy defines */ +#define SRAM_BASE SRAM1_BASE +#define SRAM_BB_BASE SRAM1_BB_BASE + +#define SRAM1_SIZE_MAX (0x00004000UL) /*!< maximum SRAM1 size (up to 16 KBytes) */ +#define SRAM2_SIZE (0x00001800UL) /*!< SRAM2 size (6 KBytes) */ +#define CCMSRAM_SIZE (0x00002800UL) /*!< CCMSRAM size (10 KBytes) */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000UL) + + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL) +#define CRS_BASE (APB1PERIPH_BASE + 0x2000UL) +#define TAMP_BASE (APB1PERIPH_BASE + 0x2400UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800UL) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800UL) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL) +#define USB_BASE (APB1PERIPH_BASE + 0x5C00UL) /*!< USB_IP Peripheral Registers base address */ +#define USB_PMAADDR (APB1PERIPH_BASE + 0x6000UL) /*!< USB_IP Packet Memory Area base address */ +#define FDCAN1_BASE (APB1PERIPH_BASE + 0x6400UL) +#define FDCAN_CONFIG_BASE (APB1PERIPH_BASE + 0x6500UL) /*!< FDCAN configuration registers base address */ +#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) +#define I2C3_BASE (APB1PERIPH_BASE + 0x7800UL) +#define LPTIM1_BASE (APB1PERIPH_BASE + 0x7C00UL) +#define LPUART1_BASE (APB1PERIPH_BASE + 0x8000UL) +#define UCPD1_BASE (APB1PERIPH_BASE + 0xA000UL) +#define SRAMCAN_BASE (APB1PERIPH_BASE + 0xA400UL) + +/*!< APB2 peripherals */ +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x0000UL) +#define VREFBUF_BASE (APB2PERIPH_BASE + 0x0030UL) +#define COMP1_BASE (APB2PERIPH_BASE + 0x0200UL) +#define COMP2_BASE (APB2PERIPH_BASE + 0x0204UL) +#define COMP3_BASE (APB2PERIPH_BASE + 0x0208UL) +#define COMP4_BASE (APB2PERIPH_BASE + 0x020CUL) +#define OPAMP_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP1_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP2_BASE (APB2PERIPH_BASE + 0x0304UL) +#define OPAMP3_BASE (APB2PERIPH_BASE + 0x0308UL) + +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400UL) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800UL) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000UL) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400UL) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800UL) +#define SAI1_BASE (APB2PERIPH_BASE + 0x5400UL) +#define SAI1_Block_A_BASE (SAI1_BASE + 0x0004UL) +#define SAI1_Block_B_BASE (SAI1_BASE + 0x0024UL) + +/*!< AHB1 peripherals */ +#define DMA1_BASE (AHB1PERIPH_BASE) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x0400UL) +#define DMAMUX1_BASE (AHB1PERIPH_BASE + 0x0800UL) +#define CORDIC_BASE (AHB1PERIPH_BASE + 0x0C00UL) +#define RCC_BASE (AHB1PERIPH_BASE + 0x1000UL) +#define FMAC_BASE (AHB1PERIPH_BASE + 0x1400UL) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x2000UL) +#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) + +#define DMA1_Channel1_BASE (DMA1_BASE + 0x0008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x0030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x0044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x0058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x006CUL) + +#define DMA2_Channel1_BASE (DMA2_BASE + 0x0008UL) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x001CUL) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x0030UL) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x0044UL) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x0058UL) +#define DMA2_Channel6_BASE (DMA2_BASE + 0x006CUL) + +#define DMAMUX1_Channel0_BASE (DMAMUX1_BASE) +#define DMAMUX1_Channel1_BASE (DMAMUX1_BASE + 0x0004UL) +#define DMAMUX1_Channel2_BASE (DMAMUX1_BASE + 0x0008UL) +#define DMAMUX1_Channel3_BASE (DMAMUX1_BASE + 0x000CUL) +#define DMAMUX1_Channel4_BASE (DMAMUX1_BASE + 0x0010UL) +#define DMAMUX1_Channel5_BASE (DMAMUX1_BASE + 0x0014UL) +#define DMAMUX1_Channel6_BASE (DMAMUX1_BASE + 0x0020UL) +#define DMAMUX1_Channel7_BASE (DMAMUX1_BASE + 0x0024UL) +#define DMAMUX1_Channel8_BASE (DMAMUX1_BASE + 0x0028UL) +#define DMAMUX1_Channel9_BASE (DMAMUX1_BASE + 0x002CUL) +#define DMAMUX1_Channel10_BASE (DMAMUX1_BASE + 0x0030UL) +#define DMAMUX1_Channel11_BASE (DMAMUX1_BASE + 0x0034UL) +#define DMAMUX1_RequestGenerator0_BASE (DMAMUX1_BASE + 0x0100UL) +#define DMAMUX1_RequestGenerator1_BASE (DMAMUX1_BASE + 0x0104UL) +#define DMAMUX1_RequestGenerator2_BASE (DMAMUX1_BASE + 0x0108UL) +#define DMAMUX1_RequestGenerator3_BASE (DMAMUX1_BASE + 0x010CUL) + +#define DMAMUX1_ChannelStatus_BASE (DMAMUX1_BASE + 0x0080UL) +#define DMAMUX1_RequestGenStatus_BASE (DMAMUX1_BASE + 0x0140UL) + +/*!< AHB2 peripherals */ +#define GPIOA_BASE (AHB2PERIPH_BASE + 0x0000UL) +#define GPIOB_BASE (AHB2PERIPH_BASE + 0x0400UL) +#define GPIOC_BASE (AHB2PERIPH_BASE + 0x0800UL) +#define GPIOD_BASE (AHB2PERIPH_BASE + 0x0C00UL) +#define GPIOE_BASE (AHB2PERIPH_BASE + 0x1000UL) +#define GPIOF_BASE (AHB2PERIPH_BASE + 0x1400UL) +#define GPIOG_BASE (AHB2PERIPH_BASE + 0x1800UL) + +#define ADC1_BASE (AHB2PERIPH_BASE + 0x08000000UL) +#define ADC2_BASE (AHB2PERIPH_BASE + 0x08000100UL) +#define ADC12_COMMON_BASE (AHB2PERIPH_BASE + 0x08000300UL) + +#define DAC_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC1_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC3_BASE (AHB2PERIPH_BASE + 0x08001000UL) + +#define RNG_BASE (AHB2PERIPH_BASE + 0x08060800UL) +/* Debug MCU registers base address */ +#define DBGMCU_BASE (0xE0042000UL) + +#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */ +#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE (0x1FFF75E0UL) /*!< Flash size data register base address */ +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define CRS ((CRS_TypeDef *) CRS_BASE) +#define TAMP ((TAMP_TypeDef *) TAMP_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define USB ((USB_TypeDef *) USB_BASE) +#define FDCAN1 ((FDCAN_GlobalTypeDef *) FDCAN1_BASE) +#define FDCAN_CONFIG ((FDCAN_Config_TypeDef *) FDCAN_CONFIG_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define LPUART1 ((USART_TypeDef *) LPUART1_BASE) +#define UCPD1 ((UCPD_TypeDef *) UCPD1_BASE) + +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define VREFBUF ((VREFBUF_TypeDef *) VREFBUF_BASE) +#define COMP1 ((COMP_TypeDef *) COMP1_BASE) +#define COMP2 ((COMP_TypeDef *) COMP2_BASE) +#define COMP3 ((COMP_TypeDef *) COMP3_BASE) +#define COMP4 ((COMP_TypeDef *) COMP4_BASE) + +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP1_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) OPAMP2_BASE) +#define OPAMP3 ((OPAMP_TypeDef *) OPAMP3_BASE) + +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define SAI1 ((SAI_TypeDef *) SAI1_BASE) +#define SAI1_Block_A ((SAI_Block_TypeDef *)SAI1_Block_A_BASE) +#define SAI1_Block_B ((SAI_Block_TypeDef *)SAI1_Block_B_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMAMUX1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_BASE) +#define CORDIC ((CORDIC_TypeDef *) CORDIC_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FMAC ((FMAC_TypeDef *) FMAC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC12_COMMON ((ADC_Common_TypeDef *) ADC12_COMMON_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define DAC3 ((DAC_TypeDef *) DAC3_BASE) +#define RNG ((RNG_TypeDef *) RNG_BASE) + +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) + +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define DMA2_Channel6 ((DMA_Channel_TypeDef *) DMA2_Channel6_BASE) + +#define DMAMUX1_Channel0 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel0_BASE) +#define DMAMUX1_Channel1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel1_BASE) +#define DMAMUX1_Channel2 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel2_BASE) +#define DMAMUX1_Channel3 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel3_BASE) +#define DMAMUX1_Channel4 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel4_BASE) +#define DMAMUX1_Channel5 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel5_BASE) +#define DMAMUX1_Channel6 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel6_BASE) +#define DMAMUX1_Channel7 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel7_BASE) +#define DMAMUX1_Channel8 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel8_BASE) +#define DMAMUX1_Channel9 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel9_BASE) +#define DMAMUX1_Channel10 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel10_BASE) +#define DMAMUX1_Channel11 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel11_BASE) + +#define DMAMUX1_RequestGenerator0 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator0_BASE) +#define DMAMUX1_RequestGenerator1 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator1_BASE) +#define DMAMUX1_RequestGenerator2 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator2_BASE) +#define DMAMUX1_RequestGenerator3 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator3_BASE) + +#define DMAMUX1_ChannelStatus ((DMAMUX_ChannelStatus_TypeDef *) DMAMUX1_ChannelStatus_BASE) +#define DMAMUX1_RequestGenStatus ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX1_RequestGenStatus_BASE) + + + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 130U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ + +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 serie) + */ +#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */ + +/******************** Bit definition for ADC_ISR register *******************/ +#define ADC_ISR_ADRDY_Pos (0U) +#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */ +#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOS_Pos (3U) +#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_JEOC_Pos (5U) +#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */ +#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */ +#define ADC_ISR_JEOS_Pos (6U) +#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */ +#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */ +#define ADC_ISR_AWD1_Pos (7U) +#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_ISR_AWD2_Pos (8U) +#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */ +#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */ +#define ADC_ISR_AWD3_Pos (9U) +#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */ +#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */ +#define ADC_ISR_JQOVF_Pos (10U) +#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */ +#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_IER register *******************/ +#define ADC_IER_ADRDYIE_Pos (0U) +#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */ +#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSIE_Pos (3U) +#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_JEOCIE_Pos (5U) +#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */ +#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */ +#define ADC_IER_JEOSIE_Pos (6U) +#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */ +#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */ +#define ADC_IER_AWD1IE_Pos (7U) +#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_IER_AWD2IE_Pos (8U) +#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */ +#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */ +#define ADC_IER_AWD3IE_Pos (9U) +#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */ +#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */ +#define ADC_IER_JQOVFIE_Pos (10U) +#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */ +#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */ + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */ +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_JADSTART_Pos (3U) +#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */ +#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_JADSTP_Pos (5U) +#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */ +#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */ +#define ADC_CR_ADVREGEN_Pos (28U) +#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */ +#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */ +#define ADC_CR_DEEPPWD_Pos (29U) +#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */ +#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */ +#define ADC_CR_ADCALDIF_Pos (30U) +#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */ +#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************** Bit definition for ADC_CFGR register ******************/ +#define ADC_CFGR_DMAEN_Pos (0U) +#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */ +#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */ +#define ADC_CFGR_DMACFG_Pos (1U) +#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */ +#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */ + +#define ADC_CFGR_RES_Pos (3U) +#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */ +#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */ +#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */ +#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR_EXTSEL_Pos (5U) +#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */ +#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */ +#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */ + +#define ADC_CFGR_EXTEN_Pos (10U) +#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */ + +#define ADC_CFGR_OVRMOD_Pos (12U) +#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR_CONT_Pos (13U) +#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR_AUTDLY_Pos (14U) +#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */ +#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */ +#define ADC_CFGR_ALIGN_Pos (15U) +#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */ +#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignement */ +#define ADC_CFGR_DISCEN_Pos (16U) +#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ + +#define ADC_CFGR_DISCNUM_Pos (17U) +#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */ +#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */ +#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */ +#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */ +#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */ + +#define ADC_CFGR_JDISCEN_Pos (20U) +#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */ +#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */ +#define ADC_CFGR_JQM_Pos (21U) +#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */ +#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */ +#define ADC_CFGR_AWD1SGL_Pos (22U) +#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR_AWD1EN_Pos (23U) +#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ +#define ADC_CFGR_JAWD1EN_Pos (24U) +#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */ +#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */ +#define ADC_CFGR_JAUTO_Pos (25U) +#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */ +#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */ + +#define ADC_CFGR_AWD1CH_Pos (26U) +#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */ +#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */ +#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */ + +#define ADC_CFGR_JQDIS_Pos (31U) +#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */ +#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */ + +/******************** Bit definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_ROVSE_Pos (0U) +#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */ +#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */ +#define ADC_CFGR2_JOVSE_Pos (1U) +#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */ +#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */ + +#define ADC_CFGR2_OVSR_Pos (2U) +#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */ +#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */ +#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */ +#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR2_OVSS_Pos (5U) +#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */ +#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */ +#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */ +#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */ +#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */ +#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR2_TROVS_Pos (9U) +#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */ +#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */ +#define ADC_CFGR2_ROVSM_Pos (10U) +#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */ +#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */ + +#define ADC_CFGR2_GCOMP_Pos (16U) +#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */ +#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */ + +#define ADC_CFGR2_SWTRIG_Pos (25U) +#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */ +#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */ +#define ADC_CFGR2_BULB_Pos (26U) +#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */ +#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */ +#define ADC_CFGR2_SMPTRIG_Pos (27U) +#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */ +#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */ + +/******************** Bit definition for ADC_SMPR1 register *****************/ +#define ADC_SMPR1_SMP0_Pos (0U) +#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */ +#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */ +#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */ +#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR1_SMP1_Pos (3U) +#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */ +#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */ +#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */ +#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR1_SMP2_Pos (6U) +#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */ +#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */ +#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR1_SMP3_Pos (9U) +#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */ +#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */ +#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR1_SMP4_Pos (12U) +#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */ +#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */ +#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR1_SMP5_Pos (15U) +#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */ +#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */ +#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */ +#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR1_SMP6_Pos (18U) +#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */ +#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */ +#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR1_SMP7_Pos (21U) +#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */ +#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */ +#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR1_SMP8_Pos (24U) +#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */ +#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */ +#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */ +#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */ + +#define ADC_SMPR1_SMP9_Pos (27U) +#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */ +#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */ +#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */ +#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */ + +#define ADC_SMPR1_SMPPLUS_Pos (31U) +#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */ +#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */ + +/******************** Bit definition for ADC_SMPR2 register *****************/ +#define ADC_SMPR2_SMP10_Pos (0U) +#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR2_SMP11_Pos (3U) +#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */ +#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */ +#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */ +#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR2_SMP12_Pos (6U) +#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */ +#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */ +#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR2_SMP13_Pos (9U) +#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */ +#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */ +#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR2_SMP14_Pos (12U) +#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */ +#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */ +#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */ +#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR2_SMP15_Pos (15U) +#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR2_SMP16_Pos (18U) +#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */ +#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */ +#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR2_SMP17_Pos (21U) +#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */ +#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */ +#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR2_SMP18_Pos (24U) +#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */ +#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */ +#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */ +#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */ +#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */ + +/******************** Bit definition for ADC_TR1 register *******************/ +#define ADC_TR1_LT1_Pos (0U) +#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */ +#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */ + +#define ADC_TR1_AWDFILT_Pos (12U) +#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */ +#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */ +#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */ +#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */ +#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */ + +#define ADC_TR1_HT1_Pos (16U) +#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */ + +/******************** Bit definition for ADC_TR2 register *******************/ +#define ADC_TR2_LT2_Pos (0U) +#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */ +#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */ + +#define ADC_TR2_HT2_Pos (16U) +#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */ +#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */ + +/******************** Bit definition for ADC_TR3 register *******************/ +#define ADC_TR3_LT3_Pos (0U) +#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */ +#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */ + +#define ADC_TR3_HT3_Pos (16U) +#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */ +#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */ + +/******************** Bit definition for ADC_SQR1 register ******************/ +#define ADC_SQR1_L_Pos (0U) +#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */ +#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */ +#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */ +#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */ +#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */ +#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */ + +#define ADC_SQR1_SQ1_Pos (6U) +#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */ +#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */ +#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */ +#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */ +#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */ +#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */ +#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */ + +#define ADC_SQR1_SQ2_Pos (12U) +#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */ +#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */ +#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */ +#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */ +#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */ +#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */ +#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */ + +#define ADC_SQR1_SQ3_Pos (18U) +#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */ +#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */ +#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */ +#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */ +#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */ +#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */ +#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */ + +#define ADC_SQR1_SQ4_Pos (24U) +#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */ +#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */ +#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */ +#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */ +#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */ +#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */ +#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR2 register ******************/ +#define ADC_SQR2_SQ5_Pos (0U) +#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */ +#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */ +#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */ +#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */ +#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */ +#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */ +#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */ + +#define ADC_SQR2_SQ6_Pos (6U) +#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */ +#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */ +#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */ +#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */ +#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */ +#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */ +#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */ + +#define ADC_SQR2_SQ7_Pos (12U) +#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */ +#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */ +#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */ +#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */ +#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */ +#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */ +#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */ + +#define ADC_SQR2_SQ8_Pos (18U) +#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */ +#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */ +#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */ +#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */ +#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */ +#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */ +#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */ + +#define ADC_SQR2_SQ9_Pos (24U) +#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */ +#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */ +#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */ +#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */ +#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */ +#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */ +#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR3 register ******************/ +#define ADC_SQR3_SQ10_Pos (0U) +#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */ +#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */ +#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */ +#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */ +#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */ +#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */ +#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */ + +#define ADC_SQR3_SQ11_Pos (6U) +#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */ +#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */ +#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */ +#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */ +#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */ +#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */ +#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */ + +#define ADC_SQR3_SQ12_Pos (12U) +#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */ +#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */ +#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */ +#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */ +#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */ +#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */ + +#define ADC_SQR3_SQ13_Pos (18U) +#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */ +#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */ +#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */ +#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */ +#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */ +#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */ + +#define ADC_SQR3_SQ14_Pos (24U) +#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */ +#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */ +#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */ +#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */ +#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */ +#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */ +#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR4 register ******************/ +#define ADC_SQR4_SQ15_Pos (0U) +#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */ +#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */ +#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */ +#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */ +#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */ +#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */ +#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */ + +#define ADC_SQR4_SQ16_Pos (6U) +#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */ +#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */ +#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */ +#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */ +#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */ +#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */ +#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_RDATA_Pos (0U) +#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */ + +/******************** Bit definition for ADC_JSQR register ******************/ +#define ADC_JSQR_JL_Pos (0U) +#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */ +#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */ +#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */ +#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */ + +#define ADC_JSQR_JEXTSEL_Pos (2U) +#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */ +#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */ +#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */ +#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */ +#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */ +#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */ + +#define ADC_JSQR_JEXTEN_Pos (7U) +#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */ +#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */ +#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */ +#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */ + +#define ADC_JSQR_JSQ1_Pos (9U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */ +#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */ +#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */ + +#define ADC_JSQR_JSQ2_Pos (15U) +#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */ +#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */ +#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */ +#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */ +#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */ +#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */ +#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */ + +#define ADC_JSQR_JSQ3_Pos (21U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */ +#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */ +#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */ +#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */ +#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */ + +#define ADC_JSQR_JSQ4_Pos (27U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */ +#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */ +#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */ +#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */ +#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */ + +/******************** Bit definition for ADC_OFR1 register ******************/ +#define ADC_OFR1_OFFSET1_Pos (0U) +#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */ +#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */ + +#define ADC_OFR1_OFFSETPOS_Pos (24U) +#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */ +#define ADC_OFR1_SATEN_Pos (25U) +#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */ + +#define ADC_OFR1_OFFSET1_CH_Pos (26U) +#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */ +#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR1_OFFSET1_EN_Pos (31U) +#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */ + +/******************** Bit definition for ADC_OFR2 register ******************/ +#define ADC_OFR2_OFFSET2_Pos (0U) +#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */ +#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */ + +#define ADC_OFR2_OFFSETPOS_Pos (24U) +#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */ +#define ADC_OFR2_SATEN_Pos (25U) +#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */ + +#define ADC_OFR2_OFFSET2_CH_Pos (26U) +#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */ +#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR2_OFFSET2_EN_Pos (31U) +#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */ + +/******************** Bit definition for ADC_OFR3 register ******************/ +#define ADC_OFR3_OFFSET3_Pos (0U) +#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */ +#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */ + +#define ADC_OFR3_OFFSETPOS_Pos (24U) +#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */ +#define ADC_OFR3_SATEN_Pos (25U) +#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */ + +#define ADC_OFR3_OFFSET3_CH_Pos (26U) +#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */ +#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR3_OFFSET3_EN_Pos (31U) +#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */ + +/******************** Bit definition for ADC_OFR4 register ******************/ +#define ADC_OFR4_OFFSET4_Pos (0U) +#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */ +#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */ + +#define ADC_OFR4_OFFSETPOS_Pos (24U) +#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */ +#define ADC_OFR4_SATEN_Pos (25U) +#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */ + +#define ADC_OFR4_OFFSET4_CH_Pos (26U) +#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */ +#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR4_OFFSET4_EN_Pos (31U) +#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */ + +/******************** Bit definition for ADC_JDR1 register ******************/ +#define ADC_JDR1_JDATA_Pos (0U) +#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */ + +/******************** Bit definition for ADC_JDR2 register ******************/ +#define ADC_JDR2_JDATA_Pos (0U) +#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */ + +/******************** Bit definition for ADC_JDR3 register ******************/ +#define ADC_JDR3_JDATA_Pos (0U) +#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */ + +/******************** Bit definition for ADC_JDR4 register ******************/ +#define ADC_JDR4_JDATA_Pos (0U) +#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */ + +/******************** Bit definition for ADC_AWD2CR register ****************/ +#define ADC_AWD2CR_AWD2CH_Pos (0U) +#define ADC_AWD2CR_AWD2CH_Msk (0x7FFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */ +#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_AWD3CR register ****************/ +#define ADC_AWD3CR_AWD3CH_Pos (0U) +#define ADC_AWD3CR_AWD3CH_Msk (0x7FFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */ +#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_DIFSEL register ****************/ +#define ADC_DIFSEL_DIFSEL_Pos (0U) +#define ADC_DIFSEL_DIFSEL_Msk (0x7FFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */ +#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */ +#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */ +#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */ +#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */ +#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */ +#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */ +#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */ +#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */ +#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */ +#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */ +#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */ +#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */ +#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */ +#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */ +#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */ +#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */ +#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */ +#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */ +#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */ +#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_CALFACT register ***************/ +#define ADC_CALFACT_CALFACT_S_Pos (0U) +#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */ +#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */ +#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */ +#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */ +#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */ +#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */ +#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */ +#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */ +#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */ + +#define ADC_CALFACT_CALFACT_D_Pos (16U) +#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */ +#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */ +#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */ +#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */ +#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */ +#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */ +#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */ +#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */ +#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */ + +/******************** Bit definition for ADC_GCOMP register *****************/ +#define ADC_GCOMP_GCOMPCOEFF_Pos (0U) +#define ADC_GCOMP_GCOMPCOEFF_Msk (0x3FFFUL << ADC_GCOMP_GCOMPCOEFF_Pos) /*!< 0x00003FFF */ +#define ADC_GCOMP_GCOMPCOEFF ADC_GCOMP_GCOMPCOEFF_Msk /*!< ADC Gain Compensation Coefficient */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC_CSR register *******************/ +#define ADC_CSR_ADRDY_MST_Pos (0U) +#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */ +#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */ +#define ADC_CSR_EOSMP_MST_Pos (1U) +#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */ +#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */ +#define ADC_CSR_EOC_MST_Pos (2U) +#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */ +#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_MST_Pos (3U) +#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */ +#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_MST_Pos (4U) +#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */ +#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */ +#define ADC_CSR_JEOC_MST_Pos (5U) +#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */ +#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_MST_Pos (6U) +#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */ +#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_MST_Pos (7U) +#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */ +#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */ +#define ADC_CSR_AWD2_MST_Pos (8U) +#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */ +#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */ +#define ADC_CSR_AWD3_MST_Pos (9U) +#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */ +#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_MST_Pos (10U) +#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */ +#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */ + +#define ADC_CSR_ADRDY_SLV_Pos (16U) +#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */ +#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */ +#define ADC_CSR_EOSMP_SLV_Pos (17U) +#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */ +#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */ +#define ADC_CSR_EOC_SLV_Pos (18U) +#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */ +#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_SLV_Pos (19U) +#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */ +#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_SLV_Pos (20U) +#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */ +#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */ +#define ADC_CSR_JEOC_SLV_Pos (21U) +#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */ +#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_SLV_Pos (22U) +#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */ +#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_SLV_Pos (23U) +#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */ +#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */ +#define ADC_CSR_AWD2_SLV_Pos (24U) +#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */ +#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */ +#define ADC_CSR_AWD3_SLV_Pos (25U) +#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */ +#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_SLV_Pos (26U) +#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */ +#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_CCR register *******************/ +#define ADC_CCR_DUAL_Pos (0U) +#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */ +#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */ +#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */ +#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */ +#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */ +#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */ +#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */ + +#define ADC_CCR_DELAY_Pos (8U) +#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */ +#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */ +#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */ +#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */ +#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */ +#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */ + +#define ADC_CCR_DMACFG_Pos (13U) +#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */ +#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */ + +#define ADC_CCR_MDMA_Pos (14U) +#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */ +#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */ +#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */ +#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */ + +#define ADC_CCR_CKMODE_Pos (16U) +#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */ +#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */ +#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */ + +#define ADC_CCR_PRESC_Pos (18U) +#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */ +#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */ +#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */ +#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */ +#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */ +#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */ + +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_VSENSESEL_Pos (23U) +#define ADC_CCR_VSENSESEL_Msk (0x1UL << ADC_CCR_VSENSESEL_Pos) /*!< 0x00800000 */ +#define ADC_CCR_VSENSESEL ADC_CCR_VSENSESEL_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATSEL_Pos (24U) +#define ADC_CCR_VBATSEL_Msk (0x1UL << ADC_CCR_VBATSEL_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATSEL ADC_CCR_VBATSEL_Msk /*!< ADC internal path to battery voltage enable */ + +/******************** Bit definition for ADC_CDR register *******************/ +#define ADC_CDR_RDATA_MST_Pos (0U) +#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */ +#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */ + +#define ADC_CDR_RDATA_SLV_Pos (16U) +#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */ +#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */ + + +/******************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/******************************************************************************/ +/********************** Bit definition for COMP_CSR register ****************/ +#define COMP_CSR_EN_Pos (0U) +#define COMP_CSR_EN_Msk (0x1UL << COMP_CSR_EN_Pos) /*!< 0x00000001 */ +#define COMP_CSR_EN COMP_CSR_EN_Msk /*!< Comparator enable */ + +#define COMP_CSR_INMSEL_Pos (4U) +#define COMP_CSR_INMSEL_Msk (0xFUL << COMP_CSR_INMSEL_Pos) /*!< 0x00000070 */ +#define COMP_CSR_INMSEL COMP_CSR_INMSEL_Msk /*!< Comparator input minus selection */ +#define COMP_CSR_INMSEL_0 (0x1UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000010 */ +#define COMP_CSR_INMSEL_1 (0x2UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000020 */ +#define COMP_CSR_INMSEL_2 (0x4UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000040 */ +#define COMP_CSR_INMSEL_3 (0x8UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000080 */ + +#define COMP_CSR_INPSEL_Pos (8U) +#define COMP_CSR_INPSEL_Msk (0x1UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000100 */ +#define COMP_CSR_INPSEL COMP_CSR_INPSEL_Msk /*!< Comparator input plus selection */ + +#define COMP_CSR_POLARITY_Pos (15U) +#define COMP_CSR_POLARITY_Msk (0x1UL << COMP_CSR_POLARITY_Pos) /*!< 0x00008000 */ +#define COMP_CSR_POLARITY COMP_CSR_POLARITY_Msk /*!< Comparator output polarity */ + +#define COMP_CSR_HYST_Pos (16U) +#define COMP_CSR_HYST_Msk (0x7UL << COMP_CSR_HYST_Pos) /*!< 0x00070000 */ +#define COMP_CSR_HYST COMP_CSR_HYST_Msk /*!< Comparator hysteresis */ +#define COMP_CSR_HYST_0 (0x1UL << COMP_CSR_HYST_Pos) /*!< 0x00010000 */ +#define COMP_CSR_HYST_1 (0x2UL << COMP_CSR_HYST_Pos) /*!< 0x00020000 */ +#define COMP_CSR_HYST_2 (0x4UL << COMP_CSR_HYST_Pos) /*!< 0x00040000 */ + +#define COMP_CSR_BLANKING_Pos (19U) +#define COMP_CSR_BLANKING_Msk (0x7UL << COMP_CSR_BLANKING_Pos) /*!< 0x00380000 */ +#define COMP_CSR_BLANKING COMP_CSR_BLANKING_Msk /*!< Comparator blanking source */ +#define COMP_CSR_BLANKING_0 (0x1UL << COMP_CSR_BLANKING_Pos) /*!< 0x00080000 */ +#define COMP_CSR_BLANKING_1 (0x2UL << COMP_CSR_BLANKING_Pos) /*!< 0x00100000 */ +#define COMP_CSR_BLANKING_2 (0x4UL << COMP_CSR_BLANKING_Pos) /*!< 0x00200000 */ + +#define COMP_CSR_BRGEN_Pos (22U) +#define COMP_CSR_BRGEN_Msk (0x1UL << COMP_CSR_BRGEN_Pos) /*!< 0x00400000 */ +#define COMP_CSR_BRGEN COMP_CSR_BRGEN_Msk /*!< Comparator scaler bridge enable */ + +#define COMP_CSR_SCALEN_Pos (23U) +#define COMP_CSR_SCALEN_Msk (0x1UL << COMP_CSR_SCALEN_Pos) /*!< 0x00800000 */ +#define COMP_CSR_SCALEN COMP_CSR_SCALEN_Msk /*!< Comparator voltage scaler enable */ + +#define COMP_CSR_VALUE_Pos (30U) +#define COMP_CSR_VALUE_Msk (0x1UL << COMP_CSR_VALUE_Pos) /*!< 0x40000000 */ +#define COMP_CSR_VALUE COMP_CSR_VALUE_Msk /*!< Comparator output level */ + +#define COMP_CSR_LOCK_Pos (31U) +#define COMP_CSR_LOCK_Msk (0x1UL << COMP_CSR_LOCK_Pos) /*!< 0x80000000 */ +#define COMP_CSR_LOCK COMP_CSR_LOCK_Msk /*!< Comparator lock */ + +/******************************************************************************/ +/* */ +/* CORDIC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CORDIC_CSR register *****************/ +#define CORDIC_CSR_FUNC_Pos (0U) +#define CORDIC_CSR_FUNC_Msk (0xFUL << CORDIC_CSR_FUNC_Pos) /*!< 0x0000000F */ +#define CORDIC_CSR_FUNC CORDIC_CSR_FUNC_Msk /*!< Function */ +#define CORDIC_CSR_FUNC_0 (0x1UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000001 */ +#define CORDIC_CSR_FUNC_1 (0x2UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000002 */ +#define CORDIC_CSR_FUNC_2 (0x4UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000004 */ +#define CORDIC_CSR_FUNC_3 (0x8UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000008 */ +#define CORDIC_CSR_PRECISION_Pos (4U) +#define CORDIC_CSR_PRECISION_Msk (0xFUL << CORDIC_CSR_PRECISION_Pos) /*!< 0x000000F0 */ +#define CORDIC_CSR_PRECISION CORDIC_CSR_PRECISION_Msk /*!< Precision */ +#define CORDIC_CSR_PRECISION_0 (0x1UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000010 */ +#define CORDIC_CSR_PRECISION_1 (0x2UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000020 */ +#define CORDIC_CSR_PRECISION_2 (0x4UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000040 */ +#define CORDIC_CSR_PRECISION_3 (0x8UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000080 */ +#define CORDIC_CSR_SCALE_Pos (8U) +#define CORDIC_CSR_SCALE_Msk (0x7UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000700 */ +#define CORDIC_CSR_SCALE CORDIC_CSR_SCALE_Msk /*!< Scaling factor */ +#define CORDIC_CSR_SCALE_0 (0x1UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000100 */ +#define CORDIC_CSR_SCALE_1 (0x2UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000200 */ +#define CORDIC_CSR_SCALE_2 (0x4UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000400 */ +#define CORDIC_CSR_IEN_Pos (16U) +#define CORDIC_CSR_IEN_Msk (0x1UL << CORDIC_CSR_IEN_Pos) /*!< 0x00010000 */ +#define CORDIC_CSR_IEN CORDIC_CSR_IEN_Msk /*!< Interrupt Enable */ +#define CORDIC_CSR_DMAREN_Pos (17U) +#define CORDIC_CSR_DMAREN_Msk (0x1UL << CORDIC_CSR_DMAREN_Pos) /*!< 0x00020000 */ +#define CORDIC_CSR_DMAREN CORDIC_CSR_DMAREN_Msk /*!< DMA Read channel Enable */ +#define CORDIC_CSR_DMAWEN_Pos (18U) +#define CORDIC_CSR_DMAWEN_Msk (0x1UL << CORDIC_CSR_DMAWEN_Pos) /*!< 0x00040000 */ +#define CORDIC_CSR_DMAWEN CORDIC_CSR_DMAWEN_Msk /*!< DMA Write channel Enable */ +#define CORDIC_CSR_NRES_Pos (19U) +#define CORDIC_CSR_NRES_Msk (0x1UL << CORDIC_CSR_NRES_Pos) /*!< 0x00080000 */ +#define CORDIC_CSR_NRES CORDIC_CSR_NRES_Msk /*!< Number of results in WDATA register */ +#define CORDIC_CSR_NARGS_Pos (20U) +#define CORDIC_CSR_NARGS_Msk (0x1UL << CORDIC_CSR_NARGS_Pos) /*!< 0x00100000 */ +#define CORDIC_CSR_NARGS CORDIC_CSR_NARGS_Msk /*!< Number of arguments in RDATA register */ +#define CORDIC_CSR_RESSIZE_Pos (21U) +#define CORDIC_CSR_RESSIZE_Msk (0x1UL << CORDIC_CSR_RESSIZE_Pos) /*!< 0x00200000 */ +#define CORDIC_CSR_RESSIZE CORDIC_CSR_RESSIZE_Msk /*!< Width of output data */ +#define CORDIC_CSR_ARGSIZE_Pos (22U) +#define CORDIC_CSR_ARGSIZE_Msk (0x1UL << CORDIC_CSR_ARGSIZE_Pos) /*!< 0x00400000 */ +#define CORDIC_CSR_ARGSIZE CORDIC_CSR_ARGSIZE_Msk /*!< Width of input data */ +#define CORDIC_CSR_RRDY_Pos (31U) +#define CORDIC_CSR_RRDY_Msk (0x1UL << CORDIC_CSR_RRDY_Pos) /*!< 0x80000000 */ +#define CORDIC_CSR_RRDY CORDIC_CSR_RRDY_Msk /*!< Result Ready Flag */ + +/******************* Bit definition for CORDIC_WDATA register ***************/ +#define CORDIC_WDATA_ARG_Pos (0U) +#define CORDIC_WDATA_ARG_Msk (0xFFFFFFFFUL << CORDIC_WDATA_ARG_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_WDATA_ARG CORDIC_WDATA_ARG_Msk /*!< Input Argument */ + +/******************* Bit definition for CORDIC_RDATA register ***************/ +#define CORDIC_RDATA_RES_Pos (0U) +#define CORDIC_RDATA_RES_Msk (0xFFFFFFFFUL << CORDIC_RDATA_RES_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_RDATA_RES CORDIC_RDATA_RES_Msk /*!< Output Result */ + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ +#define CRC_CR_POLYSIZE_Pos (3U) +#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */ +#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */ +#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */ +#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */ +#define CRC_CR_REV_IN_Pos (5U) +#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */ +#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */ +#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */ +#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */ +#define CRC_CR_REV_OUT_Pos (7U) +#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */ +#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */ + +/******************* Bit definition for CRC_INIT register *******************/ +#define CRC_INIT_INIT_Pos (0U) +#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */ +#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */ + +/******************* Bit definition for CRC_POL register ********************/ +#define CRC_POL_POL_Pos (0U) +#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */ +#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */ + +/******************************************************************************/ +/* */ +/* CRS Clock Recovery System */ +/******************************************************************************/ + +/******************* Bit definition for CRS_CR register *********************/ +#define CRS_CR_SYNCOKIE_Pos (0U) +#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */ +#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */ +#define CRS_CR_SYNCWARNIE_Pos (1U) +#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */ +#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */ +#define CRS_CR_ERRIE_Pos (2U) +#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */ +#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */ +#define CRS_CR_ESYNCIE_Pos (3U) +#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */ +#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */ +#define CRS_CR_CEN_Pos (5U) +#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */ +#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */ +#define CRS_CR_AUTOTRIMEN_Pos (6U) +#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */ +#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */ +#define CRS_CR_SWSYNC_Pos (7U) +#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */ +#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */ +#define CRS_CR_TRIM_Pos (8U) +#define CRS_CR_TRIM_Msk (0x7FUL << CRS_CR_TRIM_Pos) /*!< 0x00007F00 */ +#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */ + +/******************* Bit definition for CRS_CFGR register *********************/ +#define CRS_CFGR_RELOAD_Pos (0U) +#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */ +#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */ +#define CRS_CFGR_FELIM_Pos (16U) +#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */ +#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */ + +#define CRS_CFGR_SYNCDIV_Pos (24U) +#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */ +#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */ +#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */ +#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */ +#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */ + +#define CRS_CFGR_SYNCSRC_Pos (28U) +#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */ +#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */ +#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */ +#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */ + +#define CRS_CFGR_SYNCPOL_Pos (31U) +#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */ +#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */ + +/******************* Bit definition for CRS_ISR register *********************/ +#define CRS_ISR_SYNCOKF_Pos (0U) +#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */ +#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */ +#define CRS_ISR_SYNCWARNF_Pos (1U) +#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */ +#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */ +#define CRS_ISR_ERRF_Pos (2U) +#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */ +#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */ +#define CRS_ISR_ESYNCF_Pos (3U) +#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */ +#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */ +#define CRS_ISR_SYNCERR_Pos (8U) +#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */ +#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */ +#define CRS_ISR_SYNCMISS_Pos (9U) +#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */ +#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */ +#define CRS_ISR_TRIMOVF_Pos (10U) +#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */ +#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */ +#define CRS_ISR_FEDIR_Pos (15U) +#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */ +#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */ +#define CRS_ISR_FECAP_Pos (16U) +#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */ +#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */ + +/******************* Bit definition for CRS_ICR register *********************/ +#define CRS_ICR_SYNCOKC_Pos (0U) +#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */ +#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */ +#define CRS_ICR_SYNCWARNC_Pos (1U) +#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */ +#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */ +#define CRS_ICR_ERRC_Pos (2U) +#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */ +#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */ +#define CRS_ICR_ESYNCC_Pos (3U) +#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */ +#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter */ +/* */ +/******************************************************************************/ +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 series) + */ +#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1_Pos (0U) +#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */ +#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/ +#define DAC_CR_CEN1_Pos (14U) +#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */ +#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/ + +#define DAC_CR_HFSEL_Pos (15U) +#define DAC_CR_HFSEL_Msk (0x1UL << DAC_CR_HFSEL_Pos) /*!< 0x00008000 */ +#define DAC_CR_HFSEL DAC_CR_HFSEL_Msk /*!*/ + +#define DAC_CR_EN2_Pos (16U) +#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */ +#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/ +#define DAC_CR_CEN2_Pos (30U) +#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */ +#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1_Pos (0U) +#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */ +#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text (READONLY) : + { + . = 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 (READONLY) : + { + . = 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 (READONLY) : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array (READONLY) : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array (READONLY) : + { + . = 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 */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + _siccmsram = LOADADDR(.ccmsram); + + /* CCM-SRAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmsram : + { + . = ALIGN(4); + _sccmsram = .; /* create a global symbol at ccmsram start */ + *(.ccmsram) + *(.ccmsram*) + + . = ALIGN(4); + _eccmsram = .; /* create a global symbol at ccmsram end */ + } >CCMSRAM 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) } +} diff --git a/task3/Src/task3.c b/task3/Src/task3.c new file mode 100644 index 0000000..d6e88b0 --- /dev/null +++ b/task3/Src/task3.c @@ -0,0 +1,149 @@ +/* *************************************************************************************** +# Project: task3 - C: Timer & Interrupts +# File: task3.s +# +# Language: C +# +# Hardware: STefi Light v1.1 +# Processor: STM32G431KBT6U +# +# Author: Manuel Lederhofer +# Datum: 31.10.2014 +# +# Version: 6.1 +# History: +# 31.10.2014 ML create file +# 27.09.2018 ML edit comments, extend vector table +# 18.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG +# 27.02.2019 ML move section of exception handlers to bottom of file, +# change ASM pseudo commands from .space to .org +# 25.09.2019 ML minor changes for a better code and comment understanding +# 04.09.2020 HL port from STM32L476RG to STM32F411xE +# 21.09.2020 ML tidy up, comments and formatting +# 29.09.2021 ML port from STM32F411xE to STM32F042K6T6 +# 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U +# 17.02.2025 TK move ASM:Interrupts to task2, replace with C:Timer & Interrupts +# 24.06.2025 TK remove "... put your code here ...", remove Systick + +# +# Status: working +# +# Description: +# See the description and requirements of the requested application +# in the lab exercise guide. +# +# Notes: +# - MCU speed at startup is 16 MHz +# +# ToDo: +# - Change the example code to match the description and requirements +# of the requested application in the lab exercise guide. +# +# +# Measurements: +# Timers used : +# Current with WFI : +# Current without WFI : +# + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ + + +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +static void GPIO_init(void); + + +/* ------------------------------------ M A I N --------------------------------------- */ +int main(void) +{ + /* --- initialization --- */ + __disable_irq(); // disable interrupts globally + + GPIO_init(); + + __enable_irq(); // enable interrupts globally + + + /* --- one time tasks --- */ + + + /* --- infinite processing loop --- */ + while (1) + { + GPIOA->ODR ^= (1 << 0); // toggle LED0 + + __WFI(); + } + + return 1; +} + + +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + + +/* ------------------------------------ PRIVATE FUNCTIONS ----------------------------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: static void GPIO_init(void) + * + * Initializes GPIOs on STefi Light for pins with peripherals attached. + * + * requires: - nothing - + * parameters: - none - + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void GPIO_init(void) +{ + /* enable port clocks */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // LEDs: A + + + /* --- LEDs --- */ + GPIOA->ODR |= (1 << 0); + GPIOA->MODER &= ~(3 << 0); + GPIOA->MODER |= (1 << 0); // set LED pin to output + + + /* --- buttons --- */ + + /* init */ + + + + + /* interrupt config for Buttons */ + + +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: static void SysTick_init(void) + * + * At system startup SysTick runs with 1 MHz down to 0. + * + * Register names differ in datasheets. + * ST / CMSIS: ARM: + * - SysTick->CALIB - STK_CALIB + * - SysTick->CTRL - STK_CSR + * - SysTick->LOAD - STK_RVR + * - SysTick->VAL - STK_CVR + * + * requires: - nothing - + * parameters: - none - + * returns: - nothing - + \* ------------------------------------------------------------------------------------ */ + + + +/* ************************************ E O F ***************************************** */ diff --git a/task3/Src/task3_it.c b/task3/Src/task3_it.c new file mode 100644 index 0000000..1f2f640 --- /dev/null +++ b/task3/Src/task3_it.c @@ -0,0 +1,238 @@ +/* *************************************************************************************** +# Project: task3 - C: Timer & Interrupts +# File: task3_it.s +# +# Language: C +# +# Hardware: STefi Light v1.1 +# Processor: STM32G431KBT6U +# +# Author: Manuel Lederhofer +# Datum: 31.10.2014 +# +# Version: 6.1 +# History: +# 31.10.2014 ML create file +# 27.09.2018 ML edit comments, extend vector table +# 18.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG +# 27.02.2019 ML move section of exception handlers to bottom of file, +# change ASM pseudo commands from .space to .org +# 25.09.2019 ML minor changes for a better code and comment understanding +# 04.09.2020 HL port from STM32L476RG to STM32F411xE +# 21.09.2020 ML tidy up, comments and formatting +# 29.09.2021 ML port from STM32F411xE to STM32F042K6T6 +# 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U +# 17.02.2025 TK move ASM:Interrupts to task2, replace with C:Interrupts +# 24.06.2025 TK remove Systick +# +# Status: working +# +# Description: +# See the description and requirements of the requested application +# in the lab exercise guide. +# +# Notes: +# - MCU speed at startup is 16 MHz +# +# ToDo: +# - Change the example code to match the description and requirements +# of the requested application in the lab exercise guide. + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ + + +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +extern void* _estack; // initial stack pointer from ldscript +extern void* Reset_Handler; // exception handler from startup code + + +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ +/* ------------------------------------ PROTOTYPES ------------------------------------ */ + + +/* ------------------------------------ GLOBAL FUNCTIONS (Exceptions Handlers) -------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: void ISR_error(void) + * + * Default interrupt handler for core interrupts. + * Enables the green and red LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_error(void) +{ + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + GPIOA->ODR |= 0x0F; + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x11; + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~((1 << 2) | (1 << 0)); + } +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: void ISR_default(void) + * + * Default interrupt handler for non-core interrupts. + * Enables the blue and yellow LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_default(void) +{ + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + GPIOA->ODR |= 0x0F; + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x44; + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~((1 << 3) | (1 << 1)); + } +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: Timer + * + * Timer interrupt is used for ... +\* ------------------------------------------------------------------------------------ */ + + + +/* ------------------------------------ INTERRUPT VECTOR TABLE ------------------------ */ + +__attribute__ ((section (".isr_vector"))) +void (* const paIsrFunc[118])(void) = +{ + /* --- core vectors --- */ + (void *)&_estack, /* 00 (0x00000000) initial stack pointer */ + (void *)&Reset_Handler, /* 01 (0x00000004) (prio: -3) initial program counter (leads to first command to execute) */ + ISR_error, /* 02 (0x00000008) (prio: -2) non-maskable interrupt */ + ISR_error, /* 03 (0x0000000C) (prio: -1) hard fault exception */ + ISR_error, /* 04 (0x00000010) memory management */ + ISR_error, /* 05 (0x00000014) bus fault - pre-fetch fault, memory access fault */ + ISR_error, /* 06 (0x00000018) usage fault - undefined instruction or illegal state */ + ISR_error, /* 07 (0x0000001C) reserved vector 7 */ + ISR_error, /* 08 (0x00000020) reserved vector 8 */ + ISR_error, /* 09 (0x00000024) reserved vector 9 */ + ISR_error, /* 10 (0x00000028) reserved vector 10 */ + ISR_error, /* 11 (0x0000002C) system service call via SWI instruction */ + ISR_error, /* 12 (0x00000030) monitor */ + ISR_error, /* 13 (0x00000034) reserved vector 13 */ + ISR_error, /* 14 (0x00000038) pendable service call exception */ + ISR_error, /* 15 (0x0000003C) SysTick exception */ + /* --- non-core vectors --- */ + ISR_default, /* 0 (0x00000040) window watchdog interrupt */ + ISR_default, /* 1 (0x00000044) PVD through EXTI line 16 interrupt */ + ISR_default, /* 2 (0x00000048) RTC/TAMP/CSS on LSE through EXTI line 19 interrupt */ + ISR_default, /* 3 (0x0000004C) RTC Wakeup timer through EXTI line 20 interrupt */ + ISR_default, /* 4 (0x00000050) Flash global interrupt */ + ISR_default, /* 5 (0x00000054) RCC global interrupt */ + ISR_default, /* 6 (0x00000058) EXTI Line 0 interrupt */ + ISR_default, /* 7 (0x0000005C) EXTI Line 1 interrupt */ + ISR_default, /* 8 (0x00000060) EXTI Line 2 interrupt */ + ISR_default, /* 9 (0x00000064) EXTI Line 3 interrupt */ + ISR_default, /* 10 (0x00000068) EXTI Line 4 interrupt */ + ISR_default, /* 11 (0x0000006C) DMA1 channel 1 interrupt */ + ISR_default, /* 12 (0x00000070) DMA1 channel 2 interrupt */ + ISR_default, /* 13 (0x00000074) DMA1 channel 3 interrupt */ + ISR_default, /* 14 (0x00000078) DMA1 channel 4 interrupt */ + ISR_default, /* 15 (0x0000007C) DMA1 channel 5 interrupt */ + ISR_default, /* 16 (0x00000080) DMA1 channel 6 interrupt */ + ISR_default, /* 17 (0x00000084) DMA1 channel 7 interrupt */ + ISR_default, /* 18 (0x00000088) ADC1 + ADC2 global interrupt */ + ISR_default, /* 19 (0x0000008C) USB high priority interrupts */ + ISR_default, /* 20 (0x00000090) USB low priority interrupts */ + ISR_default, /* 21 (0x00000094) FDCAN1 interrupt 0 */ + ISR_default, /* 22 (0x00000098) FDCAN1 interrupt 1 */ + ISR_default, /* 23 (0x0000009C) EXTI line [9:5] interrupts */ + ISR_default, /* 24 (0x000000A0) TIM1 break + TIM15 global interrupts */ + ISR_default, /* 25 (0x000000A4) TIM1 update + TIM16 global interrupts */ + ISR_default, /* 26 (0x000000A8) TIM1 trigger, commutation, direction change, index + TIM17 interrupts */ + ISR_default, /* 27 (0x000000AC) TIM1 capture compare interrupt */ + ISR_default, /* 28 (0x000000B0) TIM2 global interrupt */ + ISR_default, /* 29 (0x000000B4) TIM3 global interrupt */ + ISR_default, /* 30 (0x000000B8) TIM4 global interrupt */ + ISR_default, /* 31 (0x000000BC) I2C1 event + EXTI line 23 interrupts */ + ISR_default, /* 32 (0x000000C0) I2C1 error interrupt */ + ISR_default, /* 33 (0x000000C4) I2C2 event + EXTI line 24 interrupts */ + ISR_default, /* 34 (0x000000C8) I2C2 error interrupt */ + ISR_default, /* 35 (0x000000CC) SPI1 global interrupt */ + ISR_default, /* 36 (0x000000D0) SPI2 global interrupt */ + ISR_default, /* 37 (0x000000D4) USART1 global + EXTI line 25 interrupts */ + ISR_default, /* 38 (0x000000D8) USART2 global + EXTI line 26 interrupts */ + ISR_default, /* 39 (0x000000DC) USART3 global + EXTI line 28 interrupts */ + ISR_default, /* 40 (0x000000E0) EXTI line [15:10] interrupts */ + ISR_default, /* 41 (0x000000E4) RTC alarms interrupts */ + ISR_default, /* 42 (0x000000E8) USB wakeup from suspend trough EXTI line 18 interrupt */ + ISR_default, /* 43 (0x000000EC) TIM8 break, transition error, index error interrupts */ + ISR_default, /* 44 (0x000001F0) TIM8 update interrupt */ + ISR_default, /* 45 (0x000001F4) TIM8 trigger, commutation, direction change, index interrupts */ + ISR_default, /* 46 (0x000001F8) TIM8 capture compare interrupt */ + ISR_default, /* 47 (0x000001FC) ADC3 global interrupt */ + ISR_default, /* 48 (0x00000100) FSMC global interrupt */ + ISR_default, /* 49 (0x00000104) LPTIM1 global interrupt */ + ISR_default, /* 50 (0x00000108) TIM5 global interrupt */ + ISR_default, /* 51 (0x0000010C) SPI3 global interrupt */ + ISR_default, /* 52 (0x00000110) UART4 global + EXTI line 34 interrupts */ + ISR_default, /* 53 (0x00000114) UART5 global + EXTI line 35 interrupts */ + ISR_default, /* 54 (0x00000118) TIM6 + DAC1/3 underrun global interrupts */ + ISR_default, /* 55 (0x0000011C) TIM7 + DAC2/4 underrun global interrupts */ + ISR_default, /* 56 (0x00000120) DMA2 channel 1 interrupt */ + ISR_default, /* 57 (0x00000124) DMA2 channel 2 interrupt */ + ISR_default, /* 58 (0x00000128) DMA2 channel 3 interrupt */ + ISR_default, /* 59 (0x0000012C) DMA2 channel 4 interrupt */ + ISR_default, /* 60 (0x00000130) DMA2 channel 5 interrupt */ + ISR_default, /* 61 (0x00000134) ADC4 global interrupt */ + ISR_default, /* 62 (0x00000138) ADC5 global interrupt */ + ISR_default, /* 63 (0x0000013C) UCPD1 global + EXTI line 43 interrupts */ + ISR_default, /* 64 (0x00000140) COMP1/COMP2/COMP3 through EXTI lines 21/22/29 interrupts */ + ISR_default, /* 65 (0x00000144) COMP4/COMP5/COMP6 through EXTI lines 30/31/32 interrupts */ + ISR_default, /* 66 (0x00000148) COMP7 through EXTI line 33 interrupt */ + ISR_default, /* 67 (0x0000014C) HRTIM master timer interrupt (hrtim_it1) */ + ISR_default, /* 68 (0x00000150) HRTIM timer A interrupt (hrtim_it2) */ + ISR_default, /* 69 (0x00000154) HRTIM timer B interrupt (hrtim_it3) */ + ISR_default, /* 70 (0x00000158) HRTIM timer C interrupt (hrtim_it4) */ + ISR_default, /* 71 (0x0000015C) HRTIM timer D interrupt (hrtim_it5) */ + ISR_default, /* 72 (0x00000160) HRTIM timer E interrupt (hrtim_it6) */ + ISR_default, /* 73 (0x00000164) HRTIM fault interrupt (hrtim_it8) */ + ISR_default, /* 74 (0x00000168) HRTIM timer F interrupt (hrtim_it7) */ + ISR_default, /* 75 (0x0000016C) CRS interrupt */ + ISR_default, /* 76 (0x00000170) SAI */ + ISR_default, /* 77 (0x00000174) TIM20 break, transition error, index error interrupts */ + ISR_default, /* 78 (0x00000178) TIM20 update interrupt */ + ISR_default, /* 79 (0x0000017C) TIM20 trigger, commutation, direction change, index interrupts */ + ISR_default, /* 80 (0x00000180) TIM20 capture compare interrupt */ + ISR_default, /* 81 (0x00000184) Floating point interrupt */ + ISR_default, /* 82 (0x00000188) I2C4 event + EXTI line 4 interrupts */ + ISR_default, /* 83 (0x0000018C) I2C4 error interrupt */ + ISR_default, /* 84 (0x00000190) SPI4 global interrupt */ + ISR_default, /* 85 (0x00000194) AES global interrupt */ + ISR_default, /* 86 (0x00000198) FDCAN2 interrupt 0 */ + ISR_default, /* 87 (0x0000019C) FDCAN2 interrupt 1 */ + ISR_default, /* 88 (0x000001A0) FDCAN3 interrupt 0 */ + ISR_default, /* 89 (0x000001A4) FDCAN3 interrupt 1 */ + ISR_default, /* 90 (0x000001A8) RNG global interrupt */ + ISR_default, /* 91 (0x000001AC) LPUART global interrupt */ + ISR_default, /* 92 (0x000001B0) I2C3 event + EXTI line 27 interrupts */ + ISR_default, /* 93 (0x000001B4) I2C3 error interrupt */ + ISR_default, /* 94 (0x000001B8) DMAMUX overrun interrupt */ + ISR_default, /* 95 (0x000001BC) QUADSPI global interrupt */ + ISR_default, /* 96 (0x000001C0) DMA1 channel 8 interrupt */ + ISR_default, /* 97 (0x000001C4) DMA2 channel 6 interrupt */ + ISR_default, /* 98 (0x000001C8) DMA2 channel 7 interrupt */ + ISR_default, /* 99 (0x000001CC) DMA2 channel 8 interrupt */ + ISR_default, /* 100 (0x000001D0) Cordic interrupt */ + ISR_default /* 101 (0x000001D4) FMAC interrupt */ +}; + + +/* ************************************ E O F ***************************************** */ diff --git a/task3/Startup/startup_stm32g431kbtx.s b/task3/Startup/startup_stm32g431kbtx.s new file mode 100644 index 0000000..88e31ea --- /dev/null +++ b/task3/Startup/startup_stm32g431kbtx.s @@ -0,0 +1,105 @@ +/** + ****************************************************************************** + * @file startup_stm32g431kbtx.s + * @author Auto-generated by STM32CubeIDE + * @brief STM32G431KBTx device vector table for GCC toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + ****************************************************************************** + * @attention + * + * Copyright (c) ${year} STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +.syntax unified +.cpu cortex-m4 +.fpu softvfp +.thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + mov sp, r0 /* set stack pointer */ +/* Call the clock system initialization function.*/ +// bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + movs r3, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 + +LoopCopyDataInit: + adds r4, r0, r3 + cmp r4, r1 + bcc CopyDataInit + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b LoopFillZerobss + +FillZerobss: + str r3, [r2] + adds r2, r2, #4 + +LoopFillZerobss: + cmp r2, r4 + bcc FillZerobss + +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + +LoopForever: + b LoopForever + + .size Reset_Handler, .-Reset_Handler + + +/************************ (C) COPYRIGHT STMicroelectonics *****END OF FILE****/ diff --git a/task3/Startup/syscalls.c b/task3/Startup/syscalls.c new file mode 100644 index 0000000..f3462a0 --- /dev/null +++ b/task3/Startup/syscalls.c @@ -0,0 +1,176 @@ +/** + ****************************************************************************** + * @file syscalls.c + * @author Auto-generated by STM32CubeIDE + * @brief STM32CubeIDE Minimal System calls file + * + * For more information about which c-functions + * need which of these lowlevel functions + * please consult the Newlib libc-manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + (void)pid; + (void)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) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + + return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + (void)file; + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + (void)file; + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + (void)file; + (void)ptr; + (void)dir; + return 0; +} + +int _open(char *path, int flags, ...) +{ + (void)path; + (void)flags; + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + (void)status; + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + (void)name; + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + (void)buf; + return -1; +} + +int _stat(char *file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + (void)old; + (void)new; + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + (void)name; + (void)argv; + (void)env; + errno = ENOMEM; + return -1; +} diff --git a/task3/Startup/sysmem.c b/task3/Startup/sysmem.c new file mode 100644 index 0000000..6122419 --- /dev/null +++ b/task3/Startup/sysmem.c @@ -0,0 +1,79 @@ +/** + ****************************************************************************** + * @file sysmem.c + * @author Generated by STM32CubeIDE + * @brief STM32CubeIDE System Memory calls file + * + * For more information about which C functions + * need which of these lowlevel functions + * please consult the newlib libc manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include + +/** + * Pointer to the current high watermark of the heap usage + */ +static uint8_t *__sbrk_heap_end = NULL; + +/** + * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + * and others from the C library + * + * @verbatim + * ############################################################################ + * # .data # .bss # newlib heap # MSP stack # + * # # # # Reserved by _Min_Stack_Size # + * ############################################################################ + * ^-- RAM start ^-- _end _estack, RAM end --^ + * @endverbatim + * + * This implementation starts allocating at the '_end' linker symbol + * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + * The implementation considers '_estack' linker symbol to be RAM end + * NOTE: If the MSP stack, at any point during execution, grows larger than the + * reserved size, please increase the '_Min_Stack_Size'. + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + const uint8_t *max_heap = (uint8_t *)stack_limit; + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + { + __sbrk_heap_end = &_end; + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + { + errno = ENOMEM; + return (void *)-1; + } + + prev_heap_end = __sbrk_heap_end; + __sbrk_heap_end += incr; + + return (void *)prev_heap_end; +} diff --git a/task3/task3 Debug.launch b/task3/task3 Debug.launch new file mode 100644 index 0000000..8000703 --- /dev/null +++ b/task3/task3 Debug.launch @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task3/task3.launch b/task3/task3.launch new file mode 100644 index 0000000..f93be6c --- /dev/null +++ b/task3/task3.launch @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task4/.cproject b/task4/.cproject new file mode 100644 index 0000000..b654486 --- /dev/null +++ b/task4/.cproject @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.project b/task4/.project new file mode 100644 index 0000000..3ffaf41 --- /dev/null +++ b/task4/.project @@ -0,0 +1,31 @@ + + + task4 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + org.eclipse.cdt.core.cnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUManagedMakefileProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/task4/.settings/language.settings.xml b/task4/.settings/language.settings.xml new file mode 100644 index 0000000..2996d0b --- /dev/null +++ b/task4/.settings/language.settings.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.settings/org.eclipse.core.resources.prefs b/task4/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/task4/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/task4/Debug/Src/subdir.mk b/task4/Debug/Src/subdir.mk new file mode 100644 index 0000000..d1bdba8 --- /dev/null +++ b/task4/Debug/Src/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Src/task4.c \ +../Src/task4_it.c + +OBJS += \ +./Src/task4.o \ +./Src/task4_it.o + +C_DEPS += \ +./Src/task4.d \ +./Src/task4_it.d + + +# Each subdirectory must supply rules for building sources it contributes +Src/%.o Src/%.su Src/%.cyclo: ../Src/%.c Src/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" + +clean: clean-Src + +clean-Src: + -$(RM) ./Src/task4.cyclo ./Src/task4.d ./Src/task4.o ./Src/task4.su ./Src/task4_it.cyclo ./Src/task4_it.d ./Src/task4_it.o ./Src/task4_it.su + +.PHONY: clean-Src + diff --git a/task4/Debug/Startup/subdir.mk b/task4/Debug/Startup/subdir.mk new file mode 100644 index 0000000..71046bb --- /dev/null +++ b/task4/Debug/Startup/subdir.mk @@ -0,0 +1,39 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +S_SRCS += \ +../Startup/startup_stm32g431kbtx.s + +C_SRCS += \ +../Startup/syscalls.c \ +../Startup/sysmem.c + +OBJS += \ +./Startup/startup_stm32g431kbtx.o \ +./Startup/syscalls.o \ +./Startup/sysmem.o + +S_DEPS += \ +./Startup/startup_stm32g431kbtx.d + +C_DEPS += \ +./Startup/syscalls.d \ +./Startup/sysmem.d + + +# Each subdirectory must supply rules for building sources it contributes +Startup/%.o: ../Startup/%.s Startup/subdir.mk + arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" "$<" +Startup/%.o Startup/%.su Startup/%.cyclo: ../Startup/%.c Startup/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" + +clean: clean-Startup + +clean-Startup: + -$(RM) ./Startup/startup_stm32g431kbtx.d ./Startup/startup_stm32g431kbtx.o ./Startup/syscalls.cyclo ./Startup/syscalls.d ./Startup/syscalls.o ./Startup/syscalls.su ./Startup/sysmem.cyclo ./Startup/sysmem.d ./Startup/sysmem.o ./Startup/sysmem.su + +.PHONY: clean-Startup + diff --git a/task4/Debug/makefile b/task4/Debug/makefile new file mode 100644 index 0000000..a0bb138 --- /dev/null +++ b/task4/Debug/makefile @@ -0,0 +1,93 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Startup/subdir.mk +-include Src/subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +OPTIONAL_TOOL_DEPS := \ +$(wildcard ../makefile.defs) \ +$(wildcard ../makefile.init) \ +$(wildcard ../makefile.targets) \ + + +BUILD_ARTIFACT_NAME := task4 +BUILD_ARTIFACT_EXTENSION := elf +BUILD_ARTIFACT_PREFIX := +BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),) + +# Add inputs and outputs from these tool invocations to the build variables +EXECUTABLES += \ +task4.elf \ + +MAP_FILES += \ +task4.map \ + +SIZE_OUTPUT += \ +default.size.stdout \ + +OBJDUMP_LIST += \ +task4.list \ + + +# All Target +all: main-build + +# Main-build Target +main-build: task4.elf secondary-outputs + +# Tool invocations +task4.elf task4.map: $(OBJS) $(USER_OBJS) U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\task4\STM32G431KBTX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "task4.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"U:\MCT\WiSe25_26\BEI\mct_bei_workspace_25w\task4\STM32G431KBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="task4.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group + @echo 'Finished building target: $@' + @echo ' ' + +default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-size $(EXECUTABLES) + @echo 'Finished building: $@' + @echo ' ' + +task4.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "task4.list" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) default.size.stdout task4.elf task4.list task4.map + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) + +fail-specified-linker-script-missing: + @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' + @exit 2 + +warn-no-linker-script-specified: + @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' + +.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified + +-include ../makefile.targets diff --git a/task4/Debug/objects.list b/task4/Debug/objects.list new file mode 100644 index 0000000..3ebda38 --- /dev/null +++ b/task4/Debug/objects.list @@ -0,0 +1,5 @@ +"./Src/task4.o" +"./Src/task4_it.o" +"./Startup/startup_stm32g431kbtx.o" +"./Startup/syscalls.o" +"./Startup/sysmem.o" diff --git a/task4/Debug/objects.mk b/task4/Debug/objects.mk new file mode 100644 index 0000000..758de29 --- /dev/null +++ b/task4/Debug/objects.mk @@ -0,0 +1,9 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/task4/Debug/sources.mk b/task4/Debug/sources.mk new file mode 100644 index 0000000..4f923d1 --- /dev/null +++ b/task4/Debug/sources.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (12.3.rel1) +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +CYCLO_FILES := +SIZE_OUTPUT := +OBJDUMP_LIST := +SU_FILES := +EXECUTABLES := +OBJS := +MAP_FILES := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Src \ +Startup \ + diff --git a/task4/Inc/STefi-Light.h b/task4/Inc/STefi-Light.h new file mode 100644 index 0000000..857732b --- /dev/null +++ b/task4/Inc/STefi-Light.h @@ -0,0 +1,80 @@ +/* *************************************************************************************** + * Project: task4 + * File: STefi-Light.h + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32F042K6 / STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 30.07.2021 + * + * Version: 1.1 + * History: + * 30.07.2021 ML create file + * 09.03.2022 ML check G431 compatibility + * + * Status: working + * + * Description: + * Definitions and declarations related to STefi Light board hardware + * extended by application related elements. + * + * + * Notes: + * Default MCU speed at startup is: + * - F042 = 8 MHz + * - G431 = 16 MHz + * + * ToDo: + * - none - + ************************************************************************************** */ +#ifndef STEFI_LIGHT_H_ +#define STEFI_LIGHT_H_ +/* ==================================================================================== */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ + + +/* ------------------------------------ DEFINES --------------------------------------- */ + +/* --- STefi peripherals related definitions --- */ + +// LEDs +#define MASK_LED0 (1 << 0) +#define MASK_LED1 (1 << 1) +#define MASK_LED2 (1 << 2) +#define MASK_LED3 (1 << 3) + +#define MASK_LED_RED (MASK_LED0) +#define MASK_LED_YELLOW (MASK_LED1) +#define MASK_LED_GREEN (MASK_LED2) +#define MASK_LED_BLUE (MASK_LED3) +#define MASK_LED_ALL (MASK_LED_RED | MASK_LED_YELLOW | MASK_LED_GREEN | MASK_LED_BLUE) + + +// buttons +#define MASK_S0 (1 << 0) +#define MASK_S1 (1 << 4) +#define MASK_S2 (1 << 5) +#define MASK_S3 (1 << 7) + +#define MASK_KEY0 (MASK_S0) +#define MASK_KEY1 (MASK_S1) +#define MASK_KEY2 (MASK_S2) +#define MASK_KEY3 (MASK_S3) + + +/* --- STefi MCU related definitions --- */ + +/* --- application related definitions --- */ + +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + +/* ==================================================================================== */ +#endif /* STEFI_LIGHT_H_ */ +/* ************************************ E O F ***************************************** */ diff --git a/task4/Inc/cmsis_compiler.h b/task4/Inc/cmsis_compiler.h new file mode 100644 index 0000000..21a2c71 --- /dev/null +++ b/task4/Inc/cmsis_compiler.h @@ -0,0 +1,283 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.1.0 + * @date 09. October 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6.6 LTM (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) + #include "cmsis_armclang_ltm.h" + + /* + * Arm Compiler above 6.10.1 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #define __RESTRICT __restrict + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/task4/Inc/cmsis_gcc.h b/task4/Inc/cmsis_gcc.h new file mode 100644 index 0000000..1e08e7e --- /dev/null +++ b/task4/Inc/cmsis_gcc.h @@ -0,0 +1,2168 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START + +/** + \brief Initializes data and bss sections + \details This default implementations initialized all data and additional bss + sections relying on .copy.table and .zero.table specified properly + in the used linker script. + + */ +__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) +{ + extern void _start(void) __NO_RETURN; + + typedef struct { + uint32_t const* src; + uint32_t* dest; + uint32_t wlen; + } __copy_table_t; + + typedef struct { + uint32_t* dest; + uint32_t wlen; + } __zero_table_t; + + extern const __copy_table_t __copy_table_start__; + extern const __copy_table_t __copy_table_end__; + extern const __zero_table_t __zero_table_start__; + extern const __zero_table_t __zero_table_end__; + + for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = pTable->src[i]; + } + } + + for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = 0u; + } + } + + _start(); +} + +#define __PROGRAM_START __cmsis_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP __StackTop +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT __StackLimit +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section(".vectors"))) +#endif + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __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]) ); +#else /* Big endian */ + __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]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/task4/Inc/cmsis_version.h b/task4/Inc/cmsis_version.h new file mode 100644 index 0000000..3174cf6 --- /dev/null +++ b/task4/Inc/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.3 + * @date 24. June 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 3U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/task4/Inc/core_cm4.h b/task4/Inc/core_cm4.h new file mode 100644 index 0000000..90c2a72 --- /dev/null +++ b/task4/Inc/core_cm4.h @@ -0,0 +1,2124 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + 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) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \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) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + 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 Used priority group. + \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) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M4 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/task4/Inc/mpu_armv7.h b/task4/Inc/mpu_armv7.h new file mode 100644 index 0000000..337eb65 --- /dev/null +++ b/task4/Inc/mpu_armv7.h @@ -0,0 +1,272 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.1.0 + * @date 08. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2017-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \ + (((SubRegionDisable) << MPU_RASR_SRD_Pos) & MPU_RASR_SRD_Msk) | \ + (((Size) << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk) | \ + (((MPU_RASR_ENABLE_Msk)))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if shareable) or 010b (if non-shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/task4/Inc/stm32g431xx.h b/task4/Inc/stm32g431xx.h new file mode 100644 index 0000000..7e3265d --- /dev/null +++ b/task4/Inc/stm32g431xx.h @@ -0,0 +1,13139 @@ +/** + ****************************************************************************** + * @file stm32g431xx.h + * @author MCD Application Team + * @brief CMSIS STM32G431xx Device Peripheral Access Layer Header File. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2019 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32g431xx + * @{ + */ + +#ifndef __STM32G431xx_H +#define __STM32G431xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ +#define __CM4_REV 0x0001U /*!< Cortex-M4 revision r0p1 */ +#define __MPU_PRESENT 1U /*!< STM32G4XX provides an MPU */ +#define __NVIC_PRIO_BITS 4U /*!< STM32G4XX uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1U /*!< FPU present */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32G4XX Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum +{ +/****** Cortex-M4 Processor Exceptions Numbers *********************************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Cortex-M4 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M4 Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt */ +/****** STM32 specific Interrupt Numbers ***************************************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_PVM_IRQn = 1, /*!< PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection Interrupts */ + RTC_TAMP_LSECSS_IRQn = 2, /*!< RTC Tamper and TimeStamp and RCC LSE CSS interrupts through the EXTI */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_IRQn = 19, /*!< USB HP Interrupt */ + USB_LP_IRQn = 20, /*!< USB LP Interrupt */ + FDCAN1_IT0_IRQn = 21, /*!< FDCAN1 IT0 Interrupt */ + FDCAN1_IT1_IRQn = 22, /*!< FDCAN1 IT1 Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break, Transition error, Index error and TIM15 global interrupt */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update Interrupt and TIM16 global interrupt */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 TIM1 Trigger, Commutation, Direction change, Index and TIM17 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Wakeup through EXTI line Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break, Transition error and Index error Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger, Commutation, Direction change and Index Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + LPTIM1_IRQn = 49, /*!< LP TIM1 Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&3 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global interrupts */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + UCPD1_IRQn = 63, /*!< UCPD global Interrupt */ + COMP1_2_3_IRQn = 64, /*!< COMP1, COMP2 and COMP3 Interrupts */ + COMP4_IRQn = 65, /*!< COMP4 */ + CRS_IRQn = 75, /*!< CRS global interrupt */ + SAI1_IRQn = 76, /*!< Serial Audio Interface global interrupt */ + FPU_IRQn = 81, /*!< FPU global interrupt */ + RNG_IRQn = 90, /*!< RNG global interrupt */ + LPUART1_IRQn = 91, /*!< LP UART 1 Interrupt */ + I2C3_EV_IRQn = 92, /*!< I2C3 Event Interrupt */ + I2C3_ER_IRQn = 93, /*!< I2C3 Error interrupt */ + DMAMUX_OVR_IRQn = 94, /*!< DMAMUX overrun global interrupt */ + DMA2_Channel6_IRQn = 97, /*!< DMA2 Channel 6 interrupt */ + CORDIC_IRQn = 100, /*!< CORDIC global Interrupt */ + FMAC_IRQn = 101 /*!< FMAC global Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#include "system_stm32g4xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR1; /*!< ADC sampling time register 1, Address offset: 0x14 */ + __IO uint32_t SMPR2; /*!< ADC sampling time register 2, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, 0x1C */ + __IO uint32_t TR1; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + __IO uint32_t TR2; /*!< ADC analog watchdog 2 threshold register, Address offset: 0x24 */ + __IO uint32_t TR3; /*!< ADC analog watchdog 3 threshold register, Address offset: 0x28 */ + uint32_t RESERVED2; /*!< Reserved, 0x2C */ + __IO uint32_t SQR1; /*!< ADC group regular sequencer register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC group regular sequencer register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC group regular sequencer register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC group regular sequencer register 4, Address offset: 0x3C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, 0x44 */ + uint32_t RESERVED4; /*!< Reserved, 0x48 */ + __IO uint32_t JSQR; /*!< ADC group injected sequencer register, Address offset: 0x4C */ + uint32_t RESERVED5[4]; /*!< Reserved, 0x50 - 0x5C */ + __IO uint32_t OFR1; /*!< ADC offset register 1, Address offset: 0x60 */ + __IO uint32_t OFR2; /*!< ADC offset register 2, Address offset: 0x64 */ + __IO uint32_t OFR3; /*!< ADC offset register 3, Address offset: 0x68 */ + __IO uint32_t OFR4; /*!< ADC offset register 4, Address offset: 0x6C */ + uint32_t RESERVED6[4]; /*!< Reserved, 0x70 - 0x7C */ + __IO uint32_t JDR1; /*!< ADC group injected rank 1 data register, Address offset: 0x80 */ + __IO uint32_t JDR2; /*!< ADC group injected rank 2 data register, Address offset: 0x84 */ + __IO uint32_t JDR3; /*!< ADC group injected rank 3 data register, Address offset: 0x88 */ + __IO uint32_t JDR4; /*!< ADC group injected rank 4 data register, Address offset: 0x8C */ + uint32_t RESERVED7[4]; /*!< Reserved, 0x090 - 0x09C */ + __IO uint32_t AWD2CR; /*!< ADC analog watchdog 2 configuration register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC analog watchdog 3 Configuration Register, Address offset: 0xA4 */ + uint32_t RESERVED8; /*!< Reserved, 0x0A8 */ + uint32_t RESERVED9; /*!< Reserved, 0x0AC */ + __IO uint32_t DIFSEL; /*!< ADC differential mode selection register, Address offset: 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC calibration factors, Address offset: 0xB4 */ + uint32_t RESERVED10[2];/*!< Reserved, 0x0B8 - 0x0BC */ + __IO uint32_t GCOMP; /*!< ADC calibration factors, Address offset: 0xC0 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: 0x300 + 0x00 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x300 + 0x04 */ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: 0x300 + 0x08 */ + __IO uint32_t CDR; /*!< ADC common group regular data register Address offset: 0x300 + 0x0C */ +} ADC_Common_TypeDef; + +/** + * @brief FD Controller Area Network + */ + +typedef struct +{ + __IO uint32_t CREL; /*!< FDCAN Core Release register, Address offset: 0x000 */ + __IO uint32_t ENDN; /*!< FDCAN Endian register, Address offset: 0x004 */ + uint32_t RESERVED1; /*!< Reserved, 0x008 */ + __IO uint32_t DBTP; /*!< FDCAN Data Bit Timing & Prescaler register, Address offset: 0x00C */ + __IO uint32_t TEST; /*!< FDCAN Test register, Address offset: 0x010 */ + __IO uint32_t RWD; /*!< FDCAN RAM Watchdog register, Address offset: 0x014 */ + __IO uint32_t CCCR; /*!< FDCAN CC Control register, Address offset: 0x018 */ + __IO uint32_t NBTP; /*!< FDCAN Nominal Bit Timing & Prescaler register, Address offset: 0x01C */ + __IO uint32_t TSCC; /*!< FDCAN Timestamp Counter Configuration register, Address offset: 0x020 */ + __IO uint32_t TSCV; /*!< FDCAN Timestamp Counter Value register, Address offset: 0x024 */ + __IO uint32_t TOCC; /*!< FDCAN Timeout Counter Configuration register, Address offset: 0x028 */ + __IO uint32_t TOCV; /*!< FDCAN Timeout Counter Value register, Address offset: 0x02C */ + uint32_t RESERVED2[4]; /*!< Reserved, 0x030 - 0x03C */ + __IO uint32_t ECR; /*!< FDCAN Error Counter register, Address offset: 0x040 */ + __IO uint32_t PSR; /*!< FDCAN Protocol Status register, Address offset: 0x044 */ + __IO uint32_t TDCR; /*!< FDCAN Transmitter Delay Compensation register, Address offset: 0x048 */ + uint32_t RESERVED3; /*!< Reserved, 0x04C */ + __IO uint32_t IR; /*!< FDCAN Interrupt register, Address offset: 0x050 */ + __IO uint32_t IE; /*!< FDCAN Interrupt Enable register, Address offset: 0x054 */ + __IO uint32_t ILS; /*!< FDCAN Interrupt Line Select register, Address offset: 0x058 */ + __IO uint32_t ILE; /*!< FDCAN Interrupt Line Enable register, Address offset: 0x05C */ + uint32_t RESERVED4[8]; /*!< Reserved, 0x060 - 0x07C */ + __IO uint32_t RXGFC; /*!< FDCAN Global Filter Configuration register, Address offset: 0x080 */ + __IO uint32_t XIDAM; /*!< FDCAN Extended ID AND Mask register, Address offset: 0x084 */ + __IO uint32_t HPMS; /*!< FDCAN High Priority Message Status register, Address offset: 0x088 */ + uint32_t RESERVED5; /*!< Reserved, 0x08C */ + __IO uint32_t RXF0S; /*!< FDCAN Rx FIFO 0 Status register, Address offset: 0x090 */ + __IO uint32_t RXF0A; /*!< FDCAN Rx FIFO 0 Acknowledge register, Address offset: 0x094 */ + __IO uint32_t RXF1S; /*!< FDCAN Rx FIFO 1 Status register, Address offset: 0x098 */ + __IO uint32_t RXF1A; /*!< FDCAN Rx FIFO 1 Acknowledge register, Address offset: 0x09C */ + uint32_t RESERVED6[8]; /*!< Reserved, 0x0A0 - 0x0BC */ + __IO uint32_t TXBC; /*!< FDCAN Tx Buffer Configuration register, Address offset: 0x0C0 */ + __IO uint32_t TXFQS; /*!< FDCAN Tx FIFO/Queue Status register, Address offset: 0x0C4 */ + __IO uint32_t TXBRP; /*!< FDCAN Tx Buffer Request Pending register, Address offset: 0x0C8 */ + __IO uint32_t TXBAR; /*!< FDCAN Tx Buffer Add Request register, Address offset: 0x0CC */ + __IO uint32_t TXBCR; /*!< FDCAN Tx Buffer Cancellation Request register, Address offset: 0x0D0 */ + __IO uint32_t TXBTO; /*!< FDCAN Tx Buffer Transmission Occurred register, Address offset: 0x0D4 */ + __IO uint32_t TXBCF; /*!< FDCAN Tx Buffer Cancellation Finished register, Address offset: 0x0D8 */ + __IO uint32_t TXBTIE; /*!< FDCAN Tx Buffer Transmission Interrupt Enable register, Address offset: 0x0DC */ + __IO uint32_t TXBCIE; /*!< FDCAN Tx Buffer Cancellation Finished Interrupt Enable register, Address offset: 0x0E0 */ + __IO uint32_t TXEFS; /*!< FDCAN Tx Event FIFO Status register, Address offset: 0x0E4 */ + __IO uint32_t TXEFA; /*!< FDCAN Tx Event FIFO Acknowledge register, Address offset: 0x0E8 */ +} FDCAN_GlobalTypeDef; + +/** + * @brief FD Controller Area Network Configuration + */ + +typedef struct +{ + __IO uint32_t CKDIV; /*!< FDCAN clock divider register, Address offset: 0x100 + 0x000 */ +} FDCAN_Config_TypeDef; + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED0; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + +/** + * @brief Clock Recovery System + */ +typedef struct +{ + __IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */ + __IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */ + __IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */ + __IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */ +} CRS_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ + __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */ + __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */ + __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */ + __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */ + __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */ + __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */ + __IO uint32_t RESERVED[2]; + __IO uint32_t STR1; /*!< DAC Sawtooth register, Address offset: 0x58 */ + __IO uint32_t STR2; /*!< DAC Sawtooth register, Address offset: 0x5C */ + __IO uint32_t STMODR; /*!< DAC Sawtooth Mode register, Address offset: 0x60 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */ + __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */ +} DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief DMA Multiplexer + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA Multiplexer Channel x Control Register Address offset: 0x0004 * (channel x) */ +}DMAMUX_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< DMA Channel Status Register Address offset: 0x0080 */ + __IO uint32_t CFR; /*!< DMA Channel Clear Flag Register Address offset: 0x0084 */ +}DMAMUX_ChannelStatus_TypeDef; + +typedef struct +{ + __IO uint32_t RGCR; /*!< DMA Request Generator x Control Register Address offset: 0x0100 + 0x0004 * (Req Gen x) */ +}DMAMUX_RequestGen_TypeDef; + +typedef struct +{ + __IO uint32_t RGSR; /*!< DMA Request Generator Status Register Address offset: 0x0140 */ + __IO uint32_t RGCFR; /*!< DMA Request Generator Clear Flag Register Address offset: 0x0144 */ +}DMAMUX_RequestGenStatus_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR1; /*!< EXTI Interrupt mask register 1, Address offset: 0x00 */ + __IO uint32_t EMR1; /*!< EXTI Event mask register 1, Address offset: 0x04 */ + __IO uint32_t RTSR1; /*!< EXTI Rising trigger selection register 1, Address offset: 0x08 */ + __IO uint32_t FTSR1; /*!< EXTI Falling trigger selection register 1, Address offset: 0x0C */ + __IO uint32_t SWIER1; /*!< EXTI Software interrupt event register 1, Address offset: 0x10 */ + __IO uint32_t PR1; /*!< EXTI Pending register 1, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t IMR2; /*!< EXTI Interrupt mask register 2, Address offset: 0x20 */ + __IO uint32_t EMR2; /*!< EXTI Event mask register 2, Address offset: 0x24 */ + __IO uint32_t RTSR2; /*!< EXTI Rising trigger selection register 2, Address offset: 0x28 */ + __IO uint32_t FTSR2; /*!< EXTI Falling trigger selection register 2, Address offset: 0x2C */ + __IO uint32_t SWIER2; /*!< EXTI Software interrupt event register 2, Address offset: 0x30 */ + __IO uint32_t PR2; /*!< EXTI Pending register 2, Address offset: 0x34 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32_t PDKEYR; /*!< FLASH power down key register, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x14 */ + __IO uint32_t ECCR; /*!< FLASH ECC register, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x1C */ + __IO uint32_t OPTR; /*!< FLASH option register, Address offset: 0x20 */ + __IO uint32_t PCROP1SR; /*!< FLASH bank1 PCROP start address register, Address offset: 0x24 */ + __IO uint32_t PCROP1ER; /*!< FLASH bank1 PCROP end address register, Address offset: 0x28 */ + __IO uint32_t WRP1AR; /*!< FLASH bank1 WRP area A address register, Address offset: 0x2C */ + __IO uint32_t WRP1BR; /*!< FLASH bank1 WRP area B address register, Address offset: 0x30 */ + uint32_t RESERVED2[15]; /*!< Reserved2, Address offset: 0x34 */ + __IO uint32_t SEC1R; /*!< FLASH Securable memory register bank1, Address offset: 0x70 */ +} FLASH_TypeDef; + +/** + * @brief FMAC + */ +typedef struct +{ + __IO uint32_t X1BUFCFG; /*!< FMAC X1 Buffer Configuration register, Address offset: 0x00 */ + __IO uint32_t X2BUFCFG; /*!< FMAC X2 Buffer Configuration register, Address offset: 0x04 */ + __IO uint32_t YBUFCFG; /*!< FMAC Y Buffer Configuration register, Address offset: 0x08 */ + __IO uint32_t PARAM; /*!< FMAC Parameter register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< FMAC Control register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< FMAC Status register, Address offset: 0x14 */ + __IO uint32_t WDATA; /*!< FMAC Write Data register, Address offset: 0x18 */ + __IO uint32_t RDATA; /*!< FMAC Read Data register, Address offset: 0x1C */ +} FMAC_TypeDef; + + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + +/** + * @brief LPTIMER + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t CMP; /*!< LPTIM Compare register, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ + __IO uint32_t OR; /*!< LPTIM Option register, Address offset: 0x20 */ +} LPTIM_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */ + __IO uint32_t RESERVED[5]; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t TCMR; /*!< OPAMP timer controlled mux mode register, Address offset: 0x18 */ +} OPAMP_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< PWR power control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< PWR power control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< PWR power control register 3, Address offset: 0x08 */ + __IO uint32_t CR4; /*!< PWR power control register 4, Address offset: 0x0C */ + __IO uint32_t SR1; /*!< PWR power status register 1, Address offset: 0x10 */ + __IO uint32_t SR2; /*!< PWR power status register 2, Address offset: 0x14 */ + __IO uint32_t SCR; /*!< PWR power status reset register, Address offset: 0x18 */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t PUCRA; /*!< Pull_up control register of portA, Address offset: 0x20 */ + __IO uint32_t PDCRA; /*!< Pull_Down control register of portA, Address offset: 0x24 */ + __IO uint32_t PUCRB; /*!< Pull_up control register of portB, Address offset: 0x28 */ + __IO uint32_t PDCRB; /*!< Pull_Down control register of portB, Address offset: 0x2C */ + __IO uint32_t PUCRC; /*!< Pull_up control register of portC, Address offset: 0x30 */ + __IO uint32_t PDCRC; /*!< Pull_Down control register of portC, Address offset: 0x34 */ + __IO uint32_t PUCRD; /*!< Pull_up control register of portD, Address offset: 0x38 */ + __IO uint32_t PDCRD; /*!< Pull_Down control register of portD, Address offset: 0x3C */ + __IO uint32_t PUCRE; /*!< Pull_up control register of portE, Address offset: 0x40 */ + __IO uint32_t PDCRE; /*!< Pull_Down control register of portE, Address offset: 0x44 */ + __IO uint32_t PUCRF; /*!< Pull_up control register of portF, Address offset: 0x48 */ + __IO uint32_t PDCRF; /*!< Pull_Down control register of portF, Address offset: 0x4C */ + __IO uint32_t PUCRG; /*!< Pull_up control register of portG, Address offset: 0x50 */ + __IO uint32_t PDCRG; /*!< Pull_Down control register of portG, Address offset: 0x54 */ + uint32_t RESERVED1[10]; /*!< Reserved Address offset: 0x58 - 0x7C */ + __IO uint32_t CR5; /*!< PWR power control register 5, Address offset: 0x80 */ +} PWR_TypeDef; + + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC system PLL configuration register, Address offset: 0x0C */ + uint32_t RESERVED0; /*!< Reserved, Address offset: 0x10 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC clock interrupt enable register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC clock interrupt flag register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC clock interrupt clear register, Address offset: 0x20 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x28 */ + __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x2C */ + __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x30 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x34 */ + __IO uint32_t APB1RSTR1; /*!< RCC APB1 peripheral reset register 1, Address offset: 0x38 */ + __IO uint32_t APB1RSTR2; /*!< RCC APB1 peripheral reset register 2, Address offset: 0x3C */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x40 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x44 */ + __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clocks enable register, Address offset: 0x48 */ + __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clocks enable register, Address offset: 0x4C */ + __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clocks enable register, Address offset: 0x50 */ + uint32_t RESERVED5; /*!< Reserved, Address offset: 0x54 */ + __IO uint32_t APB1ENR1; /*!< RCC APB1 peripheral clocks enable register 1, Address offset: 0x58 */ + __IO uint32_t APB1ENR2; /*!< RCC APB1 peripheral clocks enable register 2, Address offset: 0x5C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clocks enable register, Address offset: 0x60 */ + uint32_t RESERVED6; /*!< Reserved, Address offset: 0x64 */ + __IO uint32_t AHB1SMENR; /*!< RCC AHB1 peripheral clocks enable in sleep and stop modes register, Address offset: 0x68 */ + __IO uint32_t AHB2SMENR; /*!< RCC AHB2 peripheral clocks enable in sleep and stop modes register, Address offset: 0x6C */ + __IO uint32_t AHB3SMENR; /*!< RCC AHB3 peripheral clocks enable in sleep and stop modes register, Address offset: 0x70 */ + uint32_t RESERVED7; /*!< Reserved, Address offset: 0x74 */ + __IO uint32_t APB1SMENR1; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 1, Address offset: 0x78 */ + __IO uint32_t APB1SMENR2; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 2, Address offset: 0x7C */ + __IO uint32_t APB2SMENR; /*!< RCC APB2 peripheral clocks enable in sleep mode and stop modes register, Address offset: 0x80 */ + uint32_t RESERVED8; /*!< Reserved, Address offset: 0x84 */ + __IO uint32_t CCIPR; /*!< RCC peripherals independent clock configuration register, Address offset: 0x88 */ + uint32_t RESERVED9; /*!< Reserved, Address offset: 0x8C */ + __IO uint32_t BDCR; /*!< RCC backup domain control register, Address offset: 0x90 */ + __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x94 */ + __IO uint32_t CRRCR; /*!< RCC clock recovery RC register, Address offset: 0x98 */ + __IO uint32_t CCIPR2; /*!< RCC peripherals independent clock configuration register 2, Address offset: 0x9C */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ +/* +* @brief Specific device feature definitions +*/ +#define RTC_TAMP_INT_6_SUPPORT +#define RTC_TAMP_INT_NB 4u + +#define RTC_TAMP_NB 3u +#define RTC_BACKUP_NB 16u + + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */ + __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x1C */ + uint32_t RESERVED1; /*!< Reserved Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x3C */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */ + __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */ + __IO uint32_t MISR; /*!< RTC Masked Interrupt Status register, Address offset: 0x54 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x58 */ + __IO uint32_t SCR; /*!< RTC Status Clear register, Address offset: 0x5C */ +} RTC_TypeDef; + +/** + * @brief Tamper and backup registers + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TAMP configuration register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TAMP configuration register 2, Address offset: 0x04 */ + uint32_t RESERVED0; /*!< no configuration register 3, Address offset: 0x08 */ + __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */ + uint32_t RESERVED1[6]; /*!< Reserved Address offset: 0x10 - 0x24 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x28 */ + __IO uint32_t IER; /*!< TAMP Interrupt enable register, Address offset: 0x2C */ + __IO uint32_t SR; /*!< TAMP Status register, Address offset: 0x30 */ + __IO uint32_t MISR; /*!< TAMP Masked Interrupt Status register Address offset: 0x34 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x38 */ + __IO uint32_t SCR; /*!< TAMP Status clear register, Address offset: 0x3C */ + uint32_t RESERVED4[48]; /*!< Reserved Address offset: 0x040 - 0xFC */ + __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */ + __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */ + __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */ + __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */ + __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */ + __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */ + __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */ + __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */ + __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */ + __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */ + __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */ + __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */ + __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */ + __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */ + __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */ + __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */ +} TAMP_TypeDef; + +/** + * @brief Serial Audio Interface + */ + +typedef struct +{ + __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */ + uint32_t RESERVED[16]; /*!< Reserved, Address offset: 0x04 to 0x40 */ + __IO uint32_t PDMCR; /*!< SAI PDM control register, Address offset: 0x44 */ + __IO uint32_t PDMDLY; /*!< SAI PDM delay register, Address offset: 0x48 */ +} SAI_TypeDef; + +typedef struct +{ + __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */ + __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */ + __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */ + __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */ + __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */ +} SAI_Block_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register, Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register, Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register, Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ + __IO uint32_t SCSR; /*!< SYSCFG CCMSRAM control and status register, Address offset: 0x18 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x1C */ + __IO uint32_t SWPR; /*!< SYSCFG CCMSRAM write protection register, Address offset: 0x20 */ + __IO uint32_t SKR; /*!< SYSCFG CCMSRAM Key Register, Address offset: 0x24 */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */ + __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */ + __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */ + __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */ + __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */ + __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */ + __IO uint32_t OR ; /*!< TIM option register, Address offset: 0x68 */ + uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + __IO uint32_t RTOR; /*!< USART Receiver Timeout register, Address offset: 0x14 */ + __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */ +} USART_TypeDef; + +/** + * @brief Universal Serial Bus Full Speed Device + */ + +typedef struct +{ + __IO uint16_t EP0R; /*!< USB Endpoint 0 register, Address offset: 0x00 */ + __IO uint16_t RESERVED0; /*!< Reserved */ + __IO uint16_t EP1R; /*!< USB Endpoint 1 register, Address offset: 0x04 */ + __IO uint16_t RESERVED1; /*!< Reserved */ + __IO uint16_t EP2R; /*!< USB Endpoint 2 register, Address offset: 0x08 */ + __IO uint16_t RESERVED2; /*!< Reserved */ + __IO uint16_t EP3R; /*!< USB Endpoint 3 register, Address offset: 0x0C */ + __IO uint16_t RESERVED3; /*!< Reserved */ + __IO uint16_t EP4R; /*!< USB Endpoint 4 register, Address offset: 0x10 */ + __IO uint16_t RESERVED4; /*!< Reserved */ + __IO uint16_t EP5R; /*!< USB Endpoint 5 register, Address offset: 0x14 */ + __IO uint16_t RESERVED5; /*!< Reserved */ + __IO uint16_t EP6R; /*!< USB Endpoint 6 register, Address offset: 0x18 */ + __IO uint16_t RESERVED6; /*!< Reserved */ + __IO uint16_t EP7R; /*!< USB Endpoint 7 register, Address offset: 0x1C */ + __IO uint16_t RESERVED7[17]; /*!< Reserved */ + __IO uint16_t CNTR; /*!< Control register, Address offset: 0x40 */ + __IO uint16_t RESERVED8; /*!< Reserved */ + __IO uint16_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */ + __IO uint16_t RESERVED9; /*!< Reserved */ + __IO uint16_t FNR; /*!< Frame number register, Address offset: 0x48 */ + __IO uint16_t RESERVEDA; /*!< Reserved */ + __IO uint16_t DADDR; /*!< Device address register, Address offset: 0x4C */ + __IO uint16_t RESERVEDB; /*!< Reserved */ + __IO uint16_t BTABLE; /*!< Buffer Table address register, Address offset: 0x50 */ + __IO uint16_t RESERVEDC; /*!< Reserved */ + __IO uint16_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */ + __IO uint16_t RESERVEDD; /*!< Reserved */ + __IO uint16_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */ + __IO uint16_t RESERVEDE; /*!< Reserved */ +} USB_TypeDef; + +/** + * @brief VREFBUF + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< VREFBUF control and status register, Address offset: 0x00 */ + __IO uint32_t CCR; /*!< VREFBUF calibration and control register, Address offset: 0x04 */ +} VREFBUF_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + +/** + * @brief RNG + */ +typedef struct +{ + __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */ + __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */ +} RNG_TypeDef; + +/** + * @brief CORDIC + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< CORDIC control and status register, Address offset: 0x00 */ + __IO uint32_t WDATA; /*!< CORDIC argument register, Address offset: 0x04 */ + __IO uint32_t RDATA; /*!< CORDIC result register, Address offset: 0x08 */ +} CORDIC_TypeDef; + +/** + * @brief UCPD + */ + +typedef struct +{ + __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */ + __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */ + __IO uint32_t RESERVED0; /*!< UCPD reserved register, Address offset: 0x08 */ + __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */ + __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */ + __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */ + __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */ + __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */ + __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */ + __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */ + __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */ + __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */ + __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */ + __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */ + __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */ +} UCPD_TypeDef; + + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE (0x08000000UL) /*!< FLASH (up to 128 kB) base address */ +#define SRAM1_BASE (0x20000000UL) /*!< SRAM1(up to 16 KB) base address */ +#define SRAM2_BASE (0x20004000UL) /*!< SRAM2(6 KB) base address */ +#define CCMSRAM_BASE (0x10000000UL) /*!< CCMSRAM(10 KB) base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ + +#define SRAM1_BB_BASE (0x22000000UL) /*!< SRAM1(16 KB) base address in the bit-band region */ +#define SRAM2_BB_BASE (0x22080000UL) /*!< SRAM2(6 KB) base address in the bit-band region */ +#define CCMSRAM_BB_BASE (0x220B0000UL) /*!< CCMSRAM(10 KB) base address in the bit-band region */ +#define PERIPH_BB_BASE (0x42000000UL) /*!< Peripheral base address in the bit-band region */ +/* Legacy defines */ +#define SRAM_BASE SRAM1_BASE +#define SRAM_BB_BASE SRAM1_BB_BASE + +#define SRAM1_SIZE_MAX (0x00004000UL) /*!< maximum SRAM1 size (up to 16 KBytes) */ +#define SRAM2_SIZE (0x00001800UL) /*!< SRAM2 size (6 KBytes) */ +#define CCMSRAM_SIZE (0x00002800UL) /*!< CCMSRAM size (10 KBytes) */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000UL) + + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL) +#define CRS_BASE (APB1PERIPH_BASE + 0x2000UL) +#define TAMP_BASE (APB1PERIPH_BASE + 0x2400UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800UL) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800UL) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL) +#define USB_BASE (APB1PERIPH_BASE + 0x5C00UL) /*!< USB_IP Peripheral Registers base address */ +#define USB_PMAADDR (APB1PERIPH_BASE + 0x6000UL) /*!< USB_IP Packet Memory Area base address */ +#define FDCAN1_BASE (APB1PERIPH_BASE + 0x6400UL) +#define FDCAN_CONFIG_BASE (APB1PERIPH_BASE + 0x6500UL) /*!< FDCAN configuration registers base address */ +#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) +#define I2C3_BASE (APB1PERIPH_BASE + 0x7800UL) +#define LPTIM1_BASE (APB1PERIPH_BASE + 0x7C00UL) +#define LPUART1_BASE (APB1PERIPH_BASE + 0x8000UL) +#define UCPD1_BASE (APB1PERIPH_BASE + 0xA000UL) +#define SRAMCAN_BASE (APB1PERIPH_BASE + 0xA400UL) + +/*!< APB2 peripherals */ +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x0000UL) +#define VREFBUF_BASE (APB2PERIPH_BASE + 0x0030UL) +#define COMP1_BASE (APB2PERIPH_BASE + 0x0200UL) +#define COMP2_BASE (APB2PERIPH_BASE + 0x0204UL) +#define COMP3_BASE (APB2PERIPH_BASE + 0x0208UL) +#define COMP4_BASE (APB2PERIPH_BASE + 0x020CUL) +#define OPAMP_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP1_BASE (APB2PERIPH_BASE + 0x0300UL) +#define OPAMP2_BASE (APB2PERIPH_BASE + 0x0304UL) +#define OPAMP3_BASE (APB2PERIPH_BASE + 0x0308UL) + +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400UL) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800UL) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000UL) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400UL) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800UL) +#define SAI1_BASE (APB2PERIPH_BASE + 0x5400UL) +#define SAI1_Block_A_BASE (SAI1_BASE + 0x0004UL) +#define SAI1_Block_B_BASE (SAI1_BASE + 0x0024UL) + +/*!< AHB1 peripherals */ +#define DMA1_BASE (AHB1PERIPH_BASE) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x0400UL) +#define DMAMUX1_BASE (AHB1PERIPH_BASE + 0x0800UL) +#define CORDIC_BASE (AHB1PERIPH_BASE + 0x0C00UL) +#define RCC_BASE (AHB1PERIPH_BASE + 0x1000UL) +#define FMAC_BASE (AHB1PERIPH_BASE + 0x1400UL) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x2000UL) +#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) + +#define DMA1_Channel1_BASE (DMA1_BASE + 0x0008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x0030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x0044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x0058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x006CUL) + +#define DMA2_Channel1_BASE (DMA2_BASE + 0x0008UL) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x001CUL) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x0030UL) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x0044UL) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x0058UL) +#define DMA2_Channel6_BASE (DMA2_BASE + 0x006CUL) + +#define DMAMUX1_Channel0_BASE (DMAMUX1_BASE) +#define DMAMUX1_Channel1_BASE (DMAMUX1_BASE + 0x0004UL) +#define DMAMUX1_Channel2_BASE (DMAMUX1_BASE + 0x0008UL) +#define DMAMUX1_Channel3_BASE (DMAMUX1_BASE + 0x000CUL) +#define DMAMUX1_Channel4_BASE (DMAMUX1_BASE + 0x0010UL) +#define DMAMUX1_Channel5_BASE (DMAMUX1_BASE + 0x0014UL) +#define DMAMUX1_Channel6_BASE (DMAMUX1_BASE + 0x0020UL) +#define DMAMUX1_Channel7_BASE (DMAMUX1_BASE + 0x0024UL) +#define DMAMUX1_Channel8_BASE (DMAMUX1_BASE + 0x0028UL) +#define DMAMUX1_Channel9_BASE (DMAMUX1_BASE + 0x002CUL) +#define DMAMUX1_Channel10_BASE (DMAMUX1_BASE + 0x0030UL) +#define DMAMUX1_Channel11_BASE (DMAMUX1_BASE + 0x0034UL) +#define DMAMUX1_RequestGenerator0_BASE (DMAMUX1_BASE + 0x0100UL) +#define DMAMUX1_RequestGenerator1_BASE (DMAMUX1_BASE + 0x0104UL) +#define DMAMUX1_RequestGenerator2_BASE (DMAMUX1_BASE + 0x0108UL) +#define DMAMUX1_RequestGenerator3_BASE (DMAMUX1_BASE + 0x010CUL) + +#define DMAMUX1_ChannelStatus_BASE (DMAMUX1_BASE + 0x0080UL) +#define DMAMUX1_RequestGenStatus_BASE (DMAMUX1_BASE + 0x0140UL) + +/*!< AHB2 peripherals */ +#define GPIOA_BASE (AHB2PERIPH_BASE + 0x0000UL) +#define GPIOB_BASE (AHB2PERIPH_BASE + 0x0400UL) +#define GPIOC_BASE (AHB2PERIPH_BASE + 0x0800UL) +#define GPIOD_BASE (AHB2PERIPH_BASE + 0x0C00UL) +#define GPIOE_BASE (AHB2PERIPH_BASE + 0x1000UL) +#define GPIOF_BASE (AHB2PERIPH_BASE + 0x1400UL) +#define GPIOG_BASE (AHB2PERIPH_BASE + 0x1800UL) + +#define ADC1_BASE (AHB2PERIPH_BASE + 0x08000000UL) +#define ADC2_BASE (AHB2PERIPH_BASE + 0x08000100UL) +#define ADC12_COMMON_BASE (AHB2PERIPH_BASE + 0x08000300UL) + +#define DAC_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC1_BASE (AHB2PERIPH_BASE + 0x08000800UL) +#define DAC3_BASE (AHB2PERIPH_BASE + 0x08001000UL) + +#define RNG_BASE (AHB2PERIPH_BASE + 0x08060800UL) +/* Debug MCU registers base address */ +#define DBGMCU_BASE (0xE0042000UL) + +#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */ +#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE (0x1FFF75E0UL) /*!< Flash size data register base address */ +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define CRS ((CRS_TypeDef *) CRS_BASE) +#define TAMP ((TAMP_TypeDef *) TAMP_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define USB ((USB_TypeDef *) USB_BASE) +#define FDCAN1 ((FDCAN_GlobalTypeDef *) FDCAN1_BASE) +#define FDCAN_CONFIG ((FDCAN_Config_TypeDef *) FDCAN_CONFIG_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define LPUART1 ((USART_TypeDef *) LPUART1_BASE) +#define UCPD1 ((UCPD_TypeDef *) UCPD1_BASE) + +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define VREFBUF ((VREFBUF_TypeDef *) VREFBUF_BASE) +#define COMP1 ((COMP_TypeDef *) COMP1_BASE) +#define COMP2 ((COMP_TypeDef *) COMP2_BASE) +#define COMP3 ((COMP_TypeDef *) COMP3_BASE) +#define COMP4 ((COMP_TypeDef *) COMP4_BASE) + +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP1_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) OPAMP2_BASE) +#define OPAMP3 ((OPAMP_TypeDef *) OPAMP3_BASE) + +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define SAI1 ((SAI_TypeDef *) SAI1_BASE) +#define SAI1_Block_A ((SAI_Block_TypeDef *)SAI1_Block_A_BASE) +#define SAI1_Block_B ((SAI_Block_TypeDef *)SAI1_Block_B_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMAMUX1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_BASE) +#define CORDIC ((CORDIC_TypeDef *) CORDIC_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FMAC ((FMAC_TypeDef *) FMAC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC12_COMMON ((ADC_Common_TypeDef *) ADC12_COMMON_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define DAC3 ((DAC_TypeDef *) DAC3_BASE) +#define RNG ((RNG_TypeDef *) RNG_BASE) + +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) + +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define DMA2_Channel6 ((DMA_Channel_TypeDef *) DMA2_Channel6_BASE) + +#define DMAMUX1_Channel0 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel0_BASE) +#define DMAMUX1_Channel1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel1_BASE) +#define DMAMUX1_Channel2 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel2_BASE) +#define DMAMUX1_Channel3 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel3_BASE) +#define DMAMUX1_Channel4 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel4_BASE) +#define DMAMUX1_Channel5 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel5_BASE) +#define DMAMUX1_Channel6 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel6_BASE) +#define DMAMUX1_Channel7 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel7_BASE) +#define DMAMUX1_Channel8 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel8_BASE) +#define DMAMUX1_Channel9 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel9_BASE) +#define DMAMUX1_Channel10 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel10_BASE) +#define DMAMUX1_Channel11 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel11_BASE) + +#define DMAMUX1_RequestGenerator0 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator0_BASE) +#define DMAMUX1_RequestGenerator1 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator1_BASE) +#define DMAMUX1_RequestGenerator2 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator2_BASE) +#define DMAMUX1_RequestGenerator3 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator3_BASE) + +#define DMAMUX1_ChannelStatus ((DMAMUX_ChannelStatus_TypeDef *) DMAMUX1_ChannelStatus_BASE) +#define DMAMUX1_RequestGenStatus ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX1_RequestGenStatus_BASE) + + + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 130U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ + +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 serie) + */ +#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */ + +/******************** Bit definition for ADC_ISR register *******************/ +#define ADC_ISR_ADRDY_Pos (0U) +#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */ +#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOS_Pos (3U) +#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_JEOC_Pos (5U) +#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */ +#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */ +#define ADC_ISR_JEOS_Pos (6U) +#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */ +#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */ +#define ADC_ISR_AWD1_Pos (7U) +#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_ISR_AWD2_Pos (8U) +#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */ +#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */ +#define ADC_ISR_AWD3_Pos (9U) +#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */ +#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */ +#define ADC_ISR_JQOVF_Pos (10U) +#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */ +#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_IER register *******************/ +#define ADC_IER_ADRDYIE_Pos (0U) +#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */ +#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSIE_Pos (3U) +#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_JEOCIE_Pos (5U) +#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */ +#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */ +#define ADC_IER_JEOSIE_Pos (6U) +#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */ +#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */ +#define ADC_IER_AWD1IE_Pos (7U) +#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_IER_AWD2IE_Pos (8U) +#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */ +#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */ +#define ADC_IER_AWD3IE_Pos (9U) +#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */ +#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */ +#define ADC_IER_JQOVFIE_Pos (10U) +#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */ +#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */ + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */ +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_JADSTART_Pos (3U) +#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */ +#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_JADSTP_Pos (5U) +#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */ +#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */ +#define ADC_CR_ADVREGEN_Pos (28U) +#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */ +#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */ +#define ADC_CR_DEEPPWD_Pos (29U) +#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */ +#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */ +#define ADC_CR_ADCALDIF_Pos (30U) +#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */ +#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************** Bit definition for ADC_CFGR register ******************/ +#define ADC_CFGR_DMAEN_Pos (0U) +#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */ +#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */ +#define ADC_CFGR_DMACFG_Pos (1U) +#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */ +#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */ + +#define ADC_CFGR_RES_Pos (3U) +#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */ +#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */ +#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */ +#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR_EXTSEL_Pos (5U) +#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */ +#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */ +#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */ + +#define ADC_CFGR_EXTEN_Pos (10U) +#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */ + +#define ADC_CFGR_OVRMOD_Pos (12U) +#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR_CONT_Pos (13U) +#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR_AUTDLY_Pos (14U) +#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */ +#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */ +#define ADC_CFGR_ALIGN_Pos (15U) +#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */ +#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignement */ +#define ADC_CFGR_DISCEN_Pos (16U) +#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ + +#define ADC_CFGR_DISCNUM_Pos (17U) +#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */ +#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */ +#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */ +#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */ +#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */ + +#define ADC_CFGR_JDISCEN_Pos (20U) +#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */ +#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */ +#define ADC_CFGR_JQM_Pos (21U) +#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */ +#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */ +#define ADC_CFGR_AWD1SGL_Pos (22U) +#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR_AWD1EN_Pos (23U) +#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ +#define ADC_CFGR_JAWD1EN_Pos (24U) +#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */ +#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */ +#define ADC_CFGR_JAUTO_Pos (25U) +#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */ +#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */ + +#define ADC_CFGR_AWD1CH_Pos (26U) +#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */ +#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */ +#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */ + +#define ADC_CFGR_JQDIS_Pos (31U) +#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */ +#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */ + +/******************** Bit definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_ROVSE_Pos (0U) +#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */ +#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */ +#define ADC_CFGR2_JOVSE_Pos (1U) +#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */ +#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */ + +#define ADC_CFGR2_OVSR_Pos (2U) +#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */ +#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */ +#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */ +#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR2_OVSS_Pos (5U) +#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */ +#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */ +#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */ +#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */ +#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */ +#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR2_TROVS_Pos (9U) +#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */ +#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */ +#define ADC_CFGR2_ROVSM_Pos (10U) +#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */ +#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */ + +#define ADC_CFGR2_GCOMP_Pos (16U) +#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */ +#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */ + +#define ADC_CFGR2_SWTRIG_Pos (25U) +#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */ +#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */ +#define ADC_CFGR2_BULB_Pos (26U) +#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */ +#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */ +#define ADC_CFGR2_SMPTRIG_Pos (27U) +#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */ +#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */ + +/******************** Bit definition for ADC_SMPR1 register *****************/ +#define ADC_SMPR1_SMP0_Pos (0U) +#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */ +#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */ +#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */ +#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR1_SMP1_Pos (3U) +#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */ +#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */ +#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */ +#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR1_SMP2_Pos (6U) +#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */ +#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */ +#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR1_SMP3_Pos (9U) +#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */ +#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */ +#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR1_SMP4_Pos (12U) +#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */ +#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */ +#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR1_SMP5_Pos (15U) +#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */ +#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */ +#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */ +#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR1_SMP6_Pos (18U) +#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */ +#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */ +#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR1_SMP7_Pos (21U) +#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */ +#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */ +#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR1_SMP8_Pos (24U) +#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */ +#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */ +#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */ +#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */ + +#define ADC_SMPR1_SMP9_Pos (27U) +#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */ +#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */ +#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */ +#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */ + +#define ADC_SMPR1_SMPPLUS_Pos (31U) +#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */ +#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */ + +/******************** Bit definition for ADC_SMPR2 register *****************/ +#define ADC_SMPR2_SMP10_Pos (0U) +#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR2_SMP11_Pos (3U) +#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */ +#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */ +#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */ +#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR2_SMP12_Pos (6U) +#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */ +#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */ +#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR2_SMP13_Pos (9U) +#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */ +#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */ +#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR2_SMP14_Pos (12U) +#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */ +#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */ +#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */ +#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR2_SMP15_Pos (15U) +#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR2_SMP16_Pos (18U) +#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */ +#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */ +#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR2_SMP17_Pos (21U) +#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */ +#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */ +#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR2_SMP18_Pos (24U) +#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */ +#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */ +#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */ +#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */ +#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */ + +/******************** Bit definition for ADC_TR1 register *******************/ +#define ADC_TR1_LT1_Pos (0U) +#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */ +#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */ + +#define ADC_TR1_AWDFILT_Pos (12U) +#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */ +#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */ +#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */ +#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */ +#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */ + +#define ADC_TR1_HT1_Pos (16U) +#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */ + +/******************** Bit definition for ADC_TR2 register *******************/ +#define ADC_TR2_LT2_Pos (0U) +#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */ +#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */ + +#define ADC_TR2_HT2_Pos (16U) +#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */ +#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */ + +/******************** Bit definition for ADC_TR3 register *******************/ +#define ADC_TR3_LT3_Pos (0U) +#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */ +#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */ + +#define ADC_TR3_HT3_Pos (16U) +#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */ +#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */ + +/******************** Bit definition for ADC_SQR1 register ******************/ +#define ADC_SQR1_L_Pos (0U) +#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */ +#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */ +#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */ +#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */ +#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */ +#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */ + +#define ADC_SQR1_SQ1_Pos (6U) +#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */ +#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */ +#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */ +#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */ +#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */ +#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */ +#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */ + +#define ADC_SQR1_SQ2_Pos (12U) +#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */ +#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */ +#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */ +#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */ +#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */ +#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */ +#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */ + +#define ADC_SQR1_SQ3_Pos (18U) +#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */ +#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */ +#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */ +#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */ +#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */ +#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */ +#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */ + +#define ADC_SQR1_SQ4_Pos (24U) +#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */ +#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */ +#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */ +#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */ +#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */ +#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */ +#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR2 register ******************/ +#define ADC_SQR2_SQ5_Pos (0U) +#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */ +#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */ +#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */ +#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */ +#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */ +#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */ +#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */ + +#define ADC_SQR2_SQ6_Pos (6U) +#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */ +#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */ +#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */ +#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */ +#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */ +#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */ +#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */ + +#define ADC_SQR2_SQ7_Pos (12U) +#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */ +#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */ +#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */ +#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */ +#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */ +#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */ +#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */ + +#define ADC_SQR2_SQ8_Pos (18U) +#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */ +#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */ +#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */ +#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */ +#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */ +#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */ +#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */ + +#define ADC_SQR2_SQ9_Pos (24U) +#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */ +#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */ +#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */ +#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */ +#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */ +#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */ +#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR3 register ******************/ +#define ADC_SQR3_SQ10_Pos (0U) +#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */ +#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */ +#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */ +#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */ +#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */ +#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */ +#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */ + +#define ADC_SQR3_SQ11_Pos (6U) +#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */ +#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */ +#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */ +#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */ +#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */ +#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */ +#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */ + +#define ADC_SQR3_SQ12_Pos (12U) +#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */ +#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */ +#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */ +#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */ +#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */ +#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */ + +#define ADC_SQR3_SQ13_Pos (18U) +#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */ +#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */ +#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */ +#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */ +#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */ +#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */ + +#define ADC_SQR3_SQ14_Pos (24U) +#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */ +#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */ +#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */ +#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */ +#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */ +#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */ +#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR4 register ******************/ +#define ADC_SQR4_SQ15_Pos (0U) +#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */ +#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */ +#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */ +#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */ +#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */ +#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */ +#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */ + +#define ADC_SQR4_SQ16_Pos (6U) +#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */ +#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */ +#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */ +#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */ +#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */ +#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */ +#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_RDATA_Pos (0U) +#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */ + +/******************** Bit definition for ADC_JSQR register ******************/ +#define ADC_JSQR_JL_Pos (0U) +#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */ +#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */ +#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */ +#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */ + +#define ADC_JSQR_JEXTSEL_Pos (2U) +#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */ +#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */ +#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */ +#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */ +#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */ +#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */ +#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */ + +#define ADC_JSQR_JEXTEN_Pos (7U) +#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */ +#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */ +#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */ +#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */ + +#define ADC_JSQR_JSQ1_Pos (9U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */ +#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */ +#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */ + +#define ADC_JSQR_JSQ2_Pos (15U) +#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */ +#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */ +#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */ +#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */ +#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */ +#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */ +#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */ + +#define ADC_JSQR_JSQ3_Pos (21U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */ +#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */ +#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */ +#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */ +#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */ + +#define ADC_JSQR_JSQ4_Pos (27U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */ +#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */ +#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */ +#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */ +#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */ + +/******************** Bit definition for ADC_OFR1 register ******************/ +#define ADC_OFR1_OFFSET1_Pos (0U) +#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */ +#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */ + +#define ADC_OFR1_OFFSETPOS_Pos (24U) +#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */ +#define ADC_OFR1_SATEN_Pos (25U) +#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */ + +#define ADC_OFR1_OFFSET1_CH_Pos (26U) +#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */ +#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR1_OFFSET1_EN_Pos (31U) +#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */ + +/******************** Bit definition for ADC_OFR2 register ******************/ +#define ADC_OFR2_OFFSET2_Pos (0U) +#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */ +#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */ + +#define ADC_OFR2_OFFSETPOS_Pos (24U) +#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */ +#define ADC_OFR2_SATEN_Pos (25U) +#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */ + +#define ADC_OFR2_OFFSET2_CH_Pos (26U) +#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */ +#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR2_OFFSET2_EN_Pos (31U) +#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */ + +/******************** Bit definition for ADC_OFR3 register ******************/ +#define ADC_OFR3_OFFSET3_Pos (0U) +#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */ +#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */ + +#define ADC_OFR3_OFFSETPOS_Pos (24U) +#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */ +#define ADC_OFR3_SATEN_Pos (25U) +#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */ + +#define ADC_OFR3_OFFSET3_CH_Pos (26U) +#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */ +#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR3_OFFSET3_EN_Pos (31U) +#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */ + +/******************** Bit definition for ADC_OFR4 register ******************/ +#define ADC_OFR4_OFFSET4_Pos (0U) +#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */ +#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */ + +#define ADC_OFR4_OFFSETPOS_Pos (24U) +#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */ +#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */ +#define ADC_OFR4_SATEN_Pos (25U) +#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */ +#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */ + +#define ADC_OFR4_OFFSET4_CH_Pos (26U) +#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */ +#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR4_OFFSET4_EN_Pos (31U) +#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */ + +/******************** Bit definition for ADC_JDR1 register ******************/ +#define ADC_JDR1_JDATA_Pos (0U) +#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */ + +/******************** Bit definition for ADC_JDR2 register ******************/ +#define ADC_JDR2_JDATA_Pos (0U) +#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */ + +/******************** Bit definition for ADC_JDR3 register ******************/ +#define ADC_JDR3_JDATA_Pos (0U) +#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */ + +/******************** Bit definition for ADC_JDR4 register ******************/ +#define ADC_JDR4_JDATA_Pos (0U) +#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */ + +/******************** Bit definition for ADC_AWD2CR register ****************/ +#define ADC_AWD2CR_AWD2CH_Pos (0U) +#define ADC_AWD2CR_AWD2CH_Msk (0x7FFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */ +#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_AWD3CR register ****************/ +#define ADC_AWD3CR_AWD3CH_Pos (0U) +#define ADC_AWD3CR_AWD3CH_Msk (0x7FFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */ +#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_DIFSEL register ****************/ +#define ADC_DIFSEL_DIFSEL_Pos (0U) +#define ADC_DIFSEL_DIFSEL_Msk (0x7FFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */ +#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */ +#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */ +#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */ +#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */ +#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */ +#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */ +#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */ +#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */ +#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */ +#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */ +#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */ +#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */ +#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */ +#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */ +#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */ +#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */ +#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */ +#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */ +#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */ +#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_CALFACT register ***************/ +#define ADC_CALFACT_CALFACT_S_Pos (0U) +#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */ +#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */ +#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */ +#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */ +#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */ +#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */ +#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */ +#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */ +#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */ + +#define ADC_CALFACT_CALFACT_D_Pos (16U) +#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */ +#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */ +#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */ +#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */ +#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */ +#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */ +#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */ +#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */ +#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */ + +/******************** Bit definition for ADC_GCOMP register *****************/ +#define ADC_GCOMP_GCOMPCOEFF_Pos (0U) +#define ADC_GCOMP_GCOMPCOEFF_Msk (0x3FFFUL << ADC_GCOMP_GCOMPCOEFF_Pos) /*!< 0x00003FFF */ +#define ADC_GCOMP_GCOMPCOEFF ADC_GCOMP_GCOMPCOEFF_Msk /*!< ADC Gain Compensation Coefficient */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC_CSR register *******************/ +#define ADC_CSR_ADRDY_MST_Pos (0U) +#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */ +#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */ +#define ADC_CSR_EOSMP_MST_Pos (1U) +#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */ +#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */ +#define ADC_CSR_EOC_MST_Pos (2U) +#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */ +#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_MST_Pos (3U) +#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */ +#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_MST_Pos (4U) +#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */ +#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */ +#define ADC_CSR_JEOC_MST_Pos (5U) +#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */ +#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_MST_Pos (6U) +#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */ +#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_MST_Pos (7U) +#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */ +#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */ +#define ADC_CSR_AWD2_MST_Pos (8U) +#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */ +#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */ +#define ADC_CSR_AWD3_MST_Pos (9U) +#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */ +#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_MST_Pos (10U) +#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */ +#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */ + +#define ADC_CSR_ADRDY_SLV_Pos (16U) +#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */ +#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */ +#define ADC_CSR_EOSMP_SLV_Pos (17U) +#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */ +#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */ +#define ADC_CSR_EOC_SLV_Pos (18U) +#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */ +#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_SLV_Pos (19U) +#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */ +#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_SLV_Pos (20U) +#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */ +#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */ +#define ADC_CSR_JEOC_SLV_Pos (21U) +#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */ +#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_SLV_Pos (22U) +#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */ +#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_SLV_Pos (23U) +#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */ +#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */ +#define ADC_CSR_AWD2_SLV_Pos (24U) +#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */ +#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */ +#define ADC_CSR_AWD3_SLV_Pos (25U) +#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */ +#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_SLV_Pos (26U) +#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */ +#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_CCR register *******************/ +#define ADC_CCR_DUAL_Pos (0U) +#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */ +#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */ +#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */ +#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */ +#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */ +#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */ +#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */ + +#define ADC_CCR_DELAY_Pos (8U) +#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */ +#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */ +#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */ +#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */ +#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */ +#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */ + +#define ADC_CCR_DMACFG_Pos (13U) +#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */ +#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */ + +#define ADC_CCR_MDMA_Pos (14U) +#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */ +#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */ +#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */ +#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */ + +#define ADC_CCR_CKMODE_Pos (16U) +#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */ +#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */ +#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */ + +#define ADC_CCR_PRESC_Pos (18U) +#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */ +#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */ +#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */ +#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */ +#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */ +#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */ + +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_VSENSESEL_Pos (23U) +#define ADC_CCR_VSENSESEL_Msk (0x1UL << ADC_CCR_VSENSESEL_Pos) /*!< 0x00800000 */ +#define ADC_CCR_VSENSESEL ADC_CCR_VSENSESEL_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATSEL_Pos (24U) +#define ADC_CCR_VBATSEL_Msk (0x1UL << ADC_CCR_VBATSEL_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATSEL ADC_CCR_VBATSEL_Msk /*!< ADC internal path to battery voltage enable */ + +/******************** Bit definition for ADC_CDR register *******************/ +#define ADC_CDR_RDATA_MST_Pos (0U) +#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */ +#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */ + +#define ADC_CDR_RDATA_SLV_Pos (16U) +#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */ +#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */ + + +/******************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/******************************************************************************/ +/********************** Bit definition for COMP_CSR register ****************/ +#define COMP_CSR_EN_Pos (0U) +#define COMP_CSR_EN_Msk (0x1UL << COMP_CSR_EN_Pos) /*!< 0x00000001 */ +#define COMP_CSR_EN COMP_CSR_EN_Msk /*!< Comparator enable */ + +#define COMP_CSR_INMSEL_Pos (4U) +#define COMP_CSR_INMSEL_Msk (0xFUL << COMP_CSR_INMSEL_Pos) /*!< 0x00000070 */ +#define COMP_CSR_INMSEL COMP_CSR_INMSEL_Msk /*!< Comparator input minus selection */ +#define COMP_CSR_INMSEL_0 (0x1UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000010 */ +#define COMP_CSR_INMSEL_1 (0x2UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000020 */ +#define COMP_CSR_INMSEL_2 (0x4UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000040 */ +#define COMP_CSR_INMSEL_3 (0x8UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000080 */ + +#define COMP_CSR_INPSEL_Pos (8U) +#define COMP_CSR_INPSEL_Msk (0x1UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000100 */ +#define COMP_CSR_INPSEL COMP_CSR_INPSEL_Msk /*!< Comparator input plus selection */ + +#define COMP_CSR_POLARITY_Pos (15U) +#define COMP_CSR_POLARITY_Msk (0x1UL << COMP_CSR_POLARITY_Pos) /*!< 0x00008000 */ +#define COMP_CSR_POLARITY COMP_CSR_POLARITY_Msk /*!< Comparator output polarity */ + +#define COMP_CSR_HYST_Pos (16U) +#define COMP_CSR_HYST_Msk (0x7UL << COMP_CSR_HYST_Pos) /*!< 0x00070000 */ +#define COMP_CSR_HYST COMP_CSR_HYST_Msk /*!< Comparator hysteresis */ +#define COMP_CSR_HYST_0 (0x1UL << COMP_CSR_HYST_Pos) /*!< 0x00010000 */ +#define COMP_CSR_HYST_1 (0x2UL << COMP_CSR_HYST_Pos) /*!< 0x00020000 */ +#define COMP_CSR_HYST_2 (0x4UL << COMP_CSR_HYST_Pos) /*!< 0x00040000 */ + +#define COMP_CSR_BLANKING_Pos (19U) +#define COMP_CSR_BLANKING_Msk (0x7UL << COMP_CSR_BLANKING_Pos) /*!< 0x00380000 */ +#define COMP_CSR_BLANKING COMP_CSR_BLANKING_Msk /*!< Comparator blanking source */ +#define COMP_CSR_BLANKING_0 (0x1UL << COMP_CSR_BLANKING_Pos) /*!< 0x00080000 */ +#define COMP_CSR_BLANKING_1 (0x2UL << COMP_CSR_BLANKING_Pos) /*!< 0x00100000 */ +#define COMP_CSR_BLANKING_2 (0x4UL << COMP_CSR_BLANKING_Pos) /*!< 0x00200000 */ + +#define COMP_CSR_BRGEN_Pos (22U) +#define COMP_CSR_BRGEN_Msk (0x1UL << COMP_CSR_BRGEN_Pos) /*!< 0x00400000 */ +#define COMP_CSR_BRGEN COMP_CSR_BRGEN_Msk /*!< Comparator scaler bridge enable */ + +#define COMP_CSR_SCALEN_Pos (23U) +#define COMP_CSR_SCALEN_Msk (0x1UL << COMP_CSR_SCALEN_Pos) /*!< 0x00800000 */ +#define COMP_CSR_SCALEN COMP_CSR_SCALEN_Msk /*!< Comparator voltage scaler enable */ + +#define COMP_CSR_VALUE_Pos (30U) +#define COMP_CSR_VALUE_Msk (0x1UL << COMP_CSR_VALUE_Pos) /*!< 0x40000000 */ +#define COMP_CSR_VALUE COMP_CSR_VALUE_Msk /*!< Comparator output level */ + +#define COMP_CSR_LOCK_Pos (31U) +#define COMP_CSR_LOCK_Msk (0x1UL << COMP_CSR_LOCK_Pos) /*!< 0x80000000 */ +#define COMP_CSR_LOCK COMP_CSR_LOCK_Msk /*!< Comparator lock */ + +/******************************************************************************/ +/* */ +/* CORDIC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CORDIC_CSR register *****************/ +#define CORDIC_CSR_FUNC_Pos (0U) +#define CORDIC_CSR_FUNC_Msk (0xFUL << CORDIC_CSR_FUNC_Pos) /*!< 0x0000000F */ +#define CORDIC_CSR_FUNC CORDIC_CSR_FUNC_Msk /*!< Function */ +#define CORDIC_CSR_FUNC_0 (0x1UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000001 */ +#define CORDIC_CSR_FUNC_1 (0x2UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000002 */ +#define CORDIC_CSR_FUNC_2 (0x4UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000004 */ +#define CORDIC_CSR_FUNC_3 (0x8UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000008 */ +#define CORDIC_CSR_PRECISION_Pos (4U) +#define CORDIC_CSR_PRECISION_Msk (0xFUL << CORDIC_CSR_PRECISION_Pos) /*!< 0x000000F0 */ +#define CORDIC_CSR_PRECISION CORDIC_CSR_PRECISION_Msk /*!< Precision */ +#define CORDIC_CSR_PRECISION_0 (0x1UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000010 */ +#define CORDIC_CSR_PRECISION_1 (0x2UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000020 */ +#define CORDIC_CSR_PRECISION_2 (0x4UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000040 */ +#define CORDIC_CSR_PRECISION_3 (0x8UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000080 */ +#define CORDIC_CSR_SCALE_Pos (8U) +#define CORDIC_CSR_SCALE_Msk (0x7UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000700 */ +#define CORDIC_CSR_SCALE CORDIC_CSR_SCALE_Msk /*!< Scaling factor */ +#define CORDIC_CSR_SCALE_0 (0x1UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000100 */ +#define CORDIC_CSR_SCALE_1 (0x2UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000200 */ +#define CORDIC_CSR_SCALE_2 (0x4UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000400 */ +#define CORDIC_CSR_IEN_Pos (16U) +#define CORDIC_CSR_IEN_Msk (0x1UL << CORDIC_CSR_IEN_Pos) /*!< 0x00010000 */ +#define CORDIC_CSR_IEN CORDIC_CSR_IEN_Msk /*!< Interrupt Enable */ +#define CORDIC_CSR_DMAREN_Pos (17U) +#define CORDIC_CSR_DMAREN_Msk (0x1UL << CORDIC_CSR_DMAREN_Pos) /*!< 0x00020000 */ +#define CORDIC_CSR_DMAREN CORDIC_CSR_DMAREN_Msk /*!< DMA Read channel Enable */ +#define CORDIC_CSR_DMAWEN_Pos (18U) +#define CORDIC_CSR_DMAWEN_Msk (0x1UL << CORDIC_CSR_DMAWEN_Pos) /*!< 0x00040000 */ +#define CORDIC_CSR_DMAWEN CORDIC_CSR_DMAWEN_Msk /*!< DMA Write channel Enable */ +#define CORDIC_CSR_NRES_Pos (19U) +#define CORDIC_CSR_NRES_Msk (0x1UL << CORDIC_CSR_NRES_Pos) /*!< 0x00080000 */ +#define CORDIC_CSR_NRES CORDIC_CSR_NRES_Msk /*!< Number of results in WDATA register */ +#define CORDIC_CSR_NARGS_Pos (20U) +#define CORDIC_CSR_NARGS_Msk (0x1UL << CORDIC_CSR_NARGS_Pos) /*!< 0x00100000 */ +#define CORDIC_CSR_NARGS CORDIC_CSR_NARGS_Msk /*!< Number of arguments in RDATA register */ +#define CORDIC_CSR_RESSIZE_Pos (21U) +#define CORDIC_CSR_RESSIZE_Msk (0x1UL << CORDIC_CSR_RESSIZE_Pos) /*!< 0x00200000 */ +#define CORDIC_CSR_RESSIZE CORDIC_CSR_RESSIZE_Msk /*!< Width of output data */ +#define CORDIC_CSR_ARGSIZE_Pos (22U) +#define CORDIC_CSR_ARGSIZE_Msk (0x1UL << CORDIC_CSR_ARGSIZE_Pos) /*!< 0x00400000 */ +#define CORDIC_CSR_ARGSIZE CORDIC_CSR_ARGSIZE_Msk /*!< Width of input data */ +#define CORDIC_CSR_RRDY_Pos (31U) +#define CORDIC_CSR_RRDY_Msk (0x1UL << CORDIC_CSR_RRDY_Pos) /*!< 0x80000000 */ +#define CORDIC_CSR_RRDY CORDIC_CSR_RRDY_Msk /*!< Result Ready Flag */ + +/******************* Bit definition for CORDIC_WDATA register ***************/ +#define CORDIC_WDATA_ARG_Pos (0U) +#define CORDIC_WDATA_ARG_Msk (0xFFFFFFFFUL << CORDIC_WDATA_ARG_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_WDATA_ARG CORDIC_WDATA_ARG_Msk /*!< Input Argument */ + +/******************* Bit definition for CORDIC_RDATA register ***************/ +#define CORDIC_RDATA_RES_Pos (0U) +#define CORDIC_RDATA_RES_Msk (0xFFFFFFFFUL << CORDIC_RDATA_RES_Pos) /*!< 0xFFFFFFFF */ +#define CORDIC_RDATA_RES CORDIC_RDATA_RES_Msk /*!< Output Result */ + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ +#define CRC_CR_POLYSIZE_Pos (3U) +#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */ +#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */ +#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */ +#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */ +#define CRC_CR_REV_IN_Pos (5U) +#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */ +#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */ +#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */ +#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */ +#define CRC_CR_REV_OUT_Pos (7U) +#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */ +#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */ + +/******************* Bit definition for CRC_INIT register *******************/ +#define CRC_INIT_INIT_Pos (0U) +#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */ +#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */ + +/******************* Bit definition for CRC_POL register ********************/ +#define CRC_POL_POL_Pos (0U) +#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */ +#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */ + +/******************************************************************************/ +/* */ +/* CRS Clock Recovery System */ +/******************************************************************************/ + +/******************* Bit definition for CRS_CR register *********************/ +#define CRS_CR_SYNCOKIE_Pos (0U) +#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */ +#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */ +#define CRS_CR_SYNCWARNIE_Pos (1U) +#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */ +#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */ +#define CRS_CR_ERRIE_Pos (2U) +#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */ +#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */ +#define CRS_CR_ESYNCIE_Pos (3U) +#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */ +#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */ +#define CRS_CR_CEN_Pos (5U) +#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */ +#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */ +#define CRS_CR_AUTOTRIMEN_Pos (6U) +#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */ +#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */ +#define CRS_CR_SWSYNC_Pos (7U) +#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */ +#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */ +#define CRS_CR_TRIM_Pos (8U) +#define CRS_CR_TRIM_Msk (0x7FUL << CRS_CR_TRIM_Pos) /*!< 0x00007F00 */ +#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */ + +/******************* Bit definition for CRS_CFGR register *********************/ +#define CRS_CFGR_RELOAD_Pos (0U) +#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */ +#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */ +#define CRS_CFGR_FELIM_Pos (16U) +#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */ +#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */ + +#define CRS_CFGR_SYNCDIV_Pos (24U) +#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */ +#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */ +#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */ +#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */ +#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */ + +#define CRS_CFGR_SYNCSRC_Pos (28U) +#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */ +#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */ +#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */ +#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */ + +#define CRS_CFGR_SYNCPOL_Pos (31U) +#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */ +#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */ + +/******************* Bit definition for CRS_ISR register *********************/ +#define CRS_ISR_SYNCOKF_Pos (0U) +#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */ +#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */ +#define CRS_ISR_SYNCWARNF_Pos (1U) +#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */ +#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */ +#define CRS_ISR_ERRF_Pos (2U) +#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */ +#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */ +#define CRS_ISR_ESYNCF_Pos (3U) +#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */ +#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */ +#define CRS_ISR_SYNCERR_Pos (8U) +#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */ +#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */ +#define CRS_ISR_SYNCMISS_Pos (9U) +#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */ +#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */ +#define CRS_ISR_TRIMOVF_Pos (10U) +#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */ +#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */ +#define CRS_ISR_FEDIR_Pos (15U) +#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */ +#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */ +#define CRS_ISR_FECAP_Pos (16U) +#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */ +#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */ + +/******************* Bit definition for CRS_ICR register *********************/ +#define CRS_ICR_SYNCOKC_Pos (0U) +#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */ +#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */ +#define CRS_ICR_SYNCWARNC_Pos (1U) +#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */ +#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */ +#define CRS_ICR_ERRC_Pos (2U) +#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */ +#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */ +#define CRS_ICR_ESYNCC_Pos (3U) +#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */ +#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter */ +/* */ +/******************************************************************************/ +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G4 series) + */ +#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1_Pos (0U) +#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */ +#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/ +#define DAC_CR_CEN1_Pos (14U) +#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */ +#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/ + +#define DAC_CR_HFSEL_Pos (15U) +#define DAC_CR_HFSEL_Msk (0x1UL << DAC_CR_HFSEL_Pos) /*!< 0x00008000 */ +#define DAC_CR_HFSEL DAC_CR_HFSEL_Msk /*!*/ + +#define DAC_CR_EN2_Pos (16U) +#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */ +#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/ +#define DAC_CR_CEN2_Pos (30U) +#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */ +#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1_Pos (0U) +#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */ +#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text (READONLY) : + { + . = 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 (READONLY) : + { + . = 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 (READONLY) : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array (READONLY) : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array (READONLY) : + { + . = 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 */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + _siccmsram = LOADADDR(.ccmsram); + + /* CCM-SRAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmsram : + { + . = ALIGN(4); + _sccmsram = .; /* create a global symbol at ccmsram start */ + *(.ccmsram) + *(.ccmsram*) + + . = ALIGN(4); + _eccmsram = .; /* create a global symbol at ccmsram end */ + } >CCMSRAM 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) } +} diff --git a/task4/Src/task4.c b/task4/Src/task4.c new file mode 100644 index 0000000..fb1ad01 --- /dev/null +++ b/task4/Src/task4.c @@ -0,0 +1,104 @@ +/* *************************************************************************************** + * Project: task4 - C:UART + * File: task4.c + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 10.09.2021 + * + * Version: 4.0 + * History: + * 10.09.2021 ML create project; based upon task1 + * 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U + * 18.02.2025 TK changed application to "Ampelschaltung" + * 21.07.2025 TK switch task "Entprellen" to "UART" + * + * Status: under development + * + * Description: + * Blinks the red LED of STefi Light very fast, currently. + * This file contains the main routine and the initialization. + * + * Notes: + * - MCU speed at startup is 16 MHz + * + * Todo: + * - Change the example code to match the description and requirements + * of the requested application in the lab exercise guide. + * + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ + + +/* ------------------------------------ PROTOTYPES ------------------------------------ */ +static void GPIO_init(void); + + +/* ------------------------------------ M A I N --------------------------------------- */ +int main(void) +{ + /* --- initialization --- */ + __disable_irq(); // disable interrupts globally + + GPIO_init(); + + __enable_irq(); // enable interrupts globally + + + /* --- one time tasks --- */ + + + /* --- infinite processing loop --- */ + while (1) + { + /* ... add your code to implement the lab assignment ... */ + + __WFI(); + } + + + return 1; +} + + +/* ------------------------------------ GLOBAL FUNCTIONS ------------------------------ */ + + +/* ------------------------------------ PRIVATE FUNCTIONS ----------------------------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: static void GPIO_init(void) + * + * Initializes GPIOs on STefi Light for pins with peripherals attached. + * + * requires: - nothing - + * parameters: - none - + * returns: - nothing - +\* ------------------------------------------------------------------------------------ */ +static void GPIO_init(void) +{ + /* enable port clocks */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // LEDs: A + + + /* --- LEDs --- */ + GPIOA->ODR |= MASK_LED_RED; + GPIOA->MODER &= ~(3 << 0); + GPIOA->MODER |= (1 << 0); // set LED pin to output +} + + +/* ************************************ E O F ***************************************** */ diff --git a/task4/Src/task4_it.c b/task4/Src/task4_it.c new file mode 100644 index 0000000..b829458 --- /dev/null +++ b/task4/Src/task4_it.c @@ -0,0 +1,224 @@ +/* *************************************************************************************** + * Project: task4 - C:UART + * File: task4_it.c + * + * Language: C + * + * Hardware: STefi Light v1.1 + * Processor: STM32G431KBT6U + * + * Author: Manuel Lederhofer + * Datum: 10.09.2021 + * + * Version: 3.1 + * History: + * 10.09.2021 ML create project + * 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U + * 18.02.2025 TK changed application to "Ampelschaltung" + * 24.06.2025 TK remove "... place your code here ..." + * 21.07.2025 TK switch task "Entprellen" to "UART" + * + * Status: under development + * + * Description: + * this file contains the interrupt vector table and the implementation of all + * interrupt handlers used in the lab exercises. + * + * Notes: + * - MCU speed at startup is 16 MHz + * + * Todo: + * - Change the example code to match the description and requirements + * of the requested application in the lab exercise guide. + * + ************************************************************************************** */ + +/* ------------------------------------ INCLUDES -------------------------------------- */ +#include "stm32g431xx.h" +#include "STefi-Light.h" + + +/* ------------------------------------ DEFINES --------------------------------------- */ +/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */ + + +/* ------------------------------------ GLOBAL VARIABLES ------------------------------ */ +extern void* _estack; // initial stack pointer from ldscript +extern void* Reset_Handler; // exception handler from startup code + + +/* ------------------------------------ PRIVATE VARIABLES ----------------------------- */ +/* ------------------------------------ PROTOTYPES ------------------------------------ */ + + +/* ------------------------------------ GLOBAL FUNCTIONS (Exceptions Handlers) -------- */ + +/* ------------------------------------------------------------------------------------ *\ + * method: void ISR_error(void) + * + * Default interrupt handler for core interrupts. + * Enables the green and red LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_error(void) +{ + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + GPIOA->ODR |= MASK_LED_ALL; + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x11; + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~(MASK_LED_GREEN | MASK_LED_RED); + } +} + + +/* ------------------------------------------------------------------------------------ *\ + * method: void ISR_default(void) + * + * Default interrupt handler for non-core interrupts. + * Enables the blue and yellow LED on the STefi Light board. +\* ------------------------------------------------------------------------------------ */ +void ISR_default(void) +{ + /* init */ + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // PA: clock on (LEDs) + GPIOA->ODR |= MASK_LED_ALL; + GPIOA->MODER = (GPIOA->MODER & 0xFFFFFF00) | 0x44; + + while(1) + { /* light up the LEDs permanently */ + GPIOA->ODR &= ~(MASK_LED_BLUE | MASK_LED_YELLOW); + } +} + + +/* ------------------------------------ INTERRUPT VECTOR TABLE ------------------------ */ + +__attribute__ ((section (".isr_vector"))) +void (* const paIsrFunc[118])(void) = +{ + /* --- core vectors --- */ + (void *)&_estack, /* 00 (0x00000000) initial stack pointer */ + (void *)&Reset_Handler, /* 01 (0x00000004) (prio: -3) initial program counter (leads to first command to execute) */ + ISR_error, /* 02 (0x00000008) (prio: -2) non-maskable interrupt */ + ISR_error, /* 03 (0x0000000C) (prio: -1) hard fault exception */ + ISR_error, /* 04 (0x00000010) memory management */ + ISR_error, /* 05 (0x00000014) bus fault - pre-fetch fault, memory access fault */ + ISR_error, /* 06 (0x00000018) usage fault - undefined instruction or illegal state */ + ISR_error, /* 07 (0x0000001C) reserved vector 7 */ + ISR_error, /* 08 (0x00000020) reserved vector 8 */ + ISR_error, /* 09 (0x00000024) reserved vector 9 */ + ISR_error, /* 10 (0x00000028) reserved vector 10 */ + ISR_error, /* 11 (0x0000002C) system service call via SWI instruction */ + ISR_error, /* 12 (0x00000030) monitor */ + ISR_error, /* 13 (0x00000034) reserved vector 13 */ + ISR_error, /* 14 (0x00000038) pendable service call exception */ + ISR_error, /* 15 (0x0000003C) SysTick exception */ + /* --- non-core vectors --- */ + ISR_default, /* 0 (0x00000040) window watchdog interrupt */ + ISR_default, /* 1 (0x00000044) PVD through EXTI line 16 interrupt */ + ISR_default, /* 2 (0x00000048) RTC/TAMP/CSS on LSE through EXTI line 19 interrupt */ + ISR_default, /* 3 (0x0000004C) RTC Wakeup timer through EXTI line 20 interrupt */ + ISR_default, /* 4 (0x00000050) Flash global interrupt */ + ISR_default, /* 5 (0x00000054) RCC global interrupt */ + ISR_default, /* 6 (0x00000058) EXTI Line 0 interrupt */ + ISR_default, /* 7 (0x0000005C) EXTI Line 1 interrupt */ + ISR_default, /* 8 (0x00000060) EXTI Line 2 interrupt */ + ISR_default, /* 9 (0x00000064) EXTI Line 3 interrupt */ + ISR_default, /* 10 (0x00000068) EXTI Line 4 interrupt */ + ISR_default, /* 11 (0x0000006C) DMA1 channel 1 interrupt */ + ISR_default, /* 12 (0x00000070) DMA1 channel 2 interrupt */ + ISR_default, /* 13 (0x00000074) DMA1 channel 3 interrupt */ + ISR_default, /* 14 (0x00000078) DMA1 channel 4 interrupt */ + ISR_default, /* 15 (0x0000007C) DMA1 channel 5 interrupt */ + ISR_default, /* 16 (0x00000080) DMA1 channel 6 interrupt */ + ISR_default, /* 17 (0x00000084) DMA1 channel 7 interrupt */ + ISR_default, /* 18 (0x00000088) ADC1 + ADC2 global interrupt */ + ISR_default, /* 19 (0x0000008C) USB high priority interrupts */ + ISR_default, /* 20 (0x00000090) USB low priority interrupts */ + ISR_default, /* 21 (0x00000094) FDCAN1 interrupt 0 */ + ISR_default, /* 22 (0x00000098) FDCAN1 interrupt 1 */ + ISR_default, /* 23 (0x0000009C) EXTI line [9:5] interrupts */ + ISR_default, /* 24 (0x000000A0) TIM1 break + TIM15 global interrupts */ + ISR_default, /* 25 (0x000000A4) TIM1 update + TIM16 global interrupts */ + ISR_default, /* 26 (0x000000A8) TIM1 trigger, commutation, direction change, index + TIM17 interrupts */ + ISR_default, /* 27 (0x000000AC) TIM1 capture compare interrupt */ + ISR_default, /* 28 (0x000000B0) TIM2 global interrupt */ + ISR_default, /* 29 (0x000000B4) TIM3 global interrupt */ + ISR_default, /* 30 (0x000000B8) TIM4 global interrupt */ + ISR_default, /* 31 (0x000000BC) I2C1 event + EXTI line 23 interrupts */ + ISR_default, /* 32 (0x000000C0) I2C1 error interrupt */ + ISR_default, /* 33 (0x000000C4) I2C2 event + EXTI line 24 interrupts */ + ISR_default, /* 34 (0x000000C8) I2C2 error interrupt */ + ISR_default, /* 35 (0x000000CC) SPI1 global interrupt */ + ISR_default, /* 36 (0x000000D0) SPI2 global interrupt */ + ISR_default, /* 37 (0x000000D4) USART1 global + EXTI line 25 interrupts */ + ISR_default, /* 38 (0x000000D8) USART2 global + EXTI line 26 interrupts */ + ISR_default, /* 39 (0x000000DC) USART3 global + EXTI line 28 interrupts */ + ISR_default, /* 40 (0x000000E0) EXTI line [15:10] interrupts */ + ISR_default, /* 41 (0x000000E4) RTC alarms interrupts */ + ISR_default, /* 42 (0x000000E8) USB wakeup from suspend trough EXTI line 18 interrupt */ + ISR_default, /* 43 (0x000000EC) TIM8 break, transition error, index error interrupts */ + ISR_default, /* 44 (0x000001F0) TIM8 update interrupt */ + ISR_default, /* 45 (0x000001F4) TIM8 trigger, commutation, direction change, index interrupts */ + ISR_default, /* 46 (0x000001F8) TIM8 capture compare interrupt */ + ISR_default, /* 47 (0x000001FC) ADC3 global interrupt */ + ISR_default, /* 48 (0x00000100) FSMC global interrupt */ + ISR_default, /* 49 (0x00000104) LPTIM1 global interrupt */ + ISR_default, /* 50 (0x00000108) TIM5 global interrupt */ + ISR_default, /* 51 (0x0000010C) SPI3 global interrupt */ + ISR_default, /* 52 (0x00000110) UART4 global + EXTI line 34 interrupts */ + ISR_default, /* 53 (0x00000114) UART5 global + EXTI line 35 interrupts */ + ISR_default, /* 54 (0x00000118) TIM6 + DAC1/3 underrun global interrupts */ + ISR_default, /* 55 (0x0000011C) TIM7 + DAC2/4 underrun global interrupts */ + ISR_default, /* 56 (0x00000120) DMA2 channel 1 interrupt */ + ISR_default, /* 57 (0x00000124) DMA2 channel 2 interrupt */ + ISR_default, /* 58 (0x00000128) DMA2 channel 3 interrupt */ + ISR_default, /* 59 (0x0000012C) DMA2 channel 4 interrupt */ + ISR_default, /* 60 (0x00000130) DMA2 channel 5 interrupt */ + ISR_default, /* 61 (0x00000134) ADC4 global interrupt */ + ISR_default, /* 62 (0x00000138) ADC5 global interrupt */ + ISR_default, /* 63 (0x0000013C) UCPD1 global + EXTI line 43 interrupts */ + ISR_default, /* 64 (0x00000140) COMP1/COMP2/COMP3 through EXTI lines 21/22/29 interrupts */ + ISR_default, /* 65 (0x00000144) COMP4/COMP5/COMP6 through EXTI lines 30/31/32 interrupts */ + ISR_default, /* 66 (0x00000148) COMP7 through EXTI line 33 interrupt */ + ISR_default, /* 67 (0x0000014C) HRTIM master timer interrupt (hrtim_it1) */ + ISR_default, /* 68 (0x00000150) HRTIM timer A interrupt (hrtim_it2) */ + ISR_default, /* 69 (0x00000154) HRTIM timer B interrupt (hrtim_it3) */ + ISR_default, /* 70 (0x00000158) HRTIM timer C interrupt (hrtim_it4) */ + ISR_default, /* 71 (0x0000015C) HRTIM timer D interrupt (hrtim_it5) */ + ISR_default, /* 72 (0x00000160) HRTIM timer E interrupt (hrtim_it6) */ + ISR_default, /* 73 (0x00000164) HRTIM fault interrupt (hrtim_it8) */ + ISR_default, /* 74 (0x00000168) HRTIM timer F interrupt (hrtim_it7) */ + ISR_default, /* 75 (0x0000016C) CRS interrupt */ + ISR_default, /* 76 (0x00000170) SAI */ + ISR_default, /* 77 (0x00000174) TIM20 break, transition error, index error interrupts */ + ISR_default, /* 78 (0x00000178) TIM20 update interrupt */ + ISR_default, /* 79 (0x0000017C) TIM20 trigger, commutation, direction change, index interrupts */ + ISR_default, /* 80 (0x00000180) TIM20 capture compare interrupt */ + ISR_default, /* 81 (0x00000184) Floating point interrupt */ + ISR_default, /* 82 (0x00000188) I2C4 event + EXTI line 4 interrupts */ + ISR_default, /* 83 (0x0000018C) I2C4 error interrupt */ + ISR_default, /* 84 (0x00000190) SPI4 global interrupt */ + ISR_default, /* 85 (0x00000194) AES global interrupt */ + ISR_default, /* 86 (0x00000198) FDCAN2 interrupt 0 */ + ISR_default, /* 87 (0x0000019C) FDCAN2 interrupt 1 */ + ISR_default, /* 88 (0x000001A0) FDCAN3 interrupt 0 */ + ISR_default, /* 89 (0x000001A4) FDCAN3 interrupt 1 */ + ISR_default, /* 90 (0x000001A8) RNG global interrupt */ + ISR_default, /* 91 (0x000001AC) LPUART global interrupt */ + ISR_default, /* 92 (0x000001B0) I2C3 event + EXTI line 27 interrupts */ + ISR_default, /* 93 (0x000001B4) I2C3 error interrupt */ + ISR_default, /* 94 (0x000001B8) DMAMUX overrun interrupt */ + ISR_default, /* 95 (0x000001BC) QUADSPI global interrupt */ + ISR_default, /* 96 (0x000001C0) DMA1 channel 8 interrupt */ + ISR_default, /* 97 (0x000001C4) DMA2 channel 6 interrupt */ + ISR_default, /* 98 (0x000001C8) DMA2 channel 7 interrupt */ + ISR_default, /* 99 (0x000001CC) DMA2 channel 8 interrupt */ + ISR_default, /* 100 (0x000001D0) Cordic interrupt */ + ISR_default /* 101 (0x000001D4) FMAC interrupt */ +}; + + +/* ************************************ E O F ***************************************** */ diff --git a/task4/Startup/startup_stm32g431kbtx.s b/task4/Startup/startup_stm32g431kbtx.s new file mode 100644 index 0000000..88e31ea --- /dev/null +++ b/task4/Startup/startup_stm32g431kbtx.s @@ -0,0 +1,105 @@ +/** + ****************************************************************************** + * @file startup_stm32g431kbtx.s + * @author Auto-generated by STM32CubeIDE + * @brief STM32G431KBTx device vector table for GCC toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + ****************************************************************************** + * @attention + * + * Copyright (c) ${year} STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +.syntax unified +.cpu cortex-m4 +.fpu softvfp +.thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + mov sp, r0 /* set stack pointer */ +/* Call the clock system initialization function.*/ +// bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + movs r3, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 + +LoopCopyDataInit: + adds r4, r0, r3 + cmp r4, r1 + bcc CopyDataInit + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b LoopFillZerobss + +FillZerobss: + str r3, [r2] + adds r2, r2, #4 + +LoopFillZerobss: + cmp r2, r4 + bcc FillZerobss + +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + +LoopForever: + b LoopForever + + .size Reset_Handler, .-Reset_Handler + + +/************************ (C) COPYRIGHT STMicroelectonics *****END OF FILE****/ diff --git a/task4/Startup/syscalls.c b/task4/Startup/syscalls.c new file mode 100644 index 0000000..f3462a0 --- /dev/null +++ b/task4/Startup/syscalls.c @@ -0,0 +1,176 @@ +/** + ****************************************************************************** + * @file syscalls.c + * @author Auto-generated by STM32CubeIDE + * @brief STM32CubeIDE Minimal System calls file + * + * For more information about which c-functions + * need which of these lowlevel functions + * please consult the Newlib libc-manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + (void)pid; + (void)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) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + + return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + (void)file; + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + (void)file; + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + (void)file; + (void)ptr; + (void)dir; + return 0; +} + +int _open(char *path, int flags, ...) +{ + (void)path; + (void)flags; + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + (void)status; + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + (void)name; + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + (void)buf; + return -1; +} + +int _stat(char *file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + (void)old; + (void)new; + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + (void)name; + (void)argv; + (void)env; + errno = ENOMEM; + return -1; +} diff --git a/task4/Startup/sysmem.c b/task4/Startup/sysmem.c new file mode 100644 index 0000000..6122419 --- /dev/null +++ b/task4/Startup/sysmem.c @@ -0,0 +1,79 @@ +/** + ****************************************************************************** + * @file sysmem.c + * @author Generated by STM32CubeIDE + * @brief STM32CubeIDE System Memory calls file + * + * For more information about which C functions + * need which of these lowlevel functions + * please consult the newlib libc manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include + +/** + * Pointer to the current high watermark of the heap usage + */ +static uint8_t *__sbrk_heap_end = NULL; + +/** + * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + * and others from the C library + * + * @verbatim + * ############################################################################ + * # .data # .bss # newlib heap # MSP stack # + * # # # # Reserved by _Min_Stack_Size # + * ############################################################################ + * ^-- RAM start ^-- _end _estack, RAM end --^ + * @endverbatim + * + * This implementation starts allocating at the '_end' linker symbol + * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + * The implementation considers '_estack' linker symbol to be RAM end + * NOTE: If the MSP stack, at any point during execution, grows larger than the + * reserved size, please increase the '_Min_Stack_Size'. + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + const uint8_t *max_heap = (uint8_t *)stack_limit; + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + { + __sbrk_heap_end = &_end; + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + { + errno = ENOMEM; + return (void *)-1; + } + + prev_heap_end = __sbrk_heap_end; + __sbrk_heap_end += incr; + + return (void *)prev_heap_end; +} diff --git a/task4/task4.launch b/task4/task4.launch new file mode 100644 index 0000000..02fbfab --- /dev/null +++ b/task4/task4.launch @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

w_gW-*#rx(j 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∓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 z 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 BAano# literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task1.language.settings.xml b/.metadata/.plugins/org.eclipse.cdt.core/task1.language.settings.xml new file mode 100644 index 0000000..f56d7b8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/task1.language.settings.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task2.1727452765734.pdom b/.metadata/.plugins/org.eclipse.cdt.core/task2.1727452765734.pdom new file mode 100644 index 0000000000000000000000000000000000000000..936c455d5493598eaff67a8360191f62a90dd599 GIT binary patch literal 8192 zcmeIuF%E(-6b9g?i<5c;Cu3YXc%ud$1O-aknmBqakKm|_E*^s2p}rI+;^06!{Ui_y zeSQD?#7p3U00bZa0SG`~G6A`r?5Ly%$z{@ZXa)fYKmY;|fIxDAa19~cjV%>rb=5gi zS?*QUda|vqRc0*lDyNewtS%dB`De~4!;R~n1Ko4@Dz--WIn#Se>1>Iu*f0uX=z1Rwwb Q2tWV=5P$##An?Dy2eg|}SO5S3 literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task2.language.settings.xml b/.metadata/.plugins/org.eclipse.cdt.core/task2.language.settings.xml new file mode 100644 index 0000000..019c1c9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.cdt.core/task2.language.settings.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task3.1739787811602.pdom b/.metadata/.plugins/org.eclipse.cdt.core/task3.1739787811602.pdom new file mode 100644 index 0000000000000000000000000000000000000000..20c45f210f2bce4a82b141d9f1551439c5e45327 GIT binary patch literal 1675264 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ÅXCfaRXX8<~Sx3@Y?A+j{{C64WBCTkfYU)_q8!AUIGCS!|GGiua>ZE_|6E0rkwS}Ygabb20<4Sp z^!$oQ8H&kcO^b=UBX+=KkzfBi$20R3_5C;8&r}4dqXluF zBD$!b(f$3VotzXPxZWT{`#elOayRav{9ZQGTdpav3g-&5Q#A^W4^ zzUkK6F220s6ZD^NMJ9viI{@+4DBfD+CX88kCes}Np z$Bygb9Q$5@35`T1!l4)wN7elajUm&VF-d;oZ5+qM*L+@{zMs3Ir?=Sl;*_6FL>KYt zIZnifq%4E@2P;31gbeDnJMtS}oqj%;7rG9yb%(LI!o) z^L`HUL$lcZ+7nO*SSHGG`N7mz&*==AOBs{oH`%9nekg0j78mA+38#xL;;TAuqzvV^ zN{lhon+d2h6Yju?Iy((@Y8rCewAXQdhVxf%&pQ8w+7)vQ@Bfvs;Uiu*PzZupU<3dx5&hKK0Q$$Hu3d5%w;Cj2yfHI z^{KPu0X1~cpQ}X|wR5V@VmfX4Xk*W>gUn>bzdyUq^0O!A-2r!k=m`5a)ekb3;yhMy zXFvvZ*B$xIHVwy7>^aE^b44b~;cQ;#?hmqD;!5w$}q@J z%!xh!S;)M~_$0sC&{#iq)O0__{F7y)bx(C<;$lwWxo<-DJK=7=Wl(3M&qq#JB{CU2 z-;qten1DK9YR<$1aPEwAOT0$y8@~o8YCfiO$%MCXnz_#Dc(D!-@)x?jzdwVg*87_u zU9URt2a?-=ihghBM6CZ=H?@1Z?qgsXdyKzq&%{mfdVBA1e)Hi)>b@FSdR$G!nuB!& zTvHES+Y=XYXYPdmL8gvT)x3Bj+Kt~6(MxSideNq=cjCT~L49^dev7sx>%5Px zkqP`l{bpUn*LB_`Df504PxLF#KMb!?uicT~Vp2w(k363<@feXM9@Y6)`27El<_n$t zI$+|Fiq{G@<)`H9w9YI`y?xgh^f z>>;{{Z$FR1`)PckxOP?iUXZ!Sd6^{ntu{;NCk0LAr-|o_Y{Xw`f8w2^c$m{nM7?!K zeyh7wTr;lsPsCh+WuhF8>t%{_17wCU27b+|Ph6$T2L1JR(G`g+_1NDk@mUAmaF*j4 zd#8>kad{7VdlQ z&3Z1dm_|z~4=op6#HY`-@KS^z{u0H195Se9o_}fjb0xeyEjWU>VlKe4#H0C{yx*i( z;ytB!ShG*WTHW(LaPu?vSFNu^lYH=g!2gfvit(E=AM<_Rt{*_=E5;}JZBIz?)#t^O z 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 z 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